我设法在二进制图像中找到任意数量的线的交叉点。
然后我使用一个函数,我检测线之间的交叉点。所以现在我将交叉点的坐标保存在一个数组中。
现在我想计算交叉点之间的距离(连接我所有交叉点的假想线),但我希望距离计算沿着二进制图像上已有的线移动。
因此距离计算在计算时不能逃避一条线,而是必须“沿着它行走”。
虚构的路径(最终我们计算它的距离)必须沿着已画出的线走。
编辑**这是我的交叉检测''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
答案 0 :(得分:1)
我觉得这与Dijkstra的算法类似。您可以通过节点表示交叉点。然后生成一个网格,其中每个交叉点连接到每个其他交叉点。然后,如果二进制图像中存在一条线,则指定单位权重,否则指定inf
即无限权重。当你必须测量第m个点和第n个点之间的距离(比方说)时,然后将第m个点作为源点,将第n个点作为目的地,并根据Dijkstra算法找到最短路径。