数字图像处理,读懂频域处理的“傅里叶变换”

article/2025/10/27 23:08:51

转载自:https://blog.csdn.net/ebowtang/article/details/39004979

以下部分文字资料整合于网络,本文仅供自己学习用!

这是一幅很绝的一维傅里叶变换动态图



一,读懂傅里叶变换

一个信号能表示成傅里叶级数的形式是有条件的,首先它必须是周期信号,第二必须是满足狄里赫利条件的周期信号。

1,关于两大域:时域与频域

(1),频域(frequency domain)是指在对函数或信号进行分析时,

分析其和频率有关部份,而不是和时间有关的部份,和时域一词相对。

(2),时域是描述数学函数或物理信号对时间的关系。

例如一个信号的时域波形可以表达信号随着时间的变化。
若考虑离散时间,时域中的函数或信号,在各个离散时间点的数值均为已知。
若考虑连续时间,则函数或信号在任意时间的数值均为已知。在研究时域的信号时,常会用示波器将信号转换为其时域的波形。

(3),两者相互间的变换
时域(信号对时间的函数)和频域(信号对频率的函数)的变换在数学上是通过积分变换实现。
对周期信号可以直接使用傅立叶变换,对非周期信号则要进行周期扩展,使用拉普拉斯变换。



2,傅立叶变换

(1),什么是傅里叶变换?
也称作傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅立叶变换具有多种不同的变体形式,如连续傅立叶变换和离散傅立叶变换。最初傅立叶分析是作为热过程的解析分析的工具被提出的。傅里叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅里叶变换用正弦波作为信号的成分。
傅里叶变换的实质是将一个信号分离为无穷多多正弦/复指数信号的加成,也就是说,把信号变成正弦信号相加的形式——既然是无穷多个信号相加,那对于非周期信号来说,每个信号的加权应该都是零——但有密度上的差别,你可以对比概率论中的概率密度来思考一下——落到每一个点的概率都是无限小,但这些无限小是有差别的所以,傅里叶变换之后,横坐标即为分离出的正弦信号的频率,纵坐标对应的是加权密度
(2),傅里叶变换有什么用呢?
举例说明:傅里叶变换可以将一个时域信号转换成在不同频率下对应的振幅及相位,其频谱就是时域信号在频域下的表现,而反傅里叶变换可以将频谱再转换回时域的信号。最简单最直接的应用就是时频域转换,比如在移动通信的LTE系统中,要把接收的信号从时域变成频域,就需要使用FFT。又例如对一个采集到的声音做傅立叶变化就能分出好几个频率的信号。比如南非世界杯时,南非人吹的呜呜主拉的声音太吵了,那么对现场的音频做傅立叶变化(当然是对声音的数据做),会得到一个展开式,然后找出呜呜主拉的特征频率,去掉展开式中的那个频率的sin函数,再还原数据,就得到了没有呜呜主拉的嗡嗡声的现场声音。而对图片的数据做傅立叶,然后增大高频信号的系数就可以提高图像的对比度。同样,相机自动对焦就是通过找图像的高频分量最大的时候,就是对好了。



3,快速傅里叶变换

(1),什么是快速傅里叶变换?
计算离散傅里叶变换的一种快速算法,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。


(2),快速傅里叶变换有什么用?
函数或信号可以透过一对数学的运算子在时域及频域之间转换。和傅里叶变换作用一样!


(3),为什么要提出快速傅里叶变换?
人们想让计算机能处理信号 但由于信号都是连续的、无限的,计算机不能处理,于是就有了傅里叶级数、傅里叶变换,将信号由时域变到频域,把一个信号变为有很多个不同频率不同幅度的正弦信号组成,这样计算机就能处理了,但又由于傅里叶变换中要用到卷积计算,计算量很大,计算机也算不过来,于是就有了快速傅里叶变换,大大降低了运算量,使得让计算机处理信号成为可能。快速傅里叶变换是傅里叶变换的快速算法而已,主要是能减少运算量和存储开销,对于硬件实现特别有利。

4,图像中傅立叶变换的物理意义

(1),图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数


