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');