画像のファイルフォーマットに関する紹介サイトです

ファイルフォーマット

CEOSフォーマット

 CEOSは、「Comittee on Earth Obsevation Satellites」の略で、地球観測衛星委員会のことをいいます。CEOSフォーマットとは、地球観測衛星委員会が作成したCCTフォーマットに準拠して作成したフォーマットです。

 CEOSフォーマットには、バンド毎にファイルが分割されるCEOS−BSQ形式(Band Sequential)と、複数のバンドが多重化されたCEOS−BIL形式(Band Interlieved by Line)があります。

 衛星ALOS「だいち」の標準フォーマットは、CEOS−BSQ形式です。

 CEOSフォーマットは、以下の項目で構成されています。

 1.ボリュームディレクトリファイル

 2.リーダファイル

 3.イメージファイル

 4.トレイラファイル

 5.NULLボリュームディレクトリファイル


 ここで、衛星画像は、「イメージファイル」に収録されています。

 イメージファイルは、BSQの場合、1バンド1ファイルで、ファイル内の項目は次のような構成になっています。

 ◆ ファイルディスクリプタ

 ◆ イメージライン1

 ◆ イメージライン2

 ◆ イメージライン3

    ・・・・・

 ◆ イメージラインN

 ファイルディスクリプタには、画像を表示するために必要な、ライン数や、ラインあたりのイメージピクセル数等が収録されています。

 具体的にライン数は、181〜186バイト目に6桁整数で記録されており、ラインあたりのイメージピクセル数は、249〜256バイト目に8桁整数で記録されています。

 また、イメージライン(イメージレコード)は、大きく分けてヘッダ、イメージデータ、フッタの3つの部分から構成しており、画像化にあたってはイメージデータ部を読み込むことになります。


TIFFフォーマット

 TIFFは、Aldus社(現在、存在しない)とMicrosoft社によって開発された画像データを収録するフォーマットで、画像に関する各種情報は、タグに記述されています。ファイル拡張子は、「.tif」(「.tiff」の場合有り)です。

 TIFFはモノクローム1画素1バイトデータのみならず、1画素2バイトデータ、1画素4バイトデータ、さらに、複数の画像(バンド)を1つのファイルに収録できる等、なんでもできる汎用的なフォーマットです。画像データは、任意の複数のストリップに収録可能であるため、1つのバンドが1つのストリップに収録されている場合は、簡単に任意の座標のデータ値を知ることができますが、1つのバンドが複数のストリップに収録されている場合は、任意の座標のデータ値を把握することは容易ではないという問題もあります。
 本当に、自由度が大きいフォーマットであるといえます。
 また、ジオリファレンスに必要な位置情報も扱うことができる(「GeoTIFF」という。)ため、各種衛星データのフォーマットとして用いられています。

 


