1、使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 实验一:均值滤波对高斯噪声的效果I=imread(C:Documents and SettingsAdministrator桌面1.gif);%读取图像J=imnoise(I,gaussian,0,0.005);%加入均值为0,方差为0.005的高斯噪声subplot(2,3,1);imshow(I);title(原始图像subplot(2,3,2); imshow(J);加入高斯噪声之后的图像%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波K
2、1=filter2(fspecial(average,3),J)/255; %模板尺寸为3K2=filter2(fspecial(,5),J)/255;% 模板尺寸为5K3=filter2(fspecial(,7),J)/255; %模板尺寸为7K4= filter2(fspecial(,9),J)/255; %模板尺寸为9subplot(2,3,3);imshow(K1);改进后的图像1subplot(2,3,4); imshow(K2);改进后的图像2subplot(2,3,5);imshow(K3);改进后的图像3subplot(2,3,6);imshow(K4);改进后的图像4PS:f
3、ilter2用法fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为:type=,为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为3,3。type= ,为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为3,3,sigma表示滤波器的标准差,单位为像素,默认值为0.5。laplacian,为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为0,1,默认值为0.2。log,为拉普拉斯高斯算子,参
4、数有两个,n表示模版尺寸,默认值为3,3,sigma为滤波器的标准差,单位为像素,默认值为0.5prewitt,为prewitt算子,用于边缘增强,无参数。sobel,为著名的sobel算子,用于边缘提取,无参数。unsharp,为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为0,1,默认值为0.2。运行效果见图1:据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据来度量。 实验二:二维自适应维纳滤波对高斯噪声的滤除效果 %读取图像 %加入均值为0,方差为0.005的高斯噪声K2=wiener2(
5、J,3 3); %对加噪图像进行二维自适应维纳滤波K2=wiener2(J,5 5);K2=wiener2(J,7 7);K2=wiener2(J,9 9);imshow(J);加噪图像恢复图像1imshow(K2);恢复图像2恢复图像3维纳滤波的两个函数wiener2与deconvwnr都能够完成维纳滤波的功能, deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,m,n)返回有噪声图像I经过wierner(维纳)滤波后的图像,m,n指定滤波器窗口大小为m*n,默认值为3*3,J=wiener2(I,m,n,noise)指定噪声的功率,J,
6、noise=wiener2(I,m,n)在图像滤波的同时,返回噪声功率的估计值noise。imnoise的语法格式为J = imnoise(I,type)J = imnoise(I,type,parameters)其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。参数type和parameters用于确定噪声的类型和相应的参数。下面的命令是对图像1.gif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:实验三:对加入椒盐噪声的图像分别作均值、中值和维纳滤波I=imread(1.gifJ1=imnoise(I,0,0.02);J2=imnoise(I,sa
7、lt & pepper,0.02);J3=imnoise(I,speckle运行效果见图2%h=ones(3,3)/9;%产生3*3的全1数组%B=conv2(J,h);%卷积运算 %均值滤波模板尺寸为3K= medfilt2(J);%采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波K1=wiener2(J,3 3);均值滤波后的图像imshow(K);中值滤波后的图像维纳滤波后的图像MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C = conv2(A,B)C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为mana的矩阵,B为mbnb的矩阵,则C的大
8、小为(ma+mb+1)(na+nb+1)。 MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:Y = filter2(h,X)其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。Fspecial函数用于创建预定义的滤波算子,其语法格式为:参数type制定算子类型,parameters指定相应的参数,具体格式为前文已有叙述。ones产生全1数组,zeros产生全零数
9、组。 ones(a,b)产生a行b列全1数组 ones(a)产生a行a列全1叔祖运行效果见图3:通过图3我们也可得出结论,即中值滤波对于去除椒盐噪声效果最好,而维纳滤波去除效果则较差。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。对点、线和尖顶较多的图像不宜采用中值滤波,因为一些细节点可能被当成噪声点。实验四: 分别使用二维统计滤波对椒盐噪声和高斯噪声进行滤波,0.004);imshow(J1);加椒盐噪声后的图像J= ordfilt2(J1,5,ones(3,4);% 进行二维统计顺
10、序过滤椒盐噪声滤波后的图像,0,0.004);imshow(J2);加高斯噪声后的图像J3= ordfilt2(J2,5,ones(3,4);imshow(J3);高斯噪声滤波后的图像 PS:效果见图4: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)返回基于小波分解结构,的小波重构图像。参数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1