图像频域滤波的步骤:
(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('频域锐化图像');运行结果:
新闻热点
疑难解答