色深度
色深度(いろしんど)は、コンピュータグラフィックスにおける概念で、カラーやグレイスケールのビットマップ画像でのピクセル毎のビット数を意味する。bits per pixel(bpp)という単位で、グラフィックス機器のスペック表記などで使われる。色深度は色表現の1つの側面のみを表しており、表現可能な色の多さを表している。もう1つの側面として色域をどれだけ広範囲に表現できるかという観点もある。色深度と色域によって色の符号化仕様が定義され、色符号の値と色空間における位置が対応付けられる。
以下深さごとのカラー方式などを紹介する。
色深度が比較的小さい場合、各ピクセルに対応して格納される値はパレットまたはカラーマップと呼ばれる表のインデックスであることが多い。パレット上の色はハードウェアの制限によって固定されていることもあるし、変更可能な場合もある。初期のMacintoshのカラー版やIBM-PCのVGAはVRAM容量の制限から8ビットの色深度だったが、Macintoshは最大24ビット(1677万色)、VGAは最大18ビット(262,144色)から色を選択可能なパレットになっていた。変更可能なパレットは擬似カラーパレット(pseudocolor palette)と呼ばれることもある。実際に使われたインデックスカラーでの色深度は以下の通りである。
1ビットカラー(21=2色) - モノクローム。通常、白と黒。初代Macintosh、Atari STなど
2ビットカラー(22=4色) - CGA(320×200ピクセル)。グレイスケールでは初期のNeXTstation、カラーでは初期のMacintosh、Atari STなど
3ビットカラー(23=8色) - ZX Spectrum、BBC Microなど、テレビ受像機を表示に使用する初期のホビーパソコン
4ビットカラー(24=16色) - EGA(640×350ピクセル)および VGA(640×480ピクセルモード)、Macintosh、Atari ST、コモドール64、Amstrad CPC
5ビットカラー(25=32色) - 初期の Amiga
6ビットカラー(26=64色)- Amigaの独自チップセットなど
8ビットカラー(28=256色)- 初期のUNIXワークステーション、VGAの低解像度モード、SVGA、Macintoshなど
12ビットカラー(212=4096色)- シリコングラフィックス社の一部システム、ネオジオ、NeXTstation、AmigaのHAMモード
16ビットカラー (216=65536色)
24ビットカラー (224=16777216色)多く製品で使われる
30ビットカラー (230=1073741824色)30ビットカラー以上(32ビットカラーは除く)をディープカラー(deepcolor, deep colors)と言うことがある。
32ビットカラー (232=4294967296色)RGBAカラーである。
48ビットカラー(248=281,474,976,710,656色)内部データや中間データによく使われる。
初期のパーソナルコンピュータやゲーム機で使われた古いグラフィックスチップでは、パレットとピクセルの対応を工夫することで一度に表示できる色数を増やす努力をしていたものがある。例えば、ZX Spectrum はビットマップ画像自体は1ビットカラー(2色)の形式だったが、パレットは8×8ピクセル単位に設定可能となっており、全体として2色以上が表示できるようになっていた。
ビット数が増えるに従って、表現できる色数が増え、同時にカラーマップも非現実的なサイズとなってくる(20ビット深度では、ピクセルが直接色を表すよりもカラーマップを使用した方がメモリ使用量が大きい)。従って色深度が大きくなると、ピクセル毎のデータをそのままRGB(赤、緑、青)の輝度を表すのに使うようになった。これをダイレクトカラーと称する。
典型的なコンピュータ用ディスプレイ装置やビデオカードは、R/G/Bの3チャンネルそれぞれに8ビットの色深度(256階調)を割り当て、全体として24ビットの色空間を表せる(8ビットのアルファチャンネルを加えて32ビットとする場合もある)。かつては、チャンネルごとに6ビット(64階調)を割り当てていた。DVD規格ではY/U/Vビデオ信号チャンネルごとに10ビット(1024階調)を割り当てている(YUV信号は、輝度信号と2つの色差信号からなる)。Blu-ray規格ではチャンネルごとに8ビットしか割り当てていない。また、携帯電話には、下記以外の12ビットダイレクトカラーなどの色深度を使うものもこれまでに開発・出荷された。
非常に限定的だが真のダイレクトカラー方式として、RとGの成分にはそれぞれ3ビット(8階調)を割り当て、残る2ビット(4階調)をBに割り当てる方式がある。これにより256色を表現できる。人間の眼は赤や緑に比べて青の成分に鈍感であるため、Bに対して割り当てるビット数を少なくしている。MSX2などで採用されたV9938がこの表示モードを備えていた。
インデックスカラーの8bppとは異なるが、インデックスカラー8bppでこの規格の表示をシミュレート可能である。
ハイカラーは一般的な色表現には十分な色彩を提供するとみなされており、15ビットか16ビットの色深度を持つ。15ビットの場合、赤・緑・青の輝度をそれぞれ5ビットで表す。25は32であるため、各色要素の輝度は32階調であり、全体として32,768色を表現できる(32×32×32=32,768)。16ビットの場合、人間の眼の感度が良い緑を6ビット(64階調)で表現する。従って、表現色数は65,536色となる(32×64×32=65,536)。あるいは、R/G/Bそれぞれを4ビットで表し(16階調)、残る4ビットをアルファチャンネルとする方式もある。その場合の表現色数は4,096色である。これらの色深度は携帯電話などカラーディスプレイつきの小型機器で使われることがある。
一般に各色成分に5ビットかそれ以上を割り当てるものをハイカラーと呼ぶ。写真画像を表示するにはこれで十分といわれることもある。
安価な液晶ディスプレイ(TN方式など)では、動画の動きへの対応を迅速にするため、トゥルーカラーを18ビット深度(64×64×64=262,144色)に縮小してディザリングまたはフレームレートコントロールを施すようになっている。あるいは、6ビットぶんの色情報を完全に捨ててしまう場合もある。高価な液晶ディスプレイ(IPS方式など)は24ビットかそれ以上の色深度をそのまま表示可能である。
トゥルーカラーはおよそ1677万(=224)(32ビットの場合およそ43億色)もの色を表現できる。これは人間の眼で区別できる色数のほぼ限界と言われているが、グレイスケール画像への変換(トゥルーカラーではグレイスケールは256階調)をしたり、計算によってコンピュータグラフィックスを生成した場合には、アナログ画像に比べて限界があることがわかる。24ビットのトゥルーカラーはRGBそれぞれを8ビットで表す。従って各色要素は256階調の輝度で表され、全体では16,777,216色を表現できる。
単にパレットやカラーマップを使わずにRGBデータを表示できるモードをトゥルーカラー(true color)と呼ぶこともある(つまりダイレクトカラーと同義で、擬似カラー(pseudo color)の対義語)。
32ビットトゥルーカラーと呼ばれるものは、4,294,967,296(=232)色を表現できるわけではない。実際には24ビットのトゥルーカラーであり、残りの8ビットには何も格納されないか、アルファチャンネルに使用される。現在のコンピュータは一般に24ビット単位よりも32ビット単位でデータを扱うのが得意であるため、32ビットでピクセルデータを保持するようにしているのである。格納順序はRGBの場合とBGRの場合がある。
トゥルーカラーに代表されるRGBカラーモデルでは、RGB色空間の外の色域にある色を表現できない。
ディープカラーは、10億色かそれ以上の色からなる色域を表現可能なものを指す。ディープカラーのシステムでは、xvYCC、sRGB、YCbCr という色空間を使用できる。
30/36/48/64ビットのものがある。R/G/Bそれぞれに10ビットを割り当てる(全体で30ビットの)ビデオカードが1990年代後半市場に登場した。例えばMacintosh用の Radius ThunderPower というカードがあり、30ビットカラー画像の編集をサポートするためのQuickDrawとAdobe Photoshopのプラグインを同梱していた。
シリコングラフィックスなどから、ハイエンドのグラフィックスワークステーション向けにチャンネルごとに12ビットや16ビットを割り当てるもの(36ビットカラー、48ビットカラー)が発売された。48ビットカラーの場合、ピクセルには64ビットを割り当て、16ビットをアルファチャンネルとする。
画像のダイナミックレンジを拡張する方法としてハイダイナミックレンジ合成(HDRI)などは浮動小数点数で輝度を表している。これにより、輝度の変化が激しい画像も1つの色空間で表現できる。R/G/Bそれぞれに32ビットを使うことが多い。ILMはOpenEXRという新たなオープン標準の画像ファイル形式を提案しており、これは16ビットの浮動小数点数を使うものである。
HDMI 1.3では、色深度として30ビット(10億7300万色)、36ビット(687億1000万色)、48ビット(281兆5000億色)を定義している。これに従い、NVIDIAでは2006年以降30ビットのディープカラーをサポートしたグラフィックスカードを製造している。AMDのRADEONでも同様である。ATI FireGL V7350 というビデオカードは40ビットカラーと64ビットカラーをサポートしている。
DisplayPort規格も24bpp以上の色深度をサポートしている。
Windows Hardware Engineering Conference 2008にて、マイクロソフトはWindows 7で30ビットおよび48ビットの色深度をサポートし、より広い色域を表現可能なscRGBをサポートすると発表した。
現在のテレビやコンピュータの表示は三原色(赤、緑、青)の輝度の混合で色を表している。例えば、明るい黄色は赤と緑の成分が同じだけ含まれ、青の成分を含まない。しかし、これは単なる近似であり、実際の黄色の灯りほど飽和することがない。このため、テキサス・インスツルメンツなどでは「ブリリアントカラー」と称する方式を提案している。これはRGBの他にシアン、マゼンタ、黄色の輝度情報も持つ方式である。三菱電機や三星などがこの方式を使ったテレビを開発している。各色チャンネルごとに8ビットとして、全体として48ビットの色深度となる。シャープはアクオスで「クアトロン」という技術を導入し、RGBに黄色の成分を加えて色域を拡大させている。(→RGBYを参照)