2012-03-17 180 views
3

我试图想到一种有效的方式来跟踪位图图像的均匀着色区域的轮廓并将它们保存为GraphicsPath对象。C#中的边缘检测

退房这个小样本图片:

enter image description here

现在,我能找到的东西最边缘检测型要么太复杂 - 工作照片上有不同程度的亮度等等 - 我边缘很容易检测到,简单地说,RGB值的任何微小变化都意味着它的边缘。

但也有一个更复杂的情况比最简单的事情,扫描整个图像的一个斑点边缘检测。我有地区共享边界,我需要尽可能高效,因为速度是一个大问题。

任何人都可以给我一些关于如何做到这一点的指针?伪代码或实际代码将会很棒

理想情况下,我可以一行一行地扫描每一个不同区域的轮廓,同时建立轮廓。但是这种编码超出了我的技能,因为我在数学上很蹩脚。

+0

图像不可用,请尝试上传到另一个网站,如http://imageshack.us/ – Mortana 2012-03-17 21:19:27

+0

是否有任何已知的最小尺寸的blob可以是? – 2012-03-17 21:22:51

+0

没有提到最小尺寸,但实际上我无法想象任何斑点例如1像素。 – Trant 2012-03-17 21:42:19

回答

1

我会尝试:

这可能是可行的,以找到标准的库,做到上述,并做到这一点,有效和正确。有了这个工作之后,你可以考虑优化,比如避免检测两次边。

如果你需要这个优化,我的猜测是你必须自己写这个。如果你不能,确保有人雇用谁可以。

+0

谢谢!从你的文章和链接Guy Coder看来,我将尝试使用Marching Squares的解决方案,当然除了我没有从背景中扫描一个blob ..实际上我没有背景。如果您对如何改编游行广场以获得共享边界有任何想法,我很乐意听到它。 – Trant 2012-03-17 23:47:40

+0

对于步行广场,您选择一种颜色作为前景,然后将其余所有其他视为背景。我认为你可以修改它来一次检测多个对象。但是你应该先写单个对象版本。 – 2012-03-18 08:54:41