Sobel锐化算子及其改进算法
0908112 07 史清
一、锐化的基本理论
1、问题的提出
在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。
2、锐化的目的
为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以
使图像变得清晰。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。但要注意能够进行锐化处理的图像必须有较高的性噪比,否则锐化后图像性噪比反而更低,从而使得噪声增加的比信号还要多,因此一般是先去除或减轻噪声后再进行锐化处理。
图像锐化处理的主要目的是突出图像中的细节或者增强被模糊化了的细节,一般情况下图像的锐化被用于景物边界的检测与提取,把景物的结构轮廓清晰地表现出来。
3、重点明确
图像锐化的目的是加强图像中景物的细节边缘和轮廓。
锐化的作用是使灰度反差增强。
因为边缘和轮廓都位于灰度突变的地方。所以锐化算法的实现是基于微分作用。
4、图像锐化的方法
一阶微分锐化方法;二阶锐化微分方法。
5、一阶微分锐化的基本原理
一阶微分计算公式:
离散之后的差分方程:
考虑到图像边界的拓扑结构性,根据这个原理派生出许多相关的方法。故一阶微分锐化又可分为单方向一阶微分锐化和无方向一阶微分锐化,后者又包括交叉微分锐化、Sobel锐化、 Priwitt锐化。
6、无方向一阶微分锐化问题的提出及设计思想
单方向的锐化处理结果对于人工设计制造的具有矩形特征物体(例如:楼房、汉字等)的边缘的提取很有效。但是,对于不规则形状(如:人物)的边缘提取,则存在信息的缺损。
为了解决上面的问题,就希望提出对任何方向上的边缘信息均敏感的锐化算法。因为这类锐化方法要求对边缘的方向没有选择,所有称为无方向的锐化算法。
二、Sobel算子法(加权平均差分法)
对于数字图像{ f(i,j) }经典算子的定义如下:
设:
则
或
通过定义可以利用两个方向模板与图像进行邻域卷积来完成的算子的边缘检测。这两个方向模板一个检验水平边缘,一个检验垂直边缘。
算法的基本原理:适当选取阈值M ,作如下判断:若S(i,j)> M ,则(i,j)为边缘点。{ S(i,j) }为边缘图像,由于数据溢出的关系,这种边缘图像通常不直接使用,而使用的则是由边缘点与背景点构成的图像,故它为二值图像。
Sobel 算子也可用模板表示。模板中的元素表示算式中相应像素的加权因子。水平和垂直梯度模板分别为:
Sobel算子就是对当前行或列对应的值加权后,再进行平均和差分,也称为加权平均差分。
特点:锐化的边缘信息较强
优点:Sobel算子和Prewitt算子一样,都在检测边缘点的同时具有抑制噪声的能力,检测出
的边缘宽度至少为二像素。
缺点:由于它们都是先平均后差分,平均时会丢失一些细节信息,使边缘有一定的模糊。但由于Sobel算子的加权作用,其使边缘的模糊程度要稍低于程度要稍低于Prewitt算子。
利用Sobel 边缘检测算子法对灰度数字图像cameraman进行边缘检测,程序代码如下:>> I=imread('cameraman.tif');
>> [H,W]=size(I);
>> M=double(I);
>> J=M;
>> for i=2:H-1
for j=2:W-1
J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+2*M(i,j+1)-2*M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+2*M(i-1,j)-2*M(i+1,j)+M(i-1,j+1)-M(i+1,j+1));
end;
end;
>> subplot(1,2,1);imshow(I);title('原图');
>> subplot(1,2,2);imshow(uint8(J));title('Sobel 处理后');
由以上两图对比可以看出,其有一定的抑制噪声能力;但添加了大量的椒盐噪声后抑制效果就比较差了。
由以上两图对比可以看出,由于Sobel算子的加权作用,其使边缘的模糊程度要稍低于程度要稍低于Prewitt算子。
Sobel Prewitt
三、实时图像处理中Sobel 算子的改进
生物医学信号常常要求实时处理,故这里介绍一种实时处理的改进算法。
改进1: Sobel 算子的细化
Sobe1 算子是边缘检测算子, 其处理模板中各因子之和为零, 由于正的因子与负的因子之和分别为4 和一4, 在极端情况下处理结果可能溢出, 因此, 在实际使用时, 虽然Sobel 算子检测所得的边缘光滑连续, 但是边缘较粗, 这是因为Sobel 算子处理时需作两值化处理, 即处理结果得到的是两值化了的边缘图, 这种结果就使边缘图中幅值较小的边缘丢失了, 为了克服这个缺陷, 可以引入一个衰减因子Scale, 用它去除计算的不良结果, 以消除数据溢出的可能, 这样就不再需要进行两值化处理, 而且得到的是不失真的灰阶边缘图, 从而保留了图中所有边缘的数值,即,S( z, j) = max(A, B) /Scale或S( z, j) = (A - B) /Scale在灰阶边缘图中可看到幅度不等的各种边缘, 其中, 衰减因子Scale 取4, 它同时也是归一化因子,即两个灰度层的阶跃, 交界处的处理结果就是它们的灰度差值。
改进2:方向模板的增加
图像的边缘有许多方向, 除了水平方向和垂直方向以外, 还有其它的边缘方向, 如45 , 135等, 如图1所示,通过图1可以看出, 如果能有效地检测这8 个方向的边缘, 将能提高算子的检测精度, 但是同时检测出8 个方向的边缘, 又不符合实时图像处理的速度要求,因此, 只增加45和135 方向检测如图2所示, 既能提高边缘检测精度又能达到实时的效果。
图1 边缘方向编号
图2 Sobel 算子的45°和135° 方向
经典算子 细化算子
图3
图4 45°和135°方向的Sobel算子 图5 四个方向的Sobel算子
优点:
四个方向的的Sobel 算子具有很好的检测精度和准确度, 而算法运行时间仅为40ms-50msl 完全可以满足实时处理的要求。对灰度图进行经典Sobel 算子处理, 如图3左所示, 从图中可以看到经典Sobel 算子边缘光滑连续, 但抗噪能力极低, 在检测边缘时得到的边缘宽度至少为两个像素, 边缘较粗, 因此对经典Sobel 算子进行细化处理, 如图3右所示, 所得图像边缘比原来细, 检测图像更加准确, 但由于只采用两个方向的模板, 只能检测水平方向和垂直方向的边
缘, 会丢失一些边缘信息, 因此需要对其它方向的边缘方向进行检测, 图4 是以45°和135°方向的边缘检测, 通过对比图3和图4, 可以看出在左图中一些检测不到的边缘在右图中可以检测出来, 为了有效地检测这四个方向的边缘, 在经典Sobel 两个方向模板的基础上, 增加45°和135°方向模板, 经过改进的Sobel 算子最后结果如图5所示, 图像边缘光滑连续, 抗噪能力强, 定位比较准确, 可检测多方向的边缘, 减少边缘信息的丢失。
yuzheng经过对经典Sobel 算子的改进不仅满足实时图像处理的时间要求而且处理算法比较简单。改进后的算法增加了2 个方向模板 可检测多方向的边缘,并且对确定的边缘点进行了边缘细化,从而排除因噪声引起的假边缘点。实验结果表明本算法在精度上与Canny 算子接近,但在运行时间上则比Canny 算子快,适用于对精度和速度均要求较高的领域。
发布评论