傅里叶变换

傅里叶定理指出:

  • 任何信号都可以表示成(或者无限逼近)一系列正弦信号的叠加。在一维领域,信号是一维正弦波的叠加,那么想象一下,在二维领域,实际上是无数二维平面波的叠加,$(x,y)$对应的是一维领域的 $t$,而灰度(Brightness Variation)就是其变量对应一维领域的振幅$F(t)$。

 

 

二维离散傅里叶变换:


幅度谱、相位谱和功率谱:

  • 幅度图:频域下每一点$(u,v)$的幅度 $F(u,v)$表示的是该频率的平面正弦波在叠加中所占的比例。

  • 相位图:相位图看上去不是很直观,但是与图像结构息息相关

  • 功率谱:

  • 通过相位图和幅度图,我们可以还原$F(u,v)$:

为什么频谱图的纵坐标一直是正值,而时域图的纵坐标有正有负,而且时频图的纵坐标也是有正有负的? 他们三个都是由时频幅值谱得到的,为什么三个图的纵坐标不是一样的?

1 频谱图使横坐标为频率纵坐标为幅值,频率是通过傅里叶变换以后得到的。可以看到求解的过程中用到了绝对值。
2 时域图的正负。其实他更多的表示的是扶植的强度,即偏离X轴的距离。负值是没有意义的。只是为了更形象的表现波形,也可以理解为相位
3 时频图用的函数在代码中也可以看到。短时傅里叶变换得到的。他表现的是功率谱。在求解时用到的是10log(f),而一般功率密度谱函数f是小于一的。所以取完log以后就是负值。
4 为什么不一样?因为他们表示的是不一样的东西啊。时域图,频谱图,时频图。你也可以去查查资料,我们一起讨论交流,我也有解释的不对的地方。 

对信号做傅里叶变换,横轴为时间,纵轴为频率,用颜色表示幅度即得到信号的时频分布。也可以理解为颜色代表能量的分布。

 

要点分析:

  • 那么(u,v)的物理含义是什么样的?平面波如下图所示,灰度变化快的频率高,也就是频率是指灰度在平面空间的梯度,这是很直观的描述,那么反应在图像上,就是图像中灰度变化比较快的地方,比如噪声,边缘,跳跃部分,背景以及慢变区域代表低频分量。 这里有一个理解的误区我需要指出一下,这个也是一开始困扰我的地方,就是正弦平面波叠加成图像时,并不是简单的叠加,而是不同相位的叠加。回忆一下一维的傅里叶变换,不同的正弦波的相位也是不同,不然怎么可能组成想要的信号波。所以理解相位很重要
  • 我们通常看到的傅里叶频谱图是图像中心化(移频)之后再去掉相位的图像,那么问题来了?在频谱图上,我们知道$(u,v)$的位置对应的是频率,在对于每一个$(u,v)$点的亮度又对应的什么?首先要明确,中心化之后,最低频移动到了中心,从图中可以看出来,中心点的能量最大,也就是比重最高。不知道我理解的对不对,看频谱图时要去原图割裂来看,然后再回到原图中区。

 

图像处理变换的目的:

通过对图像信息进行变换,使得能力保持但重新分配,有利于加工、处理或滤除不必要的信息,加强或提取感兴趣的部分或特征。

  1. 提取图像特征:如直流分量,目标边缘(高频分量)
  2. 图像压缩:蒸饺变换能量集中,对集中(小)部分进行编码
  3. 图像增强:低通滤波,平滑噪声,高通滤波,锐化边缘等

什么是空间频率:

1. 对图像信号而言,空间频率是指单位长度内亮度也就是灰度做周期性变化的次数,也就是变化剧烈程度的指标,可以理解灰度在平面空间上的梯度。

