如何识别图像中的闭合连通分量?

Posted

技术标签:

【中文标题】如何识别图像中的闭合连通分量?【英文标题】:How to identify closed connected components in an image? 【发布时间】:2015-04-17 21:12:37 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您可以使用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 = Bk;
    if(k > N)
        plot(boundary(:,2),...
            boundary(:,1),'g','LineWidth',2);
    else
        plot(boundary(:,2),...
            boundary(:,1),'r','LineWidth',2);
    end
end

【讨论】:

这种方法不能解决我的问题。我只想要连接和关闭的对象,即形成一个循环。

以上是关于如何识别图像中的闭合连通分量?的主要内容,如果未能解决你的问题,请参考以下文章

如何找到重叠的连通分量

二值图像连通分量的提取(python+opencv)

如何使用python OpenCV在单通道图像中找到与特定值匹配的最大连通分量?

一种基于连通分量的文本区域定位方法

从图像中删除像素值总和 < 阈值的连通分量

youcans 的 OpenCV 例程200篇125. 形态算法之提取连通分量