4_ENVIの使い方

ENVI/IDLのつかいかた(2011年2月探査育英会版)

PDF版はこちら: Using_ENVI_201102121.pdf

本文書ではENVIの全体的な使用方法について説明している.今回の実習会では取り扱わない項目については章/節タイトルにその旨を示している.

起動前

概要

ENVI (The Environment for Visualization Images): IDL (Interactive Data Language) で記述された画像処理システム.使用する際にライセンスサーバを参照するので,ネットワーク環境が必要.会津大学では外部アクセス可能なライセンスサーバを整備している.

起動

概要

Linux, Solaris, MacOSXの場合,シェルのコマンドラインから

% envi

で起動する.バックグラウンドモードではうまく動かないのでそのターミナルはENVI(とIDL)に占有されることになる. ENVIランタイム版は,

% envi_rt

で起動する.IDLのコマンドを使わないのであれば,こちらを使った方がよい.

Windows, MacOSXのGUI環境の場合,”envi”がランタイム版,”envi+idl”がIDL機能付きになるので,注意すること.

IDLは,GUIを持つ統合開発環境のidlde,またはコマンドライン環境のから私用することができる.idldeの起動は,

% idlde (= idl development environment)

IDLコマンドライン環境の起動は,

% idl

月座標系関係の設定

ENVIは各種地図投影情報を取り扱うことができるが,デフォルトでは月の地理座標系の設定がない.このため,設定ファイルに追記を行う必要がある.設定ファイルは,ENVIがインストールされたディレクトリ(通常ittという名前になっている)の中,

(インストールディレクトリ)/idl/idl/products/envi/map_proj

ENVI4.7以前は

(インストールディレクトリ)/envi/map_proj/

にある.テキストファイルなので,適当なエディタで編集すること.

準拠楕円体(月の場合は球体)の設定

(インストールディレクトリ)/idl/idl/products/envi/map_proj/ellipse.txt

ENVI4.7以前は

(インストールディレクトリ)/envi/map_proj/ellipse.txt

の末尾に

Moon, 1737.400, 1737.400

の一行(準拠楕円体の名称,a軸径[km],b軸径[km])を追加

測地座標系の設定

(インストールディレクトリ)/idl/idl/products/envi/map_proj/datum.txt

ENVI4.7以前は

(インストールディレクトリ)/envi/map_proj/datum.txt

の末尾に

Moon, Moon, 0, 0, 0

の一行(測地座標系の名称,準拠楕円体の名称,xyz各軸のシフト量)を追加.

データの読み込み

幾何補正の観点から画像データは以下に分類できる.

  • 幾何情報なし,地図投影されていない画像データ
  • 幾何情報あり,地図投影されていない画像データ(georeferenced data)
  • 地図投影済み画像データ(geocoded data)

汎用データ読み込み

以下の情報がわかっていれば,大抵の画像データは読み込める.

File -> Open Image File

でダイアログが出るのでファイルを選択すると次のヘッダ情報入力へ.

["Samples"]
画像の横ピクセル数
["Lines"]
画像の縦ピクセル数
["Bands"]
画像のバンド数
["Offset"]
データファイル中で画像データが始まるバイト位置
["Data Type"]
一画素の情報がどんな形式で記録されているか(整数,浮動小数点など)
["Byte Order"]
2バイト以上のデータについてのバイト順
["Interleave"]
マルチバンド画像の場合のデータ構造

を入力する.JPEGなど,通常よく用いられている画像データフォーマットはパラメータの入力の必要もなく読み込める.

PDS形式データ読み込み

ENVIではPlanetary Data System (PDS)フォーマットのマルチバンド画像データを読み込み可能(ただし,幾何情報や地図投影情報は読み込まない).

File -> Open Image File

でダイアログが出るのでファイルを選択する.いったん読み込んだデータはAvailable Band Listウィンドウに表示される.

PDS形式データ読み込み(perlスクリプトによる.hdr作成)

