■フーリエ解析(12): 2次元高速フーリエ変換(FFT)
              〜 画像データ処理の例 〜

 関数 f(x, y)の2次元離散フーリエ変換(DFT)、離散フーリエ逆変換(IDFT)は次式で定義されます。
  F (k, l) = x=0M-1y=0N-1 f (x, y)WM xk WN yl

  f (x, y) = (1/(MN))k=0M-1l=0N-1 F (k, l)WM -xkWN -yl

  ここで、
   WM = e-j2π/M,    WN = e-j2π/N

 2次元の離散フーリエ変換、離散フーリエ逆変換ではデータ量 N に対して計算量はほぼ N4に比例して膨大となります。 そこで、通常は1次元離散フーリエ変換の高速演算法である高速フーリエ変換(Fast Fourier Transform:FFT)を2重に用いた2次元FFTにより計算します。

 次のアプレットは、画像データを2次元信号 f(x, y)と考えて、2次元のFFT および IFFTを行って結果を表示するものです。 演算時間の比較のため、通常のフーリエ変換(DFT、IDFT)、離散コサイン変換での計算もできます。


 ●2次元FFTの考え方
 2次元DFTの式:
  F (k, l) = x=0M-1y=0N-1 f (x, y)WM xk WN yl

について、右辺のyに関する和を展開すると次のようになります。
  F (k, l) = WN 0x=0M-1 f (x, 0)WM xk + WN lx=0M-1 f (x, 1)WM xk +

       … + WN l(N-1)x=0M-1 f (x, N-1)WM xk

       = WN 0F0 + WN lF1 + … + WN l(N-1)FN-1

   ここで、 Fi = x=0M-1 f (x, i)WM xk

 Fiは、第i列における1次元DFTであり、従って2次元DFTはy一定の各列における1次元FFTを実行して得られる行列の各行に対して1次元FFTを行うことで実現できることがわかります。
 N x Nピクセルの画像に対する2次元DFTの計算量はN4に比例しますが、これを2次元FFTで行うと計算量は 2N2log2N に削減されます。

 下表はデータ量N と両者による計算量の比較です。

データ量 N による計算量の比較(概略)
 データ量 N  計算量(2次元FFT/2次元DFT)
1001/750
2001/2,600
5001/14,000
10001/50,000
20001/180,000
50001/1,000,000


[参考文献]
 1.Wikipedia:高速フーリエ変換
 2.末松良一、他: 画像処理工学、コロナ社(2001)

フーリエ解析(13): フーリエ変換の医療分野への応用例 〜 CTスキャンの原理と体験 〜
ホーム