圖像頻域濾波的步驟:
(1)計算原圖像f(x,y)的DFT/FFT,(2)將頻譜的零頻點移動到頻譜圖的中心位置;(3)計算濾波器函數H(U,V)與F(U,V)的乘積G(U,V);(頻域相乘,時域卷積)(4)將頻譜G(U,V)的零頻點移回到頻譜圖的左上角。(5)計算(4)的結果的傅立葉反變換g(x,y);(6)取g(x,y)的實部作為最終的濾波后的結果圖像。程序代碼:%% 頻域高斯低通濾波和頻域銳化的Matlab實現% Date:2017/2/5clc;clearall;I=imread('original_tletter.tif');I=double(I);[M,N]=size(I);m=(M+1)/2;n=(N+1)/2;d0=30; %截止頻率F=fftshift(fft2(I)); %空域轉頻域,平移中心H=zeros(M,N);G=zeros(M,N);fori=1:M forj=1:N d=(i-m)^2+(j-n)^2; H(i,j)=exp(-d/(2*d0^2));%%高斯濾波函數 G(i,j)=H(i,j)*F(i,j); endendO=ifft2(ifftshift(G)); %平移中心,頻域轉空域O=real(O); %取實數部分 subplot(1,2,1);imshow(I,[]);title('原始圖像');subplot(1,2,2);imshow(O,[]);title('頻域高斯低通濾波'); %% 采用二階巴特沃斯高通濾波器進行頻域濾波nn=2;d0 = 5;m = fix(M/2);n = fix(N/2);fori = 1:M forj = 1:N d = sqrt((i-m)^2+(j-n)^2); if(d==0) h=0; else h = 1/(1+0.414*(d0/d)/(2*nn)); end result(i,j) = h*G(i,j); end end result = ifftshift(result); J2 = ifft2(result); J3 = uint8(real(J2)); figure, subplot(1,2,1),imshow(I),title('原始圖像'); subplot(1,2,2),imshow(J3),title('頻域銳化圖像');運行結果:
新聞熱點
疑難解答