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