如何使用bwlabel或regionprops提取每个标签的像素集?

时间:2014-04-17 18:55:01

标签: image-processing matlab

我跟随此tutorial

目标是能够吐出: 一个。每个标记对象的中心 湾与每个标记对象关联的所有像素

以某种方式,我有一个' a。'对于每个对象,或者' b。'对于每个对象

enter image description here

我真的不知道该如何解决这个问题。是否有matlabl工具来帮助提取这些像素或中心 - 每个标签?

更新

我确实设法使用reigionprops圈出了我想要的80%,但它并没有精确地捕捉标签,只是围绕它们设置一个圆圈同时捕获背景,这真的不可避免吗?我只是不确定如何访问每个带圆圈的项目的像素集。

r=regionprops(L, 'All'); imshow(imagergb); areas={r.Area}; Bboxes={r.BoundingBox};
for k=2:numel(r)
    if areas{k}>50 && areas{k} < 1100 
        rectangle('Position',Bboxes{k}, 'LineWidth',1, 'EdgeColor','b', 'Curvature', [1 1]); 
    end
end

所以我试图做的就是例如 enter image description here

我以为它可能只是

r = regionprops(L, 'PixelIdxList')

然后

element1 = r(1).PixelIdxList

但无法弄清楚如何获取每个像素的位置

我也试过

Z= bwlabel(L);

但是imshow(Z == 1)吐出所有标签并且imshow(Z == 2)吐出背景,所有标签和背景。我不能测试bwlabeln因为我不确定要为r和c参数输入什么。

1 个答案:

答案 0 :(得分:4)

使用regionprops(L, 'PixelIdxList')是正确的。它为您提供每个标签的像素索引列表。然后,您可以使用(例如,第一个标签)将它们转换为[x,y]坐标

[y,x] = ind2sub(size(L), r(1).PixelIdxList)

您可以使用regionprops(L, 'Centroid')获取标签中心。这已经为每个标签提供了[x,y]坐标。请注意,这些是子像素坐标,因此如果要将它们用作索引,则可能需要对它们进行舍入。