从已知点到网络边缘的距离

时间:2016-06-15 01:07:01

标签: matlab matlab-figure

我需要帮助,试图找出用于确定从该图binary image of angiogenesis from a bead中看到的从已知点到网边缘的距离的matlab代码。我知道前面代码中的精确点,但我要求任何帮助来确定从该点到图像中看到的任何主要边缘的距离。任何想法或输入将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

使用MATLAB的边缘函数来检测图像中的边缘,使用bwdist函数来计算边缘的距离变换。 距离变换图像基本上是一个地图,它在每个像素处包含与输入图像中白色像素的距离(在我们的例子中,这些是图像的边缘)。

<强>代码

计算距离变换图

distMap = bwdist(edge(I));

确定距离I:

边缘的点P =(x,y)的距离
distFromP = distMap(y,x)

One Liner解决方案

通过使用method suggested in this answer,可以生成一行代码,用于计算距离I的边缘点P =(x,y)的距离:

distFromP = subsref(bwdist(edges(I)),struct('type','()','subs',{{y,x}}));

指定距离方法

您还可以通过传递方法参数(默认方法是Euclidian)来指定您想要使用的距离函数,如以下示例所示:

D1 = bwdist(im,'euclidean'); %euclidian distance sqrt(|y1-y2|^2+|x1-x2|^2)
D2 = bwdist(im,'cityblock'); %city block distance (|y1-y2|+|x1-x2|)
D3 = bwdist(im,'chessboard'); %chessboard (max(|y1-y2|,|x1-x2|)
D4 = bwdist(im,'quasi-euclidean'); %quasi-euclidean (for more information see MATLAB's documentation)