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

Getting a list of pixels coordinates from a circular or oddly shape blob - Matlab

我是图像处理的新手,我正在尝试获取在 circular/oval/oddly 形状 blob 中找到的像素坐标列表。

我能想到的唯一方法是使用边界框,但不幸的是边界框确实越过该区域。

谁有更好的主意?

谢谢

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

[r,c] = find(im);

rc 将是每个白色像素的行和列。这假设对象是完全关闭的——我想提一个警告。如果物体内部有空洞,可以考虑用imfill来填补这些空洞,然后结合find:

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

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

s = regionprops(im, 'PixelList');

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

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

coords = s(idx).PixelList;

idx是你要访问的对象。