我在MATLAB中找到了一个对象质量的中心:
props= regionprops(image, 'centroid');
我也找到了质量的边界。如何找到边界图像中每个像素到图像中心的距离?
答案 0 :(得分:2)
我不知道你的边界存储的格式。您的问题有两种可能的情况,取决于边界的存储方式:
让我们一次解决一个方案。我假设您的图片边界和原始图片都是二进制,因为这是regionprops
作为输入所接受的内容。
只需从边界图像中提取行和列坐标,然后找到中心坐标与沿边界的每个点之间的欧几里德距离。假设您的图像边界存储在B
中,您只需执行此操作:
centre = props.Centroid;
[rows, cols] = find(B);
dists = sqrt((rows-centre(2)).^2 + (cols-centre(1)).^2);
rows
和cols
将包含沿边界的每个轮廓点的行和列位置。 dists
将包含相对于中心存储在rows
和cols
中的每个轮廓点之间的距离。另请注意Centroid
regionprops
属性存储质心,使第一个元素为x
或列坐标,而第二个元素为{ {1}}或行坐标。
假设您的点存储在2D数组中,其中第一列表示行坐标,第二列表示列坐标,数组称为{{ 1}},这只会变成:
y
points
与第一个场景中的数组相同。