Illustrator基礎講座 -デジタル画像7
HOME > 基礎講座 > デジタル画像 >画像と圧縮> NEXT

サイト内用語検索

クリックしてウインドウを開き、必要に応じてウインドウ幅を調節して閲覧してください。

Movable type-ベースにページを切り替えました

新しいページはこちらをご覧下さい。或いはHOMEから入って下さい
現在表示のページは、低解像度(狭い)モニタ用に残して有ります

 


画像の圧縮について考えて見ます。
ただ、圧縮についての専門的な知識は私に有りませんし、ここでその必要も無いと思います。関心のある方は専門サイトを参照してください。
圧縮の方法、種類は「画像ファイル形式」の違いに直結します。 ここでは、CGビギナーの頭を悩ます「画像ファイル形式」の理解の為に、或いはホームページに配置する画像の、種類を選択する際の判断材料になれば、と言う程度に、圧縮の「考え方」を述べるつもりです。


■ 圧縮方法の種類

画像圧縮の方法として、根本的に異なる2種類の方式に分類できます。

  • 可逆的圧縮法
  • 非可逆的圧縮法

少し具体的に見てみましょう。

■ 可逆的圧縮法

データ記述の構造部分を整理することで圧縮する方法です。

デジタル画像は、さまざまなビット値(カラー情報)を持つピクセルの配置です。
このピクセルのビット情報には変更を加えず、ピクセル配置の記述方法を整理し直すことで、データ量を圧縮する方法です。
画像情報 の内容そのものには手を触れていないので、圧縮の手続きをそのまま逆にたどることで、データを完全に元の状態に復元できます。
その為、この圧縮方法を「可逆的圧縮形式」と言います。

次に、可逆圧縮の考え方を理解する為の、2つの方式についてザッと見てみましょう。

ランレングス方式

例えば………
□□□■■□□□□□■■■■□□□■■■ と言う20個のピクセルの並びが有ったとします。
この場合□3■2□5■4□3■3の形に書き直すことが出来そうです。
「リンゴ、リンゴ、リンゴ」と書くよりも、「リンゴが三つ」と書くのが普通ですが、それと同じことです。

ランレングスとフルマトリックス

上記のように、同じ値のデータ(画像の場合、ピクセル)が、横方向に1個以上連続する状態を「ラン」と言います。ランレングスではピクセルの配置をそのまま記述する(これを、フルマトリックスと言います)のでなく、ランの状態を記述します。
上の例では、20個のデータが12個のデータで表すことが出来ました。つまり「圧縮」出来た訳です。

もう少しスマートな方法を考えて見ましょう。
上の例では、情報の種類は■□2種類だけ(つまり1ビット)です。この場合■□のランは、必ず交互に並びます。ですから最初のランが、であるか、であるか、だけ分かれば、後はランの長さだけ順に記述すれば良いことになります。
この考えで行けば、□325433 となり、7個のデータに圧縮出来ました。

そして、どちらも圧縮の手順を逆にたどることで、最初の20個のデータに完全復元できます。

ランレングスの限界

ランレングス方式は素朴で単純な圧縮方法ですが、これだけではあまり圧縮効果は有りません。実は上の例では本当は圧縮になっていないのです。

※ モノクロ画像のピクセル1個は1ビットのサイズを持ちます。 上記のピクセル配置をフルマトリックスで表示した場合、11100111110000111000 となり、20ビットのメモリ領域で表示・保存が可能です。
しかし、ランレングスではこのビット情報を数字に置き換えて記述します。
数字1文字の記述には8ビット必要ですから(英数字は1バイト文字)、上記の場合、8*12=96ビット、或いは8*7=56ビットになり、圧縮になっていません。

※ また横方向に同じ値のピクセルが続く場合(つまりランが長い場合)は、圧縮効率が高いが、入り組んだ画像の場合、逆にファイルサイズが膨らむ場合が有ります。

それでも例えば文書データをファックスで送る時等、文字以外大半は白の地が連続しています。このような場合、単純なランレングス方式でも結構圧縮効果を上げることが出来ます。 そう言うことで、ファックス等はランレングス方式を使っている場合が有ります。

……と言うことで、現在ランレングスは圧縮の主役では有りません。又単独で使われることも殆ど有りません。ここでは可逆圧縮の考え方の説明として取り上げました。

ハフマン符号化

現在、実際の圧縮技術の基本は 「ハフマン符号化」とそのバリエーションです。
これは、情報の出現頻度の多いパターンに短い符号、出現頻度の少ないパターンには長い符号を割り当てる。それにより、 個々のパターンに一定サイズの符号を割り当てる方式よりも効率よくデータを圧縮できるようにする。と言う考え方です。

□□□■■□□□□□■■■■□□□■■■

上と同じこのデータで言えば、□□□のランが2回出現し、他のランの出現頻度より多いので、□□□に 0 や1 の、短い符号を割り当てる、と言うことです。

※ そんなの簡単じゃん、出現頻度の多い順に、0,1,2,3………、と割り当てれば良いだけでしょ。
……と、思われそうですが、2進数の世界では、どうもそう簡単ではなさそうなのです。 (これは管理人の勝手な理解です。信用しないように)。

