我试图找到具有2d数组中元素与另一个相同元素2d数组的最小距离的坐标/索引。我有一个来自我的边缘检测问题和地面实况图像的二进制图像。例如,我有A作为我的二进制图像,B作为基础真实图像:
A = [0 255 255 255;255 255 255 255;255 255 255 255;255 255 255 255 ]
B = [255 255 255 255;255 255 255 255; 255 255 0 255; 255 255 0 0]
0为黑色,255为白色。我的算法是这样的:
for n=1:maxindex
if(A(n)==0&&B(n)==0)
distance(n) = 0;
elseif(A(n)==0&&B(n)==255)
for m=1: maxindex
if(B(m)==0&&m~=n)
translate index to subscripts
compute euclidean distance
store value in temporary vector
end
end
find minimum in temporary vector
distance(n) = minimum found
端 端
对于大型图像,该算法确实需要很长时间,因为当出现不匹配时,该算法是详尽无遗的。 Matlab中是否有一个函数可以让它更快?