いったんENVIでデータを読み込むと,自動的にファイル名の末尾に.hdrとついたヘッダファイルが作成される.このファイルには画像サイズなどのデータ構造,波長情報などの他,geocoded dataの場合は地図投影情報などが書き込まれていて,ENVIがファイルを再度開く際に参照する.ENVIはPDSラベルに書き込まれている地図投影情報を認識できないが,別途ツールを用意して.hdrファイルにENVIの形式でPDSの情報を書き出してやればよい. LISMデータについてPDSラベルから.hdrファイルを作成するperlスクリプトが作成されている.

pds2hdr_img_v5.3.pl

使い方

予習用データの場合を例にとって説明する.アーカイブに含まれている

DTMTCO_03_01733N236E3123SC.ctg(カタログ情報ファイル)
DTMTCO_03_01733N236E3123SC.jpg(サムネイル画像)
DTMTCO_03_01733N236E3123SC.lbl(PDS dettachedラベルファイル)
DTMTCO_03_01733N236E3123SC.tgz
 +-DTMTCO_03_01733N236E3123SC.img (TC画像データ)
 +-DTMTCO_03_01733N236E3123SC.dtm (デジタル地形モデル: DTM)
 +-DTMTCO_03_01733N236E3123SC.dqa (品質情報)

のうち,TC画像データとデジタル地形モデルの二つのデータについてこのスクリプトを用い.hdrファイルを作成する.

まずTC画像データについて,

$ perl pds2hdr_img_v5.3.pl < DTMTCO_03_01733N236E3123SC.img 

とすると,画面に.hdrファイルに使える情報が表示される.

内容に問題がなければ

$ perl pds2hdr_img_v5.3.pl < DTMTCO_03_01733N236E3123SC.img > DTMTCO_03_01733N236E3123SC.img.hdr

として,元の画像ファイル名に.hdrを追加したファイル名のテキストデータとして内容を書き出す.

同様に,DTMについても

$ perl pds2hdr_img_v5.3.pl < DTMTCO_03_01733N236E3123SC.dtm

として内容の確認,

$ perl pds2hdr_img_v5.3.pl < DTMTCO_03_01733N236E3123SC.dtm > DTMTCO_03_01733N236E3123SC.dtm.hdr

として.hdrファイルの書き出しを行う.

perlスクリプト使用上の注意

上記実行例で,

pds2hdr_img_v5.3.pl

はファイルが置いてあるところへのパスが省略されている.カレントディレクトリにファイルがない場合は適切なパス指定を行う必要がある.

UNIX環境などでperl本体へのパスがわかっており,.plファイルに実行可能属性がついていれば,

$ perl pds2hdr_img_v5.3.pl < DTMTCO_03_01733N236E3123SC.dtm

は例えば

$ ./pds2hdr_img_v5.3.pl < DTMTCO_03_01733N236E3123SC.dtm

としてよい.

画像の見方

モノクロ画像の見方

ただファイルを開いただけでは画像は表示されない.見たいバンドを選び,Load Bandボタンを押すと画像が表示される.複数の画像を同時に見たいときはDisplay #ボタンからNew Displayを選ぶ. 画面には,

["Scroll窓"]
全体像を縮小表示する
["Image窓"]
1:1表示を行う
["Zoom窓"]
拡大表示を行う

がある.Scroll窓の縮小率はウィンドウサイズに依存しているため,任意に選択できない.また,スクロールバーも設定できないので,大きな画像の縮小表示についての自由度が低いのは難点といえる.

ゲイン,コントラストの調整は,Image窓のEnhanceメニューから適当な方法を選ぶ.窓の範囲内で自動調整ができる.自動調整の対象範囲としてScroll/Image/Zoomのいずれかが選べる.さらに,調整方法として単純な線形割り当ての他にもいくつかの方法を選ぶことができる.また,

Enhance -> Interactive Stretching

からヒストグラムを見ながら調整できる.

カラーマッピング方法の切り替え

通常全てのデータはモノクログレースケールで表示される(画素値の最大値から最小値までの範囲が輝度0-255に割り当て).これをRainbow Colorなど,別の画素値-表示のマッピング方法に切り替えて表示させることができる.DTMなどはこの方が視覚的に理解しやすい.

Tools -> Color Mapping -> ENVI Color Tables...

で表示されるマッピング方法(Color Table)を選んで設定する.

RGB画像の見方(今回は取り扱わない)

