图像傅里叶变换的幅度谱、相位谱以及双谱重构原图像

本文介绍了灰度图像幅度谱和相位谱的相关知识及双谱重构方法。幅度谱存储像素幅值信息,但原像素位置被打乱,无法单独重构图像;相位谱记录相位和位置信息,虽看似噪声却很重要,利用二者可通过双谱重构恢复原图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的求取下灰度图像的幅度谱和相位谱并进行双谱重构:
直接上代码:

clear all
Picture = imread('E:\others\Picture\Library.jpg');

Picture_Gray = rgb2gray(Picture);%灰度处理

Picture_FFT = fft2(Picture_Gray);%傅里叶变换
Picture_FFT_Shift = fftshift(Picture_FFT);%对频谱进行移动,是0频率点在中心
Picture_AM_Spectrum = log(abs(Picture_FFT_Shift));%获得傅里叶变换的幅度谱
Picture_Phase_Specture = log(angle(Picture_FFT_Shift)*180/pi);%获得傅里叶变换的相位谱
Picture_Restructure = ifft2(abs(Picture_FFT).*exp(j*(angle(Picture_FFT))));%双谱重构
figure(1)
subplot(221)
imshow(Picture_Gray)
title('原图像')
subplot(222)
imshow(Picture_AM_Spectrum,[])%显示图像的幅度谱,参数'[]'是为了将其值线性拉伸
title('图像幅度谱')
subplot(223)
imshow(Picture_Phase_Specture,[]);
title('图像相位谱')
subplot(224)
imshow(Picture_Restructure,[]);
title('双谱重构图')

运行结果:
在这里插入图片描述
图像的幅度谱代表的是图像各像素点的亮度信息,即该像素应该显示什么颜色,但是做出来的幅度谱却不知道每一点在原图像中具体是哪一点,即幅度谱虽然存储了各个像素点的幅值信息,但是原像素点的位置已经被打乱,所以仅凭幅度谱是没有办法重构原图像的。幅度谱的中心是低频部分,越亮的地方代表的幅度越大。幅度谱中“十”字形亮线表示原图像中水平和垂直方向的分量较其他方向要多,因为在人们周围的自然场景中水平和垂直的线条出现的可能性较大。
来看下仅有幅度谱重构出来的原图像:

Picture_Restructure = ifft2(abs(Picture_FFT));%幅度谱重构

在这里插入图片描述
可以看到仅有幅度谱重构出来的图像啥也不是,,,

而相位谱记录的是所有点的相位信息,看起来相位谱是一团噪声,这也说明相位信息是以一种更为隐蔽的方式出现在人们面前的,但它非常重要,因为相位信息中携带者图像的位置信息,没有它将无法从品频谱还原出原图像。
相位谱重构原图像:

Picture_Restructure = ifft2(exp(j*(angle(Picture_FFT))));%相位谱重构

在这里插入图片描述
可以看到仅有相位谱重构出来的图像还是可以看到一些轮廓信息的,利用相位谱记录的位置信息和幅度谱记录的亮度信息,就可以用双谱重构的方法恢复出原图像。

参考资料:
https://zhidao.baidu.com/question/324052986.html
https://blog.csdn.net/wujian_1205/article/details/56852399
https://blog.csdn.net/Struggle_For_M/article/details/51207370

图像傅里叶变换是一种数学工具,常用于分析信号频域特性。它将图像从空间域转换到频率域,分为幅度谱相位谱两部分: 1. **幅度谱**(Magnitude Spectrum)表示的是图像各频率成分的强度分布,通常是一个二维数组,值越大代表该频率成分越强烈。 2. **相位谱**(Phase Spectrum)则反映了各频率成分之间的相位关系,也是二维数组,通常表现为0到2π的角频率信息。 3. **双谱重构**(Inverse Fourier Transform),即通过复数乘积将频率域的信息变回空间域,以便恢复图像。这需要用到numpy库的`ifftshift`, `ifft2` 和 `abs` 函数,以及`angle`函数来处理相位。 下面是一个简单的Python代码示例,使用`scipy`库进行傅立叶变换图像重构: ```python import numpy as np from scipy.fftpack import fft2, ifft2, fftshift # 假设你已经有了一个名为img的二维灰度图像 img = ... # 对图像进行傅里叶变换 fft_img = fft2(img) amp_spectrum = np.abs(fft_img) # 获取幅度谱 phase_spectrum = np.angle(fft_img) # 获取相位谱 # 为了重构,先对相位进行中心化 phase_spectrum_cen = fftshift(phase_spectrum) # 双谱重构 reconstructed_img = abs(ifft2(amp_spectrum * np.exp(1j * phase_spectrum_cen))) # 显示图像重构后的图像 import matplotlib.pyplot as plt plt.subplot(121), plt.imshow(img, cmap='gray') plt.title('Original Image'), plt.colorbar() plt.subplot(122), plt.imshow(reconstructed_img, cmap='gray') plt.title('Reconstructed Image'), plt.colorbar() plt.show()
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值