我有一个带有各种标志的RGB图像。我的主要目标是计算与图像边界接触的信号。
方法和问题
我从加载图像开始[Fig。 1],然后将其转换为灰度并应用中值滤波器以消除一些噪声[图2]。 2]。然后,我使用0.2的阈值对它进行了二值化处理,结果如图3所示。此时,我得到了二值化图像,但是问题是,属于同一符号的某些部分出现在各个区域中,而不是仅出现在一个区域中。现在我的目标是合并属于同一对象的区域,因此我可以使用bwlabel计数图像中有多少个符号,并使用imclearborder消除边界中的符号,然后再次使用bwlabel来获得两者之间的区别。
我的方法是使用bwmorphDilate扩展对象,然后尝试用imfillholes填充对象。但是问题是,如果我少量扩张它们[图。 4],imfill似乎无法填充它们,如果我将其大量扩张[图5],所有对象开始合并:(
Code
img=im2double(imread('image.png')); figure, imshow(img) 
img_gray=rgb2gray(img); imshow(img_gray);                                 
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);       
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)

Figures
图1:
图1 http://dl.dropbox.com/u/5272012/1.png
图2:
图2 http://dl.dropbox.com /u/5272012/2.png
图3:
图3 http://dl.dropbox.com/u/5272012/3.png
图4:
图4 http://dl.dropbox.com/u/5272012/4.png
图5:
图5 http://dl.dropbox.com/u/5272012/5.png

评论

我的问题是什么才能确切地告诉您标志已损坏?您要如何真正放置输出?我的意思是-您是否只想为所有切下的标志着色?还是您真的要列出每个标志并对切割/满切割进行分类?

#1 楼

我认为,扩张侵蚀是非常基本的工具。您具有非常强大的信息基础和相当不错的输入图像来做出此类决策。

我的观点是:


鉴于从图1到图3所示的合理成功,您可以识别和细分各个标志。
假设您已经知道先验标志,则可以应用适当的快速算法来进行模式匹配。如果不知道确切的图案,则只需确定图案的外形即可。
基于分类,您始终可以定义每个匹配模式的质心及其各自的宽度和高度。如果质心X,Y位置太靠近边界-即$ centroid(x)<0 $或$ centroid(x)> imagewidth-shapewidth $它在边缘之外,同样,您也可以申请Y轴。
鉴于您只关心边缘上的东西-您应该仅从每个边缘开始,然后从那里开始图案匹配。开始匹配部分图案/形状,如果部分图案/形状匹配,则在边缘上切割该对象。

这里有一些参考资料可以帮助您很好地解决问题。

本文非常了解您正在处理的符号/令牌的许多基础知识。使用商标图像数据库进行模式识别研究1998,第1卷。 31,no9,第1369-1390页。

有许多研究元素涉及部分或封闭的形状/图案匹配。

Eli Saber,徐耀武,A。Murat Tekalp通过子矩阵匹配进行局部形状识别以实现部分匹配的引导图像标记模式识别38(2005)1560 – 1573如果您采用这种方法,则可以将此答案扩展为更具体的查询。

评论


$ \ begingroup $
嘿!我不能使用模式匹配,因为这将花费很长时间并且需要太多的计算工作。此外,对象(符号)的比例可以是可变的(教授给我们提供了随机图像,其中符号的比例可以从+ 30%到-30%非常多,因此模式匹配是没有用的。为了解决这一问题。
$ \ endgroup $
– Rui Trovisco
2012年5月16日12:53

$ \ begingroup $
@RuiTrovisco我理解这一点。这就是为什么我写的原因-我会根据您的反馈改善答案。我对你的问题发表了一些评论。请在那里还原。
$ \ endgroup $
– Dipan Mehta
2012年5月16日12:58

#2 楼

这是一些灵感,显示出您正在寻找的东西。

从fig3开始。