Sobel算子的改进算法

时间:2022-09-03 07:58:07

Sobel算子的改进算法

【摘要】本文主要针对图像边缘检测中所使用的Sobel算子和该算子的模板进行分析,在经典的sobel算子基础上增加了6个方向的模板,同时根据算法的计算规律对增加的计算量做了最大的优化,以保证处理效果和处理效率的平衡。改进的算法可以对多方向的边缘进行检测以满足不同方向的边缘检测效果。在一定环境中将改进算法应用在某图像连续处理系统中,图像的处理效果保持不变,较好的平滑了噪声,且物体的边缘检测轮廓清晰。

【关键词】边缘检测;sobel算子;模板

1.引言

边缘检测是图像处理和机器视觉中最主要的研究内容,边缘检测包含对人类视觉和机器视觉有价值的边缘信息。边缘使图像性分布不连续处图像周围特性有阶跃变化和屋脊变化的那些像素集合,是图像识别信息最集中的地方[1]。

常用的边缘检测算子有:Roberts算子,Sobel算子,Prewitt算子以及Laplace算子等。Sobel算子对噪声具有一定的抑制能力,产生了较好的边缘效果,去掉部分伪边缘。传统的边缘检测算子的边缘定位和噪声平滑是矛盾的,为了克服这个不足人们用边缘检测结合模板匹配来有效调节这个矛盾。

2.Sobel算子

常用的的Sobel算子有两个,一个是检测水平边沿的另一个是检测垂直边沿的。Sobel算子在求梯度之前首先进行邻域平均或加权平均,然后进行微分。

在基于经典Sobel算子的边缘检测中,每一个算子逼近一个偏导数,偏导数的公式近似如公式(1)和(2)所示[2]

?/x=[?(x+1,y-1)+2?(x+1,y)+?(x+1, y+1)]-[?(x-1,y-1)+2?(x-1,y)+?(x-1,y+1)]

(1)

?/y=[?(x-1,y+1)+2?(x,y+1)+?(x+1, y+1)]-[?(x-1,y-1)+2?(x,y-1)+?(x+1,y-1)]

(2)

若把图像中某一点以及周围8邻域的像素点依次如图1中a所示,而Sobel算子的经典模板则如图1中b所示:

图1 经典算法模板

取适当的阈值T,作如下判断:如果一幅图像R中的R(i,j)>=T时,则(i,j)为阶跃状边缘点,R(i,j)为边缘图像。经典的Sobel算子是利用像素的上、下、左、右邻域的灰度加权算法,根据在边缘点处达到极值的原理进行检测。不但可以平滑噪声而且可以去除部分伪边缘从而达到边缘检测的效果。

3.改进的Sobel算子算法

3.1 确定Sobel算子的方向及模板

由于所检测的边缘有各种各样的方向,根据模板的形式我们可以再增加6种不同方向的模板顺时钟方向依次增加45°为了方便描叙从0°到315°依次对其编号为M1-M8如图2所示:

图2 不同方向的模板

3.2 改进算法

Sobel算子增加模板之后常规的算法一般是先进行卷积运算,再比较大小,取一次卷积运算结果的最大值作为最后的结果。现在我们依次对8个模板M1-M8作卷积运算求的结果为S则:S1=a1+2a8+a7-a3-2a4-a5如此依次计算出Si (1=<i=<8),最后取S=max{Si}(1=<i=<8)。

对于以上计算过程我们现在来分析一下计算量:对每个像素要进行8次卷积运算每一次卷积运算需要进行5次加减运算和2次乘法运算。那么每个像素点的运算就有40次的加减法运算和16次的乘法运算,计算完卷积的结果后还要进行7次的比较运算。最终才能得到这个像素点的结果。

如果处理一个M×N的图像,可以知道他所需的运算量为40M*N次加减法运算和16M*N次乘法运算和7M*N次比较运算,这样增加模板所带来的弊端就显而易见,对于图像的快速处理非常不便。因此需要对运算量进行简化。

现在假设r1=a1+2a8+a7,r2=a8+2a1+a2,r3=a1+2a2+a3,r4=a2+2a3+a4,r5=a3+2a4+a5,r6=a4+2a5+a6,r7=a5+2a6+a7,r8=a6+2a7+a8。

所以S1=r1-r5,S2=r2-r6,S3=r3-r7,S4=r4-r8,S5=r5-r1,S6=r6-r2,S7=r7-r3,S8=r8-r4。

所以我们只需计算S1-S4即可,剩下的S5-S8用S1-S4依次取反即可,相当于4次减法运算,此时每个像素点的计算量为2*8+4+4=24次加减法运算1*8=8次乘法运算和7次比较运算最终得出该像素点的灰度,则对于同样一幅M*N大小的图像总的计算量为24M*N次加减法运算8M*N次的乘法运算和7M*N次的比较运算。

4.实验结果

通过以上比较分析,改进的算法要比常规的算法在理论上更节省时间,处理图像的速度更快,这样既保证处理效果又不失处理效率。对于一幅M*N的图像两种算法比较如表1所示:

表1 两种算法的比较

Sobel检测算法 加法次数 乘法次数 比较次数

常规算法 40M*N 16M*N 7M*N

改进算法 24M*N 8M*N 7M*N

经过编程实现该算法并且应用到实际的图像处理系统中,用2种算法分别处理256*256的图片达到了处理速度的提升并且图像的处理效果也比较理想,具有比较好的平滑噪声作用。实验的硬件环境为Intel i3的处理器、内存2G,在次配件环境中处理200张256*256的图片常规算法所用时间为4100ms,而改进算法处理时间为960ms。改进的算法提高了处理速度,节省了处理时间。

5.结论

实时处理系统对图片的处理速度有较高要求,算法不但要保证对图片的处理效果,而且对处理速度也要兼顾,通过对Sobel算子的改进,改进算法在理论上运算步骤要少节省了很多时间,在保证处理速度的前提下对图像的处理效果也有所加强,经过实验证明,改进的算法在图像处理上更好的平滑了噪声,而且保证了处理的速度,这种改进算法对整个图像处理系统效果明显,对实时处理系统有重要意义。

参考文献

[1]章毓晋.图像分割[M].北京:科学出版社,2001.

[2]孙洪淋,廖继旺.基于Sobel算子的图像边缘检测及其实现[J].人工智能识别技术,2004,15(2):87-94.

作者简介:

陈倩(1990―),男,硕士研究生,研究方向:信号检测与信息处理。

刘超(1989―),男,硕士研究生,研究方向:信号检测与信息处理。

上一篇:浅谈高校英语教学中计算机技术的合理运用 下一篇:中国英语在汉英翻译中的使用