函数 > 图像处理 > 特征提取 > 示例:欧几里得距离变换
  
示例:欧几里得距离变换
使用 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. 计算边界之间的总距离。
单击复制此表达式
单击复制此表达式