计算坐标之间的距离但有限制

时间:2013-11-11 22:41:21

标签: matlab

我设法在二进制图像中找到任意数量的线的交叉点。

然后我使用一个函数,我检测线之间的交叉点。所以现在我将交叉点的坐标保存在一个数组中。

现在我想计算交叉点之间的距离(连接我所有交叉点的假想线),但我希望距离计算沿着二进制图像上已有的线移动。

因此距离计算在计算时不能逃避一条线,而是必须“沿着它行走”。

虚构的路径(最终我们计算它的距离)必须沿着已画出的线走。

编辑**这是我的交叉检测''ALGO''

clear all
pellara4=imread('C:/users/lemesios/desktop/pellara4.jpg');    
blackwhitepellara=im2bw(pellara4,0.5);    
I = blackwhitepellara;    
C = corner(I);    
num_of_rows=size(C,1);    
num_of_cols=size(C,2);    
for z =1:num_of_rows  
    k=C(z,2);
    j=C(z,1);
    if (I(k+1,j)==0)&& (I(k,j+1)==0) && (I(k-1,j)==0) && (I(k,j-1)==0)
        imshow(I);
        hold on 
        plot((j), (k), 'b*');
        disp(k);
        disp(j);
    end
end

1 个答案:

答案 0 :(得分:1)

我觉得这与Dijkstra的算法类似。您可以通过节点表示交叉点。然后生成一个网格,其中每个交叉点连接到每个其他交叉点。然后,如果二进制图像中存在一条线,则指定单位权重,否则指定inf即无限权重。当你必须测量第m个点和第n个点之间的距离(比方说)时,然后将第m个点作为源点,将第n个点作为目的地,并根据Dijkstra算法找到最短路径。