基于图像边缘提取的油水界面检测算法的比较研究
2014-10-21郭宇高雁杰
郭宇 高雁杰
【摘 要】图像边缘包含图像的大量重要信息,它主要存在于目标与目标、目标与背景、区域与区域之间。图像边缘的图像的边缘检测是获取图像信息的一个重要环节。图像边缘的检测结果的正确性和可靠性将直接影响到机器视觉系统对客观世界的理解。本文将Sobel算子、形態学梯度、Canny算子三种边缘提取方法应用于油水界面检测,实验对比了这三种方法的油水界面检测效果,可以看出每一种算法的特性和他们各自的适用状况。
【关键词】边缘检测;图像处理;油水界面
0 引言
图像边缘是图像最基本的特征。边缘是指图像中周围像素灰度变化不连续的那些像素的集合。图像的边缘部分集中了图像的大部分信息,图像边缘的检测与提取对于整个图像的别与理解是非常重要的。我们将边缘定义为图像中灰度发生急剧变化的区域边界,图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此可以用局部图像微分来获得边缘检测算子[1]。
传统的边缘检测算法包括空域微分算子和拟合曲面两种方法。空域微分算子包括Roberts算子、Prewitt算子、Sobel算子、Laplace算子、Canny算子等;拟合曲面是利用当前像素领域中的一些像素值拟合一个曲面,然后求这个连续曲面在当前像素出的梯度,用微分算子的方法进行边缘检测。除此以外,以数学形态学为基础的形态学梯度算法在图像处理中已经得到了广泛的应用。形态学梯度能够比较精确地反映图像梯度的变化,梯度值的大小反映了原图像信息中像素灰度值变化的剧烈程度。
图像的边缘检测已经广泛应用于各个领域当中。针对油水分离问题,油水界面的边缘检测显得尤为重要。工业上针对大型油田目前国内普遍采用重力油水分离法,油水混合物具有复杂的物理特性,为了达到将油水较好地分离,油水界面检测技术显得尤为重要[2]。从测量原理的角度来看,目前已经有浮子式、电容式、磁致伸缩式、光纤式及射线式等不同的界面检测仪器,而这些仪器普遍存在非接触性差、可维护性差、精度不高的缺点。
本文从计算机视觉角度出发,利用边缘检测算法对油水界面实验图像进行检测,并对传统Sobel算子、形态学梯度和Canny算子对油水界面实验图像的边缘检测的效果进行各方面的对比,通过图像效果的比较加深对三种方法的理解,对不同方法的优缺点有一定的认识,在实际应用中更为灵活地掌握,从而较为准确地获取图像的边缘信息。
1 几种边缘检测算子的算法实现
1.1 Sobel算子的算法实现
对于数字图像{f(i,j)},的每个像素,Sobel梯度算子首先进行加权平均,再微分,然后进行一阶微分处理,检测出边缘点。
为了得到一幅图像的梯度,在图像的每一个像素位置处都需要计算偏导数?坠f/?坠x和?坠f/?坠y,因此,可以使用小区域模板卷积来进行近似计算[3]。
卷积算子(左为垂直方向,右为水平方向)
使用卷积算子进行卷积运算,使用如公式(1),求出梯度值G(i,j)。
G(i,j)=|f(i-1,j+1)+2*f(i,j+1)+f(i+1,j+1)-f(i-1,j-1)-2*f(i,j-1)-f(i+1,j-1)|+|f(i-1,j-1)+2*f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)| (1)
适当选取阈值使图像二值化Threshold,梯度值G(i,j)大于等于阈值Threshold的点为边缘点,反之则不是边缘点,从而实现边缘检测。
算法的主要步骤[3]:
(1)分别将两个方向模板沿着图像从一个像素移动到另一个像素,并将像素的中心与图像中的某个像素位置重合;
(2)将模板内的系数与其图像上相对应的像素值f(x,y)相乘,并将所有相乘的值相加;
(3)计算梯度值作为新的灰度值;
(4)选取适当的阈值Threshold,若新像素灰度值大于等于Threshold,则判断该像素点为图像边缘点。
1.2 形态学梯度的边缘检测算法
数学形态学以形态为基础对图像进行分析,其基本思想是用具有一定形态的结构元素去量度和提取图像中的对应形状以达到图像分析和识别的目的。数学形态学的基本思想是利用结构元素去探测图像,讨论是否能够将这个结构元素很好地放进图像内部,同时验证填放结构元素的方法是否有效。
定义1:图像A被结构元素B腐蚀[4]
(AΘB) (x,y)=min{A(x-s,y-t)-B(s,t)/(x-s,y-t)∈DA;(s,t)∈DB}(2)
腐蚀的基本目的在于标记出图像内部可以将结构元素填入的位置。如果结构元素的原点在其内部,经过腐蚀处理的图像作为原图像的一个子集而存在;如果结构元素的原点在其外部,腐蚀后的图像极有可能不在原图像的内部。
定义2:图像A被结构元素B膨胀
(A⊕B)(x,y)=max{A(x-s,y-t)+B(s,t)|(x-s,y-t)∈DA;(s,t)∈DB}(3)
将以上所定义的腐蚀、膨胀运算进行组合可以实现对图像的开运算、闭运算操作。
在图像处理中,开运算:
A?莓B =(AΘB)⊕B(4)
即先用结构元素B对图像进行腐蚀,然后再用结构元素B对腐蚀后的结果进行膨胀。开运算对去掉图像轮廓上的毛刺、平滑图像轮廓起到了很好的作用。
而闭运算恰恰相反:
A·B=(A⊕B)ΘB=(AC?莓B)C(5)
即先用结构元素B对图像进行膨胀,然后再用其对膨胀后的图像进行腐蚀。
图1、图2为开运算和闭运算的几何解释
(a)图A和结构元素B (b)B沿着A的内部转动 (c)开运算结果
图1
(c)图A和结构元素B (d)B沿着A的外部转动 (e)闭运算结果
图2
形态学边缘检测算子是一种非线性差分算子,在以上定义的梯度算子中,腐蚀运算和膨胀运算都能保持图像整体灰度和大的亮区域基本不受影响。该边缘检测算法大致如下:
(1)对数字图像F进行闭运算,然后进行开运算,实现对图像的预处理,以滤除图像中的噪声。即:
A=(F·B)?莓B(6)
其中,F表示数字图像矩阵,B=■;
(2)将步骤(1)中得到的图像做闭运算,实现图像的平滑运算。即:
C=A·B(7)
(3)分别将图像C及A进行膨胀、腐蚀运算。即:grad1=C⊕B;grad2=AΘB;
(4)将grad1与grad2相差,就可以得到较好的图像边缘E。
E=grad1-grad2(8)
(5)最后进行对所得图像进行重建。
1.3 Canny算子的算法实现
高斯噪声中,一个典型的边缘代表一个阶跃的强度变化。优秀的边缘算子应满足以下三个判断准则:信噪比准则;定位精度准则;单边缘响应准则[5]。根据这三个准则推导出了最佳边缘检测算子——Canny算子。
Canny算子的边缘检测算法如下:
(1)利用二维高斯函数的一阶导数,设二维高斯函数为
G(x,y)=■exp(-■)(9)
计算二维滤波器模板的一阶偏导,得到两个一维滤波器,用标准卷积得到高斯平滑。其中σ是高斯函数的标准差,控制着平滑图像的程度。
(2)计算梯度幅值和方向[6]
利用2×2邻域一阶偏导的有限差分来计算平滑后的数据阵列G(x,y)的梯度幅值和梯度方向。其中,x和y方向偏导数的2个阵列Px[i,j]和Py[i,j]分别为
Px[i,j]=[G(i,j+1)-G(i,j)+G(i+1,j+1)-G(i+1,j)]/2(10)
Py[i,j]=[G(i,j)-G(i+1,j)+G(i,j+1)-G(i+1,j+1)]/2(11)
像素的梯度幅值和梯度方向用以下公式计算
M[i,j]=(Px[i,j]2+Py[i,j]2)1/2(12)
梯度方向为
θ[i,j]=arctan(Py[i,j]/Px[i,j])(13)
(3)对梯度幅值进行非极大值抑制。遍历图像,若某个像素的灰度值与其梯度方向上前后两个像素的灰度值相比不是最大,就将像素值置为0,即不是边缘。
(4)使用双阈值算法检测和连接边缘。双阈值算法[7]是对经过非极大值抑制和梯度直方图分类的子图像I[i,j]分别使用高阈值和低阈值H和L,分割得到边缘图像Ih[i,j]和Il[i,j]。图像Ih[i,j]可能在轮廓上有间断,所以双阈值算法要在Ih[i,j]中把边缘连成轮廓,达到轮廓端点时,就将由低阈值得到的图像Il[i,j]的8邻域位置寻找可以连接轮廓的边缘,不断递归跟踪下去,直到将Ih[i,j]中所有间隙都连接起来为止。
2 实验方法应用
油水实验图像中物质大致可以分为三类:水,油和空气。水层和油层通过肉眼可以识别出来,而空气层由于稠油黏附于试管壁上使得空气层无法在图像上显现出来,所以实验中暂时不考虑空气层的影响。
本次实验的实验图像大致分为两类:一种是油水界面清晰的实验图像如图3,这种图像的层次分明,边界清晰,易于识别。另一种是油水界面模糊的实验图像如图4,这种图像的油水的界面边缘形状不规则,油层和水层不是很均匀地分开,不易于识别。
实验将对两种图像均采用上文提到的三种边缘检测的方法,通过比较实验图像的实际效果,实验所用的方法如下:
Sobel算子是将图像的像素点与模板的系数进行运算,用得到的值与阈值进行比较并得到邊缘点;形态学梯度算法是对图像进行一系列的膨胀腐蚀、开闭运算,并利用上文提到的方法进行差值运算得到处理后的图像;Canny算子将图像利用高斯滤波进行预处理并计算梯度幅值,进行非极大值抑制后利用双阈值算法检测连接边缘,从而得到处理后的图像。
图3 清晰的油水界面 图4 模糊的油水界面
3 实验结果与分析
图5 清晰油水界面边缘提取
从左至右依次为Sobel、形态学梯度、Canny方法
图6 模糊油水界面边缘提取
从左至右依次为Sobel、形态学梯度、Canny方法
图5、图6为利用对不同清晰度的油水界面实验图像的检测效果来比较以上三种边缘检测算法的优劣性。通过实验图像得知:
对于清晰的油水界面实验图像,Sobel算子与形态(下转第8页)(上接第6页)学梯度的算法检测出来的边缘比较粗,Canny算子的检测效果最好;对于不清晰的油水界面实验图像,Canny算子受噪声干扰严重,无法检测出真实的边缘;Sobel算子和形态学梯度方法检测出来的边缘比较清楚,但形态学梯度方法检测出的伪边缘少,能够真实检测出油水界面的边缘。
通过两组实验图像对比结果可以得出:
(1)Sobel算子的优点是计算简单。但是只采用了两个方向的模板,只能检测水平和垂直方向上的边缘,对纹理复杂的图像,效果不理想;阈值是人为设定,判断欠合理,会造成边缘点的误判,使得检测出了一些伪边缘,使得边缘较粗,降低检测精度。
(2)形态学梯度边缘检测算法不仅有很好的边缘提取能力,也具有较强的抗噪能力。但该方法存在宽边缘现象,对相邻几个像素边缘无法分辨。同时形态学梯度对模板的依赖性大,不能完整地反映图像的边缘信息。
(3)Canny算子提取的边缘在实验结果中是最为完整的,而且边缘较细,边缘的连续性好,定位比较准确。但Canny算子对噪声比较敏感,对高斯函数标准偏差σ的调整要求高,若σ选取较大时,高斯平滑模板变大,频带窄,抗噪能力较强,但是容易造成图像的缓变边缘丢失及过度光滑;若σ選取较小时,频带较宽,边缘细节精度高,但是图像平滑作用较小,抗噪声能力较弱。容易丢失一些真实边缘的细节部分,没有良好的自适应能力。
3 结论
本文针对三种边缘检测的算法进行了油水界面检测实验,利用两组界面边缘清晰度不同的实验图像的实验结果中比较得出每种方法的优缺点,从而找到针对不同油水界面的最佳边缘检测方法。近年来随着数学理论及人工智能的发展,又涌现出了许多新的边缘检测算法,比如小波变换边缘检测、基于神经网络边缘检测、基于遗传算法边缘检测等方法。不过无论什么算法都不能满足所有的图像,在实际应用中每一种算法都有自己的特点,我们要根据需求来选择和结合不同的算法,来提高我们的工作效率,同时也在应用中不断改进算法。
【参考文献】
[1][美]冈萨雷斯,阮秋琦.数字图像处理[M].3版.北京:电子工业出版社,2011:445-466.
[2]何兆民.油水界面检测系统的研究[D].青岛:青岛科技大学,2008,6.
[3]姜炳旭,刘杰,孙可.Sobel边缘检测的细化[J].沈阳师范大学学报,2010,28(4):504.
[4]夏平,刘馨琼,向学军,万钧力.基于形态学梯度的图像边缘检测算法[J].计算机技术与发展,2007,17(12):109.
[5]龚声蓉,刘纯平,王强.数字图像处理与分析[M].北京:清华大学出版社,2006:173-174.
[6]Canny J. Acomputational approach to edge detection[J]. IEEE Transactions on Pattern Analysis and MachineIntelligence,1986,8(6):679-698.
[7]王植,贺赛先.一种基于Canny理论的自适应边缘检测方法[J].中国图象图形学报,2004,9(8):958.
[责任编辑:汤静]