0

了解曲线是否闭合的有效方法是什么?

也许一种方法是洪水填充算法并使用它来检查它;如果您的洪水填充留下了预先确定的边界框,那么您就在形状之外。否则,如果您的洪水填充终止,那么您就在形状内。

但这是一种有效的方法吗?

tnx。

4

3 回答 3

2

将曲线视为图形,顶点是像素,边缘是相邻像素之间。测试完成:

  • 简单曲线是如果所有顶点都有两个邻居并且图是连接的。
  • 更多不相交的简单曲线是如果所有顶点都有两个邻居并且图没有连接。部分的数量是通过图分区找到的。
  • 8曲线是如果除一个之外的所有顶点都有2个邻居,一个有4个邻居,并且图是连通的。
  • ...

测试图/子图的连通性和分区是通过图遍历完成的。

于 2013-10-03T06:59:06.783 回答
0

这应该是 O(n)..

可以说每个像素的度数是其邻域中的像素数。

遍历您的像素阵列,如果任何像素具有奇数度,则曲线不是闭合的。

解释: 对于偶数度像素,对于每条进入的路径,都有一条离开它的路径。这不适用于奇数度数。

于 2013-10-08T11:53:59.507 回答
0

你能用两个独立的指针沿着曲线走吗?如果是这样,请执行此操作并将一个指针设置为以两倍的速度遍历。如果循环闭合,则指针将在某一点重叠。

于 2013-10-03T15:14:50.753 回答