读取灰度图像,显示如下:
f=imread('lena.jpg');
f=rgb2gray(f);
F=fft2(f);
imshow(f);
figure;
imshow(abs(F),[]);
用 fft2() 进行傅立叶变换,用abs函数计算幅度,最终显示如下:
四个角有亮点。
可以使用fftshift将变换的原点移动到频率矩形的中心,效果如下图所示:
频谱的动态范围是(0 ~ 204000),可以使用对数变换来调整范围,结果如下图所示
可以再使用ifftshift将居中的位置还原
Fc=fftshift(F);
imshow(abs(Fc),[]);
S=log(1+abs(Fc));
imshow(S,[]);
S2 = ifftshift(S);
imshow(S2,[])
可以再使用ifft2()将图像做傅立叶逆变换,由于误差可能存在虚数分量,可以先提取实数部分
fr = real(ifft2(F));
imshow(uint8(fr));