1.DFT変換の基本原理
単純な連続関数のフーリエ変換を求めます。
f ( t ) = { A t ∈ [ − w / 2 , w / 2 ] 1 else f(t)= \begin{cases} A& t\in[-w/ 2 、2 付き]\\ 1& \text{else} \end{cases}f ( t )={
あ1t∈[ − w /2 ,w /2 ]それ以外
F ( u ) = ∫ − w / 2 w / 2 A e − j 2 π utdt = − A j 2 π u [ e − j 2 π ut ] − w / 2 w / 2 = − A j 2 π u [ e − j π uw − ej π uw ] \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 / 2あえ_− j 2 π u t dtj 2 π u−A _[ e− j 2 π u t ]− w /2w / 2j 2 π u−A _[ e− jπ u w−eジュウウウウウウウウウウウウウウウウウウw
形式: sin θ = ( ej θ − e − j θ ) / 2 j \sin \theta = (e^{j \theta} - e^{-j\theta}) /2j罪私=( ejθ _−e− j θ )/2j得
F ( u ) = A w sin ( π uw ) π uw F(u) = A w\frac{\sin(\pi uw)}{\pi uw}F ( u )=ああ_πうわ_罪( π u w )
そのイメージは次のとおりです。
通常、フーリエ変換には、変換の大きさを表示するための規則である複素項が含まれています。この振幅はフーリエ スペクトルまたはスペクトルと呼ばれます:
∣ F ( u ) ∣ = AW sin ( π uw ) π uw |F(u)| = AW\frac{\sin(\pi uw)}{\pi uw}∣ F ( u ) ∣=AW _πうわ_罪( π u w )
上の写真から見つけることができます
- 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 + vy / 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 ,そして)e− j 2 π ( μx / M + v y / N )( 1.1 )
- NNN は画像の行を表します
- んんM は画像の列を表します
- f ( x , y ) f(x,y)f ( x ,y )はピクセル値を表します
1.2 逆変換:
f ( x , y ) = 1 MN ∑ u = 0 M − 1 ∑ v = 0 N − 1 F ( u , v ) ej 2 π ( ux / M + vy / 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 )=ミネソタ州1u = 0∑M − 1v = 0∑N − 1F ( u ,v ) ej 2 π ( ux / M + v y / N )( 1.2 )
1.3 オイラーの公式:
ej θ = cos θ + j sin θ (1.3) e^{j\theta} = \cos \theta + j \sin\theta \tag{1.3}ejθ _=コス私+j罪私( 1.3 )
オイラーの公式を使用してフーリエ変換を変形すると、フーリエ変換の複素形式を取得できます。
1.4 周波数領域解析
周波数領域分析は、F (u, v) F(u, v) を分析することです。F ( u ,v )には以下が含まれます:
- ∣ F ( u , v ) ∣ |F(u,v)|∣ F ( u ,v ) ∣ : 振幅
- ej θ ( 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)私は(あなた、v ) : 虚数部
2 次元関数の 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 (あなた、v )+私2 (あなた、v ) ]1/2( 1.4 )
フーリエ スペクトル パス:lg ( 1 + ∣ F ( u , v ) ∣ ) \lg(1+|F(u,v)|)l g ( 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 )=黄褐色− 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 (あなた、v )+私2 (あなた、v )( 1.6 )
1.5 活用特性
2. OpenCVでDFTを実装する関数
- inputArray が 2 チャネルの形式である場合、出力も 2 チャネルである必要があります。チャネル 0 は実数部を表し、チャネル 1 は虚数部を表します。したがって、画像 (グレースケール画像) の場合は、元の画像からチャネル 1 がすべて 0 である 2 つのチャネルを持つ CV_32F2 オブジェクトを構築する必要があります。
- inputArray が単一チャネルの形式の場合、それは実数配列でなければなりませんが、このとき出力も単一チャネルの ccs 形式の複素配列になり、これを使用できます。