Matlab:连接组件分析

Matlab: connected components analysis

提问人:justik 提问时间:11/17/2023 最后编辑:justik 更新时间:11/17/2023 访问量:30

问:

从以下二进制栅格:

R = [0 1 0 0 0 0 1 1;
     0 1 1 0 0 1 1 0;
     0 1 0 0 0 0 1 0;
     0 0 0 1 1 0 0 0;
     1 0 1 0 0 0 1 1];

我想删除所有像素小于 3 的 4 个连接组件。

首先,评估连接组件的数量:

CC = bwconncomp(R,4);
L  = labelmatrix(CC);
IC = CC.PixelIdxList;
np = cellfun(@numel, IC);

随后,找到小于 3 个像素的 4 个连接组件:

idxs = find(np < 3)

但是,从输入栅格 R 中移除连接分量的最终尝试不成功:

R(IC{idxs}) = 0;   %Result: 4-D double 

输出栅格将转换为“4D”矩阵。这可能是由于单元格的输出单元格工作不正确造成的,但我不确定......

感谢您的帮助。

MATLAB 栅格 连接组件

评论

1赞 Cris Luengo 11/17/2023
您有 4 个小于 3 像素的连接组件。 将有 4 个元素。 将是一个包含 4 个元素的逗号分隔列表,当用作索引时,它们会索引 4D 数组。MATLAB 将增加 的大小以适应您正在执行的索引。相反,遍历 的元素,并分别对每个对象进行索引。或者,你可以连接各种 s:(我不确定你是否需要做或)。idxsIC{idxs}RidxsPixelIdxListidx = cat(1,IC{idxs}); R(idx) = 0;cat(1,...)cat(2,...)
0赞 justik 11/17/2023
@Cris Luengo:非常感谢您的建议和解释。

答: 暂无答案