图像处理中的二维傅里叶变换

图像处理中的二维傅里叶变换

问题来源是对彩色图像进行压缩时得出的傅里叶系数的图像如何解释,导入图片,转化为灰度图片:
#彩色图片一般是由RGB组成,其实就是3个二维数组叠加而成,当R=G=B时,彩色图片就会变成一种灰度颜色,所以灰度颜色的图片其实就是一个二维数组 #灰度化处理总共有三种方法:最大值法、平均值法、加权平均法 A = imread(os.path.join('..','DATA','jelly.jpg')) Abw = np.mean(A, -1); # 转化为灰度图像也可以通过cv2库或者plt, #0:压缩行,对各列求均值,返回 1* n 矩阵,axis =1 :压缩列,对各行求均值,返回 m *1 矩阵

接下来利用快速傅里叶变换,求解二维矩阵(每个变量是灰度值)的傅里叶系数,将所得的绘制在对数坐标系中:At = np.fft.fft2(Abw)#计算二维的傅里叶变换 F = np.log(np.abs(np.fft.fftshift(At))+1) # 将图像中的低频部分移动到图像的中心;将 FFT 置于对数刻度上。得到的图像如下:
下面介绍一下二维傅里叶变换:连续的傅里叶变换为: F ( u , v ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( x , y ) e − 2 π i ( u x + v y ) , d x , d y F(u,v) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(x,y) e^{-2\pi i(ux+vy)} , dx , dy F(u,v)=∫−∞∞∫−∞∞f(x,y)e−2πi(ux+vy),dx,dy离散的傅里叶变换为: F ( u , v ) = 1 M N ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − i 2 π ( u x / M + v y / N ) F(u,v)=\frac{1}{\sqrt{MN}}\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)\mathrm{e}^{-i2\pi(ux/M+vy/N)} F(u,v)=MN 1x=0∑M−1y=0∑N−1f(x,y)e−i2π(ux/M+vy/N)各变量的具体意义如下:
f ( x , y ) f(x,y) f(x,y):输入图像的灰度矩阵,即空间域中的图像,也就是灰度值。
F ( u , v ) F(u,v) F(u,v):变换后的复矩阵,表示频率域中的图像。其实部和虚部分别代表频率分量的幅度和相位。
x , y x,y x,y:空间域中的坐标,代表图像中的像素位置,取值范围都是从 0 ∼ M − 1 0 \sim M-1 0∼M−1, 0 ∼ N − 1 0\sim N-1 0∼N−1。
u , v u,v u,v:频率域中的坐标,代表图像中的频率分量。
M , N M,N M,N:图像的尺寸,即灰度矩阵的宽度和高度。
i i i:虚数单位。
u u u和 v v v是频率域中的坐标变量,它们分别代表了图像在水平方向和垂直方向上的频率分量。这些频率分量是图像中不同空间频率的正弦波和余弦波的叠加结果, u u u和 v v v的取值范围和 x , y x,y x,y相同。

下面说一下具体意义:傅里叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数。图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。

图像的频谱是图像灰度变化强度的指标,是灰度在平面空间中的梯度。 二维傅里叶变换算法的运行速度很慢的,算法的时间复杂度为O(n^ 4)。在实际应用中,由于直接计算二维离散傅里叶变换的计算量较大,通常会采用快速傅里叶变换(Fast Fourier Transform, FFT)算法来提高计算效率。FFT算法通过减少不必要的计算来加速DFT的计算过程,是图像处理中常用的傅里叶变换实现方法。此外,在图像处理中,还经常对DFT的结果进行中心化处理(即将频率域的原点移动到矩阵的中心),以便于观察和分析频谱的对称性。中心化后的频谱图通常能够更直观地展示图像的频率分布特征。

如上图右所示,利用快速傅里叶变换并且将低频部分移动到中心。

相关推荐
结衣结衣.5 分钟前
python中的函数介绍
java·c语言·开发语言·前端·笔记·python·学习
茫茫人海一粒沙8 分钟前
Python 代码编写规范
开发语言·python
林浩2339 分钟前
Python——异常处理机制
python
数据分析螺丝钉35 分钟前
力扣第240题“搜索二维矩阵 II”
经验分享·python·算法·leetcode·面试
小蜗笔记1 小时前
在Python中实现多目标优化问题(7)模拟退火算法的调用
开发语言·python·模拟退火算法
TANGLONG2221 小时前
【C语言】数据在内存中的存储(万字解析)
java·c语言·c++·python·考研·面试·蓝桥杯
魏大橙2 小时前
Fastjson反序列化
开发语言·python
立黄昏粥可温2 小时前
Python 从入门到实战34(实例2:绘制蟒蛇)
开发语言·python
柚乐果果2 小时前
数据分析实战简例
java·大数据·python
luthane2 小时前
python 实现djb2哈希算法
python·算法·哈希算法