2. 我们对图像进行了二维傅里叶变换得到了频谱图,实际上是图像梯度的分布图,注意频谱图与原图像的各点不存在一一对应的关系,即使在不移频的情况下也没有。图像上某一点与它领域点差异的强弱,实际上就是梯度,而该梯度就是对应于频谱图的某一点,而这个梯度也就是对应$(u,v)$某一点,但是这一点的大小或者说幅度值(亮暗)是由整体图像决定的,该梯度(该频率)对应的平面波的所占成分的大小。(能量的角度)

3. 移频后频谱图的中心为原始图像的平均亮度,频率为0,从图像中心向外,频率增高,高亮度表明该频率特征明显。此外,注意到,频率图像中心明显的频率变化方向与原图像中的物方向垂直,也就是说如果原始图像中有多种水平分布的物,那么频率域图像在垂直方向的频率变化比较明显。


 

傅里叶变换

傅里叶变换的定义

傅里叶变换是将图像表示为不同幅值、频率和相位的复指数之和。傅里叶变换在广泛的图像处理应用中起着至关重要的作用,包括增强、分析、还原和压缩。

如果 f(m,n) 是两个离散空间变量 m 和 n 的函数,则 f(m,n) 的二维傅里叶变换由如下关系定义:

变量 ω1 和 ω2 是频率变量;其单位是弧度/采样。F(ω1,ω2) 通常称为 f(m,n) 的频域表示。F(ω1,ω2) 是复数值函数,在 ω1 和 ω2 中均呈现周期性,期间为 2π。由于具有周期性,通常只显示范围 −π≤ω1,ω2≤π。请注意,F(0,0) 是 f(m,n) 的所有值的总和。因此,F(0,0) 通常称为傅里叶变换的常量分量或 DC 分量。(DC 表示直流电;这是一个电气工程术语,指恒压电源,不同于电压呈正弦变化的电源。)

变换的逆运算是可应用于变换后的图像以生成原始图像的运算。二维傅里叶逆变换由下式给出:

粗略地说,此方程意味着 f(m,n) 可以表示为无限个不同频率的复指数(正弦曲线)的总和。F(ω1,ω2) 给出了 (ω1,ω2) 频率的贡献的幅值和相位。

傅里叶变换的可视化

为说明傅里叶变换,我们以下面的函数 f(m,n) 为例,它在矩形区域内等于 1,在其他位置等于 0。为了简化图,f(m,n) 显示为连续函数,即使变量 m 和 n 是离散的。

矩形函数

Plot of rectangular function f(m,n) in the spatial domain

下图以网格图形式显示上图所示的矩形函数的傅里叶变换的幅值,即

∣F(ω1,ω2)∣,

。幅值的网格图是可视化傅里叶变换的常用方法。

矩形函数的幅值图像

Mesh plot of the magnitude of the Fourier transform of the rectangular function f(m,n), plotted as a function of the horizontal frequency, ω1, and vertical frequency, ω2

图中心的峰值是 F(0,0),这是 f(m,n) 中所有值的总和。该图还显示,F(ω1,ω2) 在高水平频率下比在高垂直频率下具有更多能量。这反映出 f(m,n) 的水平横截面是窄脉冲,而垂直横截面是宽脉冲。窄脉冲比宽脉冲具有更多高频成分。

另一种可视化傅里叶变换的常见方法是将

log∣F(ω1,ω2)∣

显示为图像,如图所示。

矩形函数的傅里叶变换的对数

2-D pot of the log of the Fourier transform of the rectangular function f(m,n), plotted as a function of the horizontal frequency, ω1, and vertical frequency, ω2

在 F(ω1,ω2) 非常接近 0 的区域,使用对数有助于显示傅里叶变换的细节。

其他简单形状的傅里叶变换示例如下所示。

一些简单形状的傅里叶变换

2-D plots of the Fourier transforms of a rectangle tilted forty-five degrees, a circle centered at (0, 0), and an X shape centered at (0, 0)

离散傅里叶变换

