matlab图像去噪算法设计(精)_第1页
matlab图像去噪算法设计(精)_第2页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字图像去噪典型算法及matlab实现希望得到大家的指点和帮助图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;目前比较经典的图像去噪算法主要有以下三种:均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理

2、。中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。实验一:均值滤波对高斯噪声的效果I=imread(&#

3、39;C:DocumentsandSettingsAdministrator桌面l.gif);%读取图像J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2);imshow(J);title('加入高斯噪声之后的图像');%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波K1=filter2(fspecial('average',3),J)/255;%模板

4、尺寸为3K2=filter2(fspecial('average',5),J)/255;%模板尺寸为5K3=filter2(fspecial('average',7),J)/255;%模板尺寸为7K4=filter2(fspecial('average',9),J)/255;%模板尺寸为9subplot(2,3,3);imshow(K1);title('改进后的图像1');subplot(2,3,4);imshow(K2);title('改进后的图像2');subplot(2,3,5);imshow(K3);tit

5、le('改进后的图像3');subplot(2,3,6);imshow(K4);title('改进后的图像4');PS:filter2用法fspecial函数用于创建预定义的滤波算子,其语法格式为:h=fspecial(type)h=fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为3.3。type='gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值

6、为3.3,sigma表示滤波器的标准差,单位为像素,默认值为0.5。type='laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为0,1,默认值为0.2otype='log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为3.3,sigma为滤波器的标准差,单位为像素,默认值为0.5type='prewitt',为prewitt算子,用于边缘增强,无参数。type='sobel',为著名的sobel算子,用于边缘提取,无参数。type='unsharp',为对比

7、度增强滤波器,参数alpha用于控制滤波器的形状,范围为0,1,默认值为0.2。运行效果见图1:据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据来度量。实验二:二维自适应维纳滤波对高斯噪声的滤除效果I=imread('C:DocumentsandSettingsAdministrator桌面1.gif);%读取图像J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声K2=wiener2(J,33);%对加噪图像进行二维自适应维纳滤波

8、K2=wiener2(J,55);%对加噪图像进行二维自适应维纳滤波K2=wiener2(J,77);%对加噪图像进行二维自适应维纳滤波K2=wiener2(J,99);%对加噪图像进行二维自适应维纳滤波subplot(2,3,l);imshow(I);title('原始图像');subplot(2,3,2);imshow(J);title('加噪图像');subplot(2,3,3);imshow(K1);title(恢复图像1');subplot(2,3,4);imshow(K2);title(恢复图像2');subplot(2,3,5);i

9、mshow(K3);title(恢复图像3');subplot(2,3,6);imshow(K4);title(恢复图像3');PS:维纳滤波的两个函数wiener2与deconvwnr都能够完成维纳滤波的功能,deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,m,n)返回有噪声图像I经过wierner(维纳)滤波后的图像,m,n指定滤波器窗口大小为m*n,默认值为3*3,J=wiener2(I,m,n,noise)指定噪声的功率,J,noise=wiener2(I,m,n)在图像滤波的同时,返回噪声功率的估计值noise。

