Skip to main content
 首页 » 编程设计

image中区分单连通图形

2024年12月31日54unruledboy

所以我在 Matlab 中有一个二进制矩阵。 它基本上是一个被中性背景(值为 0)包围的 Blob (值为 1 的像素)。

我想弄清楚这个 blob 是否是简单连接的。 下图是一个简单的示例。

Connectedness

如何实现这一目标? 值得注意的是,我知道像素化图像中的每条路径都可以通过从 4 个相邻元素(上、下、左、右)或 8 个相邻元素等中进行选择来创建 - 在这种情况下这并不重要。

请您参考如下方法:

代码

%// Assuming bw1 is the input binary matrix 
 
[L,num] = bwlabel( ~bw1 ); 
counts = sum(bsxfun(@eq,L(:),1:num)); 
[~,ind] = max(counts); 
bw2 = ~(L==ind); 
 
%// Output decision 
[L,num] = bwlabel( bw1 ); 
if ~nnz(bw1~=bw2) && num==1 
    disp('Yes it is a simply connected blob.') 
else 
    disp('Nope, not a simply connected blob.') 
end