Algorithm 我可以使用什么算法来区分闭合和开放光栅多边形?

Algorithm 我可以使用什么算法来区分闭合和开放光栅多边形?,algorithm,graphics,raster,raster-graphics,Algorithm,Graphics,Raster,Raster Graphics,假设我有两个点阵列。其中一个是一个开放多边形,看起来像这样 X是黑点和点'。-白色的 第二个点阵列包含闭合多边形: 我需要一个算法的名称,它允许我确定给定的点阵列是闭合多边形还是开放多边形。我需要这些信息来确定,我是否可以用洪水来填充它我不能用洪水填充第一个例子,但我可以用洪水填充第二个例子 这个算法叫什么来区分这两种多边形 更新1 10.10.2015 10:05 MSK:我需要区分闭合多边形和开放多边形,以防止洪水填充错误 泛光填充错误,是指当我将泛光填充应用于开放多边形时,如 .....

假设我有两个点阵列。其中一个是一个开放多边形,看起来像这样

X是黑点和点'。-白色的

第二个点阵列包含闭合多边形:

我需要一个算法的名称,它允许我确定给定的点阵列是闭合多边形还是开放多边形。我需要这些信息来确定,我是否可以用洪水来填充它我不能用洪水填充第一个例子,但我可以用洪水填充第二个例子

这个算法叫什么来区分这两种多边形

更新1 10.10.2015 10:05 MSK:我需要区分闭合多边形和开放多边形,以防止洪水填充错误

泛光填充错误,是指当我将泛光填充应用于开放多边形时,如

.....
..XXX
.X..X
X...X
最后是一个完全填充的网格:

XXXXX
XXXXX
XXXXX
XXXXX
我最初的想法是

以多边形为例, 检查是否打开或关闭,以及 如果已关闭,则应用洪水填充。 现在,我可以做不同的事情:

洪水填充多边形。 如果整个栅格已填充,则为开放栅格,否则洪水填充后栅格中至少有一个点为白色,则为闭合栅格。
如果有一种方法可以避免使用洪水填充来确定多边形是开放的还是闭合的,请告诉我。

我对此没有任何经验,但在研究其他内容时,我发现了这个方法,并认为它可能对您有所帮助:

幻灯片中提到了3种不同的算法:

X相交阵列算法 边列表算法 Pineda算法
我称之为洪水填充算法。也就是说,如果你从一个随机的角点开始泛光填充并检查每个像素,然后如果你发现一个没有填充的像素,它位于一个闭合形状的内部,否则它是一个开放形状。有几种方法可以做到这一点,但我记不起任何像素的名称,我手头也没有冈萨雷斯和伍兹的数字图像处理副本。一种简单的方法是应用填充,然后检查角点:如果任何角点不是边界或未填充,则多边形打开,需要恢复填充。另一种方法是拾取周长的任何交点,然后通过检查相邻的NSEW像素来跟踪它,以获得更多似乎不需要城市街区距离大于1的直线,或者换句话说,不需要NE/SW边界。继续跟踪,直到你到达前一个坐标或超出范围。bingo@Jongware见我的更新1。如果有一种方法可以不使用泛光填充,请告诉我。您在更新中描述的错误可能是因为您使用与边框相同的颜色填充,因此您无法再确定像素是否已更改或最初存在。如果你用另一种颜色填充,你不会有这个问题-填充颜色应该是唯一的。