【圖像去噪】基于中值、均值、Lee、Kuan多種算法實現(xiàn)圖像去噪含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);%散斑指數(shù) ?潘云《數(shù)字全息技術中散斑噪聲濾波算法比較》
ENL=mean2(ASp)^2/std2(ASp)^2;%等效視數(shù)
psnr=PSNR(A,ASp);
%中值濾波
ME=Medf(ASp,3);%鄰域 3*3
ENL_Me3=mean2(ME)^2/std2(ME)^2;%等效視數(shù)
index_ME3=std2(ME)/mean2(ME);%散斑指數(shù)
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;%等效視數(shù)
index_ME5=std2(ME)/mean2(ME);%散斑指數(shù)
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;%等效視數(shù)
index_ME7=std2(ME)/mean2(ME);%散斑指數(shù)
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;%等效視數(shù)
index_ME9=std2(ME)/mean2(ME);%散斑指數(shù)
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;%等效視數(shù)
index_LE5=std2(LE)/mean2(LE);%散斑指數(shù)
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;%等效視數(shù)
index_LE7=std2(LE)/mean2(LE);%散斑指數(shù)
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;%等效視數(shù)
index_LE9=std2(LE)/mean2(LE);%散斑指數(shù)
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;%等效視數(shù)
index_Ku5=std2(KU)/mean2(KU);%散斑指數(shù)
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;%等效視數(shù)
index_Ku7=std2(KU)/mean2(KU);%散斑指數(shù)
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;%等效視數(shù)
index_Ku9=std2(KU)/mean2(KU);%散斑指數(shù)
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;%等效視數(shù)
index_AV3=std2(AV)/mean2(AV);%散斑指數(shù)
psnr_AV3=PSNR(A,AV);
figure(13) ?
imshow(AV);
title('均值濾波后的圖像 3*3');
AV=Avef(ASp,5)
ENL_Aver5=mean2(AV)^2/std2(AV)^2;%等效視數(shù)
index_AV5=std2(AV)/mean2(AV);%散斑指數(shù)
psnr_AV5=PSNR(A,AV);
figure(14) ?
imshow(AV);
title('均值濾波后的圖像 5*5');
AV=Avef(ASp,7)
ENL_Aver7=mean2(AV)^2/std2(AV)^2;%等效視數(shù)
index_AV7=std2(AV)/mean2(AV);%散斑指數(shù)
psnr_AV7=PSNR(A,AV);
figure(15) ?
imshow(AV);
title('均值濾波后的圖像 7*7');
AV=Avef(ASp,9)
ENL_Aver9=mean2(AV)^2/std2(AV)^2;%等效視數(shù)
index_AV9=std2(AV)/mean2(AV);%散斑指數(shù)
psnr_AV9=PSNR(A,AV);
figure(16) ?
imshow(AV);
title('均值濾波后的圖像 9*9');
%二次去噪
EME=Medf(ME,9);%鄰域
ENL_EME=mean2(EME)^2/std2(EME)^2;%等效視數(shù)
index_EME=std2(EME)/mean2(EME);%散斑指數(shù)
psnr_EME=PSNR(A,EME);
figure(17)
imshow(EME);
title('二次中值濾波后的圖像 9*9');
ELE=Leef(LE,9);
ENL_ELE=mean2(ELE)^2/std2(ELE)^2;%等效視數(shù)
index_ELE=std2(ELE)/mean2(ELE);%散斑指數(shù)
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;%等效視數(shù)
index_EKU=std2(EKU)/mean2(EKU);%散斑指數(shù)
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;%等效視數(shù)
index_EAV=std2(EAV)/mean2(EAV);%散斑指數(shù)
psnr_EAV=PSNR(A,EAV);
figure(20) ?
imshow(EAV/256);
title('二次均值值濾后的圖像 9*9 ');
disp('指標比較');
disp(' ? ? ? ? ? ? ? ? ? ? ? 等效視數(shù) ? ? 散斑指數(shù) ? 峰值信噪比 ? ');
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.
博主簡介:擅長智能優(yōu)化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。
部分理論引用網絡文獻,若有侵權聯(lián)系博主刪除。
