我有一个包含几个分隔区域的二进制图像。我想在这些区域占据的面积(像素数)上设置一个阈值,其方式为:如果像素的像素少于阈值,则省略该区域。我已经尝试过这些代码(使用bwconncomp
):
[...]
% let's assume threshold = 50
CC = bwconncomp(my_image);
L = labelmatrix(CC);
A = cell( size(CC.PixelIdxList,1) , size(CC.PixelIdxList,2) );
A = CC.PixelIdxList;
for column = 1 : size(CC.PixelIdxList,2)
if numel(CC.PixelIdxList{column}) < 50, A{column} = 0;
end
end
但此时我不知道如何将细胞 C 转换回我的图像形状然后显示出来!这有什么窍门吗?
获取有关图像中对象的信息是否比我在此处使用的更简单,更直接?
我还需要知道这些物体的长度和宽度。这些物体不一定具有任何特定的几何形状!
由于
答案 0 :(得分:0)
由于没有人在这里努力回答我的问题,我发现它在其他地方。现在我正在为此而努力,以防万一像我这样的新手可能需要知道这一点。
为了知道图像中物体的长度和宽度:
labeledImage = bwlabel(my_image, 8);
regioninfo = regionprops(labeledImage , 'MajorAxisLength', 'MinorAxisLength');
lengths = [regioninfo.MajorAxisLength]; %array
widths = [regioninfo.MinorAxisLength]; %array