2.圧縮の原理

ファイルをひとまとめにすることは難しいことではないので説明を省かせていただきます。

それではファイルの圧縮について説明したいと思います。基本的には冗長性を利用して圧縮します。例えば

「ラララララー」
をという言葉の場合、「ラ」が5回続くので、
「ラ×5回ー」
と表現します。 5回繰り返すという定義をどうするかという問題がありますが、原理的にはこうして圧縮します。これをランレングス法といいます。

5文字連続ですと圧縮効果も出てきますが、2、3文字だと圧縮効果は低くなります。そこで繰り返しの単位を1文字単位ではなく複数の文字の組み合わせまで拡張する事にします。

This_is_a_pen.」 (わかりやすくするためにスペースの代わりに _ :アンダースコア を使っています)
という文で考えます。よく見ると「is_」が2回繰り返しています。
そこで
Th(is_)×2回a_pen.
と表現します。こうすると繰り返しは1回ですが3文字分圧縮できます。

しかしこのようにうまく繰り返しの単位が続けば良いのですが、そうも行かないので「辞書」と言う物を導入します。 今度は

This_is_his_pen.
という文です。やはり「is_」が3回見られますので、
Th##h#pen.」(辞書:#="is_")
と表現します。今度は繰り返しが3回になりますので大分圧縮できました。長いデータになればこういう組み合わせも沢山出てきますので、圧縮効率は更に上がると考えられます。これをLZW法と言います。

もう1つ重要な圧縮方式があります。ハフマン法といいます。これはLHAなどでも用いられている方式です。
基本的な原理は

出現頻度の高いコードに少ないビット数を割り当てて、出現頻度の低いコードに多いビット数を割り当てる
ということです。
ところで突然出てきたコードビット数とは何でしょうか?コンピュータのデータは基本的には 1バイト=8ビット という単位で取り扱われます。8ビットですので256通りの表現ができます。これをコードと呼びます。(例:文字コードなど) そして、ビット数は2進法に直したときの桁数のことでして、通常の1バイト=8ビットですし、CPUなどは16ビット、32ビットといった処理幅を持ちます。
では説明したいと思うのですが、私の理解力と文章力の不足でコードとビットの説明が不十分ですので、別の例で説明させていただきます。
現在アマチュア無線でしか使われていないと思われるモールス符号。ここにハフマン法のルーツを求めることができます。英語の E は一番出現頻度の高い文字として有名ですが、その符号は「・」(短音1つ)となっています。その他の母音文字を見ても
AEIUO FLQY
・−・・・・−−−− ・・−・・−・・−−・−−・−−
と比較的短くて簡単な符号となっています。一方F L Q Yの様な符号は覚えにくく (対母音比@hide) 符号も長めです。しかし、出現頻度の少ない文字なのであまり問題となりません。つまり多く出現する文字を短くしておくことで全体の符号の数を減らせるように作られています。ちなみに和文モールスはその辺を無視して作っているとしか思えません(^_^;)
実際のハフマン法は8ビットの256通りのデータに対して、出現頻度の高いものは3〜4ビット、低いものは10数ビットで表現するように直して、データ全体のビット数を減らせるように処理されます。もちろんモールス符号のように対応表が必要になりますが、それは圧縮の際に自動的に作られます。

多くの圧縮方式はこのような原理に基づいて圧縮します。冗長性・コードの探し方、1度に探す領域の大きさ、「辞書・対応表」の構造などで圧縮率や処理速度が変わります。そのため多数の方式が出ています。

また、画像の圧縮に使われるGIFJPEGについては画像特有の規則性・人間の目の特性を利用して圧縮しています。JPEGは不可逆圧縮でして、展開しても100%同じ絵にはなっていませんが、人間の目の特性を利用して自然に見えるようになっています。特に写真に向いています。一方GIFは可逆圧縮で、展開してもそっくりそのまま復元できます。しかし、現在のフォーマットでは256色しか扱えませんので原色が多く使われる、ロゴやボタン、アニメ的な絵(悪い意味ではありません)に向いていると言えます。VIDEO-CD、DVD-VIDEOやPrefecTVでもJPEG同様の圧縮技術を用いています。画像が出たついでに音声の圧縮についても軽く説明します。最近ブレイクしてきたMDも不可逆圧縮の代表です。これも人間の聴覚特性を利用してデータ量を減らしています。デジタル携帯電話、PHSも不可逆圧縮を行っています。

プログラムや文章は完全に復元されないと困りますので、この文書で取り扱うLHAやZIPに関しては当然「可逆圧縮」です。(文章の要約なら歓迎!という説もありますが(^_^;)


フレームとしてではなくこのページのみが表示されているときは、下のいずれかをクリックして下さい。
TOPページ 圧縮ファイルの取扱い方 本来のフレーム表示