在计算机上使用傅里叶变换通常涉及一种称为离散傅里叶变换 (DFT) 的变换形式。离散变换是一种其输入和输出值均为离散样本的变换,便于计算机操作。使用这种形式的变换有两个主要原因:

  • DFT 的输入和输出均为离散值,便于计算机操作。

  • 有一种计算 DFT 的快速算法,称为快速傅里叶变换 (FFT)。

DFT 通常针对仅在有限区域 0≤m≤M−1 和 0≤n≤N−1 上为非零值的离散函数 f(m,n) 定义。二维 M×N DFT 和逆 M×N DFT 的关系由下式给出:

 

值 F(p,q) 是 f(m,n) 的 DFT 系数。零频率系数 F(0,0) 通常称为“DC 分量”。DC 是一个电气工程术语,表示直流电。(请注意,MATLAB® 中的矩阵索引始终从 1 开始,而不是从 0 开始;因此,矩阵元素 f(1,1) 和 F(1,1) 分别对应于数学量 f(0,0) 和 F(0,0)。)

MATLAB 函数 fft、fft2 和 fftn 分别实现用于计算一维 DFT、二维 DFT 和 N 维 DFT 的快速傅里叶变换算法。函数 ifft、ifft2 和 ifftn 计算逆 DFT。

与傅里叶变换的关系

DFT 系数 F(p,q) 是傅里叶变换 F(ω1,ω2) 的采样。

离散傅里叶变换的可视化
  1. 构造矩阵 f,它类似于傅里叶变换的定义的示例中的函数 f(m,n)。前面提到过,f(m,n) 在矩形区域内等于 1,在其他位置等于 0。使用二值图像来表示 f(m,n)。

    f = zeros(30,30);
    f(5:24,13:17) = 1;
    imshow(f,"InitialMagnification","fit")

    Binary image representation of f(m,n)

  2. 使用以下命令计算并可视化 f 的 30×30 DFT。

    F = fft2(f);
    F2 = log(abs(F));
    imshow(F2,[-1 5],"InitialMagnification","fit");
    colormap(jet); colorbar

    在无填充情况下计算的离散傅里叶变换

    2-D plot of the 30-by-30 discrete Fourier transform of the binary rectangular function

    该图不同于傅里叶变换的可视化中显示的傅里叶变换。首先,傅里叶变换的采样要粗略得多。其次,零频系数显示在左上角,而不是传统的中心位置

  3. 为了获得傅里叶变换的更精细采样,在计算 f 的 DFT 时可向在其中填零。使用以下命令,可一步执行填零和 DFT 计算。

    F = fft2(f,256,256);

    该命令在计算 DFT 之前用零将 f 填充为 256×256。

    imshow(log(abs(F)),[-1 5]); colormap(jet); colorbar

    在填充情况下计算的离散傅里叶变换

    2-D plot of the 30-by-30 discrete Fourier transform of the binary rectangular function with zero padding. The transform with zero padding has a finer frequency resolution.

  4. 然而,零频系数仍显示在左上角,而不是中心位置。您可以使用函数 fftshift 解决此问题,该函数交换 F 的象限,使零频系数位于中心位置

    F = fft2(f,256,256);F2 = fftshift(F);
    imshow(log(abs(F2)),[-1 5]); colormap(jet); colorbar

    生成的图与傅里叶变换的可视化中所示的图相同。

    Mesh plot of the magnitude of the Fourier transform of the rectangular function f(m,n), plotted as a function of the horizontal frequency, ω1, and vertical frequency, ω2

傅里叶变换的应用

本节介绍傅里叶变换的许多图像处理相关应用中的一些应用。

线性滤波器的频率响应

线性滤波器的冲激响应的傅里叶变换可得到滤波器的频率响应。函数 freqz2 计算并显示滤波器的频率响应。高斯卷积核的频率响应表明,此滤波器允许低频通过,但会使高频衰减。

h = fspecial("gaussian");
freqz2(h)

高斯滤波器的频率响应

