【图像去噪】基于中值、均值、Lee、Kuan多种算法实现图像去噪含Matlab源码
1 简介
通过对含高斯噪声的图像进行分析和研究,采用中值、均值、Lee、Kuan多种滤波来进行图像去噪。
2 部分代码
clear;
A1=imread('44.jpg')
A=double(A1);
figure(1)
imshow(A/256)
title('原始图像');
[a,b]=size(A);
ASp=imnoise(A/256,'speckle',0.02);
figure(2)
imshow(ASp);
title('含散斑噪声的图像');
% imwrite(ASp/256,'55.jpg');
index_ASp=std2(ASp)/mean2(ASp);%散斑指数 潘云《数字全息技术中散斑噪声滤波算法比较》
ENL=mean2(ASp)^2/std2(ASp)^2;%等效视数
psnr=PSNR(A,ASp);
%中值滤波
ME=Medf(ASp,3);%邻域 3*3
ENL_Me3=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME3=std2(ME)/mean2(ME);%散斑指数
psnr_ME3=PSNR(A,ME);
figure(3)
% subplot(2,2,1);
imshow(ME);
title('中值滤波后的图像 3*3');
ME=Medf(ASp,5);%邻域
ENL_Me5=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME5=std2(ME)/mean2(ME);%散斑指数
psnr_ME5=PSNR(A,ME);
figure(4)
% subplot(2,2,2);
imshow(ME);
title('中值滤波后的图像 5*5');
ME=Medf(ASp,7);%邻域
ENL_Me7=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME7=std2(ME)/mean2(ME);%散斑指数
psnr_ME7=PSNR(A,ME);
figure(5)
% subplot(2,2,3);
imshow(ME);
title('中值滤波后的图像 7*7');
ME=Medf(ASp,9);%邻域
ENL_Me9=mean2(ME)^2/std2(ME)^2;%等效视数
index_ME9=std2(ME)/mean2(ME);%散斑指数
psnr_ME9=PSNR(A,ME);
figure(6)
% subplot(2,2,4);
imshow(ME);
title('中值滤波后的图像 9*9');
%Lee滤波
LE=Leef(256*ASp,5);
ENL_Lee5=mean2(LE)^2/std2(LE)^2;%等效视数
index_LE5=std2(LE)/mean2(LE);%散斑指数
psnr_LE5=PSNR(A,LE);
figure(7)
imshow(LE);
title('Lee滤波后的图像 5*5');
LE=Leef(256*ASp,7);
ENL_Lee7=mean2(LE)^2/std2(LE)^2;%等效视数
index_LE7=std2(LE)/mean2(LE);%散斑指数
psnr_LE7=PSNR(A,LE);
figure(8)
imshow(LE);
title('Lee滤波后的图像 7*7');
LE=Leef(256*ASp,9);
ENL_Lee9=mean2(LE)^2/std2(LE)^2;%等效视数
index_LE9=std2(LE)/mean2(LE);%散斑指数
psnr_LE9=PSNR(A,LE);
figure(9)
imshow(LE);
title('Lee滤波后的图像 9*9');
%Kuan滤波
KU=Kuanf(256*ASp,5);
ENL_Kuan5=mean2(KU)^2/std2(KU)^2;%等效视数
index_Ku5=std2(KU)/mean2(KU);%散斑指数
psnr_Ku5=PSNR(A,KU);
figure(10)
imshow(KU);
title('Kuan滤波后的图像 5*5');
KU=Kuanf(256*ASp,7);
ENL_Kuan7=mean2(KU)^2/std2(KU)^2;%等效视数
index_Ku7=std2(KU)/mean2(KU);%散斑指数
psnr_Ku7=PSNR(A,KU);
figure(11)
imshow(KU);
title('Kuan滤波后的图像 7*7');
KU=Kuanf(256*ASp,9);
ENL_Kuan9=mean2(KU)^2/std2(KU)^2;%等效视数
index_Ku9=std2(KU)/mean2(KU);%散斑指数
psnr_Ku9=PSNR(A,KU);
figure(12)
imshow(KU);
title('Kuan滤波后的图像 9*9');
%均值滤波
AV=Avef(ASp,3)
ENL_Aver3=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV3=std2(AV)/mean2(AV);%散斑指数
psnr_AV3=PSNR(A,AV);
figure(13)
imshow(AV);
title('均值滤波后的图像 3*3');
AV=Avef(ASp,5)
ENL_Aver5=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV5=std2(AV)/mean2(AV);%散斑指数
psnr_AV5=PSNR(A,AV);
figure(14)
imshow(AV);
title('均值滤波后的图像 5*5');
AV=Avef(ASp,7)
ENL_Aver7=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV7=std2(AV)/mean2(AV);%散斑指数
psnr_AV7=PSNR(A,AV);
figure(15)
imshow(AV);
title('均值滤波后的图像 7*7');
AV=Avef(ASp,9)
ENL_Aver9=mean2(AV)^2/std2(AV)^2;%等效视数
index_AV9=std2(AV)/mean2(AV);%散斑指数
psnr_AV9=PSNR(A,AV);
figure(16)
imshow(AV);
title('均值滤波后的图像 9*9');
%二次去噪
EME=Medf(ME,9);%邻域
ENL_EME=mean2(EME)^2/std2(EME)^2;%等效视数
index_EME=std2(EME)/mean2(EME);%散斑指数
psnr_EME=PSNR(A,EME);
figure(17)
imshow(EME);
title('二次中值滤波后的图像 9*9');
ELE=Leef(LE,9);
ENL_ELE=mean2(ELE)^2/std2(ELE)^2;%等效视数
index_ELE=std2(ELE)/mean2(ELE);%散斑指数
psnr_ELE=PSNR(A,ELE);
figure(18)
imshow(ELE);
title('二次Lee滤波后的图像 9*9');
EKU=Kuanf(KU,9);
ENL_EKU=mean2(EKU)^2/std2(EKU)^2;%等效视数
index_EKU=std2(EKU)/mean2(EKU);%散斑指数
psnr_EKU=PSNR(A,EKU);
figure(19)
imshow(EKU);
title('二次Kuan滤波后的图像 9*9');
EAV=Avef(256*AV,9);
ENL_EAV=mean2(EAV)^2/std2(EAV)^2;%等效视数
index_EAV=std2(EAV)/mean2(EAV);%散斑指数
psnr_EAV=PSNR(A,EAV);
figure(20)
imshow(EAV/256);
title('二次均值值滤后的图像 9*9 ');
disp('指标比较');
disp(' 等效视数 散斑指数 峰值信噪比 ');
fprintf('含噪图像: %0.5g %0.5g %0.5g \n',ENL,index_ASp,psnr);
fprintf('中值滤波后的图像3*3: %0.5g %0.5g %0.5g \n',ENL_Me3,index_ME3,psnr_ME3);
fprintf('中值滤波后的图像5*5: %0.5g %0.5g %0.5g \n',ENL_Me5,index_ME5,psnr_ME5);
fprintf('中值滤波后的图像7*7: %0.5g %0.5g %0.5g \n',ENL_Me7,index_ME7,psnr_ME7);
fprintf('中值滤波后的图像9*9: %0.5g %0.5g %0.5g \n',ENL_Me9,index_ME9,psnr_ME9);
fprintf('Lee滤波后的图像5*5: %0.5g %0.5g %0.5g\n',ENL_Lee5,index_LE5,psnr_LE5);
fprintf('Lee滤波后的图像7*7: %0.5g %0.5g %0.5g\n',ENL_Lee7,index_LE7,psnr_LE7);
fprintf('Lee滤波后的图像9*9: %0.5g %0.5g %0.5g\n',ENL_Lee9,index_LE9,psnr_LE9);
fprintf('Kuan滤波后的图像5*5: %0.5g %0.5g %0.5g\n',ENL_Kuan5,index_Ku5,psnr_Ku5);
fprintf('Kuan滤波后的图像7*7: %0.5g %0.5g %0.5g\n',ENL_Kuan7,index_Ku5,psnr_Ku7);
fprintf('Kuan滤波后的图像9*9: %0.5g %0.5g %0.5g\n',ENL_Kuan9,index_Ku5,psnr_Ku9);
fprintf('均值滤波后的图像3*3: %0.5g %0.5g %0.5g \n',ENL_Aver3,index_AV3,psnr_AV3);
fprintf('均值滤波后的图像5*5: %0.5g %0.5g %0.5g \n',ENL_Aver5,index_AV5,psnr_AV5);
fprintf('均值滤波后的图像7*7: %0.5g %0.5g %0.5g \n',ENL_Aver7,index_AV7,psnr_AV7);
fprintf('均值滤波后的图像9*9: %0.5g %0.5g %0.5g \n',ENL_Aver9,index_AV9,psnr_AV9);
fprintf('二次中值滤波后 9*9: %0.5g %0.5g %0.5g \n',ENL_EME,index_EME,psnr_EME);
fprintf('二次Lee滤波后 9*9: %0.5g %0.5g %0.5g\n',ENL_ELE,index_ELE,psnr_ELE);
fprintf('二次Kuan滤波后 9*9: %0.5g %0.5g %0.5g\n',ENL_EKU,index_EKU,psnr_EKU);
fprintf('二次均值滤波后 9*9: %0.5g %0.5g %0.5g \n',ENL_EAV,index_EAV,psnr_EAV);
3 仿真结果



4 参考文献
[1]李宸鑫. "基于MATLAB三种滤波算法的图像去噪技术研究." 通讯世界 6(2018):2.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
