基于matlab的图像边缘检测算法研究
摘要
图像的边缘检测技术是数字图像处理技术的基础研究内容,是物体识别的重要基础。现有边缘检测技术在抑制噪声方面有一定的局限性,在阈值参数选取方面自适应能力很差,有待进一步改进和提高。
本论文首先介绍了图像边缘检测这个课题的意义和背景;作为理论基础,在第二章简单的介绍了传统的图像边缘检测算法,如Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子,回顾了经典的边缘检测算法,为后面介绍Canny算法作为铺垫。在第三章,结合Canny算法的基本原理、算法的三个标准、算法的思路及检测步骤提出了对Canny算子中的图像滤波平滑处理及取阈值的算法进行改进的方法,并进行了实验检验。
基于传统Canny算法中采用高斯滤波器对图像滤波平滑处理的效果有待改进,本论文引用了自适应中值滤波器,在使用Canny算法之前,对图像进行滤波,通过图3.4的结果显示,检测效果明显改善;而在取阈值时,在使用Otsu算法的基础上,采用顶帽算子对图像进行预处理以补偿图像,这样能取得更合适的阈值;图3.5和图3.6检测结果分别在滤波器、阈值两个方面进行了实验的比较,并与传统的Canny算法的检测结果进行了对比,显示出了本文所采用的改进算法的优越性。
关键词:边缘检测;Canny算子;自适应中值滤波器;Otsu算法;顶帽算子
目 录
§1.2 数字图像边缘检测算法的意义
数字图像处理是控制领域的重要课题,数字图像边缘检测是图像分割、目标区域识别和区域形状提取等图像分析领域十分重要的基础,是图像识别中提取图像特征的一个重要方法。边缘中包含图像物体有价值的边界信息,这些信息可以用于图像理解和分析,并且通过边缘检测可以极大地降低后续图像分析和处理的数据量。图像理解和分析的第一步往往就是边缘检测,目前它已成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。
图像的边缘检测技术是数字图像处理技术的基础研究内容,是物体识别的重要基础。边缘特征广泛应用于图像分割、运动检测与跟踪、工业检测、目标识别、双目立体视觉等领域。现有边缘检测技术在抑制噪声方面有一定的局限性,在阈值参数选取方面自适应能力很差,有待进一步改进和提高。(1)多谱图像是图像配准技术中的一个难点,传统的图像配准技术只适用于同源图像,由于红外图像和可见光遥感图像的成像波段不同,对于同一场景,所采集到的图像的差异很大。在此课题中,作者首先通过边缘检测,得到红外图像与遥感可见光图像的边缘图像,再通过尺度不变特征匹配,就能得到红外图像与可见光遥感图像之间的透视变换关系,从而成功完成了多谱图像配准[2]。(2)在“货运列车动态图像故障检测系统(TFDS,Trouble Of Moving Freight Car Detection system)中的故障识别”的课题中,作者采用水平Sobel算子检测边缘,对边缘图像进行水平方向投影,计算得到货运列车底部心盘螺栓大致区域的图像,然后用Harris算子得到一些候选故障区域,最后通过相关匹配来识别故障。(3)在“基于双目立体视觉的人体动作捕捉系统”的课题中,利用图像的边缘和深度信息从视频中分割出人体前景图像。因此对图像边缘检测技术理论及其应用进行研究都有很重要的意义。
在数字图像处理中,边缘特征是图像的重要特征之一,是图像处理、模式识别和计算机视觉的重要组成部分之一,图像边缘检测的结果直接影响进一步图像处理、模式识别的效果。
近几十年来,图像边缘检测技术成为数字图像处理技术重要研究课题之一,随着科学技术的发展,研究人员提出了很多图像边缘检测方法及边缘检测效果的评价方法,并且将这些边缘检测技术应用于计算机视觉和模式识别工程领域,使得边缘检测技术的应用范围越来越广,图像的边缘一般是图像的灰度或者颜色发生剧烈变化的地方,而这些变化往往是由物体的结构和纹理,外界的光照和物体的表面对光的反射造成的。图像的边缘反映了物体的外观轮廓特征,是图像分析和模式识别的重要特征,数字图像处理技术是一门交叉学科,数学理论、人工智能、视觉生理学和心理学等各种理论为边缘检测技术研究注入新的活力,涌现出很多边缘检测理论和方法。根据边缘检测所处理的图像类型,可分为两大类:灰度图像边缘检测方法和彩色图像边缘检测方法。基于本论文仅研究讨论灰度图像边缘检测,这里介绍经典的灰度图像边缘检测方法。
灰度图像的边缘是像素的灰度值发生变化的地方,这些变化通常是屋顶变化或者阶跃变化,图像屋顶变化或者阶跃变化的大小一般用灰度图像一阶导数或二阶导数的大小来描述,所以灰度图像的边缘检测方法主要分为两大类:一阶微分图像边缘检测算子(如Roberts算子、Sobel算子、Prewitt算子)和二阶微分图像边缘检测算子(如Laplacian算子、LOG算子、Canny算子)。
一般来讲,一个好的边缘检测算法应满足如下要求:(1)检测精度高;(2)抗噪能力强;(3)计算简单;(4)易于并行实现。其中最根本的问题是解决检测精度与抗噪声能力间的矛盾。从理论上讲,这两者之间存在着相互制约的互变关系,即不确定性原则。这一原则可表述为,一个信号不可能在时域和频域中任意高度集中。因而边缘的定位精度和抗噪声能力不可能同时无限地提高,这两项指标的乘积为一常数,理论上可以通过改变空域形式来获得任意好的定位精度或信噪比,但不能两者都得到改善。因此,衡量一个检测方法的标准也不能只看某一指标的高低,而应考察其综合指标是否达到理论上的极限。虽然迄今已出现了众多的理论和方法,而且有些方法发展得相当成熟,但从这个意义上讲还没有一种普遍适于任何条件的最优算法。为此人们已将注意力放在研究更直接的、专用的和面向对象的视觉信息系统,如“主动视觉”,“定性视觉” 、“面向任务的视觉”等,通过强调场景和任务的约束、增加信息输入和降低对输出的要求等手段来降低视觉处理问题的难度。这些思想大大丰富和补充了原来的理论,使算法向具体化、实用化方向发展,已成为视觉信息处理中有前途的发展方向[3]。
§2.2 MATLAB和图像处理工具箱的背景知识
MATLAB对于技术计算来说是一种高性能语言。它以易于应用的环境集成了计算、可视化的编程,在该环境下,问题及其解以我们熟悉的数学表示法来表示。典型的应用包括如下方面[4]:
(1)数学和计算
(2)算法开发
(3)数据获取
(4)建模、模拟和原型设计
(5)数据分析、研究和可视化
(6)科学和工程图形
(7)应用开发,包括图像用户界面构建
MATLAB是一种交互式系统,其基本数据元素是并不要求确定维数的一个数组。这就允许人们用公式化方法求解许多技术计算问题,特别是涉及矩阵表示的问题。有时,MATLAB可调用C或Fortran这类非交互式语言所编写的程序。
在高等院校中,对于数学、工程和科学理论中的入门课程和高级课程,MATLAB都是标准的计算工具。图像处理工具箱是一个MATLAB函数(称为M函数或M文件)集,它扩展了MATLAB解决图像处理问题的能力。其他有时用于补充IPT的工具箱是信号处理、神经网络、模糊逻辑和小波工具箱。
§2.3 数字图像边缘检测关于边缘的定义
边缘是不同区域的分界线,是图像局部强度变化最显著的那些像素的集合。图像强度的显著变化可分为:
(1)阶跃变化(函数),即图像强度在不连续处的两边的像素灰度值有着显著差异;
(2)线条(屋顶)变化(函数),即图像强度突然从一个值变化到另一个值,保持一较小行程后又回到原来的值。
边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,边缘是位于两个区域的边界线上的连续像素集合,在边缘处,灰度和结构等信息产生突变。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。
图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检测出来,通常用一阶或二阶导数来检测边缘。
§2.4 基于一阶微分的边缘检测算子
图像的局部边缘定义为两个强度明显不同的区域之间的过渡,图像的梯度函数即图像灰度变化的速率将在这些过度边界上存在最大值,通过基于梯度算子或导数检测器来估计图像灰度变化的梯度方向,增加图像的这些变化区域,然后对该梯度进行阈值运算,如果梯度值大于某个给定门限,则存在边缘。再将被确定为边缘的像素连接起来,以形成包围着区域的封闭曲线。
一阶导数可以用于检测图像中的一个点是否在斜坡上,二阶导数的符号可以用于判断一个边缘点是在边缘亮的一边还是暗的一边。
(a) (b)
图2.1 (a)阶跃函数,(b)线条(屋顶)函数(第一行为理论曲线,第二行为实际曲线,第三行对应一阶导数,第四行对应二阶导数)
一阶导数的二维等效式:
梯度的幅值:
和方向:
梯度是灰度
用差分来近似梯度
§2.4.1 Roberts算子(梯度交叉算子)
Roberts算子是一种利用局部差分算子寻找边缘的算子[5]。
0
1
-1
0
用模板实现:
1
0
0
-1
Sobel提出了一种将方差运算与局部平均相结合的方法,即Sobel算子,该算子在以
§2.4.3 Prewitt算子
Prewitt提出的类似于Sobel的计算偏微分估计值的方法[7]
1
1
1
0
0
0
-1
-1
-1
用模板实现:
-1
0
1
-1
0
1
-1
0
1
图2.4 Prewitt算子的
§2.5 基于二阶微分的边缘检测算子
一阶微分是一种矢量,不但有其大小还有方向,和标量相比,它数据存储量大。另外,在具有相等斜率的宽区域上,有可能将全部区域都当做边缘提取出来。因此,有必要求出斜率的变化率,即对图像函数进行二阶微分运算。
图像强度的二阶导数的零交叉点就是找到的边缘点[7],如图2.5所示:
图2.5 图像函数的二阶微分
§2.5.1 Laplacian算子
Laplacian算子[8]利用二阶导数信息,具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。使得图像经过二阶微分后,在边缘处产生一个陡峭的零交叉点,根据这个对零交叉点判断边缘。拉普拉斯算子是二阶导数的二维等效式:
上式应用Laplacian算子提取边缘的形式,及二阶偏导数的和,是一个标量,其离散计算形式定义为:
这一近似式是以点
同理:
对于一个
§2.5.2 LOG算子
由于梯度算子和拉普拉斯算子都对噪声十分敏感,因而在检测前必须滤除噪声。Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成LOG(Laplacian-Gauss)算法。LOG边缘检测的基本特征[9]为:
(1)平滑滤波器是高斯滤波器;
(2)增强步骤采用二阶导数(二维拉普拉斯函数);
(3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值;
(4)使用线性内插方法在子像素分辨率水平上估计边缘的位置。
该算子首先用高斯函数对图像作平滑滤波处理,然后才使用Laplacian算子检测边缘,因此克服了Laplacian算子抗噪声能力比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法被检测到。
在实际应用中,常用的LOG算子是
-2
-4
-4
-4
-2
-4
0
8
0
-4
-4
8
24
8
-4
-4
0
8
0
-4
-2
-4
-4
-4
-2
图2.6 LOG算子的
该算法的主要思路和步骤如下:
(1)滤波:首先对图像
其中,
(2)增强:对平滑图像
(3)检测:边缘检测判据是二阶导数的零交叉点(即
由于对平滑图像
式中
第3章 Canny边缘检测算法的改进与研究
§3.1 Canny边缘检测算法
根据边缘检测的有效性和定位的可靠性,Canny研究了最优边缘检测器所需的特性,推导出最优边缘检测器的数学表达式。对于各种类型的边缘,Canny边缘检测算子的最优形式是不同的。
§3.1.1 Canny边缘检测基本原理
Canny给出了评价边缘检测性能优劣的三个指标[10-14]:
(1)好的信噪比,即将非边缘点判为边缘点的概率要低,边缘的漏检率要低;即,使输出的信噪比最大,定义信噪比SNR为:
其中
(2)好的定位性能,即检测出的边缘点要尽可能在实际边缘的中心;
(3)对单一边缘仅有唯一响应,即单个边缘产生多个响应的概率要低,并且虚假边缘响应应得到最大抑制。为了保证单边缘只有一个响应,检测算子的脉冲响应导数的零交叉点平均距离
以上述指标为基础,利用泛函数求导的方法可导出Canny边缘检测器是信噪比和定位之乘积的最优逼近算子。将以上三个指标结合可获得最优的检测算子。
§3.1.2 Canny算法边缘检测步骤
Canny算法边缘检测步骤[5][14]如下:
(1)用高斯滤波器平滑图像;
(2)用一阶偏导有限差分计算梯度幅值和方向;
(3)对梯度幅值应用非极大值抑制;
(4)用双阈值算法检测和连接边缘。
§3.1.3 Canny算法的流程图
Canny算法的流程图[15]如图3.1所示:
图3.1 Canny算法的流程图
(1)高斯平滑滤波器
高斯平滑滤波器是一种线性滤波模板,模板各位置的权重是根据高斯分布函数确定的,由于高斯平滑滤波器的二维可分性(轴与轴方向进行高斯滤波互不干扰)。我们可以用两个一维高斯滤波器的连续卷积来实现一个二维高斯滤波器:
① 对图像使用一维高斯卷积模板,在一个方向上进行滤波(例如水平方向);
② 转置图像;
③ 对转置以后的图像使用同一个高斯卷积模板,在垂直方向进行滤波;
④ 将图像转置回原来位置,这样就得到经过二维滤波的图像。
(2)使用一阶有限差分计算偏导数的两个阵列P与Q:
幅值和方位角:
(3)非极大值抑制(NMS non-maxima suppression)
细化幅值图像中的屋脊带,即只保留幅值局部变化最大的点。仅仅得到全局的梯度并不足以确定边缘,因此为确定边缘,必须保留局部梯度最大的点,而抑制非极大值,解决方法是利用梯度的方向。
将梯度角的变化范围减小到圆周的四个扇区之一,方向角的规范化,如图3.2所示
图3.2 方向角的规范化
四个扇区的标号为0到3,对应
(4)取阈值
一般而言,边缘信号的响应是比较少的,且是比较大的值,而噪声的响应是很多的但是值相对较小,那么阈值就可以通过滤波后的图像的统计累积直方图得到。对非极大值抑制幅值进行阈值化的结果是一个图像的边缘阵列。阈值化后得到的边缘阵列仍然有假边缘存在,原因是阈值太低(假正确),以及阴影的存在,使得边缘对比度减弱,或阈值取得太高而导致部分轮廓丢失(假错误)。选择合适的阈值是困难的,需要经过反复试验,为了解决这个问题,Canny提出了一种双阈值方法,首先利用累计统计直方图得到一个高阈值
图3.3 传统的Canny算法边缘检测结果,其中(a)Lena的原图,(b)Canny算法边缘检测结果,(c)被20%的椒盐噪声污染后,Canny算法边缘检测结果
§3.2 基于Canny算法的改进与研究
§3.2.1 自适应中值滤波器
自适应中值滤波器[4]可以根据被滤波区域的图像特性来改进结果,设
令
这个自适应中值滤波算法工作在两个层面,表示为levelA和levelB:
levelA: 若
levelB:若
其中,
通过给原图添加20%的椒盐噪声,然后分别在Matlab中调用中值滤波函数和编写好的自适应中值滤波函数给被噪声污染的图片进行滤波去噪,如图所示:
(a)
(c) (d)
图3.4对图像进行平滑滤波的几种算法的实验结果比较,其中(a)Lena的原图,(b)被20%的椒盐噪声污染后Lena的图,(c)通过中值滤波后Lena的图,(d)通过自适应中值滤波后Lena的图
对于受椒盐噪声污染的图片,传统的中值滤波一般能够取得较好的效果,通过图3.4(c)显示,图中依然存在椒盐噪声所导致的污染,而这就会给后续的取阈值及边缘检测随着噪声污染的程度带来不同程度的影响,从而影响整个算法的效果,由图3.4(d)显示,说明自适应中值滤波器能够很好地滤去椒盐噪声,取得不错的效果。
§3.2.2 最大类间方差法
最大类间方差法[17-18]是由日本学者大津展之于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称Otsu。它是按图像的灰度特性,将图像分成背景和目标两部分。背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像
将式(5)代入式(6),得到等价公式:
采用遍历的方法得到使类间方差最大的阈值
§3.2.3 顶帽变换
Otsu算法属于全局阈值处理方法,在图像背景照明不均时有可能无效。在这种情况下,一种常用的处理方法是针对照明问题做预处理以补偿图像,然后再采用Otsu算法(全局阈值处理方法)计算最佳阈值。预处理以补偿图像可应用一个形态学算子,即顶帽算子[4]。
下面的实验是通过给一张行数和列数均是1024,受污染程度极小的图片(原图已在图3.4(a)中给出)添加20%的椒盐噪声后,再分别采用传统的Canny算法做边缘检测,经过自适应中值滤波后采用Canny算法做边缘检测,自适应中值滤波、Otsu算法取阈值,然后调用Canny算子检测边缘,自适应中值滤波、顶帽变换、Otsu算法取阈值,然后调用Canny算子检测边缘,结果如图3.5所示:
(a) (b) (c)
(g) (h) (i)
图3.5 中间数据图,其中(a)被20%的椒盐噪声污染后Lena的图;(b)椒盐噪声污染后,通过Canny算法检测边缘的结果;(c)自适应中值滤波后,通过Canny算法检测边缘的结果;(d)自适应中值滤波、Otsu算法取阈值,然后调用Canny算子检测边缘的结果;(e)自适应中值滤波、顶帽变换、Otsu算法取阈值,然后调用Canny算子检测边缘的结果;(f)Rice的原图;(g)椒盐噪声污染后,通过Canny算法检测边缘;(h)自适应中值滤波、Otsu算法取阈值,然后调用Canny算子检测边缘的结果;(i)自适应中值滤波、顶帽变换、Otsu算法取阈值,然后调用Canny算子检测边缘的结果
图3.6传统Canny算法与本文算法的实验结果,其中(a)我的书桌,(b)Canny算法检测的结果,(c)本文算法的检测结果
第4章 总 结
近几十年来,图像边缘检测技术成为数字图像处理技术重要研究课题之一,随着科学技术的发展,研究人员提出了很多图像边缘检测方法及边缘检测效果的评价方法,并且将这些边缘检测技术应用于计算机视觉和模式识别工程领域,使得边缘检测技术的应用范围越来越广。边缘特征广泛应用于图像分割、运动检测与跟踪、工业检测、目标识别、双目立体视觉等领域。现有边缘检测技术在抑制噪声方面有一定的局限性,在阈值参数选取方面自适应能力很差,有待进一步改进和提高。
本论文首先介绍了图像边缘检测这个课题的意义和背景;作为理论基础,在第二章简单的介绍了传统的图像边缘检测算法,如Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子,回顾了经典的边缘检测算法,为后面介绍Canny算法作为铺垫。在第三章结合Canny算法的基本原理、算法的三个标准、算法的思路及检测步骤提出了对Canny算子的流程一、四进行算法改进的方法和实验证明,并与传统的Canny算法的检测结果进行了对比,显示出了本文所采用的改进算法的优越性。
但正如上文所述,边缘检测技术在抑制噪声方面有一定的局限性,在阈值参数选取方面自适应能力很差,有待进一步改进和提高。本文采用的自适应中值滤波器仅仅在对椒盐噪声的处理上体现出优势,而接受边缘检测的图像大多遭受多种噪声的混合干扰,仅采用某一种滤波器只能处理某一方面的噪声,而同时又给原图进行了平滑处理,有时这种处理是不必要的,甚至有害的,这样就弱化了图像的边缘检测;因此,本文之后的工作是寻求一种能同时有效的处理多种噪声的污染的滤波算法。
[1] Zhang B in,He Saixian. Improved Edge-detection Method Based on Canny algorithm[J].Infrared Technology,2006,28(3):165-169.
[2] 曾俊.图像边缘检测技术及其应用研究:[博士学位论文].武汉:华中科技大学,2011.
[3] 游素亚、杨静,图像边缘检测技术的发展与现状[J].电子科技导报,1995.
[4] Rafael C.Gonzalez,Richard E.Woods,Steven L.Eddins著,阮秋琦等译,数字图像处理(MATLAB版)[M],北京:电子工业出版社,2005年9月.
[5] 郑南宁.计算机视觉与模式识别[M].北京:国防工业出版社,1998.
[6] 黄锋华,刘琪芳,冀金凤.基于matlab数字图像处理边缘检测算子的研究[J].机械工程与自动化,2011.
[7] K.R.Castleman 著,朱志刚等译,数字图像处理[M].北京:电子工业出版社,1998,9.
[8] 章毓晋.图像处理和分析基础[M].北京:科学出版社,2002.
[9] 李小红.基于LOG滤波器的图像边缘检测算法的研究[J].计算机应用与软件,2005,22(5);107-108.
[10] Canny J.A computational approach to edge detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986, 8(6):679-698.
[11] 张斌,贺赛先.基于Canny算子的边缘提取改善方法[J].红外技术,2006,28(3):165-169.
[12] 万力,易昂,傅明.一种基于Canny算法的边缘提取改善算法[J].计算机技术与自动化,2003,22.
[13] 林卉,舒宁,赵长胜.基于Canny算子的边缘检测及评价[J].黑龙江工程学院学报,2003.
[14] 胡文锦.图像边缘检测方法研究:[硕士学位论文].北京:北京交通大学,2009.
[15] 王娜,李霞.一种新的改进canny边缘检测算法[J].深圳大学学报理工版,2005(4):22-2.
[16] MATLAB Image Proeessing Toolbox User,5 Guide.Versions,The Math Works,Inc,Natick MA,USA,2006,2002.
[17] http://zh.wikipedia.org/zh-cn/
[18] 何庆元,韩传久.基于粒子群算法的Otsu法图像阈值分割[J].桂林科技大学学报,2006,26(5):355-358.
[19] 王祥科,郑志强.Otsu多阈值快速分割算法及其在彩色图像中的应用[J].计算机应用,2006,26:14-15.
[20] 李凌.图像分割方法研究与实现[J].宿州学院学报,2006,21(4):85-88.