首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >洪水填埋场边界矩形的快速求取方法

洪水填埋场边界矩形的快速求取方法
EN

Stack Overflow用户
提问于 2010-02-14 13:14:22
回答 2查看 2.3K关注 0票数 4

我需要对图像的一个区域进行洪水填充。然而,我实际上不需要结果的图像,我只需要知道最小的矩形,包含所有的像素将被洪水淹没。

是否有一个变体的洪水填充算法,可以计算这个矩形比做一个完整的洪水填充更便宜?

示例输入和输出(只需要红色矩形):

样本输入图像红点是起始像素。要填充的区域是包含点http://www.finnw.me.uk/ffinput.png的青色Z-四角体。样本输出只有红色矩形的位置/宽度/高度是有效的http://www.finnw.me.uk/ffoutput.png。

编辑:带有岛屿的示例#2:

带有海岛http://www.finnw.me.uk/ffinput2.png的示例输入 示例输出http://www.finnw.me.uk/ffoutput2.png

例3:

假岛http://www.finnw.me.uk/ffinput3.png实例

编辑

抱歉,硬盘故障导致图像丢失。当我第一次发布这篇文章时,因为没有托管图像,所以我把它们保存在自己的服务器上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-14 13:38:55

基本上,您需要确定biggestX、biggestY、smallestX和smallestY。

找到真实边的右下角:

您可以通过在您的颜色中尽可能地使用right+down来做到这一点。

当你不能再去right+down,那么你需要检查,以确保你没有被困在一个岛屿的角落。要检查这一点,您需要在整个边缘周围寻找一个机会去更多的right+down。每次发生这种情况时,您都可以跟踪(biggestX、biggestY、smallestX、smallestY),以防您真正拥有优势。

如果你真的有一个岛,你最终会找到一个地方,沿着边缘,你可以去更多的right+down。

如果你没有机会去更多的right+down,并且你到达了你的起点,那么你就有了你的实际优势。并且计算了你的(biggestX,biggestY,smallestX和smallestY)。

票数 2
EN

Stack Overflow用户

发布于 2010-02-14 14:04:21

一种可能的方法是从你的起点尽可能走远(左,上,down.right),然后沿着边时钟方向或逆时针方向走,直到你回到你的第一个边缘点。跟踪最小(X,y)和最大(X,Y),当你穿越边缘。

这应该让你看更少的像素,除非你有相当奇怪的形状要填补。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2261155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档