我正在使用MATLAB进行图像处理,并且具有分段区域的图像。这是一个示例图像: http://www.mathworks.de/help/releases/R2013b/images/examples/ipexroundness_04.png
如何找到从一个区域到最近邻区域的最小距离?我不需要完全实现,但是任何人都可以参考找到最近邻居区域并计算最小距离和该区域最近点的算法。
我想使用此信息连接图像区域,即在图像区域之间构建桥梁。
答案 0 :(得分:1)
脱离我的头顶,快速而肮脏的嵌套循环方法:
对于区域ii=1:n
,运行区域ii
的掩码到bwdist
以生成距离变换。对于区域jj=1:n
,请使用区域jj
的掩码来索引该距离变换。这可以获得区域jj
中每个像素与区域ii
中最接近的对应点的距离 - 找到最小值(及其坐标)并将其填充到某种成对距离矩阵中。重复完成,然后处理成对距离矩阵以确定要连接的区域。
编辑:有了这么远,我想我也可以把一些东西拼在一起 - 这是一个粗略的版本,它采用二进制图像并返回潜在连接点的距离,x和y坐标作为成对矩阵:
function [d x y] = regiondist(img)
label = bwlabel(img);
n = max(label(:));
[x y d] = deal(zeros(n));
for ii = 1:n
dt = bwdist(label == ii);
for jj = 1:n
if ii == jj
continue
end
reg = (label == jj);
[mindist idx] = min(dt(reg));
d(ii, jj) = mindist;
[ry rx] = find(reg);
x(ii, jj) = rx(idx);
y(ii, jj) = ry(idx);
end
end