浅谈Opencv中的傅立叶变换

本文介绍了傅立叶变换在图像处理中的应用,特别是如何在OpenCV中使用傅立叶变换进行图像分析。文章详细讲解了1D和2D离散傅立叶变换及其逆变换的原理和计算,探讨了傅立叶变换如何加速图像卷积,并展示了如何在OpenCV中实现这一过程。
摘要由CSDN通过智能技术生成

本文同步发表于个人博客

前言

最近在搞图像处理的大作业,做了一个图像处理软件,在实现滤波时需要用到傅立叶变换把图像从时域转移到频率域,从而加速图像卷积。感觉网上相关资料颇少而且不够完整,并且为了防止以后自己忘记,我就决定开一个博客简要阐述并记录一下 O p e n c v Opencv Opencv 中傅立叶变换的原理及使用!

前置芝士

傅立叶变换

在图像处理中,我们经常需要使用离散傅立叶变换 ( D F T ) (DFT) (DFT) 把图像从时域转移到频率域进行分析。低频分量对应的是图像中变化平缓的部分,如人的皮肤,大块面积的相同颜色等;高频分量对应的是图像中变化较快的部分,如边缘的轮廓,图像中的噪声等。

下面举个简单的例子演示一下。

原图
低频分量
高频分量

一维离散傅立叶变换 ( 1 D − D F T ) (1D-DFT) (1DDFT)

给出长度为 n n n 的向量 f f f,令 F = D F T ( f ) F=DFT(f) F=DFT(f),则有:

F ( u ) = 1 n ∑ k = 0 n − 1 f ( k ) e − j 2 π u n k F(u)=\frac{1}{n}\sum\limits_{k=0}^{n-1}f(k)e^{-j\frac{2\pi u}{n}k} F(u)=n1k=0n1f(k)ejn2πuk

在介绍快速傅立叶变换优化多项式乘法的老博客中(式子形式不太一样),我们提到这个式子可以理解为将 n n n 次单位根 ω n u \omega_n^u ωnu 代进以 f f f 为生成函数的 n − 1 n-1 n1 次多项式中。

而其物理意义其实是用 n n n 个不同频率的分量来代表原向量 f f f

一维逆离散傅立叶变换 ( 1 D − I D F T ) (1D-IDFT) (1DIDFT)

给出长度为 n n n 的向量 F F F,令 f = I D F T ( F ) f=IDFT(F) f=IDFT(F),则有:

f ( u ) = ∑ k = 0 n − 1 F ( k ) e j 2 π u n k f(u)=\sum\limits_{k=0}^{n-1}F(k)e^{j\frac{2\pi u}{n}k} f(u)=k=0n1F(k)ejn2πuk

本质上是 D F T DFT DFT 的矩阵(范德蒙矩阵)求逆后的矩阵和 F F F 相乘。

1 D − D F T 1D-DFT 1DDFT 的计算

朴素的计算时间复杂度是 O ( n 2 ) O(n^2) O(n2) 的,利用单位根的性质可以分治计算做到 O ( n log ⁡ n ) O(n\log n) O(nlog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值