・JPEG圧縮の話 その5
その4の続きです。
画像データをJPEG圧縮するためには、まず
RGB情報からYUV情報に変換します。
次に色差情報であるUVを1/2などにデータ量を削減。
離散コサイン変換を行うために、画像を8×8のブロックに分割します。
ブロック分割したところからの話です。
以下は8×8画素の画像を拡大した図です。
上記画像を数値データで表すと以下のようになります。
これを離散コサイン変換すると、下のマトリクスになります。
この数値は、それぞれの基底画像の係数という意味です。
データ圧縮のため、
離散コサイン変換した数値を割り算して小数点以下を切り捨てます。
ここで、人間の目の特性をまた利用します。
人間の目には周波数が高い画像を認識する能力がうとい、という特性があります。
つまり基底画像で言う、右下のほうの細かい画像の情報は少なくなっても
画質が低下したと感じにくいのです。
なので、次のテーブルのような数値で割り算します。
周波数の高い右下のほうが数値が大きくなっています。
大きな数で割っても問題ないという人間の目の特性に準じたものです。
これを量子化テーブルと言います。
量子化テーブルの数字によって圧縮率は変わります。
大きな数字を入れるほど圧縮率は上がりますが、画質は低下します。
割り算した結果。
情報がほとんど左上に集まっています。
右下のほうはほとんどゼロになってしまいました。
ここで、その2で書いた、冗長性を生かすことが可能です。
下の図のように、数値をジグザグにスキャンして並べれば、
効率よくゼロを並べることができます。
最後に効率よく並べられた数字をハフマン符号化や
ランレングス符号化といった符号化技術を用いて圧縮すれば
画像のデータ量をとても小さくすることができます。
« ・JPEG圧縮の話 その4 | トップページ | 梅雨で雨だけど »
「写真講座」カテゴリの記事
- ・写真編集時の周辺環境について(2024.11.13)
- ・クアッドピクセルのさらに上をいくセンサー(2024.11.02)
- ・彗星を撮った時の設定2(2024.10.30)
- ・彗星を撮った時の設定(2024.10.05)
- ・面内ブレ(ブラー)を防ぐ(2024.09.12)
コメント