バンドリストの下のRGB Colorチェックボックスにチェックを入れ,RGBに割り当てるバンドを選択する.その後Load RGBボタンでカラー画像が表示される.

表示の同期

複数の画像を開いている状態で,参照する領域を同期させることができる.同期の方法には,画像座標を基準にした同期と,地図座標を基準にした同期の二種類がある.それぞれ,Image窓から

Tools -> Link -> Link Displays
Tools -> Link -> Geographic Link

を選んで設定する.

画像座標基準の場合,同期する画像の解像度が一致している必要がある.画像のサイズも一致していることが望ましい.画像間で位置のズレがある場合は同期時のオフセット量を設定することで,ズレを修正した状態で同期させることができる. 地図座標基準の同期の場合,同期する画像は地図投影済みである必要がある.表示の中心位置を同期させるので,解像度は異なっていても構わない(Zoom窓は表示倍率可変なのでそこで見かけを合わせることができる).一方でオフセットによる修正はできない.

バンド間演算(今回は取り扱わない)

比画像作成

Transforms -> Band Ratios

で比計算の組み合わせ入力ダイアログが開くので必要な組み合わせを入力する.比計算の出力はファイルに書き出した方が無難(メモリ上に書き出すこともできるがよほど小さい画像でないとメモリが足らなくなる).計算後Available Bands Listに結果が登録されるので,適当にRGBを割り当てて表示させればよい.

鉄計算

Luceyアルゴリズムによる鉄量計算などの複雑な演算は

Basic Tools -> Band Math

から数式を入力して計算可能.数式の変数である画素値はb1, b2…という形で表記する.数式の入力後,どのバンドの画素値を変数として用いるかの選択を行う.なお,使用できる関数についてはマニュアル参照.直接IDLで書いた関数を登録してもよい.

File -> Compile IDL Module

でIDLの.proファイルをコンパイルすれば,ユーザ関数をBand Mathで使用可能になる(IDL機能付き版のみ.ランタイム版ではコンパイルできない).

スペクトル抽出(今回は取り扱わない)

Z-profileの表示

マルチスペクトル画像の場合,表示画像の左上のメニューから,

Profiles -> Z Profile (Spectrum)

で画像を串刺しにしたスペクトルが表示される.

スペクトル抽出窓サイズの変更

通常,スペクトルはZoom窓の中央1pixelのデータが表示されているが,

Options -> Set Z Profile Avg Window

で抽出窓のサイズを変更できる.

複数点のスペクトルの収集

複数点のスペクトルを表示するにはプロットウィンドウの

Options -> Collect Spectra

をONにする.これで画像上をクリックする毎にプロットが追加される.また,このとき

Options -> Plot Key

をONにしておくと,Legendとして収集点の画像座標が表示される.Legend上で右クリックして現れるコンテキストメニューの中から,収集したスペクトルのうち不要なものを取り除くことができる.

複数点のスペクトルの比較

スペクトルの相対的な形状を比較する場合は,

Options -> Stack Plot

をONにすると,規格化したスペクトルがY軸方向に一定量オフセットして表示されるようになる.オフセット量は

Options -> Set Stack Offset...

で変更可能.

スペクトルの書き出し

必要な場所のスペクトルを取り終えたら,

File -> Output Data -> ASCII...

でスペクトルデータをテキスト形式で書き出せる.このデータは画像内の座標と画素値を含んでいる.

2D分布図(今回は取り扱わない)

二変量間の相関を見る時には,

Tools > 2D Scatter Plots...

で二次元のScatter Plotを見ることができる.データ点の密度が高い時は,プロット窓の

Options -> Density Slice

をONにすると密度がカラー割り当てされる.

2D分布図平面上での分類

プロット上で特定領域をマウスドラッグで囲い,右クリックすると,領域内に対応する画素群が一つのクラスに分類されるとともに,元画像上での画素位置も着色される.

クラスへの追加は領域の指定と右クリックの繰り返しで何度でも行える.新規クラスの追加は,

Class -> New

を選ぶ.いったんクラス分けを解除したい時は,

Options -> Clear All

を選ぶ.

幾何補正

幾何情報と補正,地図投影

上述の通り,幾何補正の観点から画像データは

  • 幾何情報なし,地図投影されていない画像データ
  • 幾何情報あり,地図投影されていない画像データ(georeferenced data)
  • 地図投影済み画像データ(geocoded data)

