从圆形或奇形怪状的斑点中获取像素坐标列表 - 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);
r
和 c
将是每个白色像素的行和列。这假设对象是完全关闭的——我想提一个警告。如果物体内部有空洞,可以考虑用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
是你要访问的对象。
我是图像处理的新手,我正在尝试获取在 circular/oval/oddly 形状 blob 中找到的像素坐标列表。
我能想到的唯一方法是使用边界框,但不幸的是边界框确实越过该区域。
谁有更好的主意?
谢谢
只需使用find
获取像素坐标即可。假设您的图像是 binary 并存储在 im
中,请执行:
[r,c] = find(im);
r
和 c
将是每个白色像素的行和列。这假设对象是完全关闭的——我想提一个警告。如果物体内部有空洞,可以考虑用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
是你要访问的对象。