潘园园, 曾笑云, 刘 洋, 杨晟院, 左国才
1(湘潭大学 信息工程学院,湘潭 411105)
2(湖南软件职业学院 软件与信息工程学院,湘潭 411100)
边缘是像素灰度值发生剧烈变化的像素的集合,图像大部分的信息存在于边缘中. 边缘检测是图像处理领域中研究最广泛最重要的课题之一,也是图像分割、图像重建、特征提取和目标识别的基础.
当从图像中提取边缘时,通常会出现一些错误,比如曲线不连接、缺失边缘和假边. 因此,构建一种能够精确检测图像边缘的方法是至关重要的. 目前为止,已经有许多不同的方法成功的应用到图像边缘检测中[1-6].文献[1]提出一种在边缘检测过程中加入边缘曲度算子进行噪声衰减的边缘检测方法. 此方法可以抑制噪声得到较高的定位精度,但耗时比传统Canny方法有一定的增加. 文献[2]是采用小波变换和改进的自适应中值滤波器代替Canny方法中使用的高斯滤波器对图像进行平滑处理,具有较高的定位精度,但时间复杂性有所增加. 文献[3]提出了一种基于灰度关联的自适应边缘检测方法,该方法可以自适应的计算阈值,使边缘更加完整,但有时没有设置阈值精度高. 文献[4]提出了一种基于估计理论的边缘检测方法,该方法在局部细节上具有一定的优势,但检测完整性不具有优势. 文献[5]提出一种Canny算子与智能路由算法相结合的边缘检测方法,该方法对边缘映射效果要求很高. 文献[6]提出一种基于多级形态学的模糊边缘检测方法,该方法可以得到较准确的边缘检测结果,此方法适用于有多目标而不是单一目标.
目前已有的边缘检测方法除了对传统边缘检测算子进行改进之外,随着人工智能的发展,又出现一些新的边缘检测方法[7-10].
从数学角度分析,微分要求函数曲线具有一定的光滑度,但积分对函数曲线的光滑度要求不高. 因此,本文从积分的角度,提出一种基于局部能量的边缘检测方法. 此方法是在以一个像素点为中心的对称区域中,计算区域内所有像素的灰度值与中心像素的灰度值之间的差值,差值平方的总和作为中心像素点所对应的局部能量. 这个局部能量是一种积分形式的. 通过局部能量的大小来判断此积分区域内是否存在边缘.一般地,边缘点对应的局部能量较大,而光滑区域内的像素点对应的局部能量是比较小的. 因此,根据局部能量函数的大小,就可以快速有效地找到边缘点所在的位置.
图1(a)是一个理想的阶跃曲线,灰度值的跃变表成一个集合,像素点y∈Ωx,f(x)是中心点x的像素灰度明图像中边缘点的存在. 图1(b)是阶跃曲线的导数.图1(b)中的峰值点对应图像的边缘点. 如图2所示,假设有一条线段L,长度是2r,线段的中心点是x. 让线段L的中心点沿着曲线移动. 运动过程如图2所示. 中心点x在曲线上移动过程中相对应点的像素灰度值都称为f(x),而线段与曲线所围对称区域内所有像素点构值,f(y)是对称区域内其他像素点y的像素灰度值. 计算此对称区域内所有像素灰度值f(y)和中心点x的像素灰度值f(x)的差值平方和,这些差值平方和称为中心像素点x所对应的局部能量.
图1 阶跃曲线及其导数
图2 水平线段L的中心点沿曲线运动时,曲线与水平线段L的中点的差值示意图
根据以上的分析,局部能量函数定义如下:
考虑到高斯核函数K(x)具有紧支撑性和加权的特性,式(1)可以改写成:
本文选择的高斯核函数是式(3).
基于上述对图2的分析,可以得到如下的结论:
也真是奇怪,有些事情,苦思冥想往往找不到解决的途径,一旦放松下来,甚至把它撂在了一边不去管它,头脑中或许会一瞬间跳出一个天才的解决方案。此时,在与“诗的妾”打情骂俏的短信中,一个想法突然在高潮头脑中清晰起来。高潮有些兴奋,站起身来,拍拍屁股,真的冲着湖面,大叫了几声。湖对面的那流浪青年停下练唱,用中气十足的嗓音对高潮喊道,不服气啊哥儿们,有本事你也来段海豚音?
结论:线段L的中心点沿着曲线移动,局部能量值是不断变化的,当线段的中心点与边缘点重合时,局部能量达到最大值.
证明. 在图2中,局部能量函数在边缘点x=0处达到最大值.
假设x-y=τ,y=x-τ,dy=-dτ得到
对式(5)求导数得:
当x=0时
如图1所示,函数f(x)是奇函数,f(x)的导数是偶函数. f(x+τ)-f(x-τ)是大于零的常数. 当x<0,导函数f′(x)是单调递增的,当x>0时单调递减,满足对称性.
因为,f(x+τ)-f(x)和f(x)-f(x-τ)大于零,所以
(1)当x-τ<0,x>0,即x∈(0,τ),f′(x+τ)-f′(x)<0,f′(x)-f′(x-τ)<0.
(2)当x-τ>0,即x∈(τ,∞),f′(x+τ)-f′(x)<0,f′(x)-f′(x-τ)<0.
综上所述,只要满足x>0,E′(x)的值是恒小于零的,因此,当x>0时局部能量函数E(x)是一个单调递减函数.
同样的,根据f′(x)的对称性,当x<0时,局部能量函数E(x)是单调递增函数. 因此,局部能量函数在边缘点x=0取得大值. 在实验中,我们通过调整阈值得到边缘点.
例如,如图3(a)所示,x=0处的跳变点为边缘点.如图3(b)所示,局部能量最大值点也在x=0处.
图3 阶跃曲线及其各点对应的局部能量示意图
本文提出了一种基于局部能量的边缘检测方法,当中心点位于对称区域中的光滑区域时,局部能量值比较小,当位于边缘点时,局部能量达到最大值. 因此,可以通过局部能量的最大值来快速准确的确定边缘点位置.
本文方法的算法步骤如下:
步骤1. 输入图像;步骤2. 使用高斯核函数对图像进行预处理;步骤3. 边缘检测响应采用式(2)的局部能量函数;步骤4. 选择适当的阈值进行处理;步骤5. 输出边缘映射图.
在本节中,通过一系列的实验验证了该方法的有效性. 实验中使用的图像包括正常图像、合成图像、医学图像以及Berkeley分割数据集(BSDS)中图像. 本节分两部分进行实验:1) 与常用边缘检测方法的对比;2) 通过Baddeley误差度量(BEM)[20]方法进行的数值比较.
本文方法与常用边缘检测方法对合成图像和医学图像的边缘检测结果对比如图4、图5、图6所示.
图4 本文方法与常用边缘检测方法对合成图像的边缘检测结果示意图(括号中数值为从上到下阈值). (a)原图; (b) 本文方法(0.4,0.15,0.27); (c) Canny (0.8,0.35,0.45); (d) Sobel(30,5,9); (e) Prewitt (30,5,8); (f) LoG (3,0.5,0.7)
其中,图4和图5的第(a)列是原图,第(b)-(f)列分别是采用本文方法、Canny方法、Sobel方法、Prewitt方法和LoG方法的边缘检测结果. 从图片效果上看,本文方法的检测结果要优于其它方法.
图6的第二行图像是在第一行原图的基础上加了标准差为0.05的高斯噪声图像,第四行图像是在第三行原图的基础上加了标准差为0.1的高斯噪声图像. 实验结果表明,本文方法能得到更好的检测结果.
图7为本文方法与其他文献所提方法的比较,从实验结果来看,本文方法能得到较好的边缘检测结果.
图5 本文方法与常用边缘检测方法对医学图像的边缘检测结果示意图(括号中数值为从上到下阈值). (a)原图; (b)本文方法(0.25,0.26); (c)Canny (0.3,0.45); (d) Sobel (17,5); (e)Prewitt(12,5); (f) LoG (0.2,0.4)
图6 本文方法与常用边缘检测方法对原图与添加了高斯噪声图像的边缘检测结果示意图(括号中数值为从上到下阈值). (a)原图; (b)本文方法(0.19,0.19,0.2,0.3); (c) Canny(0.19,0.17,0.3,0.5); (d) Sobel (15,19,15,30); (e) Prewitt(15,18,15,30); (f) LoG (1.5,1.5,1.2,1.8)
图7 本文方法与其他文献检测方法的对比
在本节中,通过对不同条件下的相同图像进行实验来比较本文方法和其他方法. 为了进行定量比较,本文使用 Baddeley误差度量(BEM)[20]方法进行实验验证. 两个二进制图像的不同之处是由BEM计算的. 这些实验是在不同类型的Berkeley分割数据集(BSDS)[21,22]图像上进行的. 在本节实验中使用了很多不同场景下的图像.
因为边缘映射图像通常是以二进制的形式显示,因此,它可以使用BEM方法进行比较研究. I1和I2是两个二进制图像,有相同的维度N×M,p={1,···,N}×{1,···,M}是像素位置集合. I1是BSDS中给出的真实的边缘图像,I2是边缘检测方法获得的边缘图像. k-BEM(0<k<∞)的定义如下:
其中,ω是一个用于权重的凹递增函数,d(p,Ii)表示点p到最接近的边缘点的Ii距离. 实验中所要用到的距离函数,选择使用欧几里得距离公式. 根据文献[23,24],在所有的BEM对比实验中,选择统一使用k=2和ω(x)=min(c,x),其中
BEM方法是用来比较两幅二进制图像之间的差异性的. 所以,通过BEM方法得到的实验结果越小,说明两幅图像间的差异性越小,也就意味着边缘检测得到的结果越接近BSDS数据库中给出的真实边缘图像.
将本文方法和其他方法应用到Berkeley分割数据集(BSDS)的10个测试图像中,把不同方法得到的二进制图像与BSDS中给出的真实边缘图像使用BEM方法计算不同之处,并将本文方法与其他方法得到的实验结果进行比较. 实验中用到的图像分为两类:原图像和添加高斯噪声图像.
使用边缘检测方法来处理图像时,选择不同的阈值进行实验,通过对阈值大小的不断调整,选择一个最接近实际边缘的二进制图像进行比较. 这样得到的实验结果是比较合理的.
表1 本文方法与其他方法对原图使用BEM方法得到的实验结果
表1为采用本文方法与其他算法针对原图进行边缘检测的BEM值对照表. 表1中第一列为BSDS数据库中的图像编号,第2-9列分别为Canny0.75、Canny1.5、Prewitt、Sobel、LoG、Ant算法[23]、GED-T[24]、GEDEA[25]和本文方法的BEM值(其中,Canny0.75表示Canny方法采用阈值为0.75的情形). 表1中的最后一行的sum项为各种方法处理数据库图例的各项BEM值的总和. 从表1可以看出,本文方法的检测结果中至少有6幅图像的结果是优于其他几种方法方法. 例如,BSDS数据库中图像编号为69015的图像,本文方法的BEM值比其他几种方法的BEM值都要小,也就是说,本文方法与其他几种边缘检测方法相比,边缘检测得到的结果更接近BSDS数据库中给出的真实边缘图像. 但也有几幅图像的实验结果并不都是最小的,如图像编号为54082的图像,本文方法检测到的结果并不是最好的,但与其他方法相比也是可以接受的,而且表1中所有图例的BEM总和也是最小的.
表2为采用本文方法与其他算法针对添加噪声的图像进行边缘检测的BEM值对照表. 噪声图像是在原图像的基础上,添加了标准差为0.1的高斯噪声得到的. 表2中的数据显示,本文方法针对含噪声图像的边缘检测结果中至少有6幅图像的结果是比其他几种方法得到的结果都要小,说明针对噪声图像,本文方法得到的检测结果也是比较接近BSDS数据库中给出的真实边缘图像. 因此,本文方法对含有少量噪声的图像的边缘检测也是有效的.
表2 本文方法与其他方法在添加噪声的图像中使用BEM方法得到的实验结果
表1和表2给出的数据中,本文方法无论是对原图还是对添加了高斯噪声后的图像的检测结果都有超过半数是比其他方法检测到的数值要小. 根据BEM方法的理论知,数值越小,检测到的结果越接近数据库中给出的边缘图,说明检测结果的准确性越高. 因此,本文方法的优势在于检测结果相对于其他几种方法来说是比较好的.
本文提出了一种新的基于局部能量的图像边缘检测方法. 局部能量最大的点对应于边缘点. 通过局部能量,可以有效地找到边缘点. 通过大量的实验验证,本文方法无论是从视觉效果上还是BEM定量结果上,与其他方法相比,都能得到比较好的检测结果.