減色方法について

page 一般のフルカラー画像を256色とか16色でしか表現できないモニター上に、 なるべくフルカラーに近い表現で表示したり、 画像情報をできるだけ少なくして効率よく伝送したいときなどに、画像を減色する方法を使います。
★ この方法はフルカラーをインデックスカラー(各画素の色情報をインデックスで与える) に変換することを減色と呼んでいますが、これは絵を描くときパレット上に使う絵具を並べておき、 この色を適当に混ぜ合わせて使うのと動作が同じことからパレットカラーとも呼んでいます。
★ この減色方法にも幾つかの方法がありますが、 代表的で最も優れた方法と思われるメディアンカット方法について説明していきます。
メディアンカット(Median Cut : 中央値分割)方法は、HechBert氏によって考案された方式で、 Heckbertアルゴリズムとしてよく知られた方法でする。
★ 減色することは、先ずフルカラーからたとえば256色を選んでインデックスのテーブルを作るところから始まります。  この色の選び方が非常に重要となり、これが間違っていると減色しても綺麗な画像には変換できません。  この色の選び方の一つにメディアンカット方法がある訳です。
★ 人は、一度に色を並べて見せられてもその内の数千色しか認識できないだろうと云われています。  それに、画像の中に含まれる色成分は色空間に均一に存在することは極めて希なことです。  通常の画像では人物であれば肌の色とか衣服の色とかで、色空間の各領域に色成分が集中することになります。
したがって、この点に注目して必要な色を選択することになります。
★ このように色空間の上で色成分の集中した領域に注目して、 色成分の密になっている領域をより細かい部分空間に細分し、 逆に色成分の疎になっている領域はより大きな部分空間にまとめ上げていくことによって必要な色を選択します。
★ このような文章だけの説明で理解できるでしょうか。  要するに、画像がもつ各色成分の発生頻度をヒストグラムで表し、その頻度の多い所は引き伸ばし、 頻度の少ない所は狭めていき必要とする色数を選択するようにします。
メディアンカット
page メディアンカット方法は、右図のようにRGBで表す色空間全体を先ずR軸で分割し、 次にG軸、B軸で分割します。
ここで各軸の分割面は、たとえばR軸を例にとると、赤成分の画素値(濃度値)を大きい順に並べておき、 全画素を画素数が半分になる場所を分割面とします。
★ このように色空間を分割していったとき、分割された色空間が選択すべき色数以下のときは、 各色空間のうちで最大の画素数をもつ色空間のみを更に分割していきます。  最後に分割面が選択すべき色数に達したとき、その分割面を選択されたインデックスとします。
★ 色空間を立方体の図で説明しましたが、 実際には画像がもつ各色成分の発生頻度を数えてヒストグラムで表現しますが、 RGB各色が8ビットのとき24ビット、 つまり1670万色になりこれだけのヒストグラム用のテーブルを持つのはメモリの消費が膨大になるので、 一般に行われるのは、 RGB各色8ビットの上位5、5、5ビットだけを使って15ビット(3200個)のヒストグラムにするか、 または5、6、5を使って16ビット(6500個)のヒストグラムで表します。
★ このようなインデックスができ上がれば、 あとは各画素の色数(15ビットまたは16ビット)に対応するインデックスカラーで埋めていけば減色画像が完成します。

page 次に、このようにして減色した画像が満足できるものかどうかです。  これは原画像によってもかなり違ってきますが、原画像の色数が多いほど極端に減色するとどうしても歪みが出てきます。
その歪みは画像の滑らかな部分で擬輪郭の形で目立つようになります。
★ 以前にも説明したことですが、この擬輪郭を目立たぬようにするためにディザ処理を施します。  つまり擬輪郭の目立つ周辺にノイズをばらまくことで画像を滑らかにし、その擬輪郭を打ち消してしまおうと云うものです。
★ 一般によく使われるディザ処理には組織ディザ法と誤差拡散法とあります。  画像の構成によっても異なるので、どちらが優れているかは決めかねるところですが、
前者は4X4とか8X8画素と云った大きさのランダムな値を固定的に入れておき、 注目画素に対する値をこの中から拾い出してそれを画素値に変換する方法であり、
後者は画像全体で、累積した色の誤差がゼロになるように、各画素にその色の誤差分を配分する方法です。
何れの方法においても、その効果の有無は原画像によって決まり、 もともと色数の少ない画像にノイズをばらまけば、 かえってそのノイズが目立つようになるので、この点は注意が必要です。

page 最後にメディアンカット方法で16色と256色に減色した画像を示しておきます。  何れの画像も誤差拡散によるディザを与えています。
★ この例を見ても分かるように16色の減色では滑らかな部分に偽輪郭が発生しており、 ここにディザを与えているためザラツキが目立ち、やや無理な減色になります。
一方、256色への減色ではフルカラーの原画像と比較してもその差異はモニタ上ではまったく認められません。
ディザ有、無によって画質にどれだけ差が出るかは画像によって異なりますが、 「画像の情報量」のページにその 一例を載せていますので参照してください。

16色に減色(ディザ有) 256色に減色(ディザ有)
16減色ディザ有 256減色ディザ有