用于在画布上查找绘制区域的算法

Geo*_*ton 6 c# image-processing

更新:我试图从这篇文章中略微混乱,并更简洁地总结一下.如果需要,请参阅原始编辑.

我目前正在尝试在Bitmap画布上跟踪一系列单色blob.

例如,我试图跟踪的位图示例如下所示: alt text http://www.refuctored.com/polygons.bmp

在成功跟踪图像上3个斑点的轮廓之后,我会有一个类,它将blob的颜色绑定到表示斑点轮廓的点列表(不是斑点内的所有像素).

我遇到的问题是在相邻像素没有除前一像素之外的周围像素的情况下的逻辑.

例如,上面的例子会很好地跟踪,但是第二个例子会失败,因为像素没有去处,因为之前的像素已经被使用过了.

替代文字http://www.refuctored.com/error.jpg

我从左到右,从上到下追踪,偏向于直角的对角线.我必须能够根据我提取的数据重绘区域的精确副本,因此列表中的像素必须按照正确的顺序才能使副本生效.

到目前为止,我的尝试已经充满了失败,并且几天都在试图重新编写每次解决问题的算法.到目前为止,我一直没有成功.有没有其他人有像我这样的类似问题谁有一个很好的算法找到边缘?

Qua*_*ndo 2

避免这些死胡同的一个简单技巧是在跟踪之前使用最近邻缩放算法将要跟踪的图像的大小加倍。这样你永远不会得到单条。

另一种方法是使用行进方块算法 - 但似乎仍然有一两种失败的情况:http://www.sakri.net/blog/2009/05/28/detecting-edge-pixels-with-行进方格算法/