
デジタル離散信号(画像や音声など)のビットプレーンとは、信号を表す各バイナリ数の特定のビット位置に対応するビットの集合である。 [ 1 ]
例えば、16ビットのデータ表現では、16個のビットプレーンが存在します。最初のビットプレーンには最上位ビットのセットが含まれ、16番目のビットプレーンには最下位ビットが含まれます。
最初のビットプレーンは、媒体の値に対して最も粗いながらも最も重要な近似値を与えることがわかります。ビットプレーンの数が増えるほど、最終段階への寄与は小さくなります。したがって、ビットプレーンを追加することで、より良い近似値が得られます。
mビットデータセットのn番目のビットプレーンのビットが1に設定されている場合、そのビットは2m −nの値に寄与し、そうでない場合は何も寄与しません。したがって、ビットプレーンは前のビットプレーンの値の半分に寄与することができます。たとえば、8ビット値10110101(10進数で181)では、ビットプレーンは次のように機能します。
ビットプレーンはビットマップと同義語として使われることがありますが、技術的には前者はメモリ内のデータの位置を指し、後者はデータ自体を指します。[ 2 ]
ビットプレーンを使用する際の重要な点の1つは、ビットプレーンがランダムノイズなのか、それとも重要な情報を含んでいるのかを判断することである。
これを計算する一つの方法は、各ピクセル(X, Y)を3つの隣接するピクセル(X − 1, Y)、(X, Y − 1)、(X − 1, Y − 1)と比較することです。ピクセルが3つの隣接するピクセルのうち少なくとも2つと同じであれば、それはノイズではありません。ノイズのあるビットプレーンでは、ピクセルの49%から51%がノイズになります。[ 3 ]
例えば、PCM音声エンコーディングでは、サンプルの最初のビットは関数の符号、つまり振幅値の範囲の半分を定義し、最後のビットは正確な値を定義します。上位ビットの置換は下位ビットの置換よりも歪みが大きくなります。ビットプレーンを使用する非可逆メディア圧縮では、下位ビットプレーンをエンコードする自由度が高く、上位ビットプレーンを保持することがより重要になります。[ 4 ]
上の図に示すように、初期のビットプレーン、特に最初のビットプレーンは、連続したビット列を持つ場合があり、そのためランレングス符号化によって効率的に符号化できます。これは、例えばプログレッシブグラフィックスファイル( PGF)画像フォーマットにおいて(変換領域で)行われています。
一部のコンピュータは、ビットプレーン形式でグラフィックを表示した。特にEGAグラフィックカードを搭載したPC、Amiga、Atari STなどがこれに該当し、より一般的なパック形式とは対照的だった。これにより、ビット演算(特にブリッターチップによる)を用いた特定の種類の画像処理や、視差スクロール効果が可能になった。
動き推定アルゴリズムの中には、ビットプレーンを使用して実行できるものもあります(たとえば、顕著なエッジ特徴をバイナリ値に変換するフィルタを適用した後など)。[ 5 ]これにより、最小限の計算コストで相関演算の十分な近似値が得られる場合があります。これは、空間情報が実際の値よりも重要であるという観察に基づいています。畳み込みは、ビットシフトとポップカウント演算に縮小したり、専用ハードウェアで実行したりできます。
ビットプレーン形式は、スパイクニューラルネットワークやニューラルネットワーク/畳み込みニューラルネットワークへの低精度近似に画像を渡すために使用されることがあります。[ 6 ]
多くの画像処理パッケージは、画像をビットプレーンに分割できます。NetpbmのPamarithやImageMagickのConvertといったオープンソースツールは、ビットプレーンの生成に利用できます。