当ガレージの画像処理技術を担当しているのりだー君に「開発者の苦労が伝わるような小難しい話を書いてくれい」と頼んだところ、こんな講座ができてしまいました。(笑)
精一杯優しくご教授してくれるそうなので、初心者からプログラマーの方までぜひ読んで下さい。エンドレスで続くそうです..(AKIHITO38)

のりだー君の画像処理講座

第1回 − ディスプレイの表示色数と画像の表現色数について −

はじめまして。のりだーです。
本題に入る前に、初心者の方にも理解してもらえるように、コンピュータの基本的なことから話を始めます。

コンピュータではディジタルデータを2進数で扱っていて、最小単位は2進数の1桁の長さです。これをビットと呼び、この1や0の8個のビットの並びのことをバイトと呼びます。この世界は常に8ビットの単位で扱うことになります。

   1バイト = 8ビット

1バイトに入る値は、

   0 = 00000000
   1 = 00000001
   2 = 00000010
   3 = 00000011
       :
  255 = 11111111

の全部で2の8乗 = 256通りになります。(以後、2のn乗を2^nと表します。)
また、コンピュータでは2の何乗かという数字が扱いやすいので、

  1K = 1024バイト
  1M = 1024K = 1048576バイト
  1G = 1024M = 1073741824バイト

などのように扱われます。

■画像の単位

コンピュータで取り扱う画像は全てディジタル画像です。ディジタル画像は、画素(ピクセル)という点の集まりで構成されています。この画素の濃度値は、コンピュータで処理できる数値に変換(量子化)された階調値です。例えば、8ビットで量子化されていれば256階調の濃度値(0 〜255)をとります。値が大きくなれば、それだけ明るくなります。

■色数の色々

この頃、画像を表示する上であまり気にならないようになりましたが、画像処理やホームページ上の画像作成では重要な要素となります。色数には、ディスプレイの表示できる色数と画像の表現する色数があります。

ディスプレイの色数が設定されているのは、Windowsだと「ディスプレイの設定」の「カラーパレット」という項目になります。設定できる色数は、256色、65536色や16777216色等があります。俗にいうフルカラーとかトゥルーカラーと 呼ばれているのは16777216色のことで、ハイカラーと呼ばれているのは32768色と65536色です。ビット数で表現すると、

256色=8ビット (= 2^8)
32768色=15ビット (= 2^16)
65536色=16ビット (= 2^16)
16777216色=24ビット (= 2^8)

 

になります。これらは、ディスプレイの表示が色をR(赤)、G(緑)、B(青)成分の組み合わせで表現しているので、例えばこれらのRGBの各成分に、それぞれ8ビットの情報を持たせることで、16777216色(= 256 x 256 x 256)を同時に 表示することができます。しかし、256色表示の場合は、ちょっと違ってきます。
これは、RGB成分の組み合わせで色を表現しているのではなく、コンピュータに256色のカラーパレットが用意されていて、カラーパレットを構成する各色に16777216色中の1色を割り当て、色を表現します。

画像の色数はビット数とかビット深度等で表現されています。例えばビットマップ画像の場合にはビット数で表現されており、

2色=1ビット (= 2^1)
16色=4ビット (= 2^4)
256色=8ビット (= 2^8)
16777216色=24ビット (= 2^24)

 

等の色数があります。

■画像の表示

フルカラー表示ディスプレイでの画像表示では何も問題ありませんが、256色表示ディスプレイでの画像表示には以下の問題があり、画像が正しく(奇麗に)表示されません。

  @画像が24ビットの場合
  A複数の画像を同時に表示する場合

なぜ、256色表示ディスプレイでの問題が発生するのかといえば、カラーパレットを使用しているからです。

@、Aに共通する問題は、16777216色(24ビット)を使用している画像(実際にはそんなに色を使用していないが)を、むりやり表示しようとすると、カラーパレットに画像の色を順次詰めていって正しく色を表示しますが、残りの色は一 杯になったカラーパレットの中で最も近い色で表示しようとするからです。ですから、画像が似通った色で構成されていれば、さほど気になりませんが、写真などの自然画像では、見るに耐え難い結果になります。(実際の動作は複雑で説明 しません。)さらにAの場合には、複数の画像が色々な色を使用しているため表示しようとする総色数は膨大になり、とうてい同時に画像を表示することはできません。

このような場合、以下の解決方法が考えられます。
  @の問題解決には、16777216色を256色で表現する減色処理を行います。
  Aの問題解決には、複数の画像を同時に表示するために、どの画像も1つのカ
ラーパレット(同じ256色)で表現する減色処理を行います。

次回は、このような問題を解決する減色処理について掘り下げて解説していきます。

1999.9.22入稿