リモートセンシング 講座
|
---|
ファイルフォーマット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つのバンドが複数のストリップに収録されている場合は、任意の座標のデータ値を把握することは容易ではないという問題もあります。
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)は、以下のとおりです。
データが複数ある場合の別途収録先の情報内容 収録バイト数が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」を付けたものになります)。
GeoTIFFフォーマットGeoTIFFフォーマットは、TIFF(Tagged Image File Format)に地理情報を付加したもので、基本的にTIFFに準拠しています。一言でいえば、ジオリファレンスデータを持ったTIFFといえます。 GeoTIFFは、位置情報を持った画像ファイルで、GISソフトや「Google Earth」でも扱えるため、個人的には最も好きな画像フォーマットです。
1.GeoTIFFファイルの概要 GeoTIFFは、TIFFをベースとし、これに地理情報を加えたファイルのことを言います。
IFDエントリの構造は、次の4つです。 ■タグID(データの識別コード)【2バイト】
GeoTIFFでは、このIFDエントリに、次の4つのものを用意しています。
タグID=33550 ModelPixelScaleTag
ここで、上位3つのID(=33550、34264、33922)が、座標変換に使用する幾何学情報を示すタグで、ID=33550と33922の情報か(ID=33922のみでピクセル・スケール情報が読み取ることができるならば、ID=33550はなくても可)、ID=34264の情報か、どちらかだけでも問題ありません(また、ID=33922とID=34264でも可)。
2.座標変換のためのタグ 上記に記したように、タグID=33550、34264、33922は、画像の幾何学的な位置を示すタグになります。
(1)Model Pixel Scaleタグ 1画素の大きさ(寸法)を表すタグになります。
(2)Model Tiepointタグ 画像上の任意の画素の座標(画像左上の座標を(0、0、0)としたときの任意の座標(I、J、k)と、それに対応する地理上の座標(x、y、z)を表します。
(3)Model Transformationタグ 画像をモデル上(地理上)の位置に座標変換するためのパラメータを示すタグです。 収録データは、GeoTIFFファイルのデータポインタの位置に、1データ8バイトのDoubleで、a、b、c、・・・・、n、o、pの16個のデータを収録しています。
3.GoeDoubleParamsタグの構造 このタグは、ID=34735(GeoKeyDirectoryタグ)の情報のうち、数値情報を収録しているポインタを示すタグです。したがって、ID=34735において、数値情報が必要無ければ、不用になります。
4.GeoAsciiParamsタグの構造 このタグは、ID=34735(GeoKeyDirectoryタグ)の情報のうち、文字列情報を収録しているポインタを示すタグです。したがって、ID=34735において、文字列情報が必要なければ不要になります。
ここで、データポインタに記述する文字列の書き方として、次のようなルールがあります。
"Corrected Satellite Data|UTM / WGS84|" この例では、全体の文字数は37文字になります。
5.GeoKeyDirectoryタグの構造とGeoKeyの構造 GeoKeyDirectoryタグ(ID=34735)は、GeoKey情報の場所を示すタグです。
データポインタ先にあるGeoKeyデータの構造は、次のようになります。 1つのGeoKeyの構造は、以下の4つのShort(2バイトunsigned integer)データからなります。
(a)ヘッダ情報の構造(各2バイト) ■Key Directory Version =1
(b)キー・エントリの構造(各2バイト) ■キーID
6.GeoTIFF設定のためのGeoKey GeoKey(キーID)のうち、GeoTIFFの設定情報を表すものには、次の3つのキーがあります。ここで、キーID=1024と1025は必須の情報です。
(1)GT Model Type ■キーID=1024
(2)GT Raster Type ■キーID=1025
面データの場合は、1ピクセル(面)の左上の座標が(0,0)、右下の座標が(1,1)、ピクセル中心が(0.5,0.5)になります。
(3)GT Citation ■キーID=1026
7.その他のGeoKey キーID=1024で定義したモデルタイプや鉛直(高さ)データの有無によって、設定するGeoKeyが異なります。
(1)GeoGraphicに関するGeoKey GeographicTypeGeoKey = 2048
(2)Projectedに関するGeoKey ProjectedCSTypeGeoKey = 3072
(3)鉛直(高さ)に関するGeoKey VerticalCSTypeGeoKey = 4096
GeoTIFFフォーマットの詳細を知りたい方は、以下をクリックしてください。 【GeoTIFFのコード情報の表示】 リモートセンシング画像処理ソフト「RSP」では、GeoTIFFのコード情報を出力・表示することができます。操作は、メニュー「ファイル」→「フォーマット変換」→「TIFF(GeoTIFF)」→「GeoTIFF コード−>テキストファイル」により、テキストファイルとして出力します(ファイル名は、元の画像ファイル名に「_Geo.txt」を付けたものになります)。
GeoTIFF作成 フリーのリモートセンシング画像処理ソフトウェア「RSP」では、画像(8ビットモノクロ、8ビットパレット、24ビットカラー、16ビットモノクロ・符号なし整数、32ビットモノクロ・実数)(BMP、jpeg、TIFF、RAW)をGeoTIFFに変換・作成することができます。
なお、最も簡単に(最低限の情報で)GeoTIFFファイルを作成する場合は、以下の情報をTIFFファイルに追加することになります。
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ファイルは、バンド(チャンネル)毎、ヘッダなしの画像データ(イメージデータ)のみのファイルです。
RAWファイルそのものには、ヘッダ情報がないため、1ピクセル(画素)がunsigned char形式なのか、unsigned integer形式なのか、float形式なのかがわかりません。
Copyright (C) 2009- Aoyama All Rights Reserved.
|