2進数ではそもそも使える符号(数字)が、0と1の2つしか有りません。
出現頻度の多い順に、0、1とつけたら次は10となり、どんどん桁数(文字数)が増えるので、この「順番」と言うのは10進数以上に大きな意味を持つ(のではないだろうか)。
2進数で表現されるデータは、最初からそのデータを表すビット数が決まっていて、個々のデータは本来同じ長さ(固定長符号)の筈です。例えば同じ、黒、白でも……、
モノクロ1ビット画像の黒は、0、白は、1ですが、
グレースケール8ビット(1バイト)画像の黒は、00000000、白は 11111111です。
フルカラー24ビット画像の……、
黒は、00000000 00000000 00000000 であり、
白は、11111111 11111111 11111111 で表されます。

つまり同じデータの中で、出現頻度ごとに、異なる長さの符合(可変長符号)を割り当てる、と言うのは思っているより簡単ではない(のではないだろうか)。
そんなこんなで、実は色々難しい計算や技術(要するにアルゴリズム)が有るようです。しかしここでは、そう言うことに立ち入るつもりも知識も有りません。 興味のある方は、専門書、サイトを参照して下さい。 脳ミソが「圧縮」され、不可逆状態になること請け合いです。

ハフマン符号化は、データ圧縮の基本として、可逆的圧縮法だけでなく圧縮全般に広く使われている技術です。

■ 可逆的圧縮の特徴

  1. データ要素が失われない。可逆的圧縮である。
    当たり前のことですが、可逆圧縮です。 並べ 換えたデータはその手続きを逆にさかのぼることで、全く同じ元のデータに戻すことが出来ます。
  2. 画像だけでなく、幅広く汎用性を持った圧縮方法である。
    例えば ■をリンゴに、□をミカンに置き換えたとしても上記の考え方、記述手法がそのまま成り立ちます。 つまりデータの形式が、画像であれテキストであれ、情報の内容には一切立ち入らず、単にその情報の並び方など構造の冗長部分を整理・並べ換えているだけなのです。
  3. データ全般に適用
    可逆的である、と言うことと、情報の内容にこだわらない(依存しない)と言うこととで、この圧縮方法は画像だけでなく、テキストデータやプログラムを含む幅広いデータの圧縮に汎用的に使われています。
    特にテキストデータ(プログラムを含む)の場合、圧縮の前後で データ内容がいささかでも変わってしまっては使い物になりません。 従ってテキストを含むデータを圧縮する際は可逆的圧縮法に限られます。

LHA、Zip等の圧縮形式は、文字にも画像にも幅広く使われている圧縮方法ですが、当然可逆的圧縮で、全てこの圧縮法の仲間、バリエーションです。 画像であれテキストであれ、とりあえずある程度の圧縮はやってくれます。

GIF画像形式はこの圧縮方式です。
「Web画像形式と保存1-GIF」参照。


■ 不可逆的圧縮法

可逆的圧縮法が、ピクセルのカラー情報そのものには手を付けず、いわばその記述構造を整理しなおしただけなのに比べ、非可逆的圧縮法は、カラー情報そのものを間引いて廃棄することで画像サイズを圧縮します。
従って圧縮後の画像を、元に戻そうとしても完全には復元できません。又圧縮や解凍を繰り返すたびに画質は劣化します。

人間の感覚に依存した情報のみに適用

情報の再現性が完全ではない 、などと言う圧縮法が役に立つか、と言うことですが、確かにこの圧縮方法は、テキストやプログラム等のデータには使えません。
この圧縮方法が適用できるのは、「画像(静止画及び映像などの動画)」「音声」に限られます。これらの 情報は全て、人間の感覚器官を通して直接認識される情報です。

人間の目の特性と圧縮

人間の目は次のような特性を持っています。

  1. 輝度変化(明るさの変化)には敏感だが、色調の変化には比較的鈍感である。
  2. 変化が少ない部分(低周波部分、と言います)については、輝度/色の階調差に敏感だが、変化の激しい部分(高周波部分)では少ない階調でも不自然に感じない。

つまり色調変化のデータ、或いは変化の激しい部分のデータを多少廃棄しても、人間にはその違いを区別することが難しい、言うことになります。
こういう特質を利用することで、画質の劣化をあまり「感じさせず」なおかつ高い圧縮が実現できます。

圧縮の手順

不可逆圧縮の手順を、大雑把に言えば次のようになります。

  1. 標本化の段階で、輝度データと色調データ、低周波部分と高周波部分を区分けします。
  2. 区分けされた部分に対し、異なる量子化レベルを設定し、量子化します。
  3. 値を、ハフマン符号で書き出します。

不可逆的圧縮の特徴

  1. 元のデータを復元できない
    圧縮の過程でデータの一部を廃棄してしまうため、圧縮の操作を遡っても完全には元のデータを復元できず、圧縮を繰り返すたびに画質が劣化する。
    従ってオリジナル画像のコピーを取っておき、圧縮の操作は常にオリジナル画像から行うべきです。
  2. 圧縮効率が高い。
    勿論画像にもよりますが、実際にデータを廃棄する為、一般に圧縮効率が高くなります。
  3. 画像、音声などに限られる。
    等など。

非可逆圧縮の代表はJPEGです。