離散的コサイン変換と量子化の具体例

 下の図は256階調の画像の8ドット×8ドットのブロックを示しています。それぞれの数字はそのドットの階調値を表しています。似たような数字が並んでいますが、写真などの画像はこのように、大きな階調の変化は少ないものです。

139144149153155155155155
144151153156159156156156
150155160163158156156156
159161162160160159159159
159160161162162155155155
161161161161160157157157
162162161163162157157157
162162161161163158158158

Fig. 1 元の画像

 次に、これにDCTを施し、「高周波成分と低周波成分がどのくらいの割合で含まれているのか」というデータ(DCT係数といいます)に置き換えます。その結果がFig. 2です。この図では左上が低周波成分を、右下が高周波成分を表します。図を見ると、左上のほうに絶対値の大きな値が集中しているのが分かると思います。これはすなわち、画像中に低周波成分が多いことの現れです。

235.6-1.0-12.1-5.22.1-1.7-2.71.3
-22.6-17.5-6.2-3.2-2.9-0.10.4-1.2
-10.9-9.3-1.61.50.2-0.9-0.6-0.1
-7.1-1.90.21.50.9-0.10.00.3
-0.6-0.81.51.6-0.1-0.70.61.3
1.8-0.21.6-0.3-0.81.51.0-1.0
-1.3-0.4-0.3-1.5-0.51.71.1-0.8
-2.61.6-3.8-1.81.91.2-0.6-0.4

Fig. 2 元の画像に対するDCT係数

 こうして求めたDCT係数を量子化テーブルの各項目で割ってやります。Fig. 3に量子化テーブルの一例を示します。DCT係数の図で高周波成分を表す部分に相当する、右下の領域に大きな値が配置されています。これらの値でFig. 2を割り、商を四捨五入するとFig. 4のようになります。高周波成分を代表する係数はことごとくゼロになっています。これなら、おのおのの値をわざわざ記録する必要がありませんから(「~以降は全部ゼロ」という記録の仕方で十分)、情報量を大きく減らすことができます。

1611101624405161
1212141926586055
1413162440576956
1417222951878062
182237566810910377
243555648110411392
49647887103121120101
7292959811210010399

Fig. 3 量子化テーブル


150-100000
-2-1000000
-1-1000000
00000000
00000000
00000000
00000000
00000000

Fig 4. 量子化されたDCT係数
(Fig.2の値をFig.3の対応する値で割り、四捨五入した)


 では、これを元に戻すとどうなるでしょうか。復元にはまったく逆の手順を取ります。まず、Fig. 4に量子化テーブルFig. 3をかけます。するとFig. 5のようになります。理想的にはFig. 5とFig. 2は同じにならなければいけないのですが、Fig. 4のところで行った整数化のために、完全には一致しません(つまり、Fig. 4の段階がJPEGの不可逆性の原因ということになります)。これに逆DCTを施すと、Fig. 6のような画像データが復元されます。Fig. 6とFig. 1を比べてみると、完全に一致はしていないものの、大まかな傾向は保存されていることが分かります。

2400-1000000
-24-12000000
-14-13000000
00000000
00000000
00000000
00000000
00000000

Fig. 5 復元されたDCT係数


144146149152154156156156
148150152154156156156156
155156157158158157156155
160161161162161159157155
163163164163162160158156
163164164164162160158157
160161162162162161159158
158159161161162161159158

Fig. 6 復元された画像




元のページへ