薛茹+吕毅馨+杨赛花+石慧慧
摘要 边缘提取是图像研究必不可少的一部分,本文先对多种边缘提取的方法进行了比较,对传统的Sobel算法进行了描述,在传统算法基础上,针对传统Sobel算法存在的检测方向性不强及边缘提取较粗的缺点,提出了一种改进的5*5模板的8方向算法的边缘提取算法,得到后的图片再次用该算法处理进行边缘细化。根据实验结果可以得出,改进后的算法比传统Sobel提取的边缘更细、方向性更强。
关键词 Sobel算法;算子;边缘检测;多方向模板;边缘细化
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)27-0159-03
Abstract: Edge extraction is an essential part of image research. In this paper, a variety of edge extraction methods were compared. The traditional Sobel algorithm is described. In view of the traditional Sobel algorithm, the existence of the detection direction is not strong and edge extraction of the characteristics of the rough, an improved 5*5 template extraction method for multi direction algorithm is proposed.. After getting the picture again using the algorithm to deal with edge thinning. According to the experimental results, it can be concluded that compared with the traditional Sobel, the improved algorithm is more fine and the direction is stronger than the traditional one.
Key words:sobel arithmetic; operator; edge detection; multi direction template; edge thinning
1 引言
唐卡在藏族文化、历史、政治等各个领域都有涉及,凝聚着藏族人民的智慧,记载了藏族历史发展,具有很高的研究价值。 在日常生活中,人们主要采用语音和图像这两种方式来进行信息的传递[1],随着科学技术和数字媒体的不断发展,图像所包含的信息越来越丰富。在医学、气象监控、艺术创作、传真、微生物工程等都有很大应用,因而图像处理的技术变得越来越重要。而图像边缘是整个图像的整体概貌,图像的边缘提取也就成了图像处理技术过程中最基础也最重要的一步,人们也希望找到一种方法可以抗噪强、定位准、不漏检、不误检[2]。目前,边缘提取算法主要可以分为三大类:
第一是基于导数的方法,比如[3]:1)Sobel算法:一阶微分算法,在图像空间利用两个方向模板与图像进行卷积;2)Roberts算法:一阶微分的边缘检测算子,利用相邻对角方向的两个像素之差检测边缘;3)Prewitt算法:一阶微分算法,利用水平和垂直两个方向的卷与图像的每个像素进行卷积,两者得出的最大值即为结果;4)Kirsch算法:利用8个方向算子与图像的像素进行卷积检测边缘;5)Canny算法:一种多级算法;
第二是基于能量准则的算法,比如:1)松弛算法: 指对于每个顶点v∈V,都设置一个属性d[v],用来描述从源点s到v的最短路径上权值的上界,称为最短路径估计;2)神经网络分析: 从神经心理学和认知科学研究成果出发,应用数学方法发展起来的一种具有高度并行计算能力、自学能力和容错能力的处理方法;3)Snake算法: 给出初始的轮廓,然后进行迭代,使轮廓沿能量降低的方向靠近,最后得到一个优化的边界;
第三种是刚发展的一些新技术,比如:小波变换: 一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的“时间-频率”窗口,是进行信号时频分析和处理的理想工具。
2 常用边缘提取算法的比较
传统的边缘算法主要有Sobel算法、Prewitt算法、Roberts算法、Kirsch算法、Canny算法。这些边缘检测算法操作简单,速度快,但是检测的边缘容易受到噪声的干扰,所以都存在检测出的边缘不准确,造成误差的原因主要有:1)图像本身所具有的真实灰度与我们想检测的灰度值之间不完全吻合;2)算子模板方向固定,忽略了其他方向的边缘;3)都比较容易受噪声影响。[4]
表1对传统边缘提取的算法在边缘输出、漏检、假检、边缘检测精度、耗时、抗噪能力等方面进行了比较。从表中可以看出,Sobel算法除了耗时比较长以外,是几种传统算法中最实用的一种算法,本文通过比较,以传统Sobel算法为基础,在此分析基础上提出了一种改进后的Sobel算法。
3 传统的sobel算法
3.1 传统Sobel算法基本理论
Sobel算法是基于梯度的一阶导数的边缘检测方法,由于图像的灰度边缘处会有跳变的现象[6],从而根据此现象来进行边缘的检测。传统Sobel算子在图像空间利用两个方向模板与图像进行卷积,一个是水平梯度方向,来检测垂直边缘;一个是垂直梯度方向,来检测水平边缘。模板中的数字为模板系数,中间的点表示中心元素,梯度方向与边缘方向总是正交垂直。两个方向的算子如图1所示:
3.2 算法实现
首先分别将水平和垂直方向上的两个模板的中心点与图像中的每个像素对应;然后用模板与图像进行卷积;最后两个模板与图像进行卷积后得出的两个值,比较大小,选出最大值,则为某点的新的像素值。也可理解为是求最大值的方法,用公式定义如下:
g(i,j)=|f(i-1,j+1)+2f(i,j+1)+f(i+1,j+1)-f(i-1,j-1)-2f(i,j-1)-f(i+1,j-1)|+|f(i-1,j-1)+2f(i-1,j+1)+f(i+1,j-1)-2f(i+1,j)-f(i+1,j+1)|
卷积模板如图1,卷积的最大值为该点的输出值。由于传统的Sobel算法只考虑了水平和垂直两个方向,忽略了边缘的多方向性;其次,检测出的边缘有很多的伪边缘,并且检测出的边缘较粗,本文提出了8方向的5*5模板的改进方法。
4 改进后的sobel算法
4.1 8个方向模板
传统的Sobel算法只考虑了水平和垂直两个方向,检测出的边缘较粗,并且具有伪边缘,因此,有人提出了一些改进的方法,例如:1)先用Sobel进行边缘检测,用ostu二值化,最后用多像素边缘细化算法进行细化;2)先用Sobel进行边缘检测,用Sobel进行细化,最后用自适应的动态阈值计算方法进行二值化;3)基于Sobel算法梯度相乘的热红外图像边缘提取;4)自适应权值的改进算法等等。而本文的改进方法是将边缘方向扩展为0°、45°、90°、135°、180°、225°、270°、315° 8个方向,以此增加边缘方向的准确性。如图2,图3所示[6]:
4.2 改进后算法的实现
设(i,j)为图像上各点像素坐标,g(i,j)为图像在该点的灰度值,[g(i,j)]矩阵为将要检测的图像,w(i,j)为最后检测所得的结果,由于8个方向模板为5*5,s[g(i,j)]即为以点(i,j)为中心的5*5模板,f(k)为图3中8个模板(其中k为0、1、2、3、4、5、6、7、),m为长度为8的数组。
第一步:将f(k)与s[g(i,j)]进行卷积,将计算所得的结果的绝对值存放在数组m中;
第二步:目的是:查找第一步算出的8个结果中的最大值,在一组数组中查找最大最小值,有二分法、冒泡排序法、选择排序法等等,由于本文涉及的数组中数据较少,因此选择顺序查找法来找出数组中的最大值,顺序查找法就是假定要从n个整数中查找最大值, 则从头到尾逐个查找。具体步骤如下:
a、 令max=m[0],k=1;
b、 若m[k]>max,则max=m[k];否则,k=k+1;
c、 若k<8,则返回b;否则执行第三步;
第三步:将max赋给w(i,j),即为该点的输出值[7]。
最后的输出值即为该点新的像素值。
4.3 边缘细化
我们采用改进后的算法对图像进行边缘提取,得到的图像1与原始的图像相比,图像1的边缘灰度有变化,在此基础上,我们在对图像1进行同样的处理,再用改进后算法进行提取,得到的图像2在图像1的基础上,中间的图像部分变成了背景,得到的边缘更细,两次所到的图像边缘进行相减,即:2-1得到图像3,关于图像3,我们将其边缘像素的负值全部改为0,所得到的图像即为细化后的结果图。
5 实验结果
为检测改进后的算法与传统算法的效果,在VC++环境下,以转经筒和唐卡为例对进行边缘提取后的效果图进行对比。图4图5为原图;图6图7为传统算法提取的结果;图8图9为改进后的效果图。有图可以看出,;图6检测出的边缘相对清晰完整,而图5提取的边缘比较模糊,并且数据比较乱,图6相对图5检测的边缘更加丰富,总的来说,本文的方法很好保护了各方向的边缘,得到了更好的效果。
6 结论
针对传统Sobel算法的一些弊端,本文扩展成5*5的8方向模板,重新定义了模板中的权值,和传统Sobel算法相比,在一定程度较好的保留并检测出了各个方向的边缘,且相对简单,对于传统的其他算法,如Roberts算法、Prewitt算法等都可以依据此方法进行改进,增加模板、扩展边缘方向为8个或者更多,以此得到更好的应用。
参考文献:
[1]郑英娟.基于八方向Sobel算子的边缘检测[J].数字信息处理,2013(S2).
[2]章毓晋.图像工程[M].北京:清华大学出版社,1999.
[3]何春华.基于改进Sobel算子的边缘检测算法的研究[J].信息光学与图像处理,2012(3).
[4]李安安.几种图像边缘检测算法的比较和展望[J].信息 技术与通信,2009(12).
[5]高飞.Sobel边缘检测算子的改进研究[J].算法分析,2016(1).
[6]白俊江.基于Sobel的边缘检测方法[J].电脑知识与技术,2009(21).
[7]文密.Sobel算法在图像检测中的应用[J].信息科技,2008(6).