情報ラボ > データ圧縮
同じ内容を、もっと少ないビットで表せないか。そのための工夫が圧縮です。
マス目をクリックまたはドラッグして、絵をかけます。16×16=256マスで、1マス1ビット(白0・黒1)です。
この教材では、1つの「つづき」を 色1ビット+個数4ビット=5ビット で記録します(個数1〜16を0〜15で表す)。 行ごとに区切って数えています。
文字の出てくる回数を数え、回数の少ないものから2つずつまとめて木を作ります。左の枝を0、右の枝を1とします。
JPEGで何回も保存しなおすと画像がどう傷むかは、「JPEGをくり返し保存すると」で確かめられます。
写真や音楽、動画は、そのままではデータ量がとても大きくなります。そこで、同じ内容をもっと少ないビットで表す工夫をします。これがデータ圧縮です。
圧縮すると、保存に必要な容量が減り、送るのにかかる時間も短くなります。インターネットで写真や動画を気軽にやり取りできるのは、ほぼすべてのデータが圧縮されているからです。
圧縮後のデータ量が元の何%になったかを、圧縮率といいます。
数字が小さいほど、よく縮んだことを表します。
圧縮には、大きく分けて2つの種類があります。
| 種類 | 元に戻せるか | 主な使いみち | 例 |
|---|---|---|---|
| 可逆圧縮 | 完全に戻せる | 文書、プログラム、図 | ZIP、PNG |
| 非可逆圧縮 | 完全には戻せない | 写真、音楽、動画 | JPEG、MP3、MP4 |
文書やプログラムは、1文字でも変わると意味が変わったり動かなくなったりします。そのため、完全に元に戻せる可逆圧縮を使います。
一方、写真や音楽は、人が気づきにくい細かい情報を少し捨てても、見た目や聞こえ方はほとんど変わりません。その性質を利用して、大きく縮めるのが非可逆圧縮です。
同じ値が続く部分を、「何が何個続くか」という情報に置きかえる方法です。ランレングスとは「続く長さ」という意味です。
たとえば「白白白白白黒黒黒」という8マスは、「白5 黒3」と書けます。同じ色が長く続くほど、短く表せます。
ただし、注意すべき点があります。白と黒が細かく入れかわる絵では、かえってデータ量が増えてしまいます。1マスごとに「白1 黒1 白1…」と記録することになり、1マス1ビットで記録するより大きくなるからです。上のツールで「チェック模様」を選ぶと、この様子を確かめられます。
ランレングス圧縮は、ファクスの画像や、単色の部分が多いイラストなどで効果を発揮します。
上のツールで「山」と「にこちゃん」を比べると、同じ白黒の絵でも結果が大きく変わることが分かります。山は1行の中で色の切りかわりが少ないのでよく縮みますが、にこちゃんは目や口で切りかわりが増えるため、この小さなマス目ではかえって大きくなります。圧縮の効果は、データの中身によって決まるのです。
文字をビットで表すとき、ふつうはすべての文字に同じ長さの符号を割り当てます。4種類の文字なら、どれも2ビットです。
しかし実際の文章では、文字の出てくる回数にかたよりがあります。そこで、よく出る文字には短い符号、めったに出ない文字には長い符号を割り当てれば、全体を短くできます。これがハフマン符号化の考え方です。
よく出る文字は根の近くに、めったに出ない文字は遠くに置かれるので、自然に符号の長さに差がつきます。
符号の長さがばらばらだと、どこで区切ればよいか分からなくなりそうです。しかしハフマン符号では、ある文字の符号が、ほかの文字の符号の始まりの部分になることがありません。そのため、先頭から読んでいけば、区切りを入れなくても1通りに元に戻せます。
どの文字も同じ回数ずつ出てくる場合は、符号の長さに差をつける意味がなく、ほとんど縮みません。上のツールの「かたよりがない」で確かめられます。圧縮の効果は、データのかたよりの大きさで決まります。
JPEGは、写真のための非可逆圧縮の形式です。画像を小さなブロックに分け、人の目が気づきにくい細かい変化を捨てることで、データ量を大きく減らします。
保存するときに画質を選べるのは、どれだけ情報を捨てるかを決めているからです。画質を下げるほどファイルは小さくなりますが、ブロック状のノイズや、輪郭のまわりのもやもやが目立つようになります。上のツールで画質を変えながら、拡大した部分を見比べてください。
写真は細かい色の変化が多く、PNGのような可逆圧縮ではあまり縮みません。反対に、色数が少ないイラストや図はPNGでよく縮み、JPEGにすると輪郭がにじみやすくなります。目的に合わせて形式を選ぶことが大切です。
JPEGの画像を開いて、もう一度JPEGで保存すると、そのたびに少しずつ情報が捨てられます。何回も保存しなおしたときの変わり方は、「JPEGをくり返し保存すると」で確かめられます。
どんなデータでも圧縮できるわけではありません。まったくでたらめなデータには、くり返しやかたよりがないので、縮めようがありません。
また、すでに圧縮されたデータを、さらに圧縮してもほとんど縮みません。JPEGの写真やMP3の音楽をZIPでまとめても、大きさがあまり変わらないのはこのためです。圧縮によって、かたよりがすでに取りのぞかれているからです。