DCT 【Discrete Cosine Transform】
離散コサイン変換

離散コサイン変換(りさんコサインへんかん、英: discrete cosine transform、DCT)は、離散信号を周波数領域へ変換する方法の一つである。
概要
DCTは、有限数列を、余弦関数数列 音声圧縮に用いられるMDCT、AAC、Vorbis、MP3も関連した変換法である。
DCTは、偏微分方程式をスペクトル法で解くときにも広く使われる。その場合、配列の両端での境界条件の偶奇性に対応して、異なるDCTの変種が使われる。
DCTはまた、チェビシェフ多項式とも密接に関係しており、高速DCT算法(下記)はクレーンショー・カーチス数値積分則のような、任意の関数についてのチェビシェフ近似に用いられる。
フーリエ変換やそれに類似の変換(以下、類フーリエ変換とよぶ)のように、離散コサイン変換 (DCT) も関数あるいは信号を異なる周波数と振幅をもつ三角関数の和として表現する。また、DCTは、離散フーリエ変換 (DFT) と同じく、離散的なデータ点からなる有限の関数に対して施される。一見してそれとわかるDCTとDFTとの違いはDCTがコサイン(余弦)関数のみを使うのに対してDFTがコサインとサイン(正弦)関数の両方を(複素数の指数関数の形式で)使うという点である。しかし、この見かけの違いはもっと本質的な違いの帰結でしかない。すなわち、DCTとDFTあるいは他の関連する変換は境界条件において異なっているということである。
有限の定義域をもつ関数に施される類フーリエ変換、すなわちDFTやDCTやフーリエ級数は、暗黙のうちにその定義域の外部に関数を「拡張」して定義しているのだと考えることができる。つまり、ある関数 f(x) を一旦三角関数の和として表現してしまうと、任意の x に対し、それがたとえ元の関数 f(x) が定義されていない x であったとしても、その x におけるその三角関数の和を計算できる。DFTやフーリエ級数では元の関数の周期的な拡張がなされていると考えることができる。DCTでは、(離散的でない)コサイン変換と同様に、元の関数を偶関数に拡張することを意味する。
しかしながら、DCTは「有限」で「離散的」な数列に対して施されるものであるから、連続なコサイン変換にはない2つの微妙な問題が引き起こされる。まず、有限の点で定義された関数は定義域に左端と右端(すなわち最小の添字と最大の添字)とをもつので、その両方それぞれで偶対称であるか奇対称であるかを指定しなければならない。次に、関数の定義域は離散的であるので、どの位置に関して関数が偶/奇対称であるのかを指定しなければならない。例えば、abcd という均等に離れた4つの点の列を考えてみよう。そして例えば、左の境界で偶対称であると指定したとしよう。このときどの位置で対称なのかという微妙な相違が生ずる。すなわち、データは点 a に関して偶対称であって偶関数への拡張は dcbabcd なのだろうか、それともデータは a とその前の点との中間点に関して偶対称であって拡張は dcbaabcd であるのか(a が繰り返すのか)?
これら2重の選択が、DCTと離散サイン変換 (DST) との標準的なさまざまな変種すべてを生じさせることになる。各々の境界は偶対称であるか奇対称であるかどちらかであることができ(これは2つの境界それぞれに2つの選択肢を与える)、さらに、各々の境界であるデータ点に関して対称か、2つのデータ点の中間点に関して対称かどちらかであることができる(同様に、これは2つの境界それぞれに2つの選択肢を与える)。結局、2 × 2 × 2 × 2 = 16 種類の選択肢がある。これらの選択肢のうち左の境界が偶対称であるものがDCTとよばれ、選択肢の半分の8つのタイプに対応する。残りの半分がDSTの8つのタイプとなる。
これらは境界条件が異なるだけで施される変換はすべて離散フーリエ変換であるが、これらの違いは変換を応用する際にその用途に強く影響し、さまざまなDCTの変種に対してそれぞれに有用な特性を与えている。最も直接的には、偏微分方程式をスペクトル法で解くために類フーリエ変換を用いるとき、境界条件は解かせることになる問題の一部として直接指定される。あるいはまた、(DCTのタイプIVに基づいている)修正離散コサイン変換 (modified DCT, MDCT) に対しては、境界条件はMDCTの本質的な特性である時間領域のエイリアシングの消去に密接に関係している。もっと微妙なあり方ながら、境界は任意の類フーリエ級数において収束の速さに影響しているので、境界条件は画像や音声圧縮に対してDCTを有用なものとしているいわゆる「エネルギー圧縮」の特性を与える原因となっている。
特に、関数に不連続性があればフーリエ級数の収束率を減少させることはよく知られている。同じ原理は信号圧縮に対して類フーリエ変換の有用性を決定している。よりなめらかな関数はそれをより正確に表すために必要となるDFTやDCTの係数がより少なくてすみ、より圧縮できることになる(ここで、「なめらかさ」について語るためにDFTやDCTをそれぞれ関数のフーリエ級数とコサイン級数の近似だとみなしている)。しかし、DFTがもつ非明示的な周期性は境界において通常不連続性を作り出すことを意味する。任意に選んだ信号の断片において左と右の境界の値が共に同じ値を持つということはめったに起こることではない。対照的に、「両方」の境界が「常に」偶対称であるDCTはこれらの境界において連続した拡張を与える(ただし一般にはその傾きは不連続である)。これがなぜDCTが、とりわけ(両方の境界が偶対称である)DCTのタイプ I, II, V, VI が一般にDFTよりも信号圧縮でよい成績を収めるのかという理由である。応用上は、こうした用途には一部には計算の容易さからDCT-IIが最も好まれている。
形式的には、1次元のDCT F: RN → RN は、ある可逆な線形写像(ただし、R は実数の集合)、または同じことであるが、ある正則な N × N 正方行列であって、以下に示された式で表される。ただし、これらの式では、N 個の実数列 x0, ..., xN−1 が N 個の実数列 X0, ..., XN−1 に変換される。
非形式的概説
形式的定義
DCT-I
- Discrete Cosine Transformのページへのリンク