1.TIFFファイルの全体構成

 下図には、2種類のTIFFファイルのファイル構成を示しています。

 何れの図もTIFFファイルは、「ファイルヘッダ」、「IFD」、「イメージデータ」、{関連データ」から成っていることが分かります。

 ファイルヘッダは、ファイルの先頭の8バイトですが、その他のデータは、データの位置(オフセット)が決まっていません。

 例えば、「イメージデータ」が、「ファイルヘッダ」の次にある場合(1つ目の図)や、ファイルの途中にある場合(2つ目の図)など、「ファイルヘッダ」以外は、収録されている場所はバラバラです。

 ディスプレイ上に画像を表示するには、イメージデータの位置、寸法(縦横)、深さ(1ピクセルのバイト数)、カラ―かモノクロか等の情報が必要です。

 これらの情報は、IFDに収録されているため、画像データを表示するには、事前にIFDから必要情報を取得しなければなりません。




2.ファイルヘッダの構成

 ファイルヘッダは、TIFFファイルか否かの識別に使用します。また、収録データがモトローラ型(ビック・エンディアン)なのか、インテル型(リトル・エンディアン)なのかをここから読み取ります。

 モトローラ型の場合10進数で「77」「77」、インテル型の場合10進数で「73」「73」が登録されています。また、バージョン番号は10進数で「42」が登録されています。バージョン番号は2バイトであるため、モトローラ型の場合は10進数で「0」「42」、インテル型の場合は10進数で「42」「0」が登録されています。

 ファイルヘッダの最後(4バイト目から4バイト分)は、IFDの場所を示すオフセット値です。

 したがって、次に読み取る情報(IFD)は、このオフセット値の場所になります。



3.IFDの構成

 IFDは、「エントリカウント」、「IFDエントリ」、「IFDポインタ」の3つから構成されています。

 はじめに、IFDの個数を示すエントリカウントを読み取ります。

 次に、必要なIFDエントリを読み取ります。必要なIFDエントリの情報収集は、IFDエントリ内の「タグ」を目印に行います。

 エントリカウントに示すIFDエントリの数だけIFDエントリが続いた後、最後は次のIFDへのオフセットを示すIFDポインタ(4バイト)になります。



4.IFDエントリの構成

 1つのIFDエントリは、12バイトで構成しています。

 画像データを表示するために読み取る情報は、「データの型」、「カウントフィールド」内の情報、「データフィールド」内の情報です。

 「データフィールド」に収録された情報は、1)データそのもの、2)データの収録先を示すポインタ、3)データ数が複数ある場合のデータ収録先の最初のポインタ(データフィールドには、1つのデータしか記録できないため、データ数が複数の場合、別途、記録しています。このため、データフィールド内には、記録先の最初のポインタを示します。)になります。

 データの型のコード(数値1から12)は、以下のとおりです。
 1 :BYTE型(1バイト整数)符号なし
 2 :ASCII型(1バイトASCII文字)
 3 :SHORT型(2バイト短整数)符号なし
 4 :LONG型(4バイト長整数)符号なし
 5 :RATIONAL型(8バイト分数、4バイト分子と4バイト分母)
 6 :SBYTE型(1バイト符号付き整数)
 7 :UNDEFINED型(1バイトデータ)
 8 :SSHORT型(2バイト符号付き整数)
 9 :SLONG型(4バイト符号付き整数)
 10:SRATIONAL型(8バイト符号付き分数、4バイト分子と4バイト分母)
 11:FLOAT型(4バイト実数、IEEE浮動小数点形式)
 12:DOUBLE型(8バイト倍精度実数、IEEE倍精度浮動小数点形式)



 データが複数ある場合の別途収録先の情報内容

 収録バイト数が2バイトに決まっている以外は、通常、4バイト(long)で収録されています。


5.必須IFD(必須タグ)

 TIFFファイルでは、必須タグとして、以下の12項目が必ず収録されています。タグは他にもありますが、必須タグ以外のタグは、選択タグとして、収録されていたり、そうでなかったりします。


 なお、リモートセンシング画像処理ソフトウェア「RSP」では、以下の青色で塗りつぶした情報を読み取って、画像のフォーマット変換(TIFF画像をビットマップ画像に変換)を行っています。


 【必須タグ】


 【選択タグ】の一例


6.主なタグの内容

 主なタグについて、具体内容を説明します。


◆「ImageWidth」は、画像の横幅の数値です。値はデータフィールドに収録されています。


◆「ImageLength」は、画像の縦幅(高さ)の数値です。値はデータフィールドに収録されています。


◆「PhotometricInterpretation」は、モノクロ、カラ―等の種類を表しています。データフィールドには、0,1,2,3,4の5種類の整数が収録されています。ここで、0は画像が黒モードモノクロ(上限値が黒、0が白)を示します。1は画像が白モードモノクロ(上限値が白、0が黒)、2はRGBダイレクトカラ―を示します。3はカラ―マップ、4は論理マスクを示します。


◆「StripOffsets」は、画像が記録されているストリップのポインタ(オフセット)を示しています。カウントフィールドには、ストリップ数が記録されています。ストリップ数が1の場合は、データフィールドには、画像データのポインタ(オフセット)が記録されています。ストリップ数が2以上の場合は、データフィールドには、別途、各ストリップのポインタ(オフセット)がストリップの数だけ別途収録されたデータ集合の最初のポインタ(オフセット)が記録されています。この場合、別途収録されたデータ集合に記録された各ストリップに対応するポインタ(オフセット)情報を取得する必要があります。また、画像を取得するには、画像が収録されたストリップのポインタ情報以外にも、各ストリップの収録データ量を知る必要があるため、ストリップのデータ量を示す「StripByteCounts」の収録データと合わせて用いることになります(両方のデータがないと画像を取得することができません。)。


