関数 f(x, y)の2次元離散フーリエ変換(DFT)、離散フーリエ逆変換(IDFT)は次式で定義されます。●2次元FFTの考え方
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次元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) 100 1/750 200 1/2,600 500 1/14,000 1000 1/50,000 2000 1/180,000 5000 1/1,000,000