具体的に、データ圧縮の例を見てみましょう。
データ圧縮は「ロスあり」と「ロスなし」の2つに分けることができる。
文字通り、ロスありだと情報の一部が失われることがありますが、ロスなしではそれがない。
ロスありの方が圧縮率が高い(いっぱい圧縮できる)ので画像や音声のように多少のエラーはokな場合に使われる。
例えば、”aaaaabbbb”という文字列のデータがあるとする。同じ文字が連続しているので、回数をメモしておけば、後から再現できる。つまり、a5b4のように書けば、送信しなければならないデータが圧縮できる(少なくて済む)。
ちなみに、これはランレングス符号化と呼ばれるロスなし圧縮法の一つだ。
映像でも、フレームが連続する時には、データの差分(直前のフレームとの差)を記録する相対符号化という技法がある。この方法では、厳密に差分を記録するかどうかでロスありかなしを決めれる。
頻度依存符号化という有名なロスなしデータ圧縮方法がある。
Unicodeのように全ての記号を16ビットで表現するのでなく、英語ならe,t,aのように使用頻度が高い文字に短いビットパターン(0, 1, 10みたいな)を割り当て、x,q,zのように頻度が低いものは長いビットパターン(1000,1010みたいな)を割り当てる。
このようにして作られる符号化システムをハフマンコードとよぶ。
辞書式符号化もよく使われる圧縮方法だ。
ワードプロセッサ(Wordとか)で文章を圧縮するのに使われる。
ワードプロセッサにはスペルチェックのための辞書がそもそもあるので、圧縮のための辞書として利用できるから都合がいいそうだ。
1つの単語をASCIIやUnicodeといった体系からなる文字の並びと認識するのでなく、辞書への参照として符号化する。(辞書に載ってるn番目の単語、みたいな)
よくある辞書は25000単語くらいなので、0~24999の範囲の整数で識別できる。
JPEGとは?
JPEGはジェイペグと読みます
一言で言うと、JPEGとはよく使われる画像圧縮システムです。
略さず言うと、Joint Photographic Experts Group
カラー写真を圧縮するのによく使われていて、デジカメはほとんどこの形式で圧縮している。
人間の視界の限界を利用した設計になっている。
人間の視覚は色の変化よりも明るさの変化に敏感なので、画像を輝度と色度に分けて考える。
まず、2×2のピクセルの正方形で色度の平均値を出す。
こうすると、輝度を保ったまま、色のデータを1/4に減らせる。
次に、8×8のピクセルのブロックに分割して、各ブロックを単位にして情報を圧縮する。(離散余弦変換ってのを使うそうです。なんかかっこいいですね)
微細な値を0に近似したりするそうです。
この時点で少なくとも1/10に、大抵は1/30に圧縮できるそうです。
もっと詳しく知りたい人へ
「なぜコンピュータの画像はリアルに見えるのか―視覚とCGをめぐる冒険」
https://amzn.to/3wx5gAs
JPEG以外にも、GIF、TIFFなどの形式があります。
コメント