使用Matlab查找标记区域的最近点到图像中的点

时间:2017-01-04 12:22:19

标签: matlab image-segmentation nearest-neighbor

我正在尝试使用Matlab找到图像中某个区域的关闭点:

考虑这个示例代码:

externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

我想找到距离点最近的结构的最近点,例如[0,0]。到目前为止,我的方法是获取所有连接结构的所有质心,然后遍历所有连接结构以找到最接近的结构(不准确和低效)。

1 个答案:

答案 0 :(得分:1)

如果您只想查找单个最近点,可以将bwdist与第二个输出参数一起使用。这将为您提供一个矩阵,在每个点包含输入图像最接近的非零点的线性索引。然后你只需要选择与你感兴趣的点相对应的索引。bwdist的输入图像应该是二进制的,所以在你的情况下你可以尝试类似的东西

% Make the image binary
binaryimage = BW > 0;

% Get the linear indices of the closest points
[~, idx] = bwdist(binaryimage);

% Find the linear index for point (3, 2)
x = 3;
y = 2;
pointindex = sub2ind(size(binaryimage), y, x);

% Find the index of the closet point from the segmentation
closestpointindex = idx(pointindex);

% Get coordinates of the closest point
[yc, xc] = ind2sub(size(binaryimage), closestpointindex);

这将为您提供最接近点(xc, yc)的二进制图像中具有非零值的像素的坐标closestpointindex和矩阵索引((x,y)),其中xy是Matlab索引,记住Matlab索引从1开始,行是第一个,即BW(y,x)