李福沛 于文静 蔡琪 刘宇豪
摘 要:设计了基于小波的多尺度图像边缘算法的实验。通过此实验,在熟练掌握图像边缘提取的经典算法基础上,了解小波对于图像多层提供可实现上述方法的matlab程序代码,学生可利用相关程序对图像进行边缘提取,比较边缘提取利用不同方法获得不同特征的边缘。在数字图像实验中首次引入小波的多尺度图像边缘算法。
关键词:边缘检测;边缘算子;小波变换
引言
目前的边缘提取算法有传统的利用微分算子的边缘检测算法,正在迅速发展的小波多尺度边缘检测算法,另外还有基于数学形态学的边缘检测算法等。本实验将引导学生学习传统的边缘检测算法,体会小波边缘检测算法,并利用Matlab进行编程实验观察比较各算法的边缘检测效果。
1 经典的图像边缘检测算子的原理
将图像边缘定义为灰度变化比较剧烈的地方,可以具体为其周边像素灰度有阶跃变化或屋顶变化的像素的集合。一般边缘检测方法是考察图像的每个像素在某个邻域内灰度的变化,利用边缘一阶或二阶方向导数变化规律来检测边缘,这种方法通常称为边缘检测局部算子法。几种经典的边缘检测算子:
(1)基于一阶微分的边缘检测算子,包括Roberts算子,Sobel算子和Prewitt算子
Roberts边缘算子是一种斜向差分的梯度计算方法,梯度的大小代表边缘的强度,梯度的方向与边缘走向垂直。其计算公式表示为:
式中,f(x,y)是具有整数像素坐标的输入图像。
Roberts边缘算子定位精度,在水平和垂直方向效果较好,但对噪声敏感。
Sobel边缘算子是一组方向算子,从不同的方向检测边缘。Sobel算子不是简单求平均再差分,而是加强了中心像素上、下、左、右四个方向像素的权重,运算结果是一副边缘图像。该算子通常由下列计算公式表示:
Prwitte边缘算子是一种边缘样板算子,利用像素点上下、左右邻点灰度差,在边缘处达到极值检测边缘,对噪声具有平滑作用。由于边缘点像素的灰度值与其邻域点像素的灰度值有显著不同,在实际应用中通常采用微分算子和模板匹配方法检测图像边缘。该算子通常由下列计算公式表示:
Prewitt算子不仅能检测边缘点,而且能抑制噪声的影响,因此,对灰度和噪声较多的图像处理的较好。
(2)基于二阶微分的边缘检测算子,Laplacian算子是最常用的二阶导数算子。
由二元函数f(x,y)的Laplacian变换公式:
?荦2f算子能突出反映图像中的角线和孤立点。
(3)基于最优化方法的边缘检测算子,常用的有Canny边缘算子。
Canny算子是采用二维高斯函数的任意方向上的一阶方向导数为噪声滤波器,通过与图像f(x,y)卷积进行滤波,然后对滤波后的图像寻找图像梯度的局部极大值,确定图像边缘。数学描述为:首先取二维高斯函数
,式中,■为方向矢量,?荦G(x,y)为梯度矢量。
Canny算子是建立在二维?荦G(x,y)×f(x,y)基础上,边缘强度由
|?荦G(x,y)×f(x,y)|和方向 来决定。[1]
2 实验内容
(1)图像的基本操作[4][5][6]
imread(‘filename.fmt) 该语句用于读取指定名称和文件格式的图像
rgb2gray(X) 该语句用于将变量X中存储的彩色图像转换成灰度图像
imshow(X) 该语句用于使用通用的图形图像视窗来显示变量X中存储的图像
边缘检测:edge(I,methodparameters) 图像边缘检测,I为输入图像,method可以为robertssobelprewittlog等分别对应相应的算子
BW=edge(I,roberts)
BW=edge(I,sobel)
BW=edge(I,prewitt)
BW=edge(I,log)
BW=edge(I,canny)
小波变换:[C,S]=wavedec2(X,N, ‘wname) 用指定的小波基计算图像X的N层二维离散小波分解。
X=wrcoef2(‘type,C,S,wname,N)用多层分解得到的结构来重构第N层信号。
(2)利用经典算子提取图像边缘
在上一节中已对于图像的经典算子进行边缘提取的理论作了详细论述,这里以图像lena.png为例,提取图像的边缘得到如下结果。学生可以对于不同算法的边缘提取进行比较并利用程序实验中提供的程序edge.m通过改写程序中图像名称对不同图像的边缘进行提取。
图1 经典算法对于图像的边缘提取
(3)利用小波变换对图像进行处理
图2 利用小波变换对图像进行边缘提取
(4)利用小波的多层分解的模极值获取图像的边缘对于变换后的图像,利用小波的多层分解,提取每层模的极大值点以获取图像的主体结构信息。
设二元函数?兹(x,y)满足以下条件:
則称?兹(x,y)为二元平滑函数。对于?兹(x,y),定义两个小波函数:
记 ,其中i=1,2,则在尺度2j时函数f(x,y)
沿水平方向和垂直方向的二进小波变换为:
并记作:
按照卷积和导数的关系,可以将其改写为:
定义在尺度2j时函数f(x,y)小波变换的模和辐角分别为:
函数的突变点对应于矢量方向 上 的局部极大值点,在处理图像时,函数的突变点即图像的边缘点。对任意点f(x0,y0),若 在由 给定的梯度方向上取局部模极大值,则称点f(x0,y0)为f(x,y)的二进小波变换的模的局部极大值点,这些二进小波变换的模取极大值点的位置就给出了图像的一个多尺度边缘。[2]
图3中第一列是原始图像的模值的图像,第二列给出了模值的局部极大值的图像,第三列是给出了模值的局部极大值的图像,当纹理光线的变化的极大值大于给定的阈值时,则用该阈值表示。[3]
3 结束语
通过这一实验学生了解mallat原理和方法的实现,利用程序及具体的实验结果,使学生对经典边缘提取,小波分解的边缘提取,和mallat算法多层小波分解局部极大值的边缘提取有了感性的认识。通过图像处理结果对比,激发学生对于这一方向的兴趣。希望能对于学生在这一方向的研究上具有一定的指导作用。
参考文献
[1]张德丰,等.MATLAB数字图像处理[M].北京:机械工业出版社.
[2]高国荣,刘冉,羿旭明,等.一种改进的基于小波变换的图像边缘提取算法[J].武汉大学学报(理学版),2005,51(5):615-619.
[3]Mallat,S. Zhong, S. Characterization of signals from multiscale edges[J].Pattern Analysis and Machine Intelligence, IEEE Transactions on ,Jul 1992,710-732.
[4]张德丰.数字图像处理(MATLAB版)[M].北京:人民邮电出版社,2009:15-30.
[5]王家文.MATLAB7.6图形图像处理[M].北京:国防工业出版社,2009:21-32.
[6]J. Wu and Q. Q. Ruan. Object removal by cross isophotes exemplar-based inpainting [C]//Proceedings of 18th International Conference on Pattern Recognition. Hong Kong: IEEE, 2006,3:810-813.