の3種類に分類できる.

かぐや(SELENE)データアーカイブシステムで公開されているLISMデータはそれぞれ

["L2Bデータ"]
幾何情報なし,地図投影されていない
["L2Cデータ"]
georeferenced data
["MAPデータ"]
geocoded data

に該当する.

georeferenced dataの取り扱い(LISM MI L2Cデータ)(今回は取り扱わない)

L2Cデータの場合,8x8画素おきの緯度経度がファイル中に記録されているので,これをENVIに読み込ませれば,geocoded dataに変換することができる.

上で紹介した pds2hdr_img_v5.3.pl に加えて,もう一つのperlスクリプト pds2hdr_latlon_v1.pl を使用する.

.img 用の .hdr を作成する.

$ ./pds2hdr_img_v5.3.pl < MVA_hoge.img > MVA_hoge.img.hdr

.img をコピーする.ENVIでの緯度経度情報読み取り用.

$ cp MVA_hoge.img MVA_hoge.latlon

.latlon 用の .hdr を作成する.

$ ./pds2hdr_latlon_v1.pl < MVA_hoge.latlon > MVA_hoge.latlon.hdr

.img, .latlon を ENVI で開いてから,.latlon を

Basic Tools -> Resize Data

で 8倍に拡大する(元が間引きされているので).このとき,bilinear でリサンプリング.拡大した *.latlon を

Map -> Georeference from Imput Geometry -> Build GLT で 

geographic lookup table (GLT) 形式のデータに変換する.経度(lon)が X, 緯度(lat)が Y に割り当て.Input Projection は Arbitrary か Geographic Lat/Lon なら大丈夫.Output projectionは任意.

Map -> Georeference from Imput Geometry -> Georeference from GLT

で .img を地図投影する.

geocoded data(地図投影済みデータ)のモザイク作成と投影法変換

geocoded data(地図投影済みデータ)が複数ある場合,これらを張り合わせて大きな一枚の画像データ(モザイク)を作成することができる.

Map -> Mosaicking -> Georefernced

で開くMap Based Mosaicの画面から,

Import -> Import  Files...

で源泉のデータを選び,

File -> Apply

で,モザイク後の地図投影法,解像度,リサンプリングの方法を決定してモザイクが作成される.

別の地図投影方法に変えたい場合は,

Map -> Convert Map Projections

から地図投影の手順に入る.

幾何情報のない画像に対する幾何情報の付与(今回は取り扱わない)

幾何情報のない画像には,自分の手で幾何情報(Ground Control Point: GCP)を設定し,georeferenced data化する必要がある.

Map -> Registration -> Select GCPs: Image to Map

か,

Map -> Registration -> Select GCPs: Image to Image

で入力できる.前者は,あらかじめ緯度経度を知っている場所を指定して,数字を入力する方法.後者は.親画像に対して,同じ場所を写している点を選んでいく方法.

ここでは後者について説明する.まず,基準となる親の画像(Base Image)とあわせる方の画像(Warp Image)を選択する.すると,Ground Control Points Selectionという窓が開くので,Base ImageとWarp Imageそれぞれで対応する点をZoom画面のカーソルで選び,Add Pointをクリックすると,一つGCPが追加される.Ground Control Points Selectionの

File -> Save GCPs to ASCII...

で作ったGCPをファイルに書き出せる.逆に,

File -> Restore GCPs from ASCII...

で昔作ったGCP(あるいは他の手段で求めたGCP)を読み込むことができる. GCPがあれば,Base Imageに対して画像を変形させて,合わせる(レジストレーションを取る)ことができる.

Options -> Warp Displayed Band...

または

Map -> Registration -> Warp from GCPs: Image to Map

で変形方法を設定(変形の式,リサンプリング方法,解像度)して,変形を行う.よい変形結果を得るためには正確なGCPが多く必要.

IDLの使い方

IDLそのものの使い方は今回割愛する.

<URL:http://www.infra.kochi-tech.ac.jp/takalab/download/manual/idl/index.htm>

などが参考になる.

Last modified:2011/02/24 11:10:41
Keyword(s):
References:[第四回実習会]