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函数做傅里叶反变换得到融合后的图像。

代码实现

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函数做傅里叶反变换得到融合后的图像。对相位谱图像重构后,可以看出图像的基本轮廓,忽略相位信息,所得到的图像与原始图像相比差别很大,幅值谱图中得到的信息比在相位谱图像中得到的信息多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/281946.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EOS运行启动 keosd 和 nodeos

EOS运行启动 keosd 和 nodeos 启动keosd:启动nodeos 安装完eosio后keosd和nodeos是一起带着的,我把EOS的运行keosd 和 nodeos官网教程放上来: https://developers.eos.io/welcome/latest/getting-started-guide/local-development-environment/start-nod…

智能制造 - 你需要了解的 10 个基本要素

智能制造 - 您需要了解的 10 个基本要素 在第四次工业革命 (IoT4) 的动态格局中,智能制造成为生产方式的关键变革。先进技术和创新工艺的融合正在塑造工业领域的新时代。探索智能制造的基本要素以及它们如何共同重新定义制造领域的效率、生产力和敏捷性。 一、数字…

Vue+elementUI引入MessageUI展示问题

VueelementUI引入MessageUI展示问题 1.出现问题的界面 2.解决问题 import "element-plus/theme-chalk/el-message.css";

公共用例库计划--个人版(一)

1、公共用例库计划 1.1、目标 在公司测试管理体系的演变过程中,从禅道过渡到devops再到云效平台,我们已经实现了对bug和用例的有效集中管理。然而,在实际操作中发现,尽管用例管理得到了初步整合,但在面对不同系统和测…

详解信道容量,信道速率,安全速率的区别

目录 一. 信道容量与信道速率 二. 小结 三. 安全速率与物理层安全 3.1 香农物理层安全模型 3.2 安全信道速率 四. 补充安全中断概率(Secrecy Outage Probability, SOP) 五. 补充安全分集度(Secrecy Diversity Order, SDO) …

【深度学习】Normalizing flow原理推导+Pytorch实现

1、前言 N o r m a l i z i n g f l o w \boxed{Normalizing \hspace{0.1cm} flow} Normalizingflow​,流模型,一种能够与目前流行的生成模型—— G A N 、 V A E \boxed{\mathbf{GAN、VAE}} GAN、VAE​相媲美的模型。其也是一个生成模型,可是…

【网络安全 | Misc】Ditf 安恒九月赛

正文 binwalk发现rar: 修改后缀,打开需要密码: 修改高度: 得到密码: StRe1izia得到一个流量包: 联系上文搜素png得到: 追踪流: 得到Base64代码: flag{Oz_4nd_Hir0_lov3_F…

算法通关村第十四关—堆能高效解决的经典问题(白银)

堆能高效解决的经典问题 一、在数组中找第K大的元素 LeetCode215 给定整数数组ums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。 示例1: 输入:[3,2,1,5,6,4]和…

循环生成对抗网络(CycleGAN)

一、说明 循环生成对抗网络(CycleGAN)是一种训练深度卷积神经网络以执行图像到图像翻译任务的方法。网络使用不成对的数据集学习输入和输出图像之间的映射。 二、基本介绍 CycleGAN 是图像到图像的翻译模型,就像Pix2Pix一样。Pix2Pix模型面临…

计算机组成原理复习7

内存管理 文章目录 内存管理存储器概述存储器的分类按在计算机中的作用(层次)分类按存储介质分类按存取方式分类按信息的可保存性分类 存储器的性能指标存储容量单位成本存储速度:数据传输率数据的宽度/存储周期 存储器的层次化结构多级存储系…

抖音详情API:从零开始构建抖音应用

随着短视频的兴起,抖音已经成为了一个全球范围内的热门平台。对于开发人员而言,利用抖音详情API从零开始构建抖音应用具有巨大的潜力和机会。本文将为你提供从零开始构建抖音应用的指南,包括开发环境搭建、API请求格式、用户认证等关键环节&a…

八. 实战:CUDA-BEVFusion部署分析-环境搭建

目录 前言0. 简述1. CUDA-BEVFusion浅析2. CUDA-BEVFusion环境配置2.1 简述2.2 源码下载2.3 模型数据下载2.4 基础软件安装2.5 protobuf安装2.5.1 apt 方式安装2.5.2 源码方式安装 2.6 编译运行2.6.1 配置 environment.sh2.6.2 利用TensorRT构建模型2.6.3 编译运行程序 2.7 拓展…

【电子通识】LED有关的几个参数和定义

主波长与峰值波长 看LED灯数据手册的时候会发现有两种不同的波长参数:“峰值波长 Peak Wavelength”和 “主波长 Dominant Wavelength”,那么这两个波长代表什么? 峰值波长 λP(Peak Wavelength ) : 定义为光谱辐射功率最大处所对…

JavaScript元素根据父级元素宽高缩放

/*** 等比缩放* param wrap 外部容器* param container 待缩放的容器* returns {{width: number, height: number}}* 返回值:width:宽度, height:高度*/aspectRatio(wrap: any, container: any) {// w h / ratio, h w * ratioconst wrapW wrap.width;const wrapH…

2023年度总结——关于如何认清自己是个FW

前言 不到各位有没有今年过得特别快的感觉。写总结时候一整理,我敲,我今年这么忙? 从三月份开说 三月份 这段时间刚开学,还算比较懵懂。不过初生牛犊不怕虎,那个寒假学了点怎么挖edusrc,开学迫不及待地…

AI按理说应该最擅长理工,为啥先冲击文艺行业?

介绍 本人数据AI工程师,我的观点对全行业都有冲击,当AI大模型持续进化之时,没有一家公司能独善其身。 本文从产业架构上、论文体量、基础Pass能力、通用大模型、AI开源社区、业务属性大模型、内容消费工具、创作工具赛道、企业服务这些板块…

day12--java高级编程:网络通讯

5 Day19–网络通信(Socket通信) 说明: io流是跟本地的文件进行数据的传输,读或者写。网络通信:数据在网络中进行的传输。 本章专题与脉络 1. 网络编程概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持&…

常用的 MySQL 可视化客户端

数据库可视化客户端(GUI)让用户在和数据库进行交互时,能直观地查看、创建和修改对象,如:表、行和列。让数据库操作变得更方便了。 今天,我们来了解下目前市场上最常用的 MySQL 可视化客户端。 官方&#x…

Stata18软件安装包下载及安装教程

Stata 18下载链接:https://docs.qq.com/doc/DUm5pRlFJaWV5aWtY 1.选中下载好的安装包,右键选择解压到“Stata18”文件夹 2.选中“SetupStata18.exe”,右键以管理员身份运行 3.点击“Next” 4.选择“I accept.....”,选择“Next” 5.点击“Nex…

MySQL Too many connections报错

MySQL 时不时出现Too many connections报错,重启MySQL就好了 但是过段时间又出现 一、解决方案: 1.修改mysql最大连接数 set global max_connections500; 以上是修改立即生效的,重启MySQL就会还原回去 在MySQL配置文件修改 max_connection…