Band Interleaved by Line (BIL)、Band Interleaved by Pixel (BIP)、Band Sequential (BSQ) は、マルチバンド イメージのイメージ データを整理するための主な 3 つの手法です。BIL、BIP、および BSQ 自体は画像形式ではありませんが、ファイル内の画像の実際のピクセル値を格納するスキーマです。これらのファイルはシングルおよびマルチバンド イメージの表示をサポートし、白黒、グレースケール、疑似カラー、トゥルーカラー、およびマルチスペクトル イメージ データを処理します。
BIL、BIP、BSQ ファイルはバイナリ ファイルであり、適切に解釈される ASCII ファイル ヘッダーが関連付けられている必要があります。このヘッダー ファイルには、画像の行と列の数、カラーマップがあるかどうか、経緯度など、画像に関する補助データが含まれます。
BIL データは、画像の各ラインまたは行のバンドごとのピクセル情報を格納します。たとえば、3 バンド イメージがあるとすれば、データの 3 つのバンドすべてが行 1 に対して書き出され、データの 3 つのバンドすべてが行 2 に対して書き出されるといったように、画像の行の合計数に達するまで以下同様に書き出されます。次の図は、3 バンド データセットの BIL データを示しています。
BIP データは BIL データに似ていますが、各ピクセルのデータはバンドごとに書き出されます。たとえば、同じ 3 バンド イメージがあるとすれば、バンド 1、2、3 のデータが列 1 の最初のピクセルに対して書き出され、バンド 1、2、3 のデータが列 2 の最初のピクセルに対して書き出されるといったように、以下同様に書き出されます。
BSQ 形式は、画像の情報を 1 バンドずつ格納します。つまり、バンド 1 のすべてのピクセルに対するデータが最初に格納され、次にバンド 2 のすべてのピクセルに対するデータが格納されるといったように、以下同様に格納されます。
イメージ記述ファイル
BIL、BIP、または BSQ ファイルで提供される記述ファイルには、画像ピクセル データのレイアウトを記述し、提供が必須であるヘッダー ファイル (*.hdr)、イメージ カラー マップを記述するカラー ファイル (*.clr)、および画像の各バンドのイメージ統計を記述する統計情報ファイル (*.stx) の 3 つがあります。これらの ASCII テキスト ファイルは、画像に関する既知の情報を使用して、テキスト エディターで生成することができます。
ヘッダー ファイル
ヘッダー ファイルはイメージ データを説明します。ヘッダー ファイルは画像ごとに生成する必要があります。ヘッダー ファイルの拡張子は *.hdr で、名前はイメージ データと同じです (例: <image>.hdr)。
ヘッダー ファイルには一連のエントリが含まれ、それぞれのエントリは画像の特定の属性を説明します。たとえば、画像の行または列の数を説明するエントリがあります。各エントリの形式は <keyword> <value> です。ここで、<キーワード> は設定される特定の属性を示し、<値> は属性が設定される値を示します。ヘッダーのエントリはどの順序でもかまいませんが、ファイルに 1 行ずつ記述する必要があります。ファイルにおいてキーワードで始まらない行はすべてコメントとして扱われ、無視されます。
ヘッダー ファイルには有効なキーワードが含まれ、各キーワードが定義する特定のイメージ属性を示します。キーワードによっては、デフォルト値が定義されています。デフォルト値がイメージ データを正確に表す場合は、ヘッダー ファイルからキーワードを省略することができます。
nrows キーワードは、画像の行数を示しています。行はマップ座標系の X 軸に平行です。デフォルト値はありません。
ncols キーワードは、画像の列数を示しています。列はマップ座標系の Y 軸に平行です。デフォルト値はありません。
nbands キーワードは、画像のスペクトル バンドの数を示しています。デフォルトは 1 です。
nbits キーワードは、バンドあたりのピクセルごとのビット数を示しています。有効な値は 1、4、8、16、および 32 です。デフォルト値は、バンドあたりのピクセルごとに 8 ビットです。各バンドのピクセルごとに 8 ビットを使用して格納される 3 バンド (RGB) のトゥルー カラー イメージの場合、nbits は 8、nbands は 3、ピクセルあたりの合計ビット数は 24 になります。nbits が 1 の画像では、nbands も 1 でなければなりません。
pixeltype キーワードは、ピクセル タイプが符号付き整数であることを示しています。キーワード pixeltype が指定されており、その値が SIGNEDINT でない限り、データが符号なし整数であることを前提としています。
byteorder キーワードは、画像のピクセル値が格納されるバイト オーダーを示しています。バイト オーダーは、ピクセルあたり 2 バイトを使用する 16 ビット イメージで重要となります。有効な値は以下のとおりです。
- I - Intel バイト オーダー (Silicon Graphics、DEC Alpha、PC)。リトル エンディアンとも呼ばれます。
- M - Motorola バイト オーダー (Sun、HP など)。ビッグ エンディアンとも呼ばれます。
デフォルトのバイト オーダーは、ソフトウェアを実行するホスト コンピューターのバイト オーダーと同じです。
layout キーワードは、イメージ ファイル内のバンドの構成を示しています。有効な値は以下のとおりです。
- bil - BIL (Band Interleaved by Line)。これがデフォルト設定です。
- bip - BIP (Band Interleaved by Pixel)。
- bsq - BSQ (Band Sequential)。
skipbytes キーワードは、イメージ データの先頭に達するまでにスキップするイメージ ファイル内のデータのバイト数を示しています。このキーワードにより、ファイル内の既存のイメージ ヘッダー情報をすべてバイパスすることができます。デフォルト値は 0 バイトです。
ulxmap キーワードは、左上のピクセルの中央の X 軸マップ座標を示しています。このパラメーターを指定する場合は、ulymap も設定してください。指定しない場合、デフォルト値が使用されます。
ulymap キーワードは、左上のピクセルの中央の Y 軸マップ座標を示しています。このパラメーターを指定する場合は、ulxmap も設定してください。指定しない場合、デフォルト値が使用されます。
xdim キーワードは、マップ単位でのピクセルの X ディメンションを示しています。このパラメーターを指定する場合は、ydim、ulxmap、および ulymap も設定してください。指定しない場合、デフォルト値が使用されます。
ydim キーワードは、マップ単位でのピクセルの Y ディメンションを示しています。このパラメーターを指定する場合は、xdim、ulxmap、および ulymap も設定してください。指定しない場合、デフォルト値が使用されます。
次の図は、ulxmap、ulymap、xdim、および ydim のデフォルト値を示しています。左上のピクセルの中心は、マップ座標 (ulxmap, ulymap) = (0, (nrows - 1))、左下のピクセルの中心は (0,0) になります。この図では、ulxmap と ulymap の座標値は (0,3) です。X ディメンションと Y ディメンションは、デフォルトで xdim = 1 および ydim = 1 になります。
bandrowbytes キーワードは、行あたりのバンドごとのバイト数を示しています。この値は整数でなければなりません。このキーワードは、行内の各バンドの最後にスキップする必要がある余分なビットがある場合に、BIL ファイルのみで使用されます。このキーワードは、次のバンドのデータの始点へのインデックスと考えることができます。行内の任意のバンドの先頭から、その行に沿って bandrowbytes を移動すると、次のバンドの先頭に達します。
次の図は、3 バンド イメージのデータの 1 つの行を示しています。bandrowbytes は、イメージ データを格納するために使用されるバイト数と、次のバンドに達するためにスキップしなければならない余分なビットの合計です。
bandrowbytes = image data + extra bits
bandrowbytes を設定するには、イメージ データのレイアウト、より正確には、行内の各バンドのピクセル値を格納するために使用されるバイト数を知っている必要があります。bandrowbytes が指定されていない場合は、次の方程式でデフォルト値が計算されます。
bandrowbytes = the smallest integer(ncols x nbits) / 8
デフォルト値は、行内の各バンドの最後に余分な後続ビットがない場合や、各行のバンドあたりのバイト数がそのバンドのデータを格納するのに十分な整数の最小バイト数である場合に使用されます。たとえば、データに 2.5 バイトが必要である場合、そのデータを格納できる整数の最小バイト数は 3 バイトです。これら 2 つのケースでは、bandrowbytes を設定する必要はありません。ただし、各行のバンドあたりのバイト数がデフォルト値よりも大きい場合は、bandrowbytes を適切な値に設定します。
次の 2 つの例は、bandrowbytes のデフォルトの振舞いを示しています。1 つ目の例は、行内のバンドの最後に後続ビットがない場合、2 つ目の例は、後続ビットがある場合を表しています。
- バンドの最後に余分な後続ビットがない場合、bandrowbytes はイメージ データを格納するために使用されるバイト数と同じです。
たとえば、3 つのバンドとピクセルあたり 8 ビット (1 バイト) を使用する 6 x 6 の画像がある場合、イメージ データには各行のバンドあたり 6 バイトが必要です。bandrowbytes = image data
次の方程式に示すように、デフォルトで bandrowbytes は 6 バイトに設定されます。bytes per band per row = ncols x nbits = 6 x 8 = 48 bits or 6 bytes
各行のバンドあたりのバイト数は bandrowbytes に等しいため、デフォルト値は適切な設定です。このため、bandrowbytes を明示的に指定する必要はありません。bandrowbytes = (ncols x nbits) / 8 = (6 x 8) / 8 = 48 / 8 bandrowbytes = 6 bytes
- 行のバンドの最後に後続ビットがある場合、bandrowbytes は各行のバンドあたりのデータのバンド数と等しくありません。
たとえば、ピクセルあたり 4 ビットを使用する、5 行 5 列の 3 バンド イメージがあるとします。デフォルトでは、bandrowbytes はデータを格納するのに十分な整数の最小バイト数に設定されます。この場合、デフォルト値が「3」に設定されます。これは、次式で計算されます。
これに対し、イメージ データに必要なのは 2.5 バイトのみであり、これは ncols に nbits を掛けることにより計算されます。したがって、スキップされるバイト数、つまり 3 バイト (bandrowbytes) と 2.5 バイト (イメージ データ バイト) の差は 0.5 バイト (4 ビット) です。次の図は、画像の各行に対するデータの 1 つのバンドを示しています。bandrowbytes = (ncols x nbits) / 8 = (5 x 4) / 8 = 20 / 8 = 2.5 = 3 (when rounded up to the nearest integer)
totalrowbytes キーワードは、行あたりのデータの合計バイト数を示しています。各行の最後に余分な後続ビットがある場合は、totalrowbytes を使用します。
BIL ファイルの場合、totalrowbytes のデフォルト値は次の方程式により計算されます。
totalrowbytes = nbands x bandrowbytes
デフォルト値は、各行の最後に余分な後続ビットがないことを前提としています。後続ビットがある場合は、totalrowbytes を適切な値に設定してください。たとえば、bandrowbytes が 3 に等しい 3 バンド イメージがある場合、totalrowbytes はデフォルトで 9 になります。行の最後に余分な後続ビットがある場合は、totalrowbytes を 10 に設定します。
BIP ファイルでは、デフォルト値の計算に別の方程式が使用されます。
totalrowbytes = (ncols x nbands x nbits) / 8
totalrowbytes 値は、行のピクセル データを格納するのに十分な、最も近い整数バイト数に切り上げられます。たとえば、3 バンドとピクセルあたり 4 バイトを使用する 5 (行) x 5 (列) の BIP イメージがある場合、totalrowbytes のデフォルト値は次のようになります。
totalrowbytes = (ncols x nbands x nbits) / 8
= (5 x 3 x 4) / 8
= 60 / 8
= 7.5
= 8 (when rounded up to the nearest integer)
この図は、BIP イメージの totalrowbytes のデフォルト設定を示しています。
totalrowbytes のデフォルト値がデータのレイアウトを正確に表さない場合は、totalrowbytes を各行の適切なバイト数に設定する必要があります。
bandgapbytes キーワードは、BSQ 形式の画像内のバンド間のバイト数を示しています。デフォルトは 0 です。
次に示すのは、イメージ データの前に 128 バイトのヘッダーがある BIL 衛星画像に対して生成される一般的なヘッダー ファイルです。
Sample BIL header file
Lines that don't begin with a keyword are treated as comments.
nrows 1024 Comments can be placed here as well.
ncols 1024
nbands 3
nbits 8
layout bil
skipbytes 128
次の表に、*.hdr ファイルで使用できるキーワードをまとめます。
キーワード | 有効な値 | 既定 |
---|---|---|
nrows | 1 以上の任意の整数 | なし |
ncols | 1 以上の任意の整数 | なし |
nbands | 1 以上の任意の整数 | 1 |
nbits | 1、4、8、16、32 | 8 |
pixeltype | SIGNEDINT | 符号なし整数 |
byteorder | I = Intel、M = Motorola | ホスト コンピューターと同じ |
layout | bil、bip、 bsq | bil |
skipbytes | 0 以上の任意の整数 | 0 |
ulxmap | 任意の実数 | 0 |
ulymap | 任意の実数 | nrows - 1 |
xdim | 任意の実数 | 1 |
ydim | 任意の実数 | 1 |
bandrowbytes | 1 以上の任意の整数 | 最小の整数 ≧ (ncols x nbits) / 8 |
totalrowbytes | 1 以上の任意の整数 | BIL の場合: nbands x bandrowbytes、BIP の場合: 最小の整数 ≥ (ncols x nbands x nbits) / 8 |
bandgapbytes | 0 以上の任意の整数 | 0 |
カラー ファイル
カラー ファイル (*.clr) は、シングルバンド疑似カラー イメージのイメージ カラー マップを説明するオプション ファイルです。このファイルが存在しない場合、画像はグレースケール イメージとして表示されます。
カラー ファイルには、画像内のピクセル値と関連付ける色が記録されます。色は、赤、緑、青の 3 つの成分の量で色を説明する RGB カラー モデルを使用して定義されます。ファイルは一連のエントリで構成されます。各エントリは 1 行ずつ定義され、画像内のピクセル値に対応する色を説明します。
各エントリの形式は <value> <red> <green> <blue> です。ここで、<値> は所定のピクセル値、<赤>、<緑>、<青> はピクセルの色成分です。すべてのエントリをピクセル値によって昇順で並べ替えます。行内の空白ではない最初の文字が数字ではない場合、行はコメントと見なされ、無視されます。行内で 4 つ目のパラメーター (青) を超える空白ではない文字はすべて無視されるため、コメントとしても使用することができます。
赤、緑、青の成分は、0 ~ 255 の範囲の値を使用して説明されています。色の値が増加するにつれて、特定の色成分の強度も高くなります。エントリを持たないピクセル値のデフォルト色は黒です。次に、11、16、18、19、21、98、および 99 のピクセル値を持つラスター土壌のサンプル カラー ファイルを示します。
Color file for Soils map
Entries are sorted in ascending order by pixel value.
11 255 0 0 (red)
16 255 165 0 (orange)
18 255 255 0 (yellow)
19 0 255 0 (green)
21 0 0 255 (blue)
98 0 255 255 (cyan)
99 160 32 240 (purple)
カラー ファイルはシングルバンド イメージでのみ使用されます。カラー ファイルを持つシングルバンド イメージは疑似カラー イメージとして解釈されます。マルチバンド イメージに付随するカラー ファイルは無視されます。
統計情報ファイル
統計情報ファイル (*.stx) は、グレースケールまたはマルチバンド イメージの各スペクトル バンドのイメージ統計を説明するオプション ファイルです。統計情報ファイルは一連のエントリで構成されます。エントリはバンドごとに 1 つ存在し、最小ピクセル値、最大ピクセル値、平均、標準偏差、および 2 つの線形コントラスト ストレッチ パラメーターを定義します。
各エントリの形式は次のとおりです (各バンドのすべての値がファイルの同じ行に定義されます)。
<band> <minimum> <maximum> {mean} {std_deviation}
{linear_stretch_min} {linear_stretch_max}
ファイルの各コンポーネントは次のとおりです。
- <band> はバンド数です。
- <minimum> はバンド内の最小ピクセル値です。
- <maximum> はバンド内の最大ピクセル値です。
- {mean} は平均ピクセル値です。
- {std_deviation} は標準偏差です。
- {linear_stretch_min} は、線形コントラスト ストレッチの最小ピクセル値です。
- {linear_stretch_max} は、線形コントラスト ストレッチの最大ピクセル値です。
各パラメーターの値は 1 行に入力されます。空白ではない最初の文字が数字であるエントリはすべてコメントとして扱われ、無視されます。バンド数と最小および最大ピクセル値は必須パラメーターです。平均、標準偏差、線形ストレッチ最小値、線形ストレッチ最大値はオプション パラメーターです。オプション パラメーターを省略するには、シャープ記号 (#) を使用します。
バンド数の範囲は 1 から nbands までとなります。linear_stretch_min および linear_stretch_max パラメーターは、表示される画像のコントラストを際立たせるために使用されます。linear_stretch_min よりも小さいピクセル値は黒で表示され、linear_stretch_max よりも大きいピクセル値は白で表示されます。最小線形ストレッチ パラメーターから最大線形ストレッチ パラメーターの間に分類されるピクセル値は、グレーの階調を使用して表示され、低いピクセル値ほど濃いグレーで表示されます。
線形ストレッチパラメーター間に分布するピクセル値は、ディスプレイ デバイスで利用可能な最大数のグレー階調を使用して表示されます。
linear_stretch_min と linear_stretch_max を指定しない場合は、デフォルトで平均から標準偏差の 2 倍を引いたものが linear_stretch_min、平均に標準偏差の 2 倍を足したものが linear_stretch_max になります。標準偏差が指定されていない場合、最小および最大ピクセル値がコントラスト ストレッチ パラメーターとして使用されます。
マルチバンド イメージの場合、各バンドは画像の表示を合成する前にストレッチされます。カラー ファイル (*.clr) が存在する場合、シングルバンド グレースケール イメージの線形コントラスト ストレッチが上書きされ、画像が疑似カラー イメージとして表示されます。
次に示すのは、バンドあたり 8 ビットを使用する、4 バンド衛星画像のサンプル統計情報ファイルです。
Image statistics file
1 2 118 67 10
Band 2 has linear contrast stretch parameters:
2 23 251 112 23 80 90
3 68 91 73 4
Band 4 does not contain values for mean and standard deviation:
4 126 198 # # 135 167