我是图像处理新手,我正在尝试获取圆形/椭圆形/奇形状blob中的像素坐标列表。
我能想到的唯一方法就是使用一个边界框,但不幸的是边界框会覆盖整个区域。
任何人都有更好的主意吗?
由于
答案 0 :(得分:2)
只需使用find
即可获得像素坐标。假设您的图片是二进制并存储在im
中,请执行:
[r,c] = find(im);
r
和c
将是每个像素为白色的行和列。这假设物体完全关闭 - 我想提一个警告。如果对象内部有洞,请考虑使用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
是您要访问的对象。