为了去除大部分不需要的边缘,我需要连接图像中的组件,并根据欧拉数过滤掉没有恰好一个孔的组件。
我知道我必须使用图像处理功能bwconncomp
,regionprops
但我没有使用它们的经验。
这是我的代码:
rgb=imread('2whgyzr.jpg');
gray_scale = rgb2gray(rgb);
BW3 = edge(gray_scale,'canny',[],1);
这是图像:
提前致谢
为了去除大部分不需要的边缘,我需要连接图像中的组件,并根据欧拉数过滤掉没有恰好一个孔的组件。
我知道我必须使用图像处理功能bwconncomp
,regionprops
但我没有使用它们的经验。
这是我的代码:
rgb=imread('2whgyzr.jpg');
gray_scale = rgb2gray(rgb);
BW3 = edge(gray_scale,'canny',[],1);
这是图像:
提前致谢
如果我正确理解您的问题,这应该可以完成工作:
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)