1.DFT变换的基本原理
求一个简单连续函数的傅里叶变换:
f ( t ) = { A t ∈ [ − w / 2 , w / 2 ] 1 else f(t)= \begin{cases} A& t\in[-w/2, w/2]\\ 1& \text{else} \end{cases} f(t)={
A1t∈[−w/2,w/2]else
F ( u ) = ∫ − w / 2 w / 2 A e − j 2 π u t d t = − A j 2 π u [ e − j 2 π u t ] − w / 2 w / 2 = − A j 2 π u [ e − j π u w − e j π u w ] \begin{align} F(u) =& \int_{-w/2} ^{w/2} Ae^{-j2\pi ut}dt \\ =& \frac{-A}{j2\pi u}[e^{-j2\pi ut}]_{-w/2} ^{w/2} \\ =&\frac{-A}{j2\pi u}[e^{-j\pi uw} - e^{j\pi uw}] \end{align} F(u)===∫−w/2w/2Ae−j2πutdtj2πu−A[e−j2πut]−w/2w/2j2πu−A[e−jπuw−ejπuw]
又因为: sin θ = ( e j θ − e − j θ ) / 2 j \sin \theta = (e^{j \theta} - e^{-j\theta}) /2j sinθ=(ejθ−e−jθ)/2j得
F ( u ) = A w sin ( π u w ) π u w F(u) = Aw\frac{\sin(\pi uw)}{\pi uw} F(u)=Awπuwsin(πuw)
图像为:
通常,傅里叶变换中包含复数项,为显示变换幅值的一种约定。这个幅值称为傅里叶频谱或频谱:
∣ F ( u ) ∣ = A W sin ( π u w ) π u w |F(u)| = AW\frac{\sin(\pi uw)}{\pi u w} ∣F(u)∣=AWπuwsin(πuw)
通过上图可以发现
- F ( u ) F(u) F(u) 和 ∣ F ( u ) ∣ |F(u)| ∣F(u)∣都与盒子函数的宽度W成反比
- 到原点距离越大,旁瓣的高度岁原点距离的增加而减小
- 函数想u值得正方向和负方向无限延展
1.1 正变换:
F ( u , v ) = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ( x , y ) e − j 2 π ( μ x / M + v y / N ) (1.1) F(u,v) = \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}f(x,y)e^{-j2\pi(\mu x/M + vy/N)} \tag{1.1} F(u,v)=x=0∑M−1y=0∑N−1f(x,y)e−j2π(μx/M+vy/N)(1.1)
- N N N 表示图像的行
- M M M表示图像的列
- f ( x , y ) f(x,y) f(x,y) 表示像素值
1.2 反变换:
f ( x , y ) = 1 M N ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) e j 2 π ( u x / M + v y / N ) (1.2) f(x,y)=\frac{1}{MN}\sum_{u=0}^{M-1}\sum_{v=0}^{N-1}F(u,v)e^{j2\pi(ux/M+vy/N)} \tag{1.2} f(x,y)=MN1u=0∑M−1v=0∑N−1F(u,v)ej2π(ux/M+vy/N)(1.2)
1.3 欧拉公式:
e j θ = cos θ + j sin θ (1.3) e^{j\theta} = \cos \theta + j \sin\theta \tag{1.3} ejθ=cosθ+jsinθ(1.3)
利用欧拉公式对傅里叶变换变形,可以的到一个傅里叶变换的复数形式
1.4 频域分析
频域分析就是分析 F ( u , v ) F(u,v) F(u,v) 包括:
- ∣ F ( u , v ) ∣ |F(u,v)| ∣F(u,v)∣: 幅值
- e j θ ( u , v ) e^{j\theta(u,v)} ejθ(u,v) : 相角
- R ( u , v ) R(u,v) R(u,v) : 实部
- i I ( u , v ) iI(u,v) iI(u,v): 虚部
二维函数的f幅值谱:
∣ F ( u , v ) ∣ = [ R 2 ( u , v ) + I 2 ( u , v ) ] 1 / 2 (1.4) |F(u,v)| = [R^2(u,v) + I^2(u,v)]^{1/2} \tag{1.4} ∣F(u,v)∣=[R2(u,v)+I2(u,v)]1/2(1.4)
傅里叶谱通过: lg ( 1 + ∣ F ( u , v ) ∣ ) \lg(1+|F(u,v)|) lg(1+∣F(u,v)∣)表示
相位:
φ ( u , v ) = tan − 1 [ I ( u , v ) / R ( u , v ) ] (1.5) \varphi(u,v) = \tan^{-1}[I(u,v)/R(u,v)]\tag{1.5} φ(u,v)=tan−1[I(u,v)/R(u,v)](1.5)
能量谱:
E ( u , v ) = R 2 ( u , v ) + I 2 ( u , v ) (1.6) E(u,v) = R^2(u, v) + I^2(u,v)\tag{1.6} E(u,v)=R2(u,v)+I2(u,v)(1.6)
1.5 共轭性质
2. OpenCV中实现DFT的函数
- 当inputArray 为两个通道的形式时,输出也必须为两个通道。通道0表示实部,通道1表示虚部。因此如果为图像(灰度图像),则需要原图构造一个通道1全为0的两个通道的CV_32F2对象。
- 当inputArray为单个通道的形式是,必须是一个实数组,此时输出也单个通道上ccs格式的复数组,此时可用