10、imnoise的语法格式为J=imnoise(I,type)J=imnoise(I,type,parameters)其中J=imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。参数type和parameters用于确定噪声的类型和相应的参数。下面的命令是对图像1.gif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:title(均值滤波后的图像');subplot(2,3,4);imshow(K);title('中值滤波后的图像');subplot(2,3,5);imshow(Kl);title('维纳滤波后的图像');PS:M

11、ATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C=conv2(A,B)C=conv2(A,B)返回矩阵A和B的二维卷积C。若A为maxna的矩阵,B为mbxnb的矩阵,则C的大小为(ma+mb+1)x(na+nb+1)。MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:Y=filter2(h,X)其中Y=filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。Fs

12、pecial函数用于创建预定义的滤波算子,其语法格式为:h=fspecial(type)h=fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为前文已有叙述。ones产生全1数组,zeros产生全零数组。ones(a,b)产生a行b列全1数组ones(a)产生a行a列全1叔祖运行效果见图3:J3=ordfilt2(J2,5,ones(3,4);subplot(2,3,5);imshow(J3);title('高斯噪声滤波后的图像');PS:效果见图4:FileEditViwiBiSsrlToolso>j

13、iWitlAqh筑I序爵霸看|加|毬哦亞遢|舉IH禺宣E匣始凹僚加緘盐嗓声百的西像搬直噪芦襯波后的图像也高斯瞋芦肯的團读高曲噪有戏嵌方的團籐JJU-IlUUJJJPS:MATLAB小波分析工具箱提供的用于图像去噪的函数有wrcoef2和wpdencmp,其语法格式分别为:X=wrcoef2(type',C,S,'wname')*xd,treed,datad,perf0,perfl2+=wpdencmp(x,sorh,N,'wname',crit,par,keepapp)其中,X=wrcoef2(type',C,S,'wname')

14、返回基于小波分解结构C,S的小波重构图像X。参数“type”等于a表示重构近似系数;等于h表示重构水平细节系数;等于v表示重构垂直细节系数,等于d表示重构对角细节系数。*xd,treed,datad,perf0,perfl2+=wpdencmp(x,sorh,N,'wname',crit,par,keepapp)是通过小波包定限(阈值化),返回输入信号或图像X的除噪结果xd。输入参数中,treed,datad为xd的最佳小波包分解结构;perfl2和perfO表示LA2复原和压缩百分数;perfl2=100*(xd的小波包系数向量范数/X的小波包系数向量范数)人2。Keepap

15、p=1表示近似系数不能阈值化,否则可以阈值化;sorh='s'为软阈值化,h为硬阈值化。实验五:利用wrcoef2函数进行图像去噪其程序代码如下:I=imread('C:DocumentsandSettingsAdministrator桌面l.gif);J=imnoise(I,'gaussian',0,0.005);c,l=wavedec2(J,2,'sym4');J1=wrcoef2('a',c,l,'sym4',1);J2=wrcoef2('a',c,l,'sym4',2

16、);subplot(2,2,1);imshow(I);title('原始图像');subplot(2,2,2);imshow(J);title(含噪图像');subplot(2,2,3);imshow(J1,);title('第一次去噪图像');subplot(2,2,4);imshow(J2,);title('第二次去噪图像');运行结果如图5:D序富昌口固r回FileEdi1ViewtTiaolDeslLopWlniic-wMeLpME厦弟商像舎噪图爛实验六:利用wpdencmp函数进行图像去噪其程序代码如下:I=imread(

17、9;C:DocumentsandSettingsAdministrator桌面1.gif);I=im2double(I);subplot(2,2,l);imshow(I);title('原始图像');J=imnoise(I,'gaussian',0,0.05);subplot(2,2,2);imshow(J);title(含噪图像');thr=0.1;sorh='s'crit='shannon'keepapp=0;J1=wpdencmp(J,sorh,3,'sym4',crit,thr,keepapp);s

18、ubplot(2,2,3);imshow(J1);title('全局阈值去噪图像');J2=medfilt2(J1);subplot(2,2,4);imshow(J2);title('第二次去噪图像');PS:在MATLAB图像处理工具箱中,提供了medfilt2函数用于实现中值滤波。Medfilt2函数的语法格式为:B=medfilt2(A)用3x3的滤波窗口对图像A进行中值滤波。B=medfilt2(A,mn)用指定大小为mxn的窗口对图像A进行中值滤波。效果如图6:原始图像含喔图像全珂隔慣去嚨珂嗓第二秋去囁图繰IV-nxfaleEIl15.1*wLikss

19、irtTeola.Dtskln1md»KiLpIHMATLAB小波处理的问题悬赏分:10-解决时间:2008-11-1202:53想请问我知道MATLAB里有小波的工具箱可以用当我一张图像用小波转换时我知道可以得到LLLHHLHH四张合在一起的图像请问MATLAB要怎么写??还有如果我只要LL或HH单独一张图像就好请问MATLAB要怎么写??请各位高手帮帮忙!!提问者:cool77700-级最佳答案第一步:信号分解调用格式:C,L=wavedec(X,N,'wname'提取多尺度小波变换的低频系数A=appcoef(C,L,'dbl')提取多尺度小波变

20、换的高频系数:D=detcoef(C,L,N);第二步:信号重构X=waverecC,L,wname'1) 小波分解结构的低频重构函数:A3=wrcoef('type',C,L,'wname',N)2) 小波分解结构的高频重构函数:D=wrcoef('d',C,L,'db1',3)。第三步:画出分解后的图形,四合一图像,就是你想要的效果,所用函数:subplot(4,1,1);plot(A3);title('A3');subplot(4,1,2);plot(D3);title('D3');s

21、ubplot(4,1,3);plot(D2);title('D2');subplot(4,1,4);plot(D1);title('D1');如果只要LL或HH单独一张图像就好,下面是举例子的figure(1);plot(LL)figure(2);plot(HH)基于小波的图像压缩理论2008-01-0916:201基于小波的图像压缩理论小波是近十几年才发展起来并迅速应用到图像处理和语音分析等众多领域的一种数学工具,是继110多年前的傅立叶(JosephFourier)分析之后的一个重大突破,它对无论是古老的自然学科还是新兴的高新技术应用学科均产生了强烈冲击。1

22、909年哈尔发现了小波,并被命名为哈尔小波。20世纪70年代,当时在法国石油公司工作的年轻的地球物理学家JeanMorlet提出了小波变换的概念。法国的科学家Meyer于1986年创造性地构造出具有一定衰减性的光滑函数,他构造了L2(R)空间的规范正交基,使小波得到真正的发展。在信号处理中,自从S.Mallat和InridDaubechies发现滤波器组与小波基函数有密切关系之后,小波在信号(如声音信号,图像信号等)处理中得到极其广泛的应用。利用小波变换对图像数据进行压缩的理论过程主要分为以下几两个步骤:利用二维离散小波变换对图像分解为低频分量即高频细节分量;对所得到的低频分量即高频细节分量,

23、根据人类的视觉生理特性分别作不同策略的量化与编码处理。例如,对于低频分量采用快速余弦变换,熵编码方法进行压缩。对于高频细节分量可以采用量化,去掉人眼不敏感的高频成分并结合熵编码方法的压缩方法。3图像压缩方法在实际应用中,首先需要从图像文件中读取图像数据。MATLAB使用imread()函数完这一任务。例如,在电脑D盘中有一彩色图像文件lena.jpg,则可由下述语句读取:X=imread('D:lena.bmp');MATLAB图像处理工具箱支持四种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像。MATLAB直接从图像文件中读取的图像为RGB图像。它存储在三维数组中。这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度值,面中的元素对应于图像中的像素点。索引图像数据包括图像矩阵X与颜色图数组map,其中颜色图map是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵X包含一个值,这个值就是颜色图数组map中的索引。颜色图map为mx3双精度矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,map=RGB,R、G、B为值域为0,1的实数值,m为索引图像包含的像素个数。然后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论