◆「StripByteCounts」は、ストリップに収録されているデータのデータ量を示しています。ストリップ数が2つ以上の場合、データフィールドには、複数のストリップのデータ量が収録されている最初のストリップ(1つ目のストリップ)のポインタが記録されています。「StripOffsets」と同様に、各ストリップのデータ量を読み取る必要があります。


◆「PlanarConfiguration」は、カラ−画像の場合、ピクセル優先(インターリーブ)か、プレーン優先(チャンネル毎)かを示します。ピクセル優先の場合(データフィールドの値=1の場合)、画像は「RGBRGBRGB・・・」の順に収録されています。プレーン優先の場合(データフィールドの値=2の場合)、画像は、赤データの集合、緑データの集合、青データの集合の順(RR・・・RGG・・・GBB・・・B)に収録されています。


 なお、TIFFファイルにおける1画素のピクセル順番(RGB)は、ビットマップファイルにおけるピクセル順番(BGR)と逆です。


7.TIFF仕様

 TIFFの仕様は、ここです。


8.TIFFのタグ情報の表示

 リモートセンシング画像処理ソフト「RSP」では、TIFFのタグ情報を出力・表示することができます。操作は、メニュー「ファイル」→「フォーマット変換」→「TIFF(GeoTIFF)」→「TIFF Tagコード出力」により、テキストファイルとして出力します(ファイル名は、元の画像ファイル名に「_Tag.txt」を付けたものになります)。
 TIFFについて知りたい方は、使用してみてください。




GeoTIFFフォーマット

 GeoTIFFフォーマットは、TIFF(Tagged Image File Format)に地理情報を付加したもので、基本的にTIFFに準拠しています。一言でいえば、ジオリファレンスデータを持ったTIFFといえます。

 GeoTIFFは、位置情報を持った画像ファイルで、GISソフトや「Google Earth」でも扱えるため、個人的には最も好きな画像フォーマットです。
 (フリーソフト「RSP」では、位置情報を持たない画像(JPEG、BMP、RAW、TIFF 等)から、位置情報を持ったGeoTIFF画像を作成することができます。)


1.GeoTIFFファイルの概要

 GeoTIFFは、TIFFをベースとし、これに地理情報を加えたファイルのことを言います。
 TIFFは、タグに画像データに関する必要情報を記載した構造になっています。
 TIFFのタグは、IFD(Image File Directory)エントリで構成されています。

 IFDエントリの構造は、次の4つです。


■タグID(データの識別コード)【2バイト】
■データの型【2バイト】(1〜12のコードを記載)
■カウントフィールド【4バイト】(データフィールドに含まれる値の数)
■データフィールドまたはデータポインタ【4バイト】(データまたはバイト単位のオフセット)


 GeoTIFFでは、このIFDエントリに、次の4つのものを用意しています。
 したがって、これらは、TIFFのIFDエントリとして記載します。


タグID=33550 ModelPixelScaleTag
タグID=34264 ModelTransformationTag
タグID=33922 ModelTiepointTag
タグID=34735 GeoKeyDirectoryTag
タグID=34736 GeoDoubleParamsTag
タグID=34737 GeoAsciiParamsTag


 ここで、上位3つのID(=33550、34264、33922)が、座標変換に使用する幾何学情報を示すタグで、ID=33550と33922の情報か(ID=33922のみでピクセル・スケール情報が読み取ることができるならば、ID=33550はなくても可)、ID=34264の情報か、どちらかだけでも問題ありません(また、ID=33922とID=34264でも可)。
 また、ID=34735は、GeoTIFFのキー情報を収録するタグで、そのデータは、数値データの場合、タグID=34736にデータの所在を記載し、文字列データの場合は、タグID=34737に所在を記載します。
 すなわち、ID=34735、34736、34737は、ひとくくりの情報であるといえます。


2.座標変換のためのタグ

 上記に記したように、タグID=33550、34264、33922は、画像の幾何学的な位置を示すタグになります。
 それぞれのタグの内容は、次のとおりです。


(1)Model Pixel Scaleタグ

 1画素の大きさ(寸法)を表すタグになります。
 このタグのIFDエントリの内容は、次のとおりです。
■タグID=33550
■データの型=12 (Double:8バイト)
■カウントフィールドN=3 (スケールx、スケールy、スケールzの3つあるため)
■データポインタ


