MCL(73)

インデックスに戻る

前のMCLへ  次のMCLへ

▼ My Computer Life (73)

73. 非可逆圧縮

 前回書いた通り、データを小さくする「圧縮」という処理には、完全に元に戻せる可逆圧縮と、完全には戻らない非可逆圧縮の2種類がある。「完全に戻らないと困るじゃないか」と思うかも知れないが、文章やプログラムと違い、画像や動画や音声などは、細かい部分が違っていても影響は少なく、それよりも圧縮率が高い方が嬉しい事があるので、情報の損失と引き換えに圧縮率を高めるという考えが出てくる。たいていの場合圧縮率を上げると損失の度合いも上がるので、どれくらい圧縮するか決められたりする。

 非可逆圧縮で一番身近なのは、やはり画像ファイルのデファクトスタンダードになっている、「JPEG」だろう。
 JPEGではまず、画像を小さなブロックに分け、そのブロックの内部でピクセルデータを離散コサイン変換という手法で周波数成分のデータに直す。簡単に言うと、波としてのデータに変換する。この時、色や輝度の変化が少ない部分は低周波(ゆるやかな波)になり、変化が激しい部分は高周波(鋭い波)になる。
 その上で、小数点切り捨てのような処理を行い(この時どれくらいの粗さで切り捨てるかで、圧縮率が決まる)、その他の色々な圧縮法(前回でも取り上げたハフマン符号や、ランレングスなど)を利用して、できたデータを圧縮する。
 大ざっぱに言えばこんな感じになる。
 JPEGは色々な技術を使って圧縮する、良くできた方式だが、大づかみに捉えるとそこまで難しい事をしていない。データを間引いて圧縮しやすい形に直し、圧縮すると。それだけである。ただ、その間引き方がうまいのだ。いったん波の形に直す事により、人間の目で見て気づきやすい部分と、気づかない部分とを機械的に判別できるようにした上で、気づかない部分の方のデータを間引いていくのだ。これにより、圧縮率のわりに良好な画質を保持し、特に自然写真などで威力を発揮する。

 同様に、音声圧縮のデファクトスタンダードになっている「mp3」も、基本的な考え方は似ている。
 元々音というのは波として表現されるので、画像データを波に変換するJPEGよりは常識的な感じだが、波にしてからはわりと考え方は同じようなものだ。つまり、人間に気づきにくい部分を間引いて、圧縮しやすい形にする。
 具体的には、人間は高くて小さな音は聞き取りづらいものだし、大きな音が鳴った時に同時に鳴っている小さな音は聞き分けにくい。このような、人間の聴覚の仕組みに基づいたデータの間引きを行った上で、圧縮していく。
 このようにして、JPEG同様、圧縮率の高さのわりには元データとの聴いた時の損失が少ないため、特に音楽ファイルのスタンダード方式として扱われている。

 動画の場合もやっぱり似たようなものではある。
 例えばMPEG-1の場合、1フレームあたりの圧縮方式はJPEGと似通っているが、動画の特徴を利用し、前後のフレームとの差分も圧縮情報として利用する。動画はだいたい前フレームと似たような画面になる事が多いので、前のフレームとの差分をとってデータ化すると、だいぶ小さくなる。ただ差分を取るだけでなく、いくつかのフレームを通して予測を行う(このような予測は、音声データの圧縮であるADPCMでも使われている)。

 私自身は、持ち前の謎の美学により、若い頃は非可逆圧縮を美しくないと思っていた。元のデータと異なるようなものを「圧縮」と呼んでいいのか、という気がしていた。
 だが、良く良く考えて、可逆性のある動画圧縮など、データ量が大きすぎて扱えないだろうなーとは思う。だから、気づかないところを間引いてデータを小さくする非可逆圧縮は、美しさよりも現実をとった考えなのだ。
 そういうわけで、10代の頃は若すぎてなぜか受け入れられなかった非可逆圧縮も、20代になる頃は逆に「美しい」とさえ感じるようになっていた。人は変わるもんなんだね。

 なんか圧縮展開技術についてダラダラと2回に分けて書いた。
 実際、当時のPCマニアにとって、圧縮展開というのは非常に重要なファクターだった。何しろ、1MBくらいしかないフロッピーディスクでなんでもかんでもやり取りしなければならなかったしね。もちろん、21世紀になった今も、無圧縮の画像や音声がやり取りされているわけではないので、今でも重要である。
 なので、直接私のコンピュータライフという意味とはちょっと違うけど、取り上げてみた。


前のMCLへ  次のMCLへ

戻る

TOM 2014