Matlab形状标签

时间:2014-07-16 12:59:20

标签: matlab image-processing shape area annotate

我想在图像中设置一组形状,我想根据它们的区域进行标记,我使用bwboundaries来查找它们,并使用regionprops来确定它们的区域。我想将它们标记为根据它们的面积是否高于或低于我已确定的阈值而标记为不同。

我考虑过使用inserObjectAnnotation,但我不确定如何根据区域的条件添加到函数中?

2 个答案:

答案 0 :(得分:1)

假设TH为阈值区域,BW为二进制图像,如果您可以将o'sx's标记为matlab figure text在他们的中心(准确的质心),基于阈值,看看这是否满足您的需求 -

stats = regionprops(BW,'Area')
stats2 = regionprops(BW,'Centroid')

figure,imshow(BW)
for k = 1:numel(stats)
    xy = stats2(k).Centroid
    if (stats(k).Area>TH)
        text(xy(1),xy(2),'L') %// Large Shape
    else
        text(xy(1),xy(2),'S') %// Small Shape
    end
end

示例输出 -

enter image description here

答案 1 :(得分:0)

您可以使用CC = bwconncomp(BW,conn)

要获取每个连接组件的像素数,您可以使用:

numPixels = cellfun(@numel,CC.PixelIdxList);

CC.PixelIdxList中,您有一个所有找到的对象的列表以及属于这些组件的像素的索引。我想标记你可以做的事情:

for ind = 1:size(CC.PixelIdxList,2)
   Image(CC.PixelIdxList{ind}) = ind;
end