数字图像的傅里叶变换(Fourier Transform)及其展示: 频率中心化

本文探讨了图像的有效信息主要集中在低频部分,图像傅里叶变换后低频位于四周,高频在中心。通过MATLAB示例,证明了频率中心化对于图像复原的重要性,并展示了相关代码和结果,强调了傅里叶变换在图像处理中的应用。
摘要由CSDN通过智能技术生成

本文通过理论和MATLAB实际例子验证如下结论:

1. 大部分图片的有效信息集中在低频部分;

2. 图像傅里叶变换后低频在四周、高频在中心;

3. 图像经过傅里叶变换、频率中心化后能够容易地复原;

从而进一步说明图像通常需要进行频率中心化操作以方便处理;

1. 大部分图片的有效信息集中在低频部分

图片的高频部分主要是边缘等细节,主要内容大部分是低频部分。因此,大部分图片的有效信息集中在低频部分。从图3中我们可以看出,在去除图片中频率最低的一小部分后,图像出现了明显的锐化;而反过来,当只保留图像中频率最低的一小部分后,明显有更多的信息得到了保留。

2. 图像傅里叶变换后低频在四周、高频在中心

理论解释下面这个链接很到位:

图像经过傅里叶变换以后,得到的频谱图为啥是对称的?又为啥在未频谱居中时,四周代表是低频,中间是高频? - DBinary的回答 - 知乎

总结起来就是:

二维傅里叶变换是对图像每行做一次一维傅里叶变换,再对其每列做一次一维傅里叶变换,依据从左到右频率增高的原则,最后不就变成了中间是高频,四个角是低频了么.当然为了观察方便常常用fftshift方法将低频移到中心。

Note:一维傅里叶变换本身也是高频在中间,低频在两端,经过fftshift才是低频在中间的样子,可以通过如下MATLAB代码验证:

x=1:0.1:100;

z=0.1*sin(2*pi*x)+1*sin(4*pi*x);

Z = fft(z);

plot(abs(Z));

图形如下:

3. 图像经过傅里叶变换、频率中心化后能够容易地复原

傅里叶变换具有可逆性,这也是它能够得到广泛应用的原因之一。而MATLAB中的fft2与ifft2; fftshift与ifftshift则使我们可以很方便地完成这些操作。

下图表示出图形的傅里叶变换和频率中心化的结果:

下图是由中心化的频域图复原得到的空间域图,表现了傅里叶变换的可逆性

下图是将一小部分低频置零后的结果:

下图则是将除了一小部分低频,其他大部分频域分量均置零后的结果,很好地说明了这个图像的信息大量集中在低频部分。

MATLAB代码如下:

image = imread('camera.png');

image=rgb2gray(image);

image=im2double(image);

F_image = fft2(image);

figure(1)

subplot(221)

imshow(image);

title('original image')

subplot(222)

imshow(abs(F_image))

title('magnitude of Frequency image')

subplot(223)

imshow(angle(F_image))

title('phase of Frequency image')

subplot(224)

imshow(fftshift(abs(F_image)))

title('central')

F_imageAfterCentral = fftshift(F_image);

figure(2)

subplot(311)

originalRecoverImage = ifft2(ifftshift(F_imageAfterCentral));

imshow(originalRecoverImage)

title('IFT of the original spectrogram')

% 将四边取0(即将中心化后的中心点取0)

subplot(312)

F_imageAfterCentral_m = F_imageAfterCentral;

F_imageAfterCentral_m(280:300,280:300) = 0;

imshow(ifft2(ifftshift(F_imageAfterCentral_m)))

title('setting the small central area(low frequency) to 0')

subplot(313)

F_imageAfterCentral_m1 = F_imageAfterCentral;

F_imageAfterCentral_m2 = F_imageAfterCentral;

F_imageAfterCentral_m1(280:300,280:300) = 0;

F_difference = F_imageAfterCentral_m2 - F_imageAfterCentral_m1;

imshow(ifft2(ifftshift(F_difference)))

title('setting all area to 0 except the small central area(low frequency)')

计算成像杂货铺

微信公众号

用于分享计算成像等领域的学习笔记

————————————————

版权声明:本文为CSDN博主「R.X. NLOS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qazwsxrx/article/details/104672192

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值