元画像

16*16ピクセルで 256色(1byte)の画像です。

8*8ピクセルのブロックに分割します。おのおのの画像をクリックすると変換例が出ます。

変換例を作成したExcelファイルはここからダウンロードできます。
元画像の数値データは近藤正芳のウェブページのホームページhttp://www.kk.iij4u.or.jp/~kondo/bmp/index.html(2018年02月03日現在 閲覧不可)BMPファイルフォーマットの拙作プログラムdumpbmp.cをコンパイルすると任意の画像についてRGBの数値データを作成できます。

DCT(Discrete Cosine Transform)変換

水平DCT

元画像を水平方向の8ピクセル分についてDCT変換を行います。DCT変換はフリーエー変換の一種です。
フリーエー変換は、任意の波形はサインカーブの合成で表すことができることを応用したものであり、任意の波形を周波数成分に変換します。
画像は高域成分ほど少なくなります。

垂直DCT

水平DCTにより、左方向に低域が右方向に高域が集まります。画像は高域が少ないため、右方向の方が小さい値となります。
垂直DCTは、水平方向DCTの結果の縦方向8ピクセル分についてDCT変換を行います。この変換により左上に低域が、右下に高域が集まります。
したがって左上に大きさ値が、右下に小さな値が集まります。したがって、大きな値に長いビット長を短い値に短いビット長を割り当てれば圧縮することができます。

dct_a.svg