如何识别图像中的已关闭连接组件?

时间:2015-04-17 21:12:37

标签: image matlab canny-operator

给定二进制图像,如何识别封闭的组件并删除未闭合的组件?

在删除其他未关闭的对象时,将保留红色矩形内的对象。

enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用bwboundaries查找图片中的边界。 在应用之前,您需要执行图像扩张以识别漏洞:

I = imread('H2b_1_canny_1.jpg');
BW = im2bw(I, graythresh(I));
se = strel('disk',8);
BW = imdilate(BW,se);

[B,L,N] = bwboundaries(BW);
figure; imshow(BW); hold on;
for k=1:length(B),
    boundary = B{k};
    if(k > N)
        plot(boundary(:,2),...
            boundary(:,1),'g','LineWidth',2);
    else
        plot(boundary(:,2),...
            boundary(:,1),'r','LineWidth',2);
    end
end

dilated image with highlighted hole