データ(ファイル)の圧縮

 データは多くの場合、時間とともに増加していきます。一方で、「ハードディスク」や「メモリカード」などの記憶装置には通常限りがあります。よってデータを圧縮し保存することができれば節約になりますし、通信でデータを送信する際にも通信時間が削減でき有効です。ここでは、その「データ(ファイル)の圧縮」技術についてみていきます。

圧縮の効率評価

 あるデータについて、そのデータが持つ情報を保持したままファイルサイズを小さくする処理を「圧縮と呼びます。一方で「圧縮」されたデータを元のデータに戻す行為を「伸長」、「展開」、「復元」さらには「解凍などと呼びます。

 データが「圧縮」された度合いを「圧縮率と呼び、以下の式のように「元のデータに対して圧縮後のデータはどれくらいになったか?」で評価することがあります。

 圧縮率(%) = 圧縮後のデータサイズ / 元のデータサイズ x 100

圧縮方法の種類

 圧縮をする方法には大別して、「可逆圧縮」と「非可逆圧縮」があります。データを元に戻すことと前提として圧縮するのが「可逆圧縮、一方で「元のデータには戻せない(=ある程度のデータの欠損を許容する)が、圧縮率を高くする」ことを目的とするのが「非可逆圧縮です。それぞれの用途は以下のようになります。

可逆圧縮:「文章ファイル」や「プログラムファイル」(ZIP形式でよく圧縮される)
※少しでもデータが欠損すると意図する用途として使用できない場合がありますね。

非可逆圧縮:「音声(音楽)データ」や「静止画」、「動画」(それぞれ MP3やAACJPEGMPEG-4 形式がよく使われる)
※例えば「音声(音楽)データ」について、人間の可聴域は周波数で20Hz~20000Hzだと言われています。よってその範囲外のデータを切り捨てることで、人間にとっては元のデータと変わらないように感じる(聞こえる)ままでデータが圧縮されます。

可逆圧縮の例

 それでは、実際に「可逆圧縮」を行う方法についてみてきます・

ランレングス圧縮】
 例えば、以下の12文字の文字データがあったとします。
 AAABBBCCCAAA
 見てのとおり、文字が繰り返されていることが特徴的です。このような場合、AAAという3文字について「Aが3個連続する」という意味で「A3」という表記にすることにします。この方式で、上記の文字データを変換すると、
 A3B3C3A3
と表記できますよね。12文字が8文字になったので、先述の「圧縮率」を計算すれば、

圧縮率(%) = 8(文字)/ 12(文字)x 100 = 66.7(%) となりました。

 しかしながら、「ランレングス圧縮」は連続する文字が少ない場合は苦手です。
例えば、ABBCA という6文字の文字列について考えてみます。
これを変換すると、
A1B2C1A1 と8文字になります。
よって 圧縮率(%) = 8(文字)/ 6(文字)x 100 = 133.3(%) となりました。圧縮どころか増大していますね。

(続く)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

静止画データ