ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

JPEG についてまとめ

まず、DCT ってのはフーリエ変換のように波形を周波数分解するものらしい。
なんだかよくわかんないけどとにかくあの公式にぶち込むだけでいい。簡単やね。


JPEG では輝度情報と色差情報で分離して、輝度のほうに視覚が敏感なのを利用して、
色差情報は4画素で1つのデータを共有する。ダウンストリームってやつだね。


そして輝度・色差別々で DCT の式に叩き込めば、両者とも周波数分解されるらしい。
そして、大きく分けると直流成分と交流成分に分かれるわけですね。


そこで各周波数ごとにスケールを指定して量子化する。このときに、高周波ほど視覚で
捕らえにくいことを利用して、高周波ほど荒く、低周波ほど細かく量子化する。


直流成分は、直前のブロックとの差分値で可変長符号化しちゃう。
これは隣のブロックとの相関性が期待できるからなんだろうか。


交流成分は 8x8 に広がってるから、ジグザグに回収して1次元データに落とした上で、
0 のランレングス値&値 の形で可変長符号化。このときに、ある点以降全部 0 ってのを
考慮に入れると結構データが削れるっぽいね。


あと算術符号を使う方式とか可逆圧縮もあるらしいけど今回はパス。
一般的な JPEGアルゴリズムだけ理解したのでよしとしよう。