python 二维FFT

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 二维FFT相关的知识,希望对你有一定的参考价值。

参考技术A 二维FFT常用在图像处理上,首先要能理解二维FFT的意义,否则很难明白它到底是怎么工作的。

第一列是原图和对应的频率信息,第二列是去除低频部分后,FFT逆变换得到的图像。第三列是去除高频部分后FFT逆变换得到的图像。
从第二列可以看出高频贡献了图像的细节。从白到黑的边界保留了下来。而原图中大片的白与大片的黑在这个图中没什么区别。
第三列中保留了原图中的亮部与灰部,而由黑到白的临界线却很模糊。细小的白线黑线也没能显示。所以低频贡献了图像的明暗。

2.工作原理理解

二维FFT就是先对行做次一维FFT,这样每个元素都是关于行频率信息了,然后再对列做一维FFT,这样每个元素都包含了行和列的频率信息。每个元素都是个复数,取绝对值可得到振幅,从实部与虚部的比值可等到相位,在二维矩阵的位置信息包含了频率大小和方向。方向在一维FFT中是不用考虑的。
FFT2的结果也是正频率从0到高然后负频率从高到0.fftshift()之后会将低频放到中间位置。
第一幅图的频谱是中间一条白线,也就是说许多个正弦波沿横向传播。纵向上没有变化。
第三幅图的频谱是十字形加一条从左下角到右上角的直线。说明原图在横向,纵向都有变化,变化的方向从左下角到右上角。
从中心到频谱图上某一点构成的向量方向就是这个波传播的方向。
正负对称才能消除虚部,这点与一维FFT原理一致。

以上是关于python 二维FFT的主要内容,如果未能解决你的问题,请参考以下文章

python怎么把图片生成二维码?

怎样用python解析二维码

python 二维FFT

一些Python中的二维数组的操作方法

如何在python中创建二维列表

python二维数组如何挑选出一定范围的数值?