圧縮ファイルのしくみ
皆さんは日ごろ、ZIP、LZH、もしかしたらRARなどを
つかっているかもしれません。
ファイルの圧縮技術の進歩によって私たちの、インターネット生活(?)は
ささえられてます。
そもそも、圧縮とはなんのためにあるのでしょうか?
HDDの節約?それも一理ありますが違います。
ファイルを小さくすることによって、インターネット間の
ファイル送信の手助けをしようというものなのです。
海に旅行するときは浮き輪やボールを膨らまして
いく人は絶対にいませんね。それと同様に、
「小さくできるものは小さくして楽をしよう」という
ものだとおもいます。
圧縮のしくみ
ではどのようにデータを圧縮させているのでしょうか。
まず圧縮には大きく分けて二つに分類されます。
一つは非可逆圧縮もう一つは可逆圧縮といいます
可逆圧縮というのはZIP、LZHなどの「解凍すれば元のデータに戻る」
という形です。
非可逆圧縮というのはその反対で、「元のデータと大体おなじ」(笑)という
圧縮形式です。なんだそれじゃだめじゃないか、とおっしゃるかもしれませんが
これは、音楽、画像に最適なのです。人間に分からない程度、わかっても
画質(音質)の低下ぐらいで、なんの支障もありません。
しかし、EXEファイルはどうでしょう。「大体同じプログラム」なんて
動くわけないですよね。というわけで、非可逆圧縮は、画像、音声、動画など
に多くつかわれています。
| プログラム系 ZIP、LZH、RAR 音楽、音声 MP3 画像 JPEG(完全にもできる)、GIF 動画 MPEG4 |
|---|
可逆圧縮のしくみ
完全な姿でないと動かないプログラムを
どうやって小さくするのでしょう。
それは、符号化というものをおこなっているから
です。符号化とは、一番でてくる文字列を「0」とおき、
一番でてこない文字列を「1111」とおきかえる作業
を指します。
| ABCDE PK ABCDE KG ABCDE PK ABCDE これを ABCDE=0 PK=10 KG=1111 |
|---|
すごいわかりにくくてすいません^^;
このような符号化をおこない、ファイルの圧縮をおこなうわけです
これはハフマン法ととばれておりLZHなどに利用されています。
データの圧縮はハフマン法だけではありません。
数学的に圧縮するランレングス法というのもあります
例えばおおげさですがA+A+A+A+A+A+A+A+A+A+A.......とAを百回かける
式があったとします。皆さんはどうしますか?
もちろん
A*100ですよね。このようにAAAAAとなっているデータを
a*5のように符号化するのがランレングス法と呼ばれるものです。
| AAA BBBBBBB CCCCCC DD これを a*3 b*7 c*6 d*2 とおきます |
|---|
この「D」の場合なんですがこれがいっぱいあった場合
増えるようが気がするのはわたしだけでしょうか(爆
当然のことながら、ハフマン法もランレングス法も、符号化された
ままでは動かせません。
つまり解凍というのはある規則性を持つ符号を
もとの文字に戻すことをいいます。
非可逆圧縮のしくみ
可逆圧縮の仕組みは分かりましたか(苦笑)
今度は音声、動画、画像の圧縮について簡単な説明をします。
*音声圧縮のしくみ*
MP3を例にとってみましょう。
音楽をWAVファイルで保存するとどれくらいになるでしょう。
30Mは普通にいってしまいますよね(笑
それを大体10分の1にしてくれるのがMP3です
しかも音の劣化がないのです。
それではどうやって圧縮をしているのでしょうか
MP3は人間の耳に聞こえない音の部分を
切り落としているのです。そのため10分の1という
高圧縮率を実現できたわけです。しかしMP3はMP3
専門のプレイヤーがないとうごきません。
*画像圧縮のしくみ*
画像の圧縮形式といえばJPEGですよね
JPEGは写真などによく使われている圧縮形式で
先ほどのランレングス法とよく似ています。
画像には塗りつぶしされていたりすると
そこのデータ部分には同じ色でいっぱいになっているはずです。
JPEGは赤赤赤赤・・・と100個並んでいるところを
赤を100というように変換させます。
これがランレングス法とよく似ているところだと思います。
*動画圧縮のしくみ*
これ、難しいです(爆
MPEG4というのを例にとって
説明します。
動画は静止画像で構成されています。
そのため一秒により多くの画像をいれることによって
滑らかな動画を見ることが可能です。ということは
その一秒のなかの画像はあまり動きはないという
ことです。そのためMPEGでは、全体ではなく一コマ一コマ
の画像の違いを保存するものだそうです。
written by 楓