王源 胡云琴
摘 要:随着计算机技术的发展,边缘检测作为图像处理最为重要的一门技术得到了越来越多的重视,它是图像分割、图像识别的前提。文章就边缘检测的五种算子进行了比较与分析,得出了最佳边缘检测算法。
关键词:边缘;检测算子;图像分割
近年来,由于计算机技术的不断发展,图像处理在各个领域都得到了广泛应用。边缘检测作为一种最为重要的图像处理技术也得到了重视,所谓边缘,就是指图像中恢复变化明显的区域,它是边界检测的基础,也是外形检测的基础,是图像分割所依赖的重要特征,而梯度是函数变化的一种度量,一幅图像可以看作是图像强度连续函数的取样点序列。通过梯度的计算,我们能了解到图像灰度变化最大的点进而找出图像的边缘所在,边缘检测就是在有噪声背景的图像中确定出目标物边界的位置,可以把图像最显著的特征表示出来,减少工作量,提升效率。经典的边缘检测算法有Roberts、sobel、canny、log、prewitt五种算法,文章将就这五种经典算法进行比较与分析。
在了解边缘检测之前,我们有必要知道图像的有关知识,图像主要分为模拟图像和数字图像。模拟图像是通过某种物理量的强弱变化来记录图像上各点的亮度信息的,例如模拟电视图像;而数字图像则完全是用数字来记录图像亮度信息的。数字图像的基本单位是像素,它是像素的集合,并且可以用一个矩阵来表示,矩阵的列数代表了图像的高,行数代表着图像的宽,矩阵元素对应图像像素,矩阵元素的值就是像素的灰度值。灰度图像是数字图像的最基本的表达形式,它可以从黑白照片数字化得到,也可以通过彩色照片去色处理得到,因此,灰度图像只有亮度信息而没有颜色信息,所以每个像素点都只有一个量化的灰度级,如果用一个字节来存储灰度值的话,则取值范围有0-255共256个灰度级来表示图像的亮度。彩色图像的数据不仅包括亮度信息,还包括颜色信息,主要通过RGB模型来表示,即每个像素包括RGB三基色数据,每个基色用一个字节表示,则共有3个字节,也就是24位,我们说的24位真彩色就是这样得出来的。一般来说,边缘检测的步骤主要有四步包括滤波、增强、检测、定位。
Roberts算子是最早出现的基于一阶微分的算子之一,它是2×2算子模板,简单直观,它利用局部差分算子,采用对角线方向相邻两像素之差近似梯度幅值寻找边缘,计算沿45°方向的一阶差分。图像的梯度为两个45°方向的梯度向量和。我们从图像的实际效果看,这种算子的边缘定位比较准确,但是对噪声很敏感。
Sobel算子是一种离散型差分算子,是现在用的最多的一种算子,它用来运算图像亮度函数的梯度之近似值,此外它包含两组3×3的矩阵,分别为横向和纵向,假设为
将之与图像做平面卷积,即可分别得出图像的横向Gx及纵向Gy亮度差分近似值,那么图像的每一个像素的横向及纵向梯度近似值可以用以下公式结合来计算梯度的大小。
G=√Gx2+Gy2
α=arctan(Gy/Gx)
由上面的公式可以看出,如果α等于零,那么代表图像在该处拥有纵向边缘。Sobel算子利用像素的左右上下领域的灰度加权算法,根据在边缘处达到极值这一原理进行检测,对外界干扰有良好的平滑作用,可以提供较为精确的边缘方向,那么它的不足之处就是现实物体中有好多物体的颜色和外界环境很相似,那么单单靠上下两个检测不能够完成检测的,改进后的sobel算子从0、45、90、135等八个方向对图像进行逐点计算,取最大值,它对应的模板方向为该像素点的边缘方向,这样就很好的避免了两个方向带来的误差。
Prewitt算子和sobel一样都是一阶微分算子,利用像素点领域灰度差或加权值,在边缘处达到极值这一现象进行检索,对噪声具有平滑作用,能滤除一些噪声,去掉部分伪边缘,对灰度渐变低噪声图像有较好的检测效果,但同时也平滑了真正的边缘。不同的是平滑部分的权值有些差异。前者是平均滤波,后者是加权平均滤波,能进一步抑制噪声的影响,效果更好,但是是以加宽轮廓线为代价换来的。
在图像中,边缘可以看做是位于一阶导数较大的像素处,因此可以求图像的一阶导数来确定图像的边缘,以上sobel、Roberts、prewitt算子都是基于这个思想的。但是这有个最大的弊端就是受噪声的影响大,因为在噪声点处一阶导数也是极大值。
Log算子即高斯-拉普拉斯算子,它实际上是拉普拉斯算法的改进,在我们前期处理图像时会用到高斯算法,对图像进行模糊,这样就很好的抑制了噪声,克服了噪声的影响。所以log算子是先对图像进行高斯模糊,再求二阶导数,二阶导数等于零处对应的像素就是图像的边缘。
Canny算子边缘检测方法是对寻找图像梯度局部最大值,梯度是用高斯滤波器的导数计算的,canny采用两个阈值来分别检测强边缘和弱边缘,而且仅当强边缘和弱边缘相连时,弱边缘才会包含在输出中。总结来说使用canny算子对图像进行边缘检测,首先用高斯滤波器平滑图像,再用一阶偏导的有限差分来计算梯度的幅值和方向,对梯度幅值进行非极大值抑制,最后用双阀值算法检测和连接边缘。当然只要设置阀值,就存在阀值设置多少的问题,设置的数大了就会轮廓不清晰,设置小了则会包含太多细枝末节,优点则是不容易被噪声填充,能检测出真正的边缘。
边缘检测做为图像处理的一种技术已经提出很久时间了,今年来研究结果也越来越多,但由于检测本身所具有的难度,使研究没有多大突破性的进展,既没有一种普遍使用的算法,也没有一种好的通用评价标准。相信随着技术的发展、研究的深入,存在的问题会被圆满解决。
参考文献
[1]章毓晋.图像工程[M].清华大学出版社,2005.
[2]曾江源.图像边缘检测常用算子研究[J].现代商贸工业,2009.
[3]陈胜勇.基于OpenCV的计算机视觉技术实现[M].北京:科学出版社,2008.
[4]曹茂永,孙农亮.数字图像处理[M].北京大学出版社,2007.
指导老师:胡云琴