ブロックノイズのできるわけ(2) 〜離散コサイン変換1〜

 さて、前回はMPEG-2やJPEGでブロックノイズのできるわけを大雑把にお話しいたしました。今回はその中の「画像をブロックに分割し、それぞれのブロックを『ある64枚の8×8ピクセル画像を重ね合わせる』ことで表現する」という部分にフォーカスを当てて書いてみたいと思います。

 とりあえず以下の画像を圧縮してみることにしましょう。説明を簡単にするために、カラーではなく白黒の写真を使います。



 まず、この画像を8×8ピクセルのブロックに分割します。



 緑の線で区切られたひとつひとつの四角が8×8ピクセルです。このブロックをひとつひとつ処理していきます。

 ではまず、一番左上のブロックに注目してみましょう。

 これです。



 これを、「ある64枚の8×8ピクセル画像」を「重ね合わせ」て表現します。「ある64枚の8×8ピクセル画像」というのは、以下の画像です。



 なんだかよくわからない画像ですが、実は、先程注目してみた一番左上のブロックは、(0, 0)の画像を1062.6枚、(1, 0)の画像を-15.84枚、(2, 0)の画像を2.87枚...という具合に重ね合わせていったものと同じになります。
 「枚」なのに小数だったり負の数だったりするのはおかしいと思われるでしょうが、これについては後で説明します。
 この「何枚」という数字を8×8のマトリクスで表すと、次のようになります。



 さて、このマトリクスをよく見ると、左上のあたりは数字の絶対値が大きいですが、右下にいくにつれどんどん小さくなっていきます。
 左上のあたりの数字は必要だけれど、右下のあたりは「みんな0」ということにして無視しても画像の見た目は変わらないんじゃないか...という気がしませんか?
 なんだか「圧縮」ができそうな雰囲気です。

 ...と言っても、どうやって「(0, 0)の画像を1062.6枚」というように「枚数」がわかるのか、そもそもあの64枚の画像はなんなのか、ということを説明していないので、まだ何も説明していないようなものですが。

 今回は画像をたくさん載せたため、長くなってしまいました。引っ張ってすみませんが、また次回。