5.5 画像圧縮
画像圧縮の方法には、「可逆的圧縮法」と「非可逆的圧縮法」の2種類に分類でき、両者は根本的に異なる方式です。可逆的圧縮法は、データ記述の構造部分を整理する、即ち、ピクセルのビット情報には変更を加えず、ピクセル配置の記述方法を整理し直すことで、データ量を圧縮する方法です。画像情報 の内容そのものには手を触れていないので、圧縮の手続きをそのまま逆にたどることで、データを完全に元の状態に復元できます。この為、この圧縮方法を「可逆的圧縮形式」と言います。
可逆的圧縮法(ランレングス方式)
例えば、次行のように
□■■□□□■■■■□□□□□■■■■■■
と言う21個のピクセルの並びについて考えます。この場合、□1■2□3■4□5■6の形に書き直しても本質は同じで、21個のデータを12個のデータに「圧縮」して表できます。
同じ値のデータ(画像の場合ピクセル)が横方向に1個以上連続する状態を「ラン」と言い、ランの状態を記述する方式「ランレングス」では、ピクセルの配置をそのまま記述する「フルマトリックス」より少ない量で同じ内容を表現できます。2値化されたデータであれば、情報の種類は■□の2種類だけであり、■□のランは、必ず交互に並びます。言い換えると、最初のランが、■であるか、□であるか、が分かれば、後はランの長さだけ順に記述すれば良いことになります。こうすると、□123456となり7個のデータに圧縮出来ます。そして、どちらも圧縮の手順を逆にたどることで、最初の21個のデータに完全復元できます。
モノクロ画像のピクセル1個は1ビットのサイズを持ちます。 上記のピクセル配置をフルマトリックスで表示した場合、100111000011111000000となり、21ビットのメモリ領域で表示・保存できます。 一方、ランレングスではこのビット情報を数字に置き換えて記述します。数字1文字の記述には8ビット必要ですから(英数字は1バイト文字)、上記の場合、8*7=56ビットになり、実際には圧縮になっていません。また横方向に同じ値のピクセルが続く場合(つまりランが長い場合)は、圧縮効率は高いのですが、入り組んだ画像の場合、逆にファイルサイズが膨らむ可能性も有ります。
これらのことから、ランレングスは圧縮の主役ではなく、又単独で使われることも殆ど有りません。
可逆的圧縮法(ハフマン符号化)
1952年にDavid A. Huffman氏によって考案された、可逆圧縮の代表的なアルゴリズムです。一定ビットごとに文字列を区切り、区切られた後の文字列を統計的に処理して、情報の出現頻度の多いパターンに短い符号、出現頻度の少ないパターンには長い符号を割り当てる方式で、 個々のパターンに一定サイズの符号を割り当てる方式よりも効率よくデータを圧縮できます。GIF画像はこの圧縮方式です。
不可逆的圧縮法
ビットマップ画像は画素1点について1〜4バイト程度のデータ量を持ちます。A4サイズで600dpi、1ドットあたり色解像度が24ビット(3バイト)の画像では約100メガバイトと、かなり巨大なデータとなります。ビットマップ画像の保存や転送では、圧縮してデータ量を削減することが必要になる場合が多くあります。画像の場合には、「人間の目で見て変化ができるだけ分からないように」という指標に基づいて情報量を減らしても実際問題、差支えはないので圧縮率が格段に高い非可逆圧縮が良く用いられます。
可逆的圧縮法が、ピクセルのカラー情報そのものには手を付けず、いわばその記述構造を整理しなおしただけなのに比べ、非可逆的圧縮法は、前節で表示したように、カラー情報そのものを間引いて廃棄することで画像サイズを圧縮します。従って圧縮後の画像を、元に戻そうとしても完全には復元できません。標本化の段階で、輝度データと色調データ、低周波部分と高周波部分を区分けし、人間の感性に取って重要できちんと保存しなければならない情報と捨ててもあまり気にならない情報とに分別し、各区分に対し異なるレベルを設定して量子化します。この圧縮方法が適用できるのは、画像(静止画及び映像などの動画)や音声など、人間の感覚器官を通して直接認識される情報に限られます。
ベクタ形式への変換
ビットマップ画像から、「輪郭抽出」「細線化」「線分や領域の抽出」「線分列の曲線へのフィッティング」などの処理をソフトウエアで行い、画像の特徴をベクタ形式へ変換してデータを圧縮する方法がありますが、欠損箇所が生じやすく、必ずしも満足のいく結果が得られるとは限りません。特に元のビットマップの解像度が低い場合に変換誤差が発生しやすく、逆に解像度が高い場合には処理時間が大きくかかるという問題があります。
次ページ 2014.10.10作成 2017.1.25改定