湖南大学 计算机图形图像实验
第七讲 边沿检测与提取,轮廓跟踪
我们在第三讲介绍平滑与锐化时引入了模板操作,今天还要用到它。
1.边沿检测
我们给出一个模板
101 10*1 101
和一幅图象
faint![]001255254254254111254253254254000255255253253110254254254254 。
不难发现原图中左边暗,右边亮,中间存在着一条明显的边界。进行模板操作后的结果如下: faint![]x1255253-10xx025325201xx0255255-2-2xx-125325400x
可以看出,第三四列比其他列的灰度值高很多,人眼观察时,就能发现一条很明显的亮边,其它区域都很暗,这样就起到了边沿检测的目的。
为什么会这样呢?仔细看看那个模板就明白了,它的意思是将右邻点的灰度值减左邻点的灰度值作为该点的灰度值。在灰度相近的区域内,这么做的结果使得该点的灰度值接近于0,而在边界附近,灰度值有明显的跳变,这么做的结果使得该点的灰度值很大,这样就出现了上面的结果。
这种模板就是一种边沿检测器,它在数学上的涵义是一种基于梯度的滤波器,又称边沿算子,你没有必要知道梯度的确切涵义,只要有这个概念就可以了。
梯度是有方向的,和边沿的方向总是正交(垂直)的,例如,对于上面那幅图象的转置图象,边是水
1 1 1 平方向的,我们可以用梯度是垂直方向的模板00*0 检测它的边沿。
11 1 1 10
再举一个梯度为45度方向模板的例子 101,可以检测出135度方向的边沿。
11 0
Sobel算子
1 2 1
0*0 .在边沿检测中,常用的一种模板是sobel 算子。有两个,一个是检测水平边沿的0
…… 此处隐藏0字 ……
21 1 1 1 1 101 101
一个是检测竖直平边沿的 20*2。与00*0和 10*1 相比,sobel算子对于像
11 1 101 101
素的位置的影响做了加权,因此效果更好。
1 22
Sobel算子另一种形式是Isotropic Sobel算子,也有两个,一个是检测水平边沿的 10*1 101
(faint!)[]-1-??22 -100.01 ??22 1
一个是检测竖直平边沿的(faint!)[]-101- ??22 0. ??22 -101 。