-1

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

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

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

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

假想的路径(最终我们计算它的距离)必须沿着已经绘制的线走。

编辑**这是我的交叉路口检测“算法”

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
4

1 回答 1

1

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

于 2013-11-11T23:07:47.457 回答