離散コサイン変換
フーリエ変換やそれに類似の変換(以下、類フーリエ変換とよぶ)のように、離散コサイン変換 (DCT) も関数あるいは信号を異なる周波数と振幅をもつ三角関数の和として表現する。また、DCTは、離散フーリエ変換 (DFT) と同じく、離散的なデータ点からなる有限の関数に対して施される。一見してそれとわかるDCTとDFTとの違いはDCTがコサイン(余弦)関数のみを使うのに対してDFTがコサインとサイン(正弦)関数の両方を(複素数の指数関数の形式で)使うという点である。しかし、この見かけの違いはもっと本質的な違いの帰結でしかない。すなわち、DCTとDFTあるいは他の関連する変換は境界条件において異なっているということである。
有限の定義域をもつ関数に施される類フーリエ変換、すなわちDFTやDCTやフーリエ級数は、暗黙のうちにその定義域の外部に関数を「拡張」して定義しているのだと考えることができる。つまり、ある関数 f(x) を一旦三角関数の和として表現してしまうと、任意の x に対し、それがたとえ元の関数 f(x) が定義されていない x であったとしても、その x におけるその三角関数の和を計算できる。DFTやフーリエ級数では元の関数の周期的な拡張がなされていると考えることができる。DCTでは、(離散的でない)コサイン変換と同様に、元の関数を偶関数に拡張することを意味する。
しかしながら、DCTは「有限」で「離散的」な数列に対して施されるものであるから、連続なコサイン変換にはない2つの微妙な問題が引き起こされる。まず、有限の点で定義された関数は定義域に左端と右端(すなわち最小の添字と最大の添字)とをもつので、その両方それぞれで偶対称であるか奇対称であるかを指定しなければならない。
例えば N = 5 のときの実数列を abcde とすれば、2N = 10 個の実数列 abcdeedcba となる。両端の要素 a, e が繰り返される点がDCT-Iとは異なっている。ただし半分のシフトを行っているため、DFTとの対応を考える場合にはさらに倍にして偶数の添字の要素を 0 とした 4N 個の実数列をとる。すなわち、4N 個の実数列 y0, ..., y4N−1 を、
y2n = 0 (0 ≤ n < 2N である n について),
y2n+1 = y4N−2n−1 = xn (0 ≤ n < N である n について)
を満たすものとすると、DCT-IIはこの実数列 yn をDFTで変換し 2 で割ったものと一致する。
DCT-IIは次の境界条件に対応する:
xn が n = −1/2 に関して偶対称、n = N − 1/2 に関して偶対称。
Xk が k = 0 に関して偶対称、k = N に関して奇対称。