(2),傅立叶变换以前,图像(未压缩的位图)是由对在连续空间(现实空间)上的采样得到一系列点的集合,我们习惯用一个二维矩阵表示空间上各点,则图像可由z=f(x,y)来表示。由于空间是三维的,图像是二维的,因此空间中物体在另一个维度上的关系就由梯度来表示,这样我们可以通过观察图像得知物体在三维空间中的对应关系。为什么要提梯度?因为实际上对图像进行二维傅立叶变换得到频谱图,就是图像梯度的分布图,当然频谱图上的各点与图像上各点并不存在一一对应的关系,即使在不移频的情况下也是没有。傅立叶频谱图上我们看到的明暗不一的亮点,实际上图像上某一点与邻域点差异的强弱,即梯度的大小,也即该点的频率的大小(可以这么理解,图像中的低频部分指低梯度的点,高频部分相反)。一般来讲,梯度大则该点的亮度强,否则该点亮度弱。这样通过观察傅立叶变换后的频谱图,也叫功率图,我们首先就可以看出,图像的能量分布,如果频谱图中暗的点数更多,那么实际图像是比较柔和的(因为各点与邻域差异都不大,梯度相对较小),反之,如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。将频谱移频到圆心除了可以清晰地看出图像频率分布以外,还有一个好处,它可以分离出有周期性规律的干扰信号,比如正弦干扰,一副带有正弦干扰,移频到原点的频谱图上可以看出除了中心以外还存在以某一点为中心,对称分布的亮点集合,这个集合就是干扰噪音产生的,这时可以很直观的通过在该位置放置带阻滤波器消除干扰


二,理性认识傅里叶变换

1,二维傅里叶fft2对简单矩阵的操作

(可以把s想象成一幅图像,傅里叶变换过程如下)

  1. s=magic(2);%magic矩阵有一个神奇的特点:每行或者每列加起来都相等
  2. f=fft2(s);
  3. a=abs(f)
  4. a =
  5. 10 0
  6. 2 4
  7. >> f
  8. f =
  9. 10 0
  10. -2 -4
  11. >> s
  12. s =
  13. 1 3
  14. 4 2
  15. %3*3的矩阵的操作结果
  16. s=magic(3);
  17. f=fft2(s);
  18. a=abs(f)
  19. a =
  20. 45.0000 0 0
  21. 0.0000 15.5885 5.1962
  22. 0.0000 5.1962 15.5885
  23. >> f
  24. f =
  25. 45.0000 0 0
  26. 0 + 0.0000i 13.5000 + 7.7942i 0.0000 - 5.1962i
  27. 0 - 0.0000i 0.0000 + 5.1962i 13.5000 - 7.7942i
  28. >> s
  29. s =
  30. 8 1 6
  31. 3 5 7
  32. 4 9 2
  33. %4*4的矩阵操作结果
  34. s=magic(4);%magic矩阵有一个神奇的特点:每行或者每列加起来都相等
  35. f=fft2(s);
  36. a=abs(f)
  37. a =
  38. 136.0000 0 0 0
  39. 0 20.0000 11.3137 12.0000
  40. 0 45.2548 0 45.2548
  41. 0 12.0000 11.3137 20.0000
  42. >> f
  43. f =
  44. 1.0e+02 *
  45. 1.3600 0 0 0
  46. 0 0.2000 0.0800 + 0.0800i 0 - 0.1200i
  47. 0 0.3200 + 0.3200i 0 0.3200 - 0.3200i
  48. 0 0 + 0.1200i 0.0800 - 0.0800i 0.2000
  49. >> s
  50. s =
  51. 16 2 3 13
  52. 5 11 10 8
  53. 9 7 6 12
  54. 4 14 15 1

2,二维快速傅里叶fft2对灰度图的操作

  1. <span style="font-size:12px;">clear all;
  2. close all;
  3. I=imread('peppers.png');%读入图像
  4. J=rgb2gray(I);%将图像转换为灰度图
  5. K=fft2(J);%对图像进行二维快速傅里叶变换
  6. K=fftshift(K);%将频谱转移到中心,其实就是在傅里叶变换时乘以了某个因子
  7. L=abs(K/256);%取模
  8. %显示图片
  9. figure;
  10. subplot(131);
  11. imshow(I);title('原图像')
  12. subplot(132);
  13. imshow(J);title('被转换为灰度图后')
  14. subplot(133);
  15. imshow(uint8(L));title('二维傅里叶变换后的频谱图')</span>


  1. clear all; close all;
  2. I=imread('peppers.png');%读入图像
  3. J=rgb2gray(I);%转换为灰度图
  4. J=imrotate(J,45,'bilinear'); %将图像旋转45度角
  5. K=fft2(J);%对图像进行二维傅里叶比变换
  6. K=fftshift(K);%转移频谱中心
  7. L=abs(K/256);%取模
  8. figure;
  9. subplot(121);
  10. imshow(J);title('原图像被旋转45度角')
  11. subplot(122);
  12. imshow(uint8(L));title('傅里叶变换后的图像')


  1. clear all; close all;
  2. I=imread('peppers.png');
  3. J=rgb2gray(I);
  4. J=imnoise(J, 'gaussian', 0, 0.01);%加入高斯噪声
  5. K=fft2(J);
  6. K=fftshift(K);
  7. L=abs(K/256);
  8. figure;
  9. subplot(131);
  10. imshow(I);title('原图像')
  11. subplot(132);
  12. imshow(J);title('高斯噪声污染')
  13. subplot(133);
  14. imshow(uint8(L));title('污染后进行福利叶变换')


  1. clear all; close all;
  2. I=imread('onion.png');
  3. J=rgb2gray(I);
  4. K=fft2(J);%傅里叶变换
  5. L=fftshift(K);%转移频谱中心
  6. L=abs(L/256);%取模
  7. M=ifft2(K);%二维傅里叶反变换
  8. figure;
  9. subplot(131);
  10. imshow(J);title('原灰度图像')
  11. subplot(132);
  12. imshow(uint8(L));title('傅里叶变换后的图像')
  13. subplot(133);
  14. imshow(uint8(M));title('反变换后的图像')


