我有带有各种标志的RGB图像。我的主要目标是计算与图像边界接触的标志。
方法与问题
我首先加载图像[Fig。1],然后将其转换为灰度并应用中值滤波器以消除一些噪声[图1]。2]。然后,我用0.2的阈值对它进行了二值化处理,结果如图3所示。这时我得到了二值化图像,但问题是,属于同一符号的某些部分出现在各个区域中,而不仅仅是一个区域。现在,我的目标是合并属于同一对象的区域,因此我可以bwlabel
用来计算图像中有多少个符号,并imclearborder
用来消除边界中的符号,然后bwlabel
再次使用来获得他们俩。
我的方法是使用bwmorph
,Dilate
扩大对象,然后尝试用imfill
,填充它们holes
。但是问题是,如果我少量扩张它们[图。4],imfill
似乎并没有填充它们,如果我将它们大量扩张[图5],所有对象就会开始合并:(
码
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)
图
图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: