一种改进边缘连接的Canny边缘检测算法
2014-03-26齐丹阳
齐丹阳,蒋 峥,陈 毅,刘 斌
(武汉科技大学信息科学与工程学院,湖北 武汉,430081)
图像边缘包含了图像的大量信息,它是图像灰度在空间发生突变或者在梯度方向上发生突变的像素集合,也是图像局部特征不连续而造成的后果。边缘检测是图像分析、目标识别等高级图像分析处理的重要基础,它是图像处理领域的一个热门研究课题。目前,图像处理方法有两大类:一是经典的边缘检测方法[1],如微分算子法、最优算子法和拟合法等;二是基础边缘提取方法,如数学形态学法、模糊数学法[2]、小波分析法[3]和分形理论法等。由于算法复杂度、时间耗费等原因,在实际工程中经典的边缘检测算法应用较多,其中Canny算法在抗干扰和提取精细边缘方面得到广泛的应用。
由于Canny算法需要设定固定阈值来获取边缘图像,以致容易出现边缘间断或伪边缘问题,而实际应用中要求不过度依赖阈值得到较完整干净的真实边缘。针对Canny算法的不足,近年来提出改进的Canny算法有:①通过形态学法来细化边缘[4-5],此类方法不适合对于细节提取要求较高的图像检测;②通过图像的灰度均值与方差均值自动计算高阈值[6],但高低阈值的比例仍是2∶1;③通过改进Otsu算法自动计算高低阈值[7-9],但需要预先对图像进行分块或复杂的预处理;④通过改进边缘连接方法[10-11],此类方法仍需设置高低阈值,在高阈值图像中利用一定准则来连接低阈值图像中的弱边缘。不难看出,基于梯度幅值和梯度角度的边缘特征均需要设置高低阈值。为此,本文提出一种新的边缘对比特征,并基于视觉感知实验得出用于评价两个灰度是否可以区分开来的对比阈值,然后针对Canny 边缘检测算法中需要手动设置固定阈值而出现边缘间断或伪边缘的问题,设计了一种基于边缘对比特征和边缘方向的边缘连接方法。该方法改变了Canny算法中必须同时设置高低阈值的局限性,且能获取完整干净的边缘。
1 传统的Canny边缘检测算法
Canny于1986年提出Canny边缘检测算法[1],并给出了评价边缘提取优劣的三个指标:
(1)信噪比。即检测到的边缘必须尽可能是真实边缘。
(2)定位性能。即检测出来的边缘点与真实边缘中心之间的距离应该最小。
(3)单一的边缘点响应。即对于真实的边缘点,检测算法仅返回一个点。
Canny边缘检测算法的本质是从数学上表达上述3个准则,并试图找到这些表达式的最佳解。归纳起来,Canny边缘检测算法由下列基本步骤组成:①用高斯滤波器平滑输入图像; ②计算梯度幅值图像和角度图像;③对梯度幅值图像应用非极大值抑制;④用双阈值处理和连接分析来检测并连接边缘。
2 改进边缘连接的Canny边缘检测算法
图像边缘本质是灰度的变化,认为是一个真实的边缘取决于人眼的主观感觉,主观感觉的强烈与否取决于灰度突变的强度。灰度变化产生的层次感凸显出边缘,因此表征边缘最本质的方法是获取产生灰度变化的灰度值,显然灰度值是一对灰度值,本文将这一对灰度值命名为边缘对比特征。Canny边缘检测算法中使用的边缘特征是梯度幅值和梯度角度,而本文加入边缘对比度特征以利于更好地检测边缘。
2.1 图像梯度
(1)
式中:gx、gy分别为水平、垂直梯度。
梯度向量幅值M(x,y)定义为
M(x,y)=mag(f)
(2)
由于梯度向量方向与所在边缘垂直,因此可由梯度方向得到边缘方向,梯度方向α(x,y)也称为边缘法线,其定义为
(3)
图1为边缘与梯度向量的关系,其中图 1 (a)为边缘与梯度向量的坐标关系,图 1 (b)为在灰度图像中边缘与梯度向量的关系。
(a) (b)
图1边缘与梯度关系示意图
Fig.1Relationshipbetweenedgeandgradient
对于边缘,可分别定义为水平、垂直、+45°、-45°四个方向,图2为每种边缘所对应的法线范围。由图2可看出,边缘法线方向可确定边缘方向,每个边缘均有两个可能的方向,如法线为0°边缘和法线为180°边缘是同一个水平的边缘。
2.2 边缘对比特征
由图 1 (b)可看出,对于图像中的一个边缘点,该点梯度方向上两侧的灰度是有差异的,可以把该点梯度方向上两侧部分点的灰度均值作为该边缘点的灰度特征,也就是边缘对比特征。图 3为计算不同方向边缘灰度均值的点。由图3可看出,对于不同方向的边缘用来计算灰度均值的点是不同的。其中中间黑点为边缘点,穿过中间黑点的粗直线表示边缘方向,粗直线上下或者左右两侧的点为用来计算灰度均值的点。
图2 边缘及法线范围Fig.2 Edge and the normal range
(a)水平边缘 (b)垂直边缘
(c) +45°边缘 (d) -45°边缘
图3计算不同方向边缘灰度均值的点
Fig.3Pointsofcalculatingedgegray-scalemeanindifferentdirections
对于图像中坐标为(x,y)的点,用magDown(x,y)记录该点沿梯度方向上的灰度均值,用magUp(x,y)记录该点沿梯度反方向上的灰度均值,也就是说,用magDown(x,y)和magUp(x,y)来记录边缘对比特征。这里,要严格按梯度方向来记录边缘的对比特征,而不是简单地用上下或者左右的方式来记录,原因是一种边缘有两个可能的梯度方向,而不同梯度方向的边缘,其实表示的边缘含义是不一样的。以水平边缘为例,如果梯度方向垂直向下,则表示该水平边缘上侧的灰度值比下侧灰度值低,但如果梯度方向垂直向上,则表示该水平边缘上侧的灰度值比下侧灰度值要高,这样两种水平边缘是有区别的。
2.3 边缘对比阈值和边缘点的相似性
边缘对比特征原始地反应了边缘周围的灰度特征,因此可以比较边缘点之间的边缘对比特征来分析边缘点之间的相似性。要比较边缘对比特征,就要比较灰度值之间的差异。这里针对8种灰度图来说明其图像中灰度的变化。对于灰度值为5的图像区域和灰度值为25的图像区域,人眼是无法分辨出其差别的,它给人的感觉都很黑,但对于灰度值为65的图像区域和灰度值为85的图像区域,人眼能够较容易地区分。对于灰度值为65的图像区域和灰度值为125的图像区域,人眼就很容易区分其差别。因此,灰度之间差异程度的大小,不仅和灰度差值有关系,而且和灰度值本身也有关系[12-13]。
在一幅图像中分别设置背景和目标灰度值,观察不同背景下目标取何值可以被识别出来,并记录背景灰度值和目标灰度值。显然不同图像和不同人的记录值是有区别的,但通过采用多幅图像和视力正常或者戴眼镜情况下视力达到正常水平的多人次的多次测试,记录值就具有了较强的代表性,由此整理并总结出具有典型经验的记录值。
图4为一次记录数据的图形显示结果,其中,直线表示背景灰度值,直线上下两条虚线均为目标灰度值。由图4可看出,直线上方的虚线在目标灰度值高于背景灰度值的情况下,只有当目标灰度值大于该虚线的灰度值时目标才能被识别;直线下方的虚线在目标灰度值低于背景灰度值的情况下,只有当目标灰度值小于该虚线时目标才能被识别。以图4中A点为例,A点背景灰度值为170,B点灰度值为145,C点灰度值为191,也就是说,对于背景灰度值为170时,目标灰度值应该小于145或者大于191的情况下,目标才能被识别出来。由图4还可看到,两条虚线关于中间直线也是大致对称的。由于两条虚线与中间直线的差值相近,同时为便于计算,故总结出一组对应的数据m(k)与n(k),k=1,…,24,并称之为边缘对比阈值,即:
图4一次记录数据的图形显示
Fig.4Graphicaldisplayforthedatarecord
(4)
式中:m(k)与n(k)为一一对应数据,且m(k)对应点的数值均小于n(k)对应点的数值。也就是说,m(k)相当于图4中的直线,n(k)相当于图4中的虚线。其含义是:对于灰度m(k),若其他灰度要与其区分开来,则必须大于n(k)。之所以不考虑比m(k)小的灰度,是因为对于要比较的两个灰度中总可以选取较小的那个作为对应的基准m(k)值。对于两个待比较的灰度值,其区分步骤如下:
(1)比较得到较小的灰度值v1和较大的灰度值v2。
(2)若v1≥240,则返回值为0,表示不可区分,否则继续步骤3。
(3)若通过k=v1/10得到v1在m(k)对应区间的索引值,则计算nT=(n(k+1)-n(k))(v1-m(k))/10+n(k);若v2 对于两个边缘点(x,y)和(i,j),若它们的边缘对比特征magUp(x,y)与magUp(i,j)不能区分开来,magDown(x,y)与magDown(i,j)也不能区分开来,则两个边缘点是相似的,否则就不是相似的。 在Canny边缘检测算法中,对梯度幅值图像进行极大值抑制后会使用高阈值TH得到高阈值图像gNH和低阈值TL得到低阈值图像gNL。gNH中的所有边缘均标记为有效边缘点,对于gNL中的边缘点如果和gNH中的边缘点重合或者在8邻域内,则该边缘点所在的8连通边缘全部标记为有效边缘点,所有的有效边缘点组成最终检测边缘。由此可见,高低阈值对于最终检测边缘效果起到决定作用。然而,固定的高低阈值往往不能保证较好的配合效果,从而影响Canny算法的应用。 本文提出改进的边缘连接方法是设置高阈值得到强边缘图像,以强边缘的方向为导引,沿着导引方向进行连接边缘,连接时以边缘对比特征为依据,当待连接点与当前边缘点相似且两者的法线夹角小于90°时,该点才可能被连接;当待连接点同时满足这两个条件时,只有两者法线夹角最小者才被连接,以被连接的点为新的边缘点执行上述迭代操作。具体步骤如下: (1)在gNH中搜索未被搜索过的边缘点并判断是否为端点,如果是端点,则记录为端点A。端点是一条边缘的未连接处,定义为8邻域内只有一个点的边缘点或者8邻域内有两个相邻点的边缘点。端点A的8邻域中离A点最近的点记为B点。图5为一个端点示意图。 (a) (b) (c) (d) 图5端点示意图 Fig.5Sketchofendpoints (2)利用端点A的边缘法线将端点A的8邻域分为两部分(见图5(d)),不包含B点的那部分点作为待检测的点,另外一部分则忽略。这一步骤的作用在于保证边缘按当前边缘的大致走势连接,这是符合逻辑而非随意方向的任意连接。在图5(d)中,虚线假设为端点A的边缘法线,则虚线将端点A的8邻域分成上下两个部分,每个部分含3个点,由于B点在上面,因此只有下面3个点才能作为待检测的连接点。 (3)分别计算待检测连接点的边缘法线与A点边缘法线夹角的绝对值,并将夹角绝对值命名为法线夹角。若法线夹角小于90°,则继续作为待检测的连接点,否则不再作为待检测的连接点。 (4)分别比较待检测点与A点的边缘对比特征,如果待检测点与A点是相似的,则仍然作为待检测的连接点,否则不再作为待检测的连接点。 (5)若已经没有任何待检测的连接点,则将A点标记为已搜索过的点并返回步骤1,否则选取剩下待检测点中法线夹角值最小的点作为有效边缘点,然后将A点标记为已搜索过的点并返回步骤1。 将改进的边缘连接算法运用到Canny算法中,新的Canny算法的基本步骤如下:①用高斯滤波器平滑输入图像;②计算梯度幅值图像M(x,y)和角度图像α(x,y);③根据角度图像α(x,y)计算对比特征图像magDown(x,y)和magUp(x,y);④对梯度幅值图像M(x,y)应用非最大抑制;⑤设置高阈值Th得到强边缘图像gNH;⑥对强边缘图像gNH应用改进的边缘连接方法连接边缘。 图6为原始图像及其处理过程。选取一幅lena灰度图像和一幅胶囊缺陷图像,如图6(a)、图6 (b)所示。应用不同的梯度算子计算时,Th的取值是不同的。Th取值原则是保证强边缘真实即可,当然可以根据实际工程需要来设置。对于使用Sobel算子计算梯度图像时,Th的取值范围为50~70,所得到强边缘图像如图6(b)、图6(e)所示。图6(c)、图6(f)分别为两幅图的最终边缘图。为了便于观察,基于强边缘通过连接得到的边缘点不是标记为白色点而是灰色点。由此可看出,改进的Canny算法具有很好的边缘连接能力,高阈值图像中丢失的许多边缘,如lena的下巴、帽子顶部、镜子的内轮廓、镜中的头发、模糊的胶囊缺陷边缘等,均在边缘连接图像中得到很好的连接。 (a)原始灰度图像 (b)强边缘图像 (c)最终边缘图 (d)胶囊缺陷 (e) 胶囊缺陷强边缘 (f) 胶囊缺陷最终边缘 图6原始图像及其处理过程 Fig.6Theoriginalimageandprocess 在胶囊缺陷检测中,胶囊缺陷的灰度值在同一批次中存在差异,固定的阈值会出现边缘间断或伪边缘的问题,如缺陷面积、周长等。而本文提出的Canny改进算法,图6 (e)中中间部分强边缘点不多,但在图6(f)中依然连接成很完整的边缘,这对于定位图6(d)中黑色区域是非常有利的,使得该方法在需要完整边缘以及准确定位的场合中有较好的表现。 (1)基于图像边缘的本质提出边缘对比特征,并基于视觉感知实验得出用于评价两个灰度是否可以区分开来的对比阈值,将该特征应用到Canny算法边缘连接中,具有很好的边缘连接能力,且获取完整干净的边缘。 (2)将改进的Canny算法运用到胶囊缺陷检测中,使用Sobel算子计算梯度图像时,Th的取值范围为50~70,既保证了强边缘的真实,也不需设置低阈值,从而克服了经典Canny算法过于依赖固定高低阈值的缺点。 [1] 汪岳. 基于边缘检测经典算法的改进研究与实现[D]. 合肥:安徽大学, 2012. [2] Melin P,Mendoza O,Castillo O.An improved method for edge detection based on interval type-2 fuzzy logic[J]. Expert Systems with Applications, 2010, 37(12): 8527-8535. [3] Zhang Xiaofeng,Zhang Yu,Zheng Ran.Image edge detection method of combining wavelet lift with Canny operator[J]. Procedia Engineering, 2011, 15: 1335-1339. [4] 王小俊, 刘旭敏, 关永. 基于改进 Canny 算子的图像边缘检测算法[J]. 计算机工程, 2012, 38(14): 196-198. [5] Wang Bing, Fan Shaosheng. An improved CANNY edge detection algorithm[C]//Computer Science and Engineering, 2009. WCSE’09. Second International Workshop on IEEE, 2009: 497-500. [6] 薛丽霞,李涛,王佐成. 一种自适应的 Canny 边缘检测算法[J]. 计算机应用研究,2010,27(9):3588-3590. [7] 唐路路,张启灿,胡松. 一种自适应阈值的 Canny 边缘检测算法 [J]. 光电工程,2011,38(5): 127-132. [8] 张帆,彭中伟,蒙水金. 基于自适应阈值的改进 Canny 边缘检测方法[J]. 计算机应用,2012, 32(8): 2296-2298. [9] Tao Sun, Chang Zhigao. An improved canny edge detection algorithm[J]. Applied Mechanics and Materials, 2013, 291-294: 2869-2873. [10]贺赛先,唐艳. 一种基于人类感知的边缘连接方法[J]. 红外技术,2005, 27(4): 338-342. [11]王小鹏,王紫婷. 基于视觉感知的双层次阈值边缘连接方法[J]. 计算机应用,2006,26(8):1845-1847. [12]胡媛媛,牛夏牧. 基于视觉阈值的结构相似度图像质量评价算法[J]. 深圳大学学报:理工版,2010,27 (2):185-191. [13]姚军财,石俊生,杨卫平,等. 人眼对比度敏感视觉特性及模型研究[J]. 光学技术,2009,35(3):334-337.2.4 Canny边缘连接
2.5 改进的边缘连接方法
3 实例应用
4 结论