(2)Model Tiepointタグ

 画像上の任意の画素の座標(画像左上の座標を(0、0、0)としたときの任意の座標(I、J、k)と、それに対応する地理上の座標(x、y、z)を表します。
 このタグのカウントフォールド(データ数)は、1点のデータが(I,J,K)(x,y,z)になるため、6の倍数になります。
 このタグのIDFエントリの内容は、次のとおりです。
■タグID=33922
■データの型=12 (Double:8バイト)
■カウントフィールドN=6×K  (Kはポイント数)
■データポインタ


(3)Model Transformationタグ

 画像をモデル上(地理上)の位置に座標変換するためのパラメータを示すタグです。



 収録データは、GeoTIFFファイルのデータポインタの位置に、1データ8バイトのDoubleで、a、b、c、・・・・、n、o、pの16個のデータを収録しています。
 このタグのIDFエントリの内容は、次のとおりです。
■タグID=34264
■データの型=12 (Double:8バイト)
■カウントフィールドN=16
■データポインタ


3.GoeDoubleParamsタグの構造

 このタグは、ID=34735(GeoKeyDirectoryタグ)の情報のうち、数値情報を収録しているポインタを示すタグです。したがって、ID=34735において、数値情報が必要無ければ、不用になります。
 IDFエントリの内容は、次のとおり。
■タグID=34736
■データの型=12 (Double:8バイト)
■データ数
■データポインタ


4.GeoAsciiParamsタグの構造

 このタグは、ID=34735(GeoKeyDirectoryタグ)の情報のうち、文字列情報を収録しているポインタを示すタグです。したがって、ID=34735において、文字列情報が必要なければ不要になります。
 IFDエントリの内容は、次のとおり。
■タグID=34737
■データの型=2 (ASCII)
■データ数=文字数("|"を含む)
■データポインタ


 ここで、データポインタに記述する文字列の書き方として、次のようなルールがあります。
■文字列の終わりには、必ず”|”を入れること。
■複数の文字列を登録する。
 例えば、下記のとおり2つの内容を登録するには、次のようになります。


"Corrected Satellite Data|UTM / WGS84|"


 この例では、全体の文字数は37文字になります。
 "|"は、各文字列の終わりを表しています。
 各文字列は、関係するGeoKeyで指定する文字列に対応しています。


5.GeoKeyDirectoryタグの構造とGeoKeyの構造

 GeoKeyDirectoryタグ(ID=34735)は、GeoKey情報の場所を示すタグです。
 GeoKeyデータにおいて、数値データ(Double)はGeoDoubleParamsタグ(ID=34736)に登録場所(データポインタ)を示し、文字列データはGeoAsciiParamsタグ(ID=34737)に登録場所(データポインタ)を記述します。
 IDFエントリの内容は、次のとおり。
■タグID=34735
■データの型=3 (Short、unsigned integer:2バイト)
■データ数=4の倍数
■データポインタ(GeoKeyデータの登録場所(データポインタ))


 データポインタ先にあるGeoKeyデータの構造は、次のようになります。


 1つのGeoKeyの構造は、以下の4つのShort(2バイトunsigned integer)データからなります。
 最初の4つのデータがヘッダ情報で、5つ目以降からキー・エントリ・データになります。


(a)ヘッダ情報の構造(各2バイト)

■Key Directory Version =1
■Key Revision =1
■Minor Revision =2
■Number of Keys =Geo Keyの数


(b)キー・エントリの構造(各2バイト)

■キーID
■TIFFタグ番号(=0、または34736、または34737)
■カウント(データ数)
■データ、またはオフセット(データポイントからのオフセット)


6.GeoTIFF設定のためのGeoKey

 GeoKey(キーID)のうち、GeoTIFFの設定情報を表すものには、次の3つのキーがあります。ここで、キーID=1024と1025は必須の情報です。
 また、キーID=1024において、データ=2ならば、Model Pixel ScaleタグおよびModel Tiepointタグで示した数値は、経度・緯度のデータを示します。一方、キーID=1024において、データ=1ならば、Model Pixel ScaleタグおよびModel Tiepointタグで示した数値は、例えば、UTM等のプロジェクトで定義された距離(m)等のデータを示します。


(1)GT Model Type

■キーID=1024
■TIFFタグ番号=0
■カウント=1
■データ:
 Model Type Projected = 1
 Model Type Geographic (緯度・経度)= 2
 Model Type Geographic(X、Y、Z) = 3


(2)GT Raster Type

■キーID=1025
■TIFFタグ番号=0
■カウント=1
■データ:
 ラスター画素が面データの場合=1
 ラスター画素が点データの場合=2


 面データの場合は、1ピクセル(面)の左上の座標が(0,0)、右下の座標が(1,1)、ピクセル中心が(0.5,0.5)になります。
 一方、点データの場合は、画像左上の1ピクセルの中心が(0,0)になります。


(3)GT Citation

■キーID=1026
■TIFFタグ番号=34737 (文字列)
■カウント=文字数(最後に記載する"|"を含む)
■データ=34737のデータポイント(データポイントをゼロとした場合)からのオフセット値


7.その他のGeoKey

 キーID=1024で定義したモデルタイプや鉛直(高さ)データの有無によって、設定するGeoKeyが異なります。
 それぞれのGeoKeyのキーIDは、次のとおりです。


(1)GeoGraphicに関するGeoKey


GeographicTypeGeoKey = 2048
GeogCitationGeoKey = 2049
GeogGeodeticDatumGeoKey = 2050
GeogPrimeMeridianGeoKey = 2051
GeogLinearUnitsGeoKey = 2052
GeogLinearUnitSizeGeoKey = 2053
GeogAngularUnitsGeoKey = 2054
GeogAngularUnitSizeGeoKey = 2055
GeogEllipsoidGeoKey = 2056
GeogSemiMajorAxisGeoKey = 2057
GeogSemiMinorAxisGeoKey = 2058
GeogInvFlatteningGeoKey = 2059
GeogAzimuthUnitsGeoKey = 2060
GeogPrimeMeridianLongGeoKey = 2061


(2)Projectedに関するGeoKey


ProjectedCSTypeGeoKey = 3072
PCSCitationGeoKey = 3073
ProjectionGeoKey = 3074
ProjCoordTransGeoKey = 3075
ProjLinearUnitsGeoKey = 3076
ProjLinearUnitSizeGeoKey = 3077
ProjStdParallel1GeoKey = 3078
ProjStdParallel2GeoKey = 3079
ProjNatOriginLongGeoKey = 3080
ProjNatOriginLatGeoKey = 3081
ProjFalseEastingGeoKey = 3082
ProjFalseNorthingGeoKey = 3083
ProjFalseOriginLongGeoKey = 3084
ProjFalseOriginLatGeoKey = 3085
ProjFalseOriginEastingGeoKey = 3086
ProjFalseOriginNorthingGeoKey = 3087
ProjCenterLongGeoKey = 3088
ProjCenterLatGeoKey = 3089
ProjCenterEastingGeoKey = 3090
ProjCenterNorthingGeoKey = 3091
ProjScaleAtNatOriginGeoKey = 3092
ProjScaleAtCenterGeoKey = 3093
ProjAzimuthAngleGeoKey = 3094
ProjStraightVertPoleLongGeoKey = 3095


(3)鉛直(高さ)に関するGeoKey


VerticalCSTypeGeoKey = 4096
VerticalCitationGeoKey = 4097
VerticalDatumGeoKey = 4098
VerticalUnitsGeoKey = 4099


 GeoTIFFフォーマットの詳細を知りたい方は、以下をクリックしてください。


 GeoTIFF情報のリンク


 GeoTIFFの仕様



【GeoTIFFのコード情報の表示】

 リモートセンシング画像処理ソフト「RSP」では、GeoTIFFのコード情報を出力・表示することができます。操作は、メニュー「ファイル」→「フォーマット変換」→「TIFF(GeoTIFF)」→「GeoTIFF コード出力」により、テキストファイルとして出力します(ファイル名は、元の画像ファイル名に「_Geo.txt」を付けたものになります)。
 GeoTIFFについて知りたい方は、使用してみてください。




<Landsat-8の例>



<ALOSの例>


GeoTIFF作成

 フリーのリモートセンシング画像処理ソフトウェア「RSP」では、画像(8ビットモノクロ、8ビットパレット、24ビットカラー、16ビットモノクロ・符号なし整数、32ビットモノクロ・実数)(BMP、jpeg、TIFF、RAW)をGeoTIFFに変換・作成することができます。
 RSPを使って作成できるGeoTIFF画像のGeoコードは、上記のGeoTIFFフォーマットで紹介した全てのコードです。興味のある方は、ご使用下さい。
 RSPでは、GeoTIFFファイルは、一旦、BMPまたはRAWにフォーマット変換して画像を解析した後、解析後画像をGeoTIFFとして保存するという方法を用いています。
 RSPを使ったGeoTIFF作成方法は、こちら「GeoTIFF作成」をご覧ください。


 なお、最も簡単に(最低限の情報で)GeoTIFFファイルを作成する場合は、以下の情報をTIFFファイルに追加することになります。
 ■GT Model Type
  モデルタイプが、Projectedタイプなのか、Geograhicタイプなのかを指定します。
 ■GT Raster Type
  ラスターデータが面データなのか、点データなのかを指定します。
 ■Model Pixel Scale
  X、Y、Zの各座標軸の1ピクセル長(1ピクセル角)を指定します。
  長さであれば、m単位で、角度(経度・緯度)であれば度(decimal degrees)の値を指定します。
 ■Model Tiepoint
  画像の座標(I,J,K)に対する地理座標(X,Y,Z)を指定します。
  通常、画像の左上(uper-left)の座標(0,0,0)に対する地理座標(X,Y,Z)を指定します。
 ■Projected CS Type Geo Key または Geographic Type Geo Key
  Projected CS Type Geo key(キーID=3072)とその内容を記した文字列(キーID=3073)、あるいはGeographic Type Geo Key(キーID=2048)とその内容を記した文字列(キーID=2049)を指定します。
  このキーでは座標系のタイプ(種類)をコードで指定します。


BITMAP(ビットマップ)フォーマット

 衛星データのフォーマットとは直接関係は無いですが、リモートセンシング画像処理ソフトウェアRSPでは、このフォーマットを取り扱っているため、Windowsの画像標準フォーマットであるビットマップについて紹介します。

 ビットマップは、1画素8ビット(最大256色)と、1画素24ビット(最大16,777,216色)の2とおりあります。

 ビットマップのフォーマットは、次の構成になっています。

 1.ファイルヘッダ

 2.情報ヘッダ

 3.カラーパレット(8ビット以下の場合に存在する)

 4.画像データ


1.ファイルヘッダ

◆ファイルタイプ(2バイト)

 'BM’の2文字

◆ファイルサイズ(4バイト)

 8ビットのビットマップの場合、1078+画像データのサイズ。

 24ビットのビットマップの場合、54+画像データのサイズ。

◆予約領域(2バイト)

 常に0

◆予約領域(2バイト)

 常に0

◆ファイル先頭から画像データまでのオフセット(4バイト)

 8ビットのビットマップの場合、1078。

 24ビットのビットマップの場合、54。


2.情報ヘッダ

◆情報ヘッダのサイズ(4バイト)

 常に40。

◆画像の幅(ピクセル数)(4バイト)

◆画像の高さ(ピクセル数)(4バイト)

 正の場合は、画像データは下から上へ。

 負の場合は、画像データは上から下へ。

 ビットマップは、通常、画像データは下から上のため、正の数値。

◆プレーン数(2バイト)

 常に1。

◆1画素あたりのデータサイズ(2バイト)

 8ビット(256色)ビットマップは、8。

 24ビット(1677万色)ビットマップは、24。

 32ビットのビットマップは、32。

◆圧縮形式(4バイト)

 無圧縮の場合、0。

◆画像データのサイズ(4バイト)

 画像データ全体のバイト数。

 1ライン(幅)は、必ず4の倍数でなければならないというビットマップのルールがあります。

 8ビットで、幅が10ピクセルで高さが10ピクセルの場合、1ラインのバイト数は、12バイトになります。よって、画像データ全体のバイト数は、12×10=120バイトになります。

 24ビットで、幅が10ピクセルで高さが10ピクセルの場合、1ラインのバイト数は、32バイト(10ピクセル×3バイト=30バイト。4の倍数にするには、これに2を加えて32バイト)。よって、画像データ全体のバイト数は、32×10=320バイトになります。

◆横方向解像度(4バイト)

 1mあたりの画素数。0でもOK。

◆縦方向解像度(4バイト)

 1mあたりの画素数。0でもOK。

◆使用色数

 0でOK。

◆重要なパレットのインデックス

 0でOK。


3.カラーパレット

 解像度8ビット以下の場合に存在します。24ビット及び32ビットのビットマップの場合は、不要です。

◆カラーパレット(1024バイト)

 画像データ値 0 のカラーパレット(4バイト):青、緑、赤、予約領域(0)

 画像データ値 1 のカラーパレット(4バイト):青、緑、赤、予約領域(0)

 画像データ値 2 のカラーパレット(4バイト):青、緑、赤、予約領域(0)

                ・・・・・・・

 画像データ値255のカラーパレット(4バイト):青、緑、赤、予約領域(0)


4.画像データ

 ビットマップファイルには、1ライン(幅)のデータ長は必ず4の倍数(4バイトの倍数)にしなければならないというルールがあります。

 また、ビットマップの画像データの並びは、通常、下から上に向かった配列になります。(1ラインは左から右に向かった配列。)

 8ビットのビットマップの場合は、そのまま1バイト数値の配列になります。

 24ビットのビットマップの場合は、1画素が青、緑、赤の順の配列になります。

 (1ライン4の倍数とするため、余ったバイトには0を割り当てる。)

 32ビットのビットマップの場合は、1画素が青、緑、赤、予約の順の配列になります。

 (予約には、0を割り当てる。)


 

バイトオーダ(ビックエンディアン/リトルエンディアン)

 マルチバイト(2バイト以上のデータ)ファイルの保存形式には、ビックエンディアン(Big Endian)と、リトルエンディアン(Little Endian)があります。

 2バイト以上のデータの場合、データは1バイトごとに分割して記録され、上位バイト・下位バイトの順に記録する方式をビックエンディアンと言い、下位バイト・上位バイトの順に記録する方式をリトルエンディアンと言います。

 具体的に、2バイト(16ビット)で数値1を記録する例を示します。

 ビックエンディアンは、ビットの並びで「00000000 00000001」となります。

 一方、リトルエンディアンは、ビットの並びで「00000001 00000000」になります。

 使用するアプリケーションソフトウェアによって、ビックエンディアンを使用しているものと、リトルエンディアンを使用しているものがあり、ソフトウェアによって全く違う数値として解釈してしまうという問題があり注意が必要です。

 Windows等のインテルのマイクロプロセッサを使用しているコンピュータは、リトルエンディアンを採用しており、Macintosh等のモトローラのマイクロプロセッサを使用しているコンピュータではビックエンディアンを採用しています。

 リモートセンシング画像処理ソフトウェアRSPで取り扱う2バイトRAWデータの読み込みは、Ver.2.05まではビックエンディアン形式を採用していますが、Ver.2.06以降はリトルエンディアンとビックエンディアンの両方扱えます。


RAWファイル

 リモセン画像処理ソフトRSPで取り扱うRAWファイルは、バンド(チャンネル)毎、ヘッダなしの画像データ(イメージデータ)のみのファイルです。
 例えば、unsigned integer (1ピクセル2バイト)データで、横×縦が100×100の計10000ピクセルのRAWファイルの全データ量は、20000バイト(=2バイト×10000ピクセル)になります。
 また、float(1ピクセル4バイト)データで、横×縦が100×100の計10000ピクセルのRAWファイルの全データ量は、40000バイト(=4バイト×10000ピクセル)になります。

 RAWファイルそのものには、ヘッダ情報がないため、1ピクセル(画素)がunsigned char形式なのか、unsigned integer形式なのか、float形式なのかがわかりません。
 また、横幅のピクセル数や縦幅(高さ)のピクセル数もわかりません。さらに、1ピクセル2バイト以上のデータの場合、バイトオーダ(ビックエンディアンなのか、リトルエンディアンなのか)を知る必要があります。
 このため、RAWファイルを画像化するにあたっては、別途、これらの情報を知る必要があります。リモセン画像処理ソフトRSPでは、RAW画像ファイルの表示時にこれらの情報を指定するか、あるいは、あらかじめ、別途、ヘッダファイルを用意することで、RAW画像ファイルに対して画像処理を行うことができます。
 なお、ヘッダファイルの拡張子は、「.hd1」で、テキストエディタで内容を見ることができます。