从圆形或奇怪的形状blob获取像素坐标列表 - Matlab

时间:2015-06-24 18:50:50

标签: matlab image-processing computer-vision

我是图像处理新手,我正在尝试获取圆形/椭圆形/奇形状blob中的像素坐标列表。

我能想到的唯一方法就是使用一个边界框,但不幸的是边界框会覆盖整个区域。

任何人都有更好的主意吗?

由于 enter image description here

1 个答案:

答案 0 :(得分:2)

只需使用find即可获得像素坐标。假设您的图片是二进制并存储在im中,请执行:

[r,c] = find(im);

rc将是每个像素为白色的行和列。这假设物体完全关闭 - 我想提一个警告。如果对象内部有洞,请考虑使用imfill填充这些洞,然后将其与find结合使用:

bw = imfill(im, 'holes');
[r,c] = find(bw);

如果您有多个对象,请使用regionprops并指定PixelList属性:

s = regionprops(im, 'PixelList');

这将返回N元素结构,其中每个结构包含一个PixelList字段,其中包含每个唯一对象的(x,y)坐标。在您的情况下,这将是M x 2矩阵,其中第一列是x或列坐标,第二列是y或行坐标。

要访问对象的像素坐标列表,只需执行以下操作:

coords = s(idx).PixelList;

idx是您要访问的对象。