追踪掩模中像素的边缘

问题描述 投票:0回答:1

我有一个由 1 和 0 值的 2D 数组组成的掩码位图,我想将其转换为多边形,其中多边形精确地围绕像素边缘进行跟踪。掩模中的区域也可以包含孔。输出多边形不应包含任何孔。下面是一个例子,我想获取多边形的顶点(这里的粗线)。

enter image description here

是否有一个易于实现的算法或一组算法来执行此操作?

algorithm geometry polygon mask
1个回答
0
投票

此任务非常简单,但需要几个步骤:

  1. 从上到下(主要)、从左到右扫描图像中的所有像素。考虑像素的顶部边缘和上面的像素。
  2. 当遇到尚未追踪的边界(像素与上面的像素不同)时,使用长度为 1 的线段追踪连接形状的轮廓。
  3. 始终在填充区域周围沿顺时针方向描画。 当您从顶部边界开始追踪时,它是一个对象。 方向向右。 当您从底部边界开始追踪时,它就是一个洞。 方向向左。
  4. 追踪完孔后,从找到的顶部边界向上查找,以找到孔或对象边缘边界。这已经被追踪到了。 打断两条路径并用垂直线段连接以创建一条路径。
  5. 完成后,您将获得图像中所有对象的没有孔的轮廓。 希望只有一个。 选择你想要的或者其他的。
  6. 通过将同一方向的相邻线段组合成单行来压缩路径。

如果您需要有关其中任何一个步骤的详细信息,您应该提出一个单独的问题并链接回此问题,因为详细说明如何执行每个步骤对于单个答案来说太大了。

© www.soinside.com 2019 - 2024. All rights reserved.