| Japanese | English |
第14回LSIデザインコンテスト・イン沖縄 設計仕様書 - 2
2. 圧縮モジュールと伸長モジュール
この章では圧縮モジュールと伸長モジュールのブロック図の詳細について説明します。
2.1. 圧縮モジュール
圧縮モジュールは図2のように離散コサイン変換(DCT: Discrete Cosine Transform)と量子化器(Quantizer)ブロックで構成されています。このモジュールでは、 入力画像データは8×8ピクセルで処理されます。そのため、8点の2次元DCT変換が必要となります。この8×8ピクセルのサイズは画質と計算の 複雑性との兼ね合いのため、JPEGやMPEGの国際標準により定義されています。
DCTサブブロックはピクセル間の冗長を縮小、もしくは除去することにより、相関を除去します。 DCTでは空間領域から数点を取り、それらを周波数領域へ変換します。このDCTは可逆であるので、変換の逆の処理を行えば元の画像となります。
この段階では、圧縮は完了していません。大切なことはDCT係数のデータが重要度の条件に従って構成されているということです。 最も重要度の高い低周波数成分はDCT係数の左上に割り当てられます。一方、除去される高周波数成分はDCT係数の右下に割り当てられます。
DCT処理に入る前に、8×8ピクセルデータは値域[0,2P-1]の符号無し整数から値域[-2P-1,2P-1-1] の符号付き整数に変換されます。ここで、Pはビット数/ピクセル値 (Y, Cr or Cb)です。この処理はピクセル値から2P-1を引くことにより実行されます。 もし、8ビット/ピクセル値であれば、128引くことによりピクセル値[0-255]を[-128,127]へ変換します。
全てのDCT係数がその周波数に基づいて構築されると、画像圧縮の次のステップに移る準備が整います。次の処理は量子化です。 これは画像圧縮の非可逆処理で、画像データから最も重要度の小さい情報を除去します。量子化処理はDCT係数を量子化係数で除算することです。そのため、量子化モジュールは 量子化テーブルであらかじめ定義された係数を必要とします。
量子化ブロックは、人間の目が画像の高周波成分を知覚できないということを利用しています。これらのデータのいくつかは 視認可能な誤りを発生させることなく廃棄される場合もあります。このように、量子化の目的はほとんどの高周波係数を0に近づけることです。より多くの高周波係数を0にすることで より良い圧縮効率を得ることができますが、結果として圧縮された画像の画質は劣化します。
このモジュールにおける各ブロックの処理の詳細は3章で示します。
図2 圧縮モジュールイメージ
2.2. 伸長モジュール
伸長して元の画像を再構成するため、圧縮された画像のビットストリームデータは図3のように伸長モジュールを通ります。伸長モジュールの 出力において符号無し整数[0-255]に戻すために出力データは128加算します。伸長モジュールは圧縮モジュールと対称のブロックで構成されます。
図3 伸長モジュール