基于Canny算子的自适应图像边缘检测算法

时间:2022-09-23 04:29:11

基于Canny算子的自适应图像边缘检测算法

【摘 要】针对单一的边缘检测方法造成重要的且梯度变化较弱的边缘丢失的问题,本文采用全局与局部边缘检测相结合的方法进行边缘提取。全局边缘检测得可以到整体边缘,全局边缘检测采用基于Canny算子的自适应平滑滤波算法,与Canny算子、Sobel算子的边缘检测效果比较,改进的Canny算子得到的边缘最为完整丰富,不含伪边缘。对全局检测未能得到的边缘,选取局部区域检测方法进行边缘提取。局部边缘检测采用基于k-均值法的距离加权算法,能有效克服孤立点对聚类的影响。通过全局和局部相结合的边缘检测方法,可以得到完整的颅骨图像边缘。与采用Canny边缘检测方法相比,本算法能够有效地提取图像中重要边缘,且抗噪声能力强。

【关键词】边缘检测;Canny算子;自适应滤波;距离加权;k-均值法

1 前言

图像的主要信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,是图像中灰度变化比较剧烈的地方,虽然光线和亮度的变化会明显地影响一幅图像的外观,但是灰度突变的特征是不改变的,所以把灰度突变的特征作为边缘提取的重要依据[1,2]。

在医学检验中,有时需要对颅骨图像边缘进行描绘和测量,但手工描绘不仅耗费时间与人力,而且边缘认定不准确。为了提高对边缘的提取效率,本文选取颅骨图像作为素材,采用一种改进的Canny算子平滑滤波算法,并采用全局与局部边缘检测算法相结合的方法,旨在研究一个高效的提取颅骨图像边缘的方法,抑制噪声的同时有效保护细节,能满足图像检测效率和准确率。

2传统的Canny算子检测

Canny边缘检测算法有四个步骤[2]:首先,要用高斯滤波器平滑图象排除噪声干扰;其次,用一阶偏导来计算图像的梯度幅值和方向;再次,找出梯度幅值中的非极大值的像素点,将其灰度值置为0进行抑制,保留极大值点;最后用双阈值算法,用高阈值的边缘提取轮廓,用低阈值的边缘作为补充,对满足条件的低阈值点进行连接。具体步骤为:

1. 高斯滤波平滑图像

Canny算法是采用二维高斯函数的导数处理原始图像。选择二维高斯函数作为平滑模板,因为它不仅能精确定位,也能抗噪声干扰]。Canny算子的对突变显著的边缘反映非常大,对顺着边缘的变化觉察不到。二维高斯函数:

其梯度矢量为

将滤波卷积模板在行和列的方向上分别进行分解,得到两个一维滤波器:

其中 为高斯滤波器的参数,图像边缘的定位准确与否,取决于的选取。取大一些的值可以去掉噪声影响,但定位不准确,取小值定位准确,却不能有效排除噪声的干扰。

2. 计算梯度的幅值和方向

早期的Canny算子使用大小的模板的一阶偏导的差分计算平滑后的图像的梯度幅值和梯度方向。其中沿x和y方向的偏导数分别为和。

将直角坐标转换到极坐标,把和转换到像素的梯度幅值和梯度方向,其中表示任意点处的边缘强度,表示任意点的法向矢量:

(7)

(8)

3. 对梯度的幅值进行非极大值抑制

梯度幅值表示边缘强度,值越大则图像在点梯度值越大。但是局部的极大值有很多,计算梯度的幅值不足以定位边缘点。为了得到单一的边缘可以将不是极大值的边缘对应的像素值设置为0。将梯度的方向角投影到图1中的四个扇区中,像素点的梯度方向所在的扇区:

以点为中心的的邻域为主要研究对象,在点的梯度方向对应的扇区中,找到点梯度方向上相邻的点,与其作比较,如果点的值大于相邻点的值,则点是可能的边缘点,保留下来用于再次判断,否则点不是边缘点,将其值设为0对其抑制。这样就可以把不是极大值的点排除了。

4. 用双阈值检测和连接边缘

