python观察图像的幅度谱和相位谱——冈萨雷斯数字图像处理

原理

在图像处理中,当我们对图像进行傅里叶变换,可以得到两个重要的成分:幅度谱和相位谱。这些成分在图像分析和处理中扮演着关键的角色。
傅里叶变换

傅里叶变换是一种将信号从时域(或空间域)转换到频率域的工具。对于图像,这意味着将像素的空间排列转换为表征图像中不同频率成分的形式。

幅度谱

定义:

幅度谱表示图像中各个频率成分的强度。它给出了频率内容的量度,但不包含频率发生的位置信息。

数学表达:

对于傅里叶变换得到的复数结果

F(u,v),幅度谱 A(u,v) 定义为:

重要性:

幅度谱显示了图像中不同频率的强度,这对于理解图像的结构非常重要。例如,高频成分常常对应于图像中的边缘和细节部分。

相位谱定义:

相位谱包含了频率成分在图像中出现的位置信息。它描述了不同频率分量相对于基频的相位差。

数学表达:

相位谱 Φ(u,v) 定义为:

重要性:

相位谱在图像重建中非常重要。它决定了图像中不同频率成分的相对位置,对图像的视觉内容有重大影响。实验表明,相位信息对于人眼识别图像内容比幅度信息更为关键。

综合应用

在图像处理中,幅度谱和相位谱常常被用于图像分析、图像增强、滤波以及图像压缩等任务。例如,通过修改幅度谱和相位谱,可以实现图像的去噪、锐化等效果。然而,需要注意的是,过度修改这些谱可能会导致图像内容的严重失真。

要求实现下述图像

提示

由函数np.fft.fft2可以得到傅里叶变换系数(复数),用np.abs计算复数幅度谱,用np.angle计算相位谱。分别得到矩形图和妇女图的幅度谱及相位谱后,根据公式F(u,v)=|F(u,v)| e^(jϕ(u,v))可以计算出融合后的傅里叶变换系数。其中|F(u,v)|为幅度谱,ϕ(u,v)为相位谱。最后如上一个实验一样,经过np.fft.ifft2函数做傅里叶反变换得到融合后的图像。

代码实现

python 复制代码
import cv2
import numpy as np
from matplotlib import pyplot as plt

img_rec = cv2.imread('Fig0424.tif', 0)
img_woman = cv2.imread('Fig0427.tif', 0)

dft_rec = np.fft.fft2(img_rec)
amp_rec = np.abs(dft_rec)
pha_rec = np.angle(dft_rec)

dft_woman = np.fft.fft2(img_woman)
amp_woman = np.abs(dft_woman)
pha_woman = np.angle(dft_woman)

# 妇女图的相位和矩形图的幅度融合
img_mix1_dft = np.multiply(amp_rec, np.exp(1j*pha_woman))
img_mix1 = np.abs(np.fft.ifft2(img_mix1_dft))
# 另一种写法
# img_mix1_dft = np.zeros(img_woman.shape, dtype=complex)
# img_mix1_dft.real = amp_rec*np.cos(pha_woman)
# img_mix1_dft.imag = amp_rec*np.sin(pha_woman)
# img_mix1 = np.abs(np.fft.ifft2(img_mix1_dft))

# 矩形图的相位和妇女图的幅度融合
img_mix2_dft = np.multiply(amp_woman, np.exp(1j*pha_rec))
img_mix2 = np.abs(np.fft.ifft2(img_mix2_dft))

img_list = [img_woman, np.fft.fftshift(pha_woman), img_mix1, img_mix2]
img_name_list = ['original', 'phase', 'img_wompha_recamp', 'img_recpha_womamp']

_, axs = plt.subplots(2, 2)

for i in range(2):
    for j in range(2):
        axs[i, j].imshow(img_list[i*2+j], cmap='gray')
        axs[i, j].set_title(img_name_list[i*2+j])
        axs[i, j].axis('off')

plt.savefig('image_phase_amplitude.jpg')
plt.show()

结果展示

代码流程

由函数np.fft.fft2可以得到傅里叶变换系数(复数),用np.abs计算复数幅度谱,用np.angle计算相位谱。分别得到矩形图和妇女图的幅度谱及相位谱后,根据公式F(u,v)=|F(u,v)| e^(jϕ(u,v))可以计算出融合后的傅里叶变换系数。其中|F(u,v)|为幅度谱,ϕ(u,v)为相位谱。最后如上一个实验一样,经过np.fft.ifft2函数做傅里叶反变换得到融合后的图像。对相位谱图像重构后,可以看出图像的基本轮廓,忽略相位信息,所得到的图像与原始图像相比差别很大,幅值谱图中得到的信息比在相位谱图像中得到的信息多。

相关推荐
yanxiaoyu1109 小时前
Pycharm远程调用Autodl进行训练(关机后不影响)
ide·python·pycharm
云和数据.ChenGuang9 小时前
Python 3.14 与 PyCharm 2025.2.1 的调试器(PyDev)存在兼容性问题
开发语言·python·pycharm
mortimer9 小时前
从零打造一款桌面实时语音转文字工具:PySide6 与 Sherpa-Onnx 的实践
python·github·pyqt
AnalogElectronic9 小时前
用AI写游戏4——Python实现飞机大战小游戏1
python·游戏·pygame
晞微9 小时前
实战|SpringBoot+Vue3 医院智能预约挂号系统(含 AI 助手)
人工智能·spring boot·后端
九年义务漏网鲨鱼10 小时前
【多模态大模型面经】 BERT 专题面经
人工智能·深度学习·bert
爱打球的白师傅10 小时前
python机器学习工程化demo(包含训练模型,预测数据,模型列表,模型详情,删除模型)支持线性回归、逻辑回归、决策树、SVC、随机森林等模型
人工智能·python·深度学习·机器学习·flask·逻辑回归·线性回归
烟袅11 小时前
Trae 推出 Solo 模式:AI 开发的“一人一项目”时代来了?
前端·人工智能·solo
元宇宙时间11 小时前
AI赋能的$AIOT:打造Web3全周期智能生态的价值核心
人工智能·web3
瑞禧生物ruixibio11 小时前
Biotin-Oridonin B,生物素标记冬凌草乙素,可用于蛋白质修饰、药物靶标研究
人工智能