参考资源:

【1】http://blog.csdn.net/struggle_for_m/article/details/51207370

【2】动态图来源于“维基百科”

【3】https://zhuanlan.zhihu.com/p/19763358?columnSlug=wille


http://chatgpt.dhexx.cn/article/W6KiT07X.shtml

相关文章

傅立叶变换和拉普拉斯变换

欧拉公式 证明过程如下 首先是泰勒展开 参考cosX和sinX的泰勒展开可以证明这个问题。 还有下面这个号称宇宙最美公式 “自然底数e&#xff0c;自然数1和0&#xff0c;虚数i还有圆周率pi&#xff0c;它是这么简洁&#xff0c;这么美丽啊&#xff01;” 傅立叶级数 傅立叶在…

Little’s Law 利特尔法则

1 A simple definition: Little’s Law states that the long-term average number of customers in a stable system L L L is equal to the long-term average effective arrival rate, λ \lambda λ, multiplied by the average time a customer spends in the system, …

勒让德符号的说明及作用

Legendre符号的用途 一、 二次剩余 勒让德符号的提出的意义是判断一个数是否是模n的二次剩余&#xff0c;所以研究勒让德符号之前应该了解一下二次剩余。 存在x使x的平方与a MOD (p)就称a为模p的二次剩余&#xff0c;其中p为素数&#xff0c;a>0且a<p。 通过勒让…

奈奎斯特准则的简洁证明

一般而言&#xff0c;发送滤波器和接收滤波器的冲激响应相同且关于原点对称&#xff0c;有用信号事实上经过了这两个滤波器&#xff0c;所以等效滤波器为&#xff1a; 为使无符号间干扰&#xff0c; 应满足&#xff1a; 奈奎斯特准则指出上式等价于&#xff1a; 其中 表示的傅里…

蒙蒂霍尔悖论

贝叶斯与频率主义对蒙蒂霍尔问题的解 在定义概率时&#xff0c;通常有两种思想流派&#xff1a;贝叶斯主义和频率主义。前者将概率视为我们对事件发生的信念程度&#xff0c;而后者则将其视为事件发生的相对频率。这篇文章介绍了使用贝叶斯和频率主义方法来解决著名的蒙蒂霍尔问…

信号 信号的线性放大

信号 1.信号 信号是信息的载体或表达形式 2. 信号的频谱 正弦信号 方波信号 满足狄里赫利条件&#xff0c;展开成傅里叶级数 附 狄里赫利条件: 1) 函数在任意有限区间内连续&#xff0c;或只有有限个第一类间断点&#xff08;当t从左或右趋于这个间断点时&#xff0c;函数有有限…

信号的频域描述

一、周期信号的频域描述 1. 狄里赫利条件 &#xff08;1&#xff09;函数在任意有限区间内连续&#xff0c;或只有有限个第一类间断点 &#xff08;2&#xff09;在一个周期内&#xff0c;函数有有限个 极大值或极小值 2. 傅里叶级数 &#xff08;1&#xff09;傅里叶级数…

【信号与系统】(十三)傅里叶变换与频域分析——周期信号的傅里叶级数

