matlab學習筆記(九)---頻域增強
阿新 • • 發佈:2019-02-14
1、低通濾波
1.1對影象eight.tif加入椒鹽噪聲後,實現Butterworth低通濾波。
效果圖如下:clear; I1=imread('eight.tif'); subplot(221),imshow(I1),title('原始影象'); I2=imnoise(I1,'salt & pepper'); %加入椒鹽噪聲 subplot(222),imshow(I2),title('噪聲影象'); f=double(I2); g=fft2(f); %傅立葉變換 g=fftshift(g) %轉換資料矩陣 [N1,N2]=size(g); n=2; d0=50; n1=fix(N1/2); n2=fix(N2/2); for i=1:N1 for j=2:N2 d=sqrt((i-n1)^2+(j-n2)^2); %計算Butterworth低通濾波轉換函式 h=1/(1+0.414*(d/d0)^(2*n)); result1(i,j)=h*g(i,j); if(g(i,j)>50) %進行理想低通濾波 result2(i,j)=0; else result2(i,j)=g(i,j); end end end result1=ifftshift(result1); %進行反變換 result2=ifftshift(result2); %進行反變換 X2=ifft2(result1); X3=uint8(real(X2)); subplot(223),imshow(X3),title('Butterworth濾波影象'); X4=ifft2(result2); X5=uint8(real(X4)); subplot(224),imshow(X5),title('理想低通濾波影象');
1.2利用二維小波分解,實現對影象woman的增強分解
效果圖如下:load woman; subplot(121),image(X),colormap(map);title('原始影象'); %下面進行影象的增強處理 %用小波函式sym4對X進行二層小波分解 [c,s]=wavedec2(X,2,'sym4'); sizec=size(c); %對分解係數進行處理,通過處理,突出輪廓部分,弱化細節部分 for i=1;sizec(2) if(c(i)>350) c(i)=2*c(i); else c(i)=0.5*c(i); end end %下面對處理後的係數進行重構 xx=waverec2(c,s,'sym4'); %畫出重構後的影象 subplot(122),image(xx),title('增強影象');
2、高通濾波
2.1對影象eight.tif實現Butterworth高通濾波
效果圖如下:clear; I1=imread('eight.tif'); subplot(221),imshow(I1),title('原始影象'); I2=imnoise(I1,'salt & pepper'); %加入椒鹽噪聲 subplot(222),imshow(I2),title('噪聲影象'); f=double(I2); g=fft2(f); %傅立葉變換 g=fftshift(g) %轉換資料矩陣 [N1,N2]=size(g); n=2; d0=50; n1=fix(N1/2); n2=fix(N2/2); for i=1:N1 for j=2:N2 d=sqrt((i-n1)^2+(j-n2)^2); %進行Butterworth高通濾波 if(d==0) h=0; else h=1/(1+(d0/d)^(2*n)); end result1(i,j)=h*g(i,j); if(g(i,j)<50) %進行理想高通濾波 result2(i,j)=0; else result2(i,j)=g(i,j); end end end result1=ifftshift(result1); %進行反變換 result2=ifftshift(result2); %進行反變換 X2=ifft2(result1); X3=uint8(real(X2)); subplot(223),imshow(X3),title('Butterworth濾波影象'); X4=ifft2(result2); X5=uint8(real(X4)); subplot(224),imshow(X5),title('理想高通濾波影象');