我想在图像中设置一组形状,我想根据它们的区域进行标记,我使用bwboundaries来查找它们,并使用regionprops来确定它们的区域。我想将它们标记为根据它们的面积是否高于或低于我已确定的阈值而标记为不同。
我考虑过使用inserObjectAnnotation,但我不确定如何根据区域的条件添加到函数中?
答案 0 :(得分:1)
假设TH
为阈值区域,BW
为二进制图像,如果您可以将o's
和x'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
示例输出 -
答案 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