用MATLAB进行图像处理

图像处理概念、算法和MATLAB

探索最短路径-第3部分

的第2部分探索最短路径,我注意到使用“准欧几里得”距离变换来寻找二值图像中两个物体之间的最短路径的问题。具体来说,我们的算法导致两个对象之间有一个很大的、未填充的空隙。

bw =逻辑([...0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0]);l = bwlabel(bw);bw1 =(l == 1);BW2 =(L == 2);d1 = bwdist(bw1,'quasi-euclidean');d2 = bwdist(bw2,'quasi-euclidean');D = d1 + d2;路径= imregionalmin (D);P = false(大小(bw));P = imoverlay(P, paths,[。5。5。5);P = imoverlay(P, bw, [1 1 1]);imshow (P,“InitialMagnification”“健康”

标记为灰色的像素应该是沿着原始图像中的两个对象的最短路径位的像素集。你可以明白,看看,这是一个很大的差距。

看看为什么,让我们更仔细地检查D

D
D = 12.4853 11.6569 12.2426 13.4142 14.8284 11.0711 9.6569 10.2426 10.4142 12.0000 13.4142 10.4853 9.6569 9.6569 9.6569 10.2426 10.8284 11.4142 12.853 9.6569 9.6569 9.6569 9.6569 9.6569 10.2426 11.2426 11.6569 11.0769 11.6569 9.6569 9.6569 9.6569 9.6569 9.6569 9.6569 9.6569 9.6569 11.0711 11.6569 10.2426 9.6569 9.6569 9.6569 9.6569 9.65699.6569 9.6569 10.4853 12.8284 11.4142 10.8284 10.2426 9.6569 9.6569 9.6569 10.4853 13.4142 12.0000 11.4142 10.8284 10.2426 9.6569 11.0711 14.8284 13.4142 12.8284 12.2426 11.6569 11.6569 11.6569 12.4853

在两个值为9.6569的对象之间似乎有一个完整的像素集。事实上,像素并不是所有的都有相同的值。例如,D (3,3)似乎有相同的价值D (4, 4)但实际上略有不同。

D (3,3)
ans = 9.6569.
D (4, 4)
ans = 9.6569.
(3,3) - D (4, 4)
ans = -9.5367e-007

两者的区别是对应的单精度相对浮点精度:

EPS(D(3,3))
ans = 9.5367e-007

这个浮点舍入错误之所以起作用,是因为平方根(2)的倍数以不同的顺序相加。

所以我们需要调整算法来考虑浮点舍入错误。一种方法是将距离四舍五入,以较低的精度转换值。例如,下面的代码将距离转换舍入为(1/32)的倍数。

D =圆(D * 32) / 32;

现在D (3,3)D (4, 4)等于:

(3,3) - D (4, 4)
ans = 0

imregionalmin按照预期工作,提取属于最短路径的像素集。(我使用IMOVERLAN.来自MATLAB中央文件交换。)

路径= imregionalmin (D);P = false(大小(bw));P = imoverlay(P, paths,[。5。5。5);P = imoverlay(P, bw, [1 1 1]);imshow (P,“InitialMagnification”“健康”

这是我们修改的算法,包括新的舍入步骤:

  1. 仅计算前景像素的左上方块的距离变换。
  2. 仅计算前景像素的右下块的距离变换。
  3. 将两个距离变换在一起添加。
  4. 四舍五入以降低精度。
  5. 结果中的区域最小值中的像素沿着从一个块到另一个块的一个或多个最短路径呈现。

下次我将研究如何在众多最短路径中选择一条特定的路径。

本系列中的所有帖子

  • 通过添加两个距离变换在一起找到最短路径的基本思想(第1部分
  • 最短路径的非不承诺(第2部分
  • 处理浮点舍入效果(第3部分
  • 使用稀疏挑选一个路径(第4部分
  • 使用bwdistgeodesic查找受约束的最短路径(第5部分




MATLAB®7.13发布

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击这里登录到您的MathWorks帐户或创建一个新帐户。