第三章 边缘检测算子
数字图像中,边缘(edge)是指图像局部强度变化最显著的部分。 边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色 彩)之间。边缘检测常用到的有属于简单空域微分算法的 Roberts算 子、Sobel算子、Prewitt算子,拉普拉斯高斯(LOG)算法以及 Canny 边缘检测器等。边缘检测算法的基本步骤:①滤波:改善与噪声有关 的边缘检测器的性能;一般滤波器降导致了边缘的损失;增强边缘和 降低噪声之间需要折衷;②增强:将邻域强度值有显著变化的点突显 出来,边缘增强一般是通过计算梯度幅值来完成的;③检测:最简单 的边缘检测判据是梯度幅值阀值;④定位:边缘的位置和方位在子像 素分辨率上估计。
3.1 Canny算子
Canny边缘检测利用高斯函数的一阶微分,在噪声抑制和边缘检 测之间寻求较好的平衡,其表达式近似于高斯函数的一阶导数。
Canny算子是一阶算子。其方法的实质是用 1个准高斯函数作平 滑运算 fs=f(x,y)×G(x,y),然后以带方向的一阶微分算子定位导数最大 值。平滑后 fs(x,y)的梯度可以使用 2×2一阶有限差分近似式:
P[i,j]≈(fs[i,j+1]-fs[i,j]+fs[i+1,j+1]-fs[i+1,j])/2 Q[i,j]≈(fs[i,j]-fs[i+1,j]+fs[i,j+1]-fs[i+1,j+1])/2
在这个 2×2正方形内求有限差分的均值,便于在图像中的同一点 计算 x和 y的偏导数梯度。幅值和方向角可用直角坐标到极坐标的坐 标转化来计算:
M[i,j]反映了图像的边缘强度;? [i,j]反映了边缘的方向。使得 M[i,j] 取得局部最大值的方向角? [i,j],就反映了边缘的方向。Canny 算子也 可用高斯函数的梯度来近似,在理论上很接近 4 个指数函数的线性组 合形成的最佳边缘算子。在实际工作应用中编程较为复杂且运算较 慢。Canny边缘检测算子对受加性噪声影响的边缘检测是最优的。
3.2 Roberts梯度算子
对阶跃状边缘,在边缘点处一阶导数有极值,因此可计算每个像 素处的梯度来检测边缘点。对于图像 g(x,y),在(x,y)处的梯 度定义为 grad(x,y)。梯度是一矢量,大小代表边缘的强度,方向 与边缘走向垂直。梯度算子仅用最近邻像素的灰度计算,对噪声敏感, 无法抑制噪声的影响。
Roberts 边缘检测算子根据任意一对垂直方向上的差分可用来计 算剃度的原理;采用对角线方向相临两像素之差,即:
△x f=f(i,j)-f(i+1,j+1)(1)
△y f=f(i,j)-f(i+1,j+1)(2)
有了△x f,△y f之后,可以根据下式计算出 Roberts的剃度幅度值:
它们的卷职算子为:
适当选取门限 TH,并作如下判断:如果 R(i,j)>TH,则(i,j)为阶跃状边 缘点,{R(i,j)}为边缘图像。
3.3 Prewitt算子
Prewitt 从加大边缘检测算子的模板大小出发,由 2×2 扩大到 3 ×3来计算差分算子,采用 Prewitt算子不仅能检测边缘点,而且能抑 制噪声的影响。
这些算子样板由理想的边缘图像构成。依次用边缘样板去检测图 像,与被检测区域最为相似的样板给出最大值。用这个最大值作为算 子的输出值 P(i,j),这样可将边缘像素检测出来。定义 Prewitt边缘检测 算子模板如下:
8个算子样板所对应的边缘方向分别是 8个等份方向的。 适当选取门限 TH,并作如下判断:如果 P(i,j)>TH,则(i,j)为阶跃状 边缘点。{P(i,j)}为边缘图像。
3.4 Sobel算子
Sobel 在 Pre-witt 算子的基础上,对 4-邻域采用带权的方法计算 差分,该算子不仅能检测边缘点,且能进一步抑制噪声的影响,但检 测的边缘较宽。
Sobel算法是基于一阶导数的边缘检测,通过逼近导数来找边缘, 其边缘点存在于图像梯度最大值处。Sobel 算子中用到了两个卷积模 板(一个水平算子,一个垂直算子)。
它是一种奇数大小(3×3)模板下的全方向微分算子,对检测点的 上下左右进一步加权。Sobel 算子的思想是邻域的像素对当前像素产 生的影响不是等价的,所以距离不同的像素具有不同的权值,对算子 结果产生的影响也不同。我们用 Sobel来检测边缘的时候,先分别用 上述的模板对图像进行卷积,得到的是两个矩阵,在不考虑边界的情 形下也是和原图像同样大小的 bx,by,它们分别表示图像 a 中相同位 置处的两个偏导数。然后把 bx,by对应位置两个数平方后相加得到一
个新的矩阵 b,b表示图像 a 中各个像素的灰度的梯度值。最后通过 阈值处理和细化处理得到边缘图像。在阈值不为空的情况下,边缘存 在于梯度幅值大于阈值平方的点上。
3.5 Log算子
Log算法是基于二阶导数的边缘检测,这种方法是将高斯平滑滤 波器和拉普拉斯锐化滤波器结合了起来,先平滑掉噪声,再进行边缘 检测。它是对图像进行滤波和微分的过程,是利用旋转对称的 Log 模板与图像做卷积,确定滤波器输出的零交叉位置。常用的 Log算子 是 5×5的模板,如下所示
Log算法的特点是图像首先与高斯滤波器进行卷积,这样在平滑 图像的同时降低了噪声,孤立的点噪声和较小的结构组织将被滤除。 由于平滑会导致边缘的延伸,因此边缘检测只考虑那些具有局部梯度 最大值的点为边缘点。正确地选用 Log 算子中的尺度参数是很重要 的。直观上说,大的对应于更大的平滑范围,它有利于抑制噪声,但 不利于定位精度;值小时,边缘定位精度高,但边缘细节变化多,信 噪比低。因此应根据噪声水平和边缘定位精度的要求来决定的值。