1

给定一个二值图像,如何识别封闭组件并删除未封闭组件?

红色矩形内的对象将被保留,同时移除其他未闭合的对象。

在此处输入图像描述

4

1 回答 1

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

带有突出孔的放大图像

于 2015-04-17T21:35:33.663 回答