在MATLAB中计算测地距离

时间:2019-07-19 15:44:33

标签: matlab image-processing graph

我想计算有向图中非相邻节点之间的测地距离。像下面的矩阵(W)一样,零表示这些节点不相邻,其他值表示对应节点的边缘权重。我根据以下公式计算了距离:

我使用了MATLAB函数graphshortestpath()。但是,恐怕此功能无法提供我想要的东西。所以问题是计算这种距离的另一种方法是什么? MATLAB中是否还有其他功能?使矩阵稀疏会影响最终结果吗?

程序代码:

N=6;  % Size of matrix W
W=[0,0.797944993710195,0,0,0,0;0.495326358306295,0,0.164911895411107,0,0,0;0,0.0530273831645896,0,0.00901073533222818,0,0;0,0,0.00709165683115063,0,0.438584093809830,0;0,0,0,0.397895339311598,0,0.000916573989905329;0,0,0,0,0.00104307323830613,0]; %Connectivity matrix
Geo_dist=zeros(N);   %temporary variable for geodesic distance measurement
W_sparse=sparse(W);  %Making W sparse because the matlab function works only with sparse matrix
for g=1:N
for h=1:N
    if W(g,h)==0 & g~=h;
        Geo_dist(g,h)=graphshortestpath(W_sparse,g,h,'directed',false); 
    end
end
 end

1 个答案:

答案 0 :(得分:2)

您可以直接在图像网格上的“图像处理工具箱”中使用bwdistgeodesic或graydist吗?

https://www.mathworks.com/help/images/ref/graydist.html https://www.mathworks.com/help/images/ref/bwdistgeodesic.html

或者,如果您更喜欢平滑的东西,那么如果您看一下doc示例,imsegfmm将允许您使用快速行进方法来计算测地距离:

https://www.mathworks.com/help/images/ref/imsegfmm.html

我在回答中假设您已经对图像数据进行了网格化,并且由于它被标记为“图像处理”,因此这不是任意连接图。