什么是傅里叶变换?傅里叶变换处理图像的原理是什么?

简介: 傅里叶变换是一种强大的数学工具,能够将信号在时域与频域之间进行转换,广泛应用于物理学、信号处理、图像处理等领域。它能够将复杂信号分解为多个简单的正弦波,从而便于分析和处理。在图像处理中,傅里叶变换可以用于去噪、锐化和压缩等操作,通过滤波器选择性地保留或去除特定频率的信息,提高图像质量。

什么是傅里叶变换?

傅里叶变换,最牛的算法之一,广泛应用于物理学、信号处理、概率、统计、密码学、声学、光学等领域。

有人说,看懂了傅里叶,也就看懂了世界,能改变一个人对世界的认知。

我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的。在最外面的小齿轮上有一个小人——那就是我们自己。我们只看到这个小人毫无规律地在幕布前表演,却无法预测他下一步会去哪。而幕布后面的齿轮却永远一直那样不停地旋转,永不停歇。这样说来有些宿命论的感觉。说实话,这种对人生的描绘是我一个朋友在我们都是高中生的时候感叹的,当时想想似懂非懂,直到有一天我学到了傅里叶…… ——知乎@Heinrich

这里我们不深究其中,无数学公式推导,仅为大众简单科普一下傅里叶变换是什么。傅里叶变换最精彩之处就是能够将信号在时域与频域之间进行变换,因此我们先解释一下什么是时域和频域。

①时域
时域(Time domain)是描述数学函数或物理信号对时间的关系,例如一个信号的时域波形可以表达信号随着时间的变化。比如下面这个时域图,1秒内反复振动了5次,频率是5,最大振幅是1,整图描述的是每一个时刻的信号值:
640 (8).png

②频域
频域(frequency domain)是描述信号在频率方面特性时用到的一种坐标系,频域图显示了在一个频率范围内每个给定频带内的信号量。上面的时域图用频域表示,则是下图。横坐标表示频率,纵坐标表示振幅。这个图表示:这里面有一段波,频率为5,振幅为1。
640.png

另外,频域表示还可以包括每个正弦曲线的相位,以便能够重新组合频率分量以恢复原始时间信号。不同相位决定了波的位置,从频域信息复原到时域信息,相位非常重要。
640 (1).png

红色和蓝色正弦波具有θ的相位差

傅里叶变换

先亮一下通用傅里叶公式。(“公式恐惧症”请闭眼滑过...)
640.jpg

傅里叶变换,从定义上讲,表示能将满足一定条件的某个函数表示成三角函数或者它们的积分的线性组合。简单来说,它贯穿了时域与频域,能够将任何形式的周期性信号无限拆解,分为多个有规律的简单正弦波信号。(正弦波是一个圆周运动在一条直线上的投影,所以频域的基本单元也可以理解为一个始终在旋转的圆。)
640.gif

傅里叶级数方波圆动画

例如下面这种也是有规律的波形,可以拆解为若干组波的叠加。
640 (1).gif

也就是说,傅里叶变换能够将一段复杂的波,分解成多段规律的、单纯波的集合。然后,对这些规律的波从频域进行描述,就有了整段波的谱线图。
640 (2).gif

如下图,时域观测的方波信号是若干个正弦信号的叠加,当以时间为横轴时可以看到这些信号累加后得到的时域图像,而换一个角度,当以频率为坐标时,则得到的是一个个不同频率的脉冲。信号从时域到频域的转换,则是傅里叶正变换,从频率到时域的表示则是傅里叶逆变换。因此,时域和频域是以完全不同的角度表示相同的信息。(突然想吟诗一首:横看成岭侧成峰,远近高低各不同...)
640 (1).jpg

很多在时域看似不可能做到的操作,在频域却很容易,这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。例如在图像处理中,低频项决定了图像的整体形状,高频项则提供了细节,通过控制滤波器可以过滤掉不同频率的信息,从而决定输出的图像效果。

傅里叶变换处理图像的原理是什么?

现在我们知道了傅里叶变换能够将输入信号从时域转换到频域。 但对于静止图像,信号不是随着时间而变化的,而是以像素的形式呈现在空间维度,这样的像素域则称为空域。因此图像处理中的傅里叶变换是将空间域转换为频域。

那么,图像的频域是指什么呢?百度百科定义,“图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度”。通俗一点说,指的是图像中的色彩变化剧烈的程度,两点间RGB三值的差值越大,则变化越剧烈。变化剧烈的部分往往是“各种边缘”,大块大块的色彩往往储存着低频信息,而高频信息则储存在边缘之中。

