matlab中关于椒盐噪声和高斯噪声去噪(均值滤波、中值滤波、维纳滤波、小波阈值去噪)并计算均方根误差、信噪比和峰值信噪比 | 您所在的位置:网站首页 › 图像处理加入高斯噪声 › matlab中关于椒盐噪声和高斯噪声去噪(均值滤波、中值滤波、维纳滤波、小波阈值去噪)并计算均方根误差、信噪比和峰值信噪比 |
主要参照了其他网站的一些信息,结合得到以下结果: a=imread('mengnalisha.jpg'); b=rgb2gray(a); subplot(241),imshow(a),title('原图'); subplot(242),imshow(b),title('灰度图'); c=imnoise(b,'salt & pepper',0.02); subplot(243),imshow(c),title('添加椒盐噪声图像'); x=ones(3,3)/9; %定义一个3*3的均值滤波器 d=imfilter(c,x); %滤波 subplot(244),imshow(d),title('均值滤波后的图像'); e=medfilt2(c); %中值滤波 subplot(245),imshow(e),title('中值滤波后的图像'); f=wiener2(c,[3 3]); %维纳滤波,[3 3]是设置的邻域大小 subplot(246),imshow(f),title('维纳滤波后的图像'); [C1,S1] = wavedec2(c,2,'coif3'); %提取小波分解中第一层的低频图像,即实现了低通滤波去噪 n = [1,2]; %设置尺度向量n p = [10.12,23.28]; %设置阈值向量p nc1 = wthcoef2('h',C1,S1,n,p,'s');%对三个方向h,v,d(水平、垂直、对角线)高频系数进行软阈值处理 nc1 = wthcoef2('v',nc1,S1,n,p,'s'); nc1 = wthcoef2('d',nc1,S1,n,p,'s'); x1 = waverec2(nc1,S1,'coif3'); %对新的小波分解结构[c,s]进行重构 Z1=uint8(x1); %将double型改为unit8型显示图像 subplot(247),imshow(Z1),title('小波软阈值处理后的图像'); nc2 = wthcoef2('h',C1,S1,n,p,'h');%三个方向硬阈值处理 nc2 = wthcoef2('v',nc2,S1,n,p,'h'); nc2= wthcoef2('d',nc2,S1,n,p,'h'); x2 = waverec2(nc2,S1,'coif3'); Z2=uint8(x2); subplot(248),imshow(Z2),title('小波硬阈值处理后的图像'); [a1,a2]=psnr(Z1,b); %求软阈值去噪的峰值信噪比a1和信噪比a2 [a3,a4]=psnr(Z2,b); %求硬阈值去噪的峰值信噪比a1和信噪比a2 % RMSE=sqrt((sum((c-b).^2))./2); %软阈值结果评价 B=double(b); A=B-x1; MSE = sum(A(:).*A(:))/numel(B); %均方误差MSE,numel()函数返回矩阵元素个数 RMSE=sqrt(MSE); SNR = 10*log10(sum(B(:).*B(:))/MSE/numel(B));%信噪比SNR PSNR = 10*log10(255^2/MSE); %峰值信噪比PSNR %硬阈值结果评价 C=B-x2; MSE2 = sum(C(:).*C(:))/numel(B); RMSE2=sqrt(MSE2); SNR2 = 10*log10(sum(B(:).*B(:))/MSE2/numel(B)); PSNR2 = 10*log10(255^2/MSE2); %均值滤波结果评价 D=double(d); D1=B-D; MSE3 = sum(D1(:).*D1(:))/numel(B); RMSE3=sqrt(MSE3); SNR3 = 10*log10(sum(B(:).*B(:))/MSE3/numel(B)); PSNR3 = 10*log10(255^2/MSE3); %中值滤波结果评价 E=double(e); E1=B-E; MSE4 = sum(E1(:).*E1(:))/numel(B); RMSE4=sqrt(MSE4); SNR4 = 10*log10(sum(B(:).*B(:))/MSE4/numel(B)); PSNR4 = 10*log10(255^2/MSE4); %维纳滤波结果评价 F=double(f); F1=B-F; MSE5 = sum(F1(:).*F1(:))/numel(B); RMSE5=sqrt(MSE5); SNR5 = 10*log10(sum(B(:).*B(:))/MSE5/numel(B)); PSNR5 = 10*log10(255^2/MSE5);结果: 将原图加入高斯噪声: c=imnoise(b,'gaussian',0.02); subplot(243),imshow(c),title('添加高斯噪声图像');结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |