Band Interleaved by Line (BIL)、Band Interleaved by Pixel (BIP)、Band Sequential (BSQ) は、マルチバンド イメージのイメージ データを整理するための主な 3 つの手法です。BIL、BIP、および BSQ 自体は画像形式ではありませんが、ファイル内の画像の実際のピクセル値を格納するための手法です。これらのファイルはシングルおよびマルチバンド イメージの表示をサポートし、白黒、グレースケール、疑似カラー、トゥルーカラー、およびマルチスペクトル イメージ データを処理します。
BIL、BIP、BSQ ファイルはバイナリ ファイルであり、ArcGIS によって適切に解釈される 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 ファイルで使用できる記述ファイルは 3 つあります。イメージ ピクセル データのレイアウトを表すヘッダー ファイル (*.hdr)、イメージ カラーマップを表すカラー ファイル (*.clr)、イメージの各バンドの統計データを表す統計ファイル (*.stx) です。これらの ASCII テキスト ファイルは、画像に関する既知の情報を使用して、テキスト エディターで生成することができます。
ヘッダー ファイル
ヘッダー ファイルはイメージ データを説明します。ヘッダー ファイルは画像ごとに生成する必要があります。次に示すように、ヘッダー ファイルの拡張子は *.hdr で、名前はイメージ データと同じです。
<画像>.hdr
ヘッダー ファイルには一連のエントリが含まれ、それぞれのエントリは画像の特定の属性を説明します。たとえば、画像の行または列の数を説明するエントリがあります。各エントリの形式は次のようになります。
<キーワード> <値>
この場合、<キーワード>は設定される特定の属性を示し、<値>は属性が設定される値を示します。ヘッダーのエントリはどの順序でもかまいませんが、ファイルに 1 行ずつ記述する必要があります。ファイルにおいてキーワードで始まらない行はすべてコメントとして扱われ、無視されます。
次のリストに、有効なキーワードと、それらが定義する特定のイメージ属性を示します。キーワードによっては、デフォルト値が定義されています。デフォルト値がイメージ データを正確に表す場合は、ヘッダー ファイルからキーワードを省略することができます。
nrows: 画像の行数。行はマップ座標系の X 軸に平行です。デフォルト値はありません。
nrows: 画像の列数。列はマップ座標系の Y 軸に平行です。デフォルト値はありません。
nbands: 画像のスペクトル バンドの数。デフォルトは 1 です。
nbits: バンドあたりのピクセルごとのビット数。有効な値は 1、4、8、16、32 です。デフォルト値はバンドあたりピクセルごとに 8 ビットです。各バンドのピクセルごとに 8 ビットを使用して格納される 3 バンド (R、G、B) のトゥルー カラー イメージの場合、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: Band Interleaved by Line。これがデフォルトです。
- bip: Band Interleaved by Pixel
- bsq: Band Sequential
skipbytes: イメージ データの先頭に達するまでにスキップするイメージ ファイル内のデータのバイト数。このキーワードにより、ファイル内の既存のイメージ ヘッダー情報をすべてバイパスすることができます。デフォルト値は 0 バイトです。
ulxmap: 左上のピクセルの中央の X 軸マップ座標。このパラメーターを指定する場合は、ulymap も設定してください。ulymap の値を設定しないと、デフォルト値が使用されます。
ulxmap: 左上のピクセルの中央の Y 軸マップ座標。このパラメーターを指定する場合は、ulxmap も設定してください。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 は、データの次のバンドの開始点へのインデックスと考えることができます。行内の任意のバンドの先頭から、その行に沿って bandrowbytes を移動すると、次のバンドの先頭に達します。
次の図は、3 バンド イメージのデータの 1 つの行を示しています。bandrowbytes は、イメージ データを格納するために使用されるバイト数と、次のバンドに達するためにスキップしなければならない余分なビットの合計です。
bandrowbytes = <イメージ データ> + <余分なビット>
bandrowbytes を設定するには、イメージ データのレイアウト、より正確には、行内の各バンドのピクセル値を格納するために使用されるバイト数を知っている必要があります。bandrowbytes が指定されていない場合は、次の方程式でデフォルト値が計算されます。
bandrowbytes = 最も小さい整数 (ncols x nbits) / 8
デフォルト値は、行内の各バンドの最後に余分な後続ビットがない場合や、各行のバンドあたりのバイト数がそのバンドのデータを格納するのに十分な整数の最小バイト数である場合に使用されます。たとえば、データに 2.5 バイトが必要である場合、そのデータを格納できる整数の最小バイト数は 3 バイトです。これら 2 つのケースでは、bandrowbytes を設定する必要はありません。ただし、各行のバンドあたりのバイト数がデフォルト値よりも大きい場合は、bandrowbytes を適切な値に設定します。
次の 2 つの例は、bandrowbytes のデフォルトの振舞いを示しています。1 つ目の例は、行内のバンドの最後に後続ビットがない場合、2 つ目の例は、後続ビットがある場合を表しています。
- バンドの最後に余分な後続ビットがない場合、bandrowbytes はイメージ データを格納するために使用されるバイト数と同じです。
たとえば、3 つのバンドとピクセルあたり 8 ビット (1 バイト) を使用する 6 x 6 の画像がある場合、イメージ データには各行のバンドあたり 6 バイトが必要です。bandrowbytes = <イメージ データ>
次の方程式に示すように、デフォルトで bandrowbytes は 6 バイトに設定されます。各行のバンドあたりのバイト数 = ncols x nbits = 6 x 8 = 48 ビット (6 バイト)
各行のバンドあたりのバイト数は bandrowbytes に等しいため、デフォルト値は適切な設定です。このため、bandrowbytes を明示的に指定する必要はありません。bandrowbytes = (ncols x nbits) / 8 = (6 x 8) / 8 = 48 / 8 bandrowbytes = 6 バイト
- 行のバンドの最後に後続ビットがある場合、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 (最も近い整数へ切り上げ)
totalrowbytes: 1 行あたりのデータの合計バイト数。各行の最後に余分な後続ビットがある場合は、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 (最も近い整数へ切り上げ)
この図は、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 行ずつ定義され、画像内のピクセル値に対応する色を説明します。
各エントリの形式は次のとおりです。
<値> <赤> <緑> <青>
この場合、<値>は所定のピクセル値、<赤>、<緑>、<青>はピクセルの色成分です。すべてのエントリをピクセル値によって昇順で並べ替えます。行内の空白ではない最初の文字が数字ではない場合、行はコメントと見なされ、無視されます。行内で 4 つ目のパラメーター (青) を超える空白ではない文字はすべて無視されるため、コメントとしても使用することができます。
赤、緑、青の 3 つの成分は、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}
この場合、<バンド>はバンド パラメーター、<最小値>はバンド内の最小ピクセル値、<最大値>はバンド内の最大ピクセル値、{平均} は平均ピクセル値、{標準偏差} は標準偏差、{線形コントラスト ストレッチの最小値} は線形コントラスト ストレッチの最小ピクセル値、{線形コントラスト ストレッチの最大値} は線形コントラスト ストレッチの最大ピクセル値です。
各パラメーターの値は 1 行に入力されます。空白ではない最初の文字が数字であるエントリはすべてコメントとして扱われ、無視されます。バンド数と最小および最大ピクセル値は必須パラメーターです。平均、標準偏差、線形ストレッチ最小値、線形ストレッチ最大値はオプション パラメーターです。オプション パラメーターを省略するには、「#」を使用します。
バンド数の範囲は 1 から nbands までとなります。linear_stretch_min および linear_stretch_max パラメーターは、表示される画像のコントラストを際立たせるために使用されます。linear_stretch_min よりも小さいピクセル値は黒で表示され、linear_stretch_max よりも大きいピクセル値は白で表示されます。最小線形ストレッチ パラメーターから最大線形ストレッチ パラメーターの間に分類されるピクセル値は、グレーの階調を使用して表示され、低いピクセル値ほど濃いグレーで表示されます。
線形ストレッチパラメーター間に分布するピクセル値は、ディスプレイ デバイスで利用可能な最大数のグレー階調を使用して表示されます。
linear_stretch_min および linear_stretch_max が指定されない場合は、デフォルトで、平均から linear_stretch_min の 2 つの標準偏差と linear_stretch_max の 2 つの標準偏差を引いたものになります。標準偏差が指定されない場合は、最小および最大ピクセル値がコントラスト ストレッチ パラメーターとして使用されます。
マルチバンド イメージの場合、各バンドは画像の表示を合成する前にストレッチされます。カラー ファイル (.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