1

为了去除大部分不需要的边缘,我需要连接图像中的组件,并根据欧拉数过滤掉没有恰好一个孔的组件。

我知道我必须使用图像处理功能bwconncompregionprops但我没有使用它们的经验。

这是我的代码:

rgb=imread('2whgyzr.jpg');
gray_scale = rgb2gray(rgb);
BW3 = edge(gray_scale,'canny',[],1);

这是图像:

http://tinypic.com/r/2whgyzr/6

提前致谢

4

1 回答 1

2

如果我正确理解您的问题,这应该可以完成工作:

filtered = false(size(BW3));
CC = bwconncomp(BW3);
CC_props = regionprops(CC,'EulerNumber');

for cc_idx = 1:length(CC.PixelIdxList)
   if(CC_props(cc_idx).EulerNumber == 0)
       pixels = CC.PixelIdxList{cc_idx};
       filtered(pixels) = true;
   end
end

imshow(filtered)

在此处输入图像描述

于 2012-06-16T19:58:34.527 回答