圖像小波變換去噪——MATLAB實現


 

clear;                   
[A,map]=imread('C:\Users\wangd\Documents\MATLAB\1.jpg');                
X=rgb2gray(A);  
%畫出原始圖像  
subplot(2,2,1);imshow(X);
title('原始圖像');  
%產生含噪圖像  
x=imnoise(X ,'gaussian',0,0.003);
%畫出含噪圖像  
subplot(2,2,2);imshow(x);  
title('含噪聲圖像');  
%下面進行圖像的去噪處理  
%用小波函數sym4對x進行2層小波分解  
[c,s]=wavedec2(x,2,'sym4');  
%提取小波分解中第一層的低頻圖像,即實現了低通濾波去噪  
a1=wrcoef2('a',c,s,'sym4');  % a1為 double 型數據;
%畫出去噪后的圖像  
subplot(2,2,3); imshow(uint8(a1)); % 注意 imshow()和image()顯示圖像有區別,imshow()不能顯示 double 型數據,必須進行轉換 uint8(a1);
title('第一次去噪圖像');           % 並且image() 顯示圖像有坐標;
%提取小波分解中第二層的低頻圖像,即實現了低通濾波去噪  
%相當於把第一層的低頻圖像經過再一次的低頻濾波處理  
a2=wrcoef2('a',c,s,'sym4',2);  
%畫出去噪后的圖像  
subplot(2,2,4); imshow(uint8(a2)); %image(a2);
title('第二次去噪圖像');
%保存圖像  
imwrite(x,'C:\Users\wangd\Desktop\2.jpg');
imwrite(uint8(a1),'C:\Users\wangd\Desktop\3.jpg'); %imwrite()保存圖像,也需要將數據類型轉化為uint8
imwrite(uint8(a2),'C:\Users\wangd\Desktop\4.jpg');

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM