图像边缘
图像边缘是图像最基本的特征,边缘即图像局部不连续性(突变处),例如灰度级的突变、颜色的突变、纹理结构的突变等。边缘检测的方法绝大部分可以分为两类:
- 基于查找一类:通过寻找图像一阶导数中的最大值和最小值来检测边界,通常是将边界定位在梯度最大的方向。
- 基于零穿越的一类:通过寻找图像二阶导数零穿越来寻找边界,通常是laplacian过零点或者非线性差分表示过零点。
一阶导数的边缘算子
Roberts算子
Roberts算子是一种利用局部交叉差分寻找边缘的算子,常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。 优点:从图像处理的实际效果来看,边缘定位较准,对噪声敏感。适用于边缘明显且噪声较少的图像分割。
缺点:提取的边缘线条较粗。
Prewitt算子
Prewitt算子采用 3x3 模板对区域内的像素值进行计算,而Robert算子的模板为 2x2 ,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像。 优点:Prewitt算子对噪声有抑制作用,抑制噪声的原理是通过像素平均。
缺点:该算子具有平滑的作用,但是像素平均相当于对图像的低通滤波,所以Prewitt算子对边缘的定位不如Roberts算子。
Sobel算子
Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法。 优点:由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响,边缘定位效果不错。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。
缺点:但检测出的边缘容易出现多像素宽度。
二阶微分的边缘算子
Laplacian 算子
Laplacian算子是一种各向同性算子,不能检测出边的方向。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。所以,拉普拉斯算子一般不会用于边的检测,而是常用来判断边缘像素位于图像的明区或暗区。
Canny步骤:
- 用高斯滤波器平滑图像:边缘检测算子受噪声的影响都很大。那么,我们第一步就是想到要先去除噪声,因为噪声就是灰度变化很大的地方,所以容易被识别为伪边缘。
- 用一阶偏导有限差分计算梯度幅值和方向,例如 Sobel
- 对梯度幅值进行非极大值抑制:sobel算子检测出来的边缘太粗了,我们需要抑制那些梯度不够大的像素点,只保留最大的梯度,从而达到瘦边的目的。通常灰度变化的地方都比较集中,将局部范围内的梯度方向上,灰度变化最大的保留下来,其它的不保留,这样可以剔除掉一大部分的点。将有多个像素宽的边缘变成一个单像素宽的边缘。即“胖边缘”变成“瘦边缘”。
- 用双阈值算法检测和连接边缘:通过非极大值抑制后,仍然有很多的可能边缘点,进一步的设置一个双阈值,即低阈值(low),高阈值(high)。灰度变化大于high的,设置为强边缘像素,低于low的,剔除。在low和high之间的设置为弱边缘。对每一个弱边缘进一步判断,如果其领域内有强边缘像素,保留,如果没有,剔除。
|