双阈值检测就是设置两个阈值,一高一低,前者用来描绘出一定是边缘的点,后者用来对前者进行补充。设高低阈值分别为和,=0.4,二者的关系是经验所得,可在幅值图像中求出。双阈值检测法把点的值与阈值比较,如果该点梯度幅值比高阈值大,就确定该点为边缘点,若,点等待边缘点的判定,若,则排除这点是边缘点的可能性。

双阈值算法主要是在中寻找可以连接到的点。M和N表示采用高阈值得到的边缘图像中某条边缘的起始点和终点,和表示低阈值图像中跟M、N对应的点。先在中高阈值边缘图像找到一条边缘线的起始点M,从起始点一直沿着边缘线走到终点N,然后在中N点对应位置点周围找到8个相邻像素点,如果在这八个点中找到了弱边缘点,即值为1的点,则在高阈值图像的对应位置取为边缘点,然后以这个新找到的边缘点为起始点继续重复上面的跟踪,直到走遍高阈值图像中的所有边缘点,结束跟踪,得到完整的边缘。

3自适应滤波改进的Canny边缘检测

传统的Canny算子,得到的边缘不清晰,容易检测出伪边缘并且损失边缘细节,这会影响后面的图像处理的效果。传统的Canny算子选取作为高斯系数,不能为每一张图像提供与适合图像的检测系数,缺少鲁棒性,得到的结果也就没有可信度。

自适应平滑滤波算法是根据图像中灰度值的变化特点自适应的改变滤波器的权值的一种方法。在图像平滑的过程中还可以锐化图像边缘,有效地解决了平滑噪声和锐化边缘之间的冲突,为后面的边缘提取做了很好的铺垫。自适应平滑滤波具有锐化边缘和平滑噪声的作用,鲁棒性较未改进的Canny要好很多,改善人为设定的阈值不准确状况。

改进的自适应平滑滤波算法使用变化的模板与原始图像卷积。每个像素点的加权系数都是模板作用到该点时根据梯度的大小计算的,所以这个加权不断变化。将高斯函数与卷积,得到平滑图像。像素值在哪里变化显著,在哪里的滤波器权值就可以设为0,就可以避免对变化已经很明显的像素点再进行平滑,可以提高计算效率。改进的自适应平滑滤波算法特点是遇到变化不显著的区域,可以自动地调整权系数,即:

(9)

其中,是单调递减函数,最大值,表示灰度的梯度,当不断的增大时,减小到0。可以检测灰度变化是否存在突变。可表示为:

(10)

其中,h为恒定参数,为的导数。

同理,为图像灰度值,为的梯度,即:

(11)

则权系数为:

(11)

其中且

于是,点处的平滑信号定义为:

(12)

其中。多次试验表明,经过5次迭代就能得到最好的边缘锐化效果。

常规的k-均值法将图像数据和孤立点分为两类,而距离加权的k-均值法可以将孤立点的影响减小,在图像区域中将图像数据分为两类,得到后脑部分局部区域的边缘。使用距离加权k-均值法可以得到局部区域的边缘,用这种方法对颅骨图像后脑部分的局部区域依次进行检测得到了图1中完整的边缘图像。

图1完整的颅骨边缘图像

4结束语

本文采用改进的Canny算子平滑滤波算法和局部边缘检测算法结合方法用于医学中颅骨图像边缘检测。通过仿真实验表明自适应滤波改进的Canny算子与局部区域距离加权k-均值法相结合的边缘检测法可以较全面的提取颅骨图像完整的图像边缘,边缘细节更丰富,定位更准确,不易受噪声的影响。

参考文献(References):

[1] Rafael C. Gonzalez, Richard E. Woods. Digital Image Processing, Third Edition[M].北京:电子工业出版社. 2011:25-35

[2] Avramovic, A. Lossless compression of medical images based on gradient edge detection[C]. Proceedings of 2011 19th Telecommunications Forum (TELFOR). 2011, 9:1199-1202

基金项目:黑龙江省教育厅项目(12521113)

作者简介:

李冰(1977-),黑龙江哈尔滨,研究方向鲁棒控制,智能控制及数字图像处理.

上一篇:数控理实一体化教学模式探索 下一篇:运用LPC210x ISP工具烧录ZQZ―A(F)系列数据采...