離散コサイン変換
[Wikipedia|▼Menu]
二次元DCTとDFTとの比較。左はスペクトル、右はヒストグラム。低周波域での相違を示すため、スペクトルは 1/4 だけ示してある。DCTでは、パワーのほとんどが低周波領域に集中していることがわかる。

離散コサイン変換(りさんコサインへんかん、: discrete cosine transform、DCT)は、離散信号周波数領域へ変換する方法の一つである。
概要

DCTは、有限数列を、余弦関数数列 cos(nk) を基底とする一次結合(つまり、適切な周波数振幅のコサインカーブの和)の係数に変換する。余弦関数は実数に対しては実数を返すので、実数列に対してはDCT係数も実数列となる。

これは、離散フーリエ変換 (DFT: discrete Fourier transform) が、実数に対しても複素数を返す exp(ink) を使うため、実数列に対しても複素数列となるのと大きな違いである。なお、DFTも偶関数数列に対しては実係数を返す、つまりコサイン成分のみとなるが、DCTはy軸で折り返して偶関数化してDFTすることと等価であり、実際にそう計算することが多い。

DCTでは、係数が実数になる上、特定の成分への集中度があがる。JPEGなどの画像圧縮、AACMP3ATRACといった音声圧縮、デジタルフィルタ等広い範囲で用いられている。

逆変換を逆離散コサイン変換(: inverse discrete cosine transform (IDCT))と呼ぶ。
種類

DCTには標準的な方法が8通りあり、そのうち4つがふつうに用いられる。最も一般的な方法は type-II DCT であり、単にDCTと呼んだ場合これを指すことが多い(以下DCT-II)。同様に、DCT-IIの逆変換である type-III DCT は単に逆DCT (inverse DCT) ないしIDCTと呼ばれることが多い。

DCTに関連する変換法が二つある。一つは離散サイン変換 (DST) であり、実領域で奇関数を用いた離散フーリエ変換 (DFT) と等価である。もう一つの修正離散コサイン変換 (MDCT) は「互いに重なりのある」データのDCTに基づいている。
応用

DCT、特にDCT-IIは信号・画像処理にしばしば用いられる。特に不可逆圧縮に頻用されるが、これはDCTの持つ強力な「エネルギー圧縮」特性による。DCTで変換すると、情報が少数の低周波成分に集中する傾向が生まれ、マルコフ過程の制限に基づく信号について、非相関成分の検出に最適であるKarhunen-Loeve変換に近い。

たとえばDCTはJPEGMJPEGMPEGDV等の画像圧縮に用いられる。これらの画像圧縮では、N × N のブロックに2次元DCT-IIを行い、その結果を量子化し、エントロピー圧縮する。典型的には N = 8 であり、そのブロックの行ごと、列ごとにDCT-IIの式を適用する。その結果得られる 8 × 8 行列は、要素 (0, 0) をDC(直流。周波数が 0)成分とし、行・列とも、添字が大きくなるほど垂直ないし水平方向の空間周波数が高い成分を表す。2次元DCTとDFTとの比較。

音声圧縮に用いられるMDCTAACVorbisMP3も関連した変換法である。

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 X k = 1 2 x 0 + ∑ n = 1 N − 2 x n cos ( π N − 1 n k ) + ( − 1 ) k 2 x N − 1 {\displaystyle X_{k}={\frac {1}{2}}x_{0}+\sum _{n=1}^{N-2}x_{n}\cos \!\left({\frac {\pi }{N-1}}nk\right)+{\frac {(-1)^{k}}{2}}x_{N-1}}

フーリエ変換や他の類似の変換と同じように式全体にかかる定数係数にはばらつきがあり、文献やライブラリによっては、DFTとの対応からこの式を 2 倍したものや、逆変換との対称性から {2/(N?1)}1/2 倍したものによって定義している場合もあるので注意を要する。また、x0 と xN?1 の項を 21/2 倍し、対応して X0 と XN?1 を 2?1/2 倍していることもある。後者の変更によって、ある定数倍を除いて変換は直交変換となるが、このときには実偶関数に対するDFTとは直接の関連を失うことになる。

DCT-Iでは、境界条件から 2(N ? 1) 周期に拡張された関数を考えていることに対応するので、N ? 2 でないと定義できないことに注意されたい。他のタイプのDCTはすべて、N ? 1 であればよい。なお、N = 2 のときは上式の総和の項は消え、X0 = 1/2 (x0 + x1), X1 = 1/2 (x0 ? x1) となる。

DCT-Iは(全体が2倍になる違いを除いて)、2(N ? 1) 個の実数をもつ偶対称関数のDFTとまったく同じものである。たとえば、DCT-Iで N = 5 とし、5個の実数を abcde とすると、これは8個の実数 abcdedcb(偶対称)に対するDFTを 2 で割ったものになる。

DCT-Iは次の境界条件の場合に対応している:

xn が n = 0 に関して偶対称、n = N ? 1 に関して偶対称。

Xk についても同様。

DCT-II X k = ∑ n = 0 N − 1 x n cos { π N ( n + 1 2 ) k } {\displaystyle X_{k}=\sum _{n=0}^{N-1}x_{n}\cos \!\left\{{\frac {\pi }{N}}\left(n+{\frac {1}{2}}\right)k\right\}}

DCT-IIは信号の圧縮分野などの応用では最も広く用いられている方法で、単にDCT (the DCT) と呼ばれることもある。DCT-Iと同様の理由により、これを2倍したものや、(2/N)1/2 倍したものとして定められている場合もあり、また直交化のために X0 の項のみ 2?1/2 倍されている場合もある。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:34 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef