边缘检测算子之间的优劣

图像边缘

图像边缘是图像最基本的特征,边缘即图像局部不连续性(突变处),例如灰度级的突变、颜色的突变、纹理结构的突变等。边缘检测的方法绝大部分可以分为两类:

  • 基于查找一类:通过寻找图像一阶导数中的最大值和最小值来检测边界,通常是将边界定位在梯度最大的方向。
  • 基于零穿越的一类:通过寻找图像二阶导数零穿越来寻找边界,通常是laplacian过零点或者非线性差分表示过零点。

一阶导数的边缘算子

Roberts算子

Roberts算子是一种利用局部交叉差分寻找边缘的算子,常用来处理具有陡峭的低噪声图像,当图像边缘接近于正45度或负45度时,该算法处理效果更理想。
优点:从图像处理的实际效果来看,边缘定位较准,对噪声敏感。适用于边缘明显且噪声较少的图像分割。

缺点:提取的边缘线条较粗。
在这里插入图片描述

Prewitt算子

Prewitt算子采用 3x3 模板对区域内的像素值进行计算,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测,而Robert算子的模板为 2x2 ,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像。
img
优点:Prewitt算子对噪声有抑制作用,抑制噪声的原理是通过像素平均。

缺点:prewitt算子没有考虑相邻点的距离远近对当前像素点的影响。

Sobel算子

Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓。因为Sobel算子结合了高斯平滑和微分求导(分化),因此结果会具有更多的抗噪性,当对精度要求不是很高时,Sobel算子是一种较为常用的边缘检测方法,该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘。
img
优点:由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响,边缘定位效果不错。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。

缺点:但检测出的边缘容易出现多像素宽度。

二阶微分的边缘算子

与一阶微分算子相比,二阶微分算子的边缘定位能力更强。

Laplacian 算子

Laplacian算子是一种各向同性算子,不能检测出边的方向。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。存在噪声情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。所以,拉普拉斯算子一般不会用于边的检测,而是常用来判断边缘像素位于图像的明区或暗区。
img

Canny步骤:

  1. 用高斯滤波器平滑图像:边缘检测算子受噪声的影响都很大。那么,我们第一步就是想到要先去除噪声,因为噪声就是灰度变化很大的地方,所以容易被识别为伪边缘。
  2. 用一阶偏导有限差分计算梯度幅值和方向,例如 Sobel
  3. 对梯度幅值进行非极大值抑制:sobel算子检测出来的边缘太粗了,我们需要抑制那些梯度不够大的像素点,只保留最大的梯度,从而达到瘦边的目的。通常灰度变化的地方都比较集中,将局部范围内的梯度方向上,灰度变化最大的保留下来,其它的不保留,这样可以剔除掉一大部分的点。将有多个像素宽的边缘变成一个单像素宽的边缘。即“胖边缘”变成“瘦边缘”。
  4. 用双阈值算法检测和连接边缘:通过非极大值抑制后,仍然有很多的可能边缘点,进一步的设置一个双阈值,即低阈值(low),高阈值(high)。灰度变化大于high的,设置为强边缘像素,低于low的,剔除。在low和high之间的设置为弱边缘。对每一个弱边缘进一步判断,如果其领域内有强边缘像素,保留,如果没有,剔除。

猜你喜欢

转载自blog.csdn.net/weixin_45074568/article/details/127017516