Mesh plot of the magnitude of the frequency response of a Gaussian filter.

有关线性滤波、滤波器设计和频率响应的详细信息,请参阅Design Linear Filters in the Frequency Domain。

使用傅里叶变换执行快速卷积

尝试此示例Copy Code  Copy Command

此示例说明如何使用傅里叶变换对两个矩阵执行快速卷积。傅里叶变换的一个关键特性是两个傅里叶变换相乘对应于相关联的空间函数的卷积。此特性与快速傅里叶变换一起构成了快速卷积算法的基础。

注意:基于 FFT 的卷积方法最常用于大型输入。对于小型输入,使用 imfilter 函数通常更快。

创建两个简单的矩阵 A 和 BA 是 M×N 矩阵,B 是 P×Q 矩阵。

A = magic(3);
B = ones(3);

对 A 和 B 执行填零,使它们至少为 (M+P-1)×(N+Q-1)。(通常填零后的 A 和 B 的大小要为 2 的幂,这时 fft2 的执行速度最快。)该示例将矩阵填充为 8×8。

A(8,8) = 0;
B(8,8) = 0;

使用 fft2 函数计算 A 和 B 的二维 DFT。将两个 DFT 相乘,并使用 ifft2 函数计算结果的逆二维 DFT。

C = ifft2(fft2(A).*fft2(B));

提取结果的非零部分,并删除舍入误差导致的虚部。

 Get 

C = C(1:5,1:5);
C = real(C)
C = 5×5

    8.0000    9.0000   15.0000    7.0000    6.0000
   11.0000   17.0000   30.0000   19.0000   13.0000
   15.0000   30.0000   45.0000   30.0000   15.0000
    7.0000   21.0000   30.0000   23.0000    9.0000
    4.0000   13.0000   15.0000   11.0000    2.0000

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

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

相关文章

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(九)-git(1)

Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。 文章目录 前言 一、git是什么 二、git基本概念 三、git基本命令 总结…

Vue3中为Ant Design Vue中Modal.confirm自定义内容

在一次业务开发时代码时,碰到了一种既想要Modal.confirm样式,又想要定制其content内容的情况。 大部分情况下,使用Modal.method()这种方式时,可能content内容固定都是字符串,那如果想要做更高级的交互怎么办&#xff…

将QT移植到IMX6ULL开发板

