ビットプレーン

ビットプレーン（）とは、VRAMのような1サンプル（例えば1ピクセル）につき複数ビットの情報があるようなものにおいて、いわゆる「プレーン方式」のうち、特に1サンプルにつき1ビットのみの情報を持つような方式、あるいはそのような情報を保持するメモリのことである。「ビットマップ」のほぼ同義語として使われることもあるが、ビットマップという語はメモリよりもデータ自身を指すような方向性があり、画像ファイルフォーマットを指していることもあるのに対し、ビットプレーンはそれが格納されるメモリのほうを指す。

 データ構造 
音声データの変位をPCM化したデータや、ビットマップ画像の輝度のデータの場合、元データの最上位ビットに相当するビットプレーンが全体のデータとしては最も重要であり、最下位ビットに対応するビットプレーンは最終的な音声や輝度への影響が最も少ない。（画像データであればガンマの考慮などが本来は必要だが、ここではそういったものは全て無視するとして）一般に、あるビットと比較して、そのひとつ下位のビットによる影響は 1/2 である。

例えば、8ビットの値 10110101（十進では181）をビットプレーンに分解すると次のようになる。
 ビットプレーン  値  寄与  累積 7  1  1 * 2^7 = 128 128 6  0  0 * 2^6 =0  128 5  1  1 * 2^5 = 32 160 4  1  1 * 2^4 = 16  176 3  0  0 * 2^3 = 0  176 2  1  1 * 2^2 = 4  180 1  0  0 * 2^1 = 0 180 0  1  1 * 2^0 = 1  181
（ここではLSB側を0としたが、MSB側を0とする場合もある）

 用途 
例えば、非可逆圧縮への応用を考えると、上位ビットが入れ替わった場合、それより下のビットを入れ替えたときよりも歪みがひどい。そのため、最上位ビットの方をなるべく保持し、最下位ビットの方を失ってもよしとする場合が多い。

上の図を見てもわかるように、上位のビットプレーンは同じビット（0または1）が長く並びやすい。そのため連長圧縮の効果が高い。これを利用した画像ファイルフォーマットとして  (PGF) がある。

ビットプレーンへの分解は、個々のビットプレーンがノイズでしかないのか、それとも重要な情報を含んでいるのかの判別に使われることもある。例えば、位置(X,Y) のピクセルの値を隣接する (X-1,Y)、(X,Y-1)、(X-1,Y-1) の値と比較し、それら3つのうち2つが対象ピクセルと同じ値だった場合、ノイズでないと判断する。ビットプレーンの49%から51%以上のピクセルがノイズと判断されたら、そのビットプレーンはノイズが多いと判断できる。

影響の少ないビットプレーンは、電子透かしやステガノグラフィなどといった情報の埋め込みなどにも利用される。

主な使用機種にPC-9800シリーズやAmigaがある。Amiga や Atari ST はグラフィックス表示にビットプレーン形式を採用していた。

 ソフトウェア 
画像処理ソフトウェアの多くは、画像をビットプレーンに分解することができる。オープンソースのツールとしては、NetpbmのPamarithやImageMagickのConvertがビットプレーンを生成するのに使える。

 脚注 

 関連項目 
 色深度
 電子透かし
 JPEG 2000

Category:データ構造
Category:画像ファイルフォーマット