例如,以下为在图像处理中使用快速傅里叶变换(FFT)的流程:
640 (2).png

来自:作者Craig Chen

①实现快速傅立叶变换,将灰度图像转换为频域
②零频域部分的可视化与集中
③应用低/高通滤波器过滤频率
④离散
⑤实现快速傅里叶逆变换生成图像数据

①计算二维快速傅里叶变换。快速傅立叶变换(FFT)处理的结果是一个很难直接可视化的复数数组。因此,我们必须把它转换成二维空间:频谱(左)、相位角(右)
640 (3).png

从频谱(左)可以看出,四个角上有一些对称图案。这些图案可以在下一步中转换到图像的中心。频谱图像中的白色区域显示出较高的频率。频谱图像中的角表示低频域。

②将零频域部分移到频谱中心。二维快速傅立叶变换(FFT)具有平移和旋转特性,因此我们可以在不丢失任何信息的情况下移动频谱,这种转换可以帮助我们轻松实现高通/低通滤波器。

③与步骤2相反,将零频域部分移回原位置。

④与步骤1相反,计算二维快速傅里叶逆变换。

③和④的过程是将频谱信息转换回灰度图像。它可以通过应用逆向移位和快速傅立叶变换(FFT)的逆运算来实现。

在理解了傅里叶变换背后的基本理论过程之后,是时候弄清楚如何操纵频谱输出来处理图像了,这里我们需要了解低通/高通滤波器。

低通滤波器

640 (4).png

低通滤波器是一种只允许低频谱通过的滤波器。图像中的低频谱意味着像素值变化缓慢。例如,图像中颜色变化较小的平滑区域(如空白白纸的中心)被视为低频谱内容。由于低通滤波器的输出只允许低频通过,对噪声等高频谱内容进行了阻塞,使得处理后的图像具有较少的噪声像素。因此,低通滤波器被广泛应用于图像的去噪。

高通滤波器

640 (5).png

相反,高通滤波器是只允许高频谱通过的滤波器。图像中的高频谱意味着像素值变化很大。例如,图像中颜色变化较大的边缘区域,如两张重叠的白纸和黑纸之间的边缘,被认为是高频谱内容。

在图像中,通过做适当的重复计算来锐化原图像,能用适当的重复计算来锐化原始图像的图像,从高通滤波器的输出可获得图像中的边缘。这将增强原始图像的清晰度,使边缘更加清晰。

以上就是傅里叶变换在图像处理中的基本原理,实际上大自然中的各种信号的大部分信息都集中在低频,而且人眼对低频更敏感,这也是傅里叶变换在图像处理中应用的意义。

另外,除了去噪、锐化等应用,在图像压缩方面,根据傅立叶变换推导出的DCT(离散余弦变换)也有非常重要的作用,JPEG格式的图片就是用Huffman编码方式压缩图片的DCT的系数。

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
12976 58
|
机器学习/深度学习 算法 数据可视化
一图胜千言:EBImage库分割和标注让你的图像说话
一图胜千言:EBImage库分割和标注让你的图像说话
527 0
|
机器学习/深度学习 算法 计算机视觉
深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
本文是目标检测系列文章——YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣。
53438 0
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
21129 59
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
10月前
|
机器学习/深度学习 自然语言处理 语音技术
《探秘卷积神经网络:权重共享与局部连接的神奇力量》
卷积神经网络(CNN)中的权重共享和局部连接是其核心特性。权重共享通过同一卷积核在不同位置使用相同权重,减少参数量并提高泛化能力;局部连接则使每个神经元仅与输入的局部区域相连,专注于提取局部特征。两者相辅相成,显著降低计算复杂度,增强对空间结构的感知,使CNN在图像识别等领域表现出色。
666 8
|
机器学习/深度学习 编解码 PyTorch
CVPR 2023 | 主干网络FasterNet 核心解读 代码分析
本文分享来自CVPR 2023的论文,提出了一种快速的主干网络,名为FasterNet。核心算子是PConv,partial convolution,部分卷积,通过减少冗余计算和内存访问来更有效地提取空间特征。
10206 58
|
编解码 数据可视化 计算机视觉
一文读懂傅里叶变换处理图像的原理 !!
一文读懂傅里叶变换处理图像的原理 !!
803 2
|
供应链 算法 定位技术
运筹优化技术在供应链领域应用介绍
运筹优化技术在供应链领域应用介绍
1244 0
|
存储 编解码 资源调度
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
【OpenCV】—线性滤波:方框滤波、均值滤波、高斯滤波
1047 2
|
程序员 编译器 C语言
C语言中的位运算技术详解
C语言中的位运算技术详解
509 1

热门文章

最新文章