文章目录 前言一、编译系统1.设置交叉编译工具链2.编译系统3.烧写 二、Linux中下载QT1.安装 Qtcreator2.创建第一个程序3.配置 QtCreator 开发环境(1)打开选项界面(2)选择编译器(3)设置编译器(4…

SoftCLT: 时间序列的软对比学习《Soft Contrastive Learning for Time Series》(时间序列、时序分类任务、软...

2024年6月25日,10:11,好几天没看论文了,一直在摸鱼写代码(虽然也没学会多少),今天看一篇师兄推荐的。 论文: Soft Contrastive Learning for Time Series 或者是: Soft Contrastive Learning for Time Seri…

AutoX.js从某音分享链接解析出视频ID

背景 从某音分享的链接中解析出数字的videoID,用来做评论Intent跳转 思路 基本所有的短链接都是302跳转或者js跳转,熟悉http协议都知道,当状态码为302,从headers中提取Location即刻获得视频的原链接 链接中就带有videoId 要注意…

【串口通信】之TTL电平

1. 什么是串口 串口,全称为串行通信端口,是一种计算机硬件接口,用于实现数据的串行传输。与并行通信不同,串口通信一次只传输一个比特,数据通过串行线按顺序传输。串口通信在嵌入式系统、工业控制、计算机与外围设备通信等领域非常常见 2. 什么是串口通信 串口通信是指通过…

提升速卖通店铺排名:自养号测评的实战策略

卖家们追求的目标之一就是推广爆品。通过有效的推广策略,可以增加爆品的曝光度、吸引更多的买家,并带来更多的销售机会。那么,速卖通上如何推广爆品呢?下面我们来探讨一下这个问题。 首先,为了推广爆品,卖家需要进行…

护眼落地灯哪个牌子好?盘点五款必入不踩雷的护眼大路灯

护眼落地灯哪个牌子好?在这个快节奏的时代,护眼落地灯已经从一种高端选择转变为日常用眼生活中的必须品。不论是提升普通照明,还是针对孩子学习是改善光线质量环境,一款优秀的护眼落地灯都能成为我们生活中的照明神器。怎么选择一…

xmind2testcase工具将测试用例从Xmind转为CSV导入禅道

使用xmind编写测试用例,使用xmind2testcase工具将测试用例从Xmind转为CSV导入禅道,便于管理。 1.工具准备 第一步:安装python 第二步:安装xmind2testcase工具 运行-cmd-打开命令提示符弹窗,输入安装命令 安装命令&…

数千万“四高”中老年患者,如何推动国产营养保健品创新

“三高”指高血压、高血糖(糖尿病)、高血脂,是中老年群体的常见病。 然而,除了前述三者,高尿酸血症在我国的患病率正逐年提高,已成为仅次于糖尿病的第二大代谢性疾病。痛风是高尿酸血症典型症状之一。 加上…

大华设备接入GB28181视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤

智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强,支持多协议接入,包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等,并能对外分发RTMP、…

Linux 文件系统以及日志管理

一、inode 与block 1. inode 与block详解 在文件存储硬盘上,硬盘的最小存储单位叫做“扇区”,每个为512字节。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取…

pytest-yaml-sanmu(七):使用fixture返回值

fixture 是 pytest 中非常重要的功能,大部分项目都可能会用到 fixture。 pytest 的内置标记 usefixtures 可以帮助用例自动的使用 fixture 1. 创建 fixture pytest 中的 fixtures 大致有两个用途 在用例执行之前、执行之后,自动的执行 通过 fixture …

基于FreeRTOS+STM32CubeMX+LCD1602+AD5621(SPI接口)的DAC控制输出Proteus仿真

一、仿真原理图: 二、运行效果: 三、STM32CubeMX配置: 1)、GPIO配置: 2)、freertos配置: 四、软件部分: 1)、main主函数: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file …

(二)Java 线程

一、创建和运行线程 程序在启动时,默认就已经存在了一个主线程,如果想要在主线程之外创建线程,有以下几种方式: 1.1 直接使用 Thread // 创建线程对象 Thread t new Thread(){Overridepublic void run() {// 要执行的任务} };…

加密(3)非对称加密

一、介绍 1、概念 非对称加密,又称现代加密算法,非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。加密和解密使用的是两个不同的密钥,这种算法叫作非对称加密算法。 2、示例 首先生成密钥对, 公钥为(5,14)&#…

Redis基础教程(七):redis列表(List)

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

Redis-Redis可视化工具Redis Insight下载及安装

下载 1、博主已经上传资源,点此下载 2、点此进入官方下载 2.1 点击Installing Redis Insight 2.2 点击Install on desktop 2.3 选择Install on desktop,点击Redis Insight is available for download for free from this web site从网站下载 2.4 下载…

中小企业适用的HTTPS证书

在当今数字化时代,企业的网站安全及其数据传输的安全是至关重要的。对于中小企业而言,选择适合的HTTPS证书(即SSL证书)是确保网站通信安全、增强用户信任和保护企业数据不可或缺的一步。下面将围绕中小企业适用的HTTPS证书进行深入…

【CT】LeetCode手撕—4. 寻找两个正序数组的中位数

目录 题目1- 思路2- 实现⭐4. 寻找两个正序数组的中位数——题解思路 3- ACM 实现 题目 原题连接:4. 寻找两个正序数组的中位数 1- 思路 思路 将寻找中位数 ——> 寻找两个合并数组的第 K 大 (K代表中位数) 实现 ① 遍历两个数组 &am…