如何找到边界图像中每个像素到图像中心的距离?

时间:2015-01-25 09:53:04

标签: matlab image-processing

我在MATLAB中找到了一个对象质量的中心:

props= regionprops(image, 'centroid');

我也找到了质量的边界。如何找到边界图像中每个像素到图像中心的距离?

1 个答案:

答案 0 :(得分:2)

我不知道你的边界存储的格式。您的问题有两种可能的情况,取决于边界的存储方式:

  1. 如果边界存储为图像
  2. 如果边界存储为2D点阵列
  3. 让我们一次解决一个方案。我假设您的图片边界和原始图片都是二进制,因为这是regionprops作为输入所接受的内容。

    作为图像的边界

    只需从边界图像中提取行和列坐标,然后找到中心坐标与沿边界的每个点之间的欧几里德距离。假设您的图像边界存储在B中,您只需执行此操作:

    centre = props.Centroid;
    [rows, cols] = find(B);
    dists = sqrt((rows-centre(2)).^2 + (cols-centre(1)).^2);
    

    rowscols将包含沿边界的每个轮廓点的行和列位置。 dists将包含相对于中心存储在rowscols中的每个轮廓点之间的距离。另请注意Centroid regionprops属性存储质心,使第一个元素为x坐标,而第二个元素为{ {1}}或坐标。

    作为2D点数组的边界

    假设您的点存储在2D数组中,其中第一列表示坐标,第二列表示坐标,数组称为{{ 1}},这只会变成:

    y

    points与第一个场景中的数组相同。