文章目录 周期信号的傅里叶级数1 周期信号三角形式的傅里叶级数1.1 三角形式的傅里叶级数1.2 狄里赫利(Dirichlet)条件1.3 .余弦形式的傅里叶级数1.4 吉布斯现象 2 周期信号波形对称性和谐波特性2.1 f ( t ) f(t) f(t)为偶函数2.2 f ( t ) f(t) f(t)为奇函数2.3 f ( t ) f(t…

连续时间傅立叶变换和拉普拉斯变换

连续时间傅里叶变换简称&#xff1a;CTFT 连续时间周期信号x(t)如果满足狄里赫利条件&#xff0c;则其存在傅立叶级数对&#xff1a; x(t)在任何有限区间内&#xff0c;有有限个不连续点&#xff0c;并且在每个不连续点都必须是有限值。 注意&#xff1a;狄里赫利条件是充分条…

狄利克雷条件

属于 傅里叶级数分析使用的条件&#xff1a; 傅里叶在提出 傅里叶级数时坚持认为&#xff0c;任何一个周期信号都可以展开成傅里叶级数&#xff0c;虽然这个结论在当时引起许多争议&#xff0c;但持异议者却不能给出有力的不同论据。直到20年后(1829年)狄里赫利才对这个问题作出…

从傅里叶变换到拉普拉斯变换

理解拉普拉斯变换&#xff0c;可以先从傅里叶变换开始。 傅里叶定律&#xff1a;只要一个函数满足如狄利赫里条件&#xff0c;都能分解为复指数函数之和。 狄利赫里条件&#xff1a; (1) 函数在任意有限区间内连续&#xff0c;或只有有限个第一类间断点&#xff1b; (2)在一…

周期信号的傅里叶级数

周期信号的傅里叶级数 周期信号三角形式的傅里叶级数 1.三角形式的傅里叶级数 系数an, bn称为傅里叶系数 2.狄里赫利(Dirichlet)条件&#xff1a; 条件1&#xff1a;在一个周期内&#xff0c;函数连续或只有有限个第一类间断点&#xff1b; 条件2&#xff1a;在一个周期内&…

【Spring Boot】请求参数传json对象,后端采用(pojo)CRUD案例(102)

请求参数传json对象&#xff0c;后端采用&#xff08;pojo&#xff09;接收的前提条件&#xff1a; 1.pom.xml文件加入坐标依赖&#xff1a;jackson-databind 2.Spring Boot 的启动类加注解&#xff1a;EnableWebMvc 3.Spring Boot 的Controller接受参数采用&#xff1a;Reque…

8.返回JSON数据(Jackson):【@Controller + @ResponseBody 等价于【@RestController】的使用方法 jackson乱码的xml配置

文章目录 Controller类&#xff0c;返回JSON数据(Jackson)【一个不乱码的对象】1. 使用Jackson&#xff0c;需要额外导入pom依赖&#xff1a;jackson-databind2. 配置web.xml&#xff1a;注册DispatcherServlet、自带的过滤器3. 配置springmvc-servlet.xml 【含jackson乱码的解…

SpringBoot默认使用Jackson,它与ObjectMapper的前世今生JSON工具(格式化、JSONObject转对象)

Jackson与ObjectMapper 1、Jackson可以轻松地将Java对象转换成json对象和xml文档&#xff0c;同样也可以将json、xml转换成Java对象&#xff1b; 2、ObjectMapper类是Jackson库的主要类。它称为ObjectMapper的原因是因为它将JSON映射为Java对象&#xff08;序列化&#xff09…

Json☀️ 二、使用 JsonUtility 创建并解析 Json

文章目录 &#x1f7e5; 要生成的 Json&#x1f7e7; 创建 Json 方法&#x1f7e8; 解析 Json 方法 在我们项目中&#xff0c;可能经常用到解析 Json&#xff0c; 但有时也需要存档的工作。那该怎样生成Json呢&#xff1f; 下面我们就以上节 Json 例子为例&#xff0c;来讲解如…

Jackson API指南(*)

一.Jackson 概述 与 依赖 1.市面上用于在 Java 中解析 Json 的第三方库&#xff0c;随便一搜不下几十种&#xff0c;其中的佼佼者有 Google 的 Gson&#xff0c; Alibaba 的 Fastjson以及本文的 jackson。 2.我们在学习一门技术之前&#xff0c;首选要了解这门技术的优劣性&am…

Jackson 工具类使用及配置指南

目录 前言Jackson使用工具类Jackson配置属性Jackson解析JSON数据Jackson序列化Java对象 前言 Json数据格式这两年发展的很快&#xff0c;其声称相对XML格式有很对好处&#xff1a; 容易阅读&#xff1b;解析速度快&#xff1b;占用空间更少。 不过&#xff0c;JSON 和 XML…

docker 命令(2) 容器数据持久化

1. docker ps 查看所有运行状态的容器. 2.docker ps -a 查看全部状态的容器列表。 3. docker rmi image名字 删除一个镜像。 4.容器持久化&#xff1a; 这样的话容器即使删了 但是数据依然在 主机的目录未指定的话 默认就会给你建一个 docker run --name mysql_pro -p 330…

jprofiler 连接 docker中的jvm

jprofiler 官网&#xff1a; Java Profiler - JProfiler 1: docker-compose 指定端口&#xff0c; docker 为 -p 指定端口 2&#xff1a;官网下载 liunx版本及windows版本&#xff1a; 我用的是12.0.4 windows本地 win10安装 liunx 版本 上传是liun服务器 3&#xff1a; 在…