示例:欧几里得距离变换
使用
distform 函数计算矩阵
M 的欧几里得距离变换,将值为
fg 的像素视为前景像素。
图像矩阵
1. 定义图像矩阵并将 distform 应用于该矩阵。
每个输出像素的值为距离最近输入前景 (值为 100) 像素的距离:
◦ 对于输入前景像素,输出距离为 0
◦ 对于水平和竖直邻点,距离为 1
◦ 对于对角邻点,距离为 2 的平方根或 1.414
具有单个非零像素的图像
1. 定义具有单个非零像素的图像。
2. 将 distform 应用于该图像:
当进行移动使其远离输入图像中的前景像素 (中心像素) 时,距离会单调递增。
距离变换会产生近似欧几里得距离。在上述示例中,矩阵位置 (0,1) 的精确欧几里得距离变换输出应为:
而在输出图像中,该值为 5.243。
圆对象的图像
1. 定义一个包含圆的图像:
4. 将 distform 函数应用于此圆,对其进行缩放并将所得结果保存到一个新文件中。
5. 从两个文件插入图像,并比较结果。
对于圆内的所有点,距离值为零,随着向外移动,该距离值单调递增,但不完全等于欧几里得距离,或者输出可能是径向对称的。
单个对象的两个二值图像。
1. 读入图像。
3. 从三个文件插入图像,并比较结果。
| | |
(flower.bmp) | (flower_d2.bmp) | (flower_d3.bmp) |
4. 使用函数 distform 计算 D1 的距离变换。
5. 使用函数
mask 和
mean,以用图像
D2 和
D3 屏蔽距离变换图像并计算整个图像的均值。这表示两个图像之间距离的测量值。
D1 和 D1 之间的距离为零,D1 与其他图像之间的距离随平移距离的增大而增大。
6. 计算 Hausdorff 距离
Hausdorff 距离被定义为两个集合中各点之间最近距离的最大值。要计算两个图像之间的 Hausdorff 距离,请使用
max 函数代替
mean 函数。
两个边界图像
可以通过计算两个边界图像之间的距离来比较边界探测器的性能。使用已屏蔽距离的均值或最大值作为边界距离的测量值。
3. 插入两个图像,并从视觉上加以比较。
| |
(lena_e1.bmp) | (lena_e2.bmp) |
4. 计算边界之间的总距离。