3_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/map_proj/ellipse.txt
の末尾に
Moon, 1737.400, 1737.400
の一行(準拠楕円体の名称,a軸径[km],b軸径[km])を追加
測地座標系の設定
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.1.pl pds2hdr_latlon_v1.pl
使い方
MVA_hoge.img
というファイル名のLISMデータがあったとする.なおかぐや(SELENE)データアーカイブシステムからダウンロードしたデータの場合,
MVA_hoge.img(画像ファイル本体) MVA_hoge.jpg(サムネイル画像) MVA_hoge.lbl(PDS dettachedラベルファイル) MVA_hoge.ctg(カタログ情報ファイル)
という4つのファイルがセットになっているが.imgファイル以外はここでは使わない..
まず
$ perl pds2hdr_img_v5.1.pl < MVA_hoge.img
とすると,画面に.hdrファイルに使える情報が表示される.
内容に問題がなければ
$ perl pds2hdr_img_v5.1.pl < MVA_hoge.img > MVA_hoge.img.hdr
として,元の画像ファイル名の.hdrを追加したファイル名のテキストデータとして内容を書き出す.
perlスクリプト使用上の注意
上記実行例で,
pds2hdr_img_v5.1.pl
はファイルが置いてあるところへのパスが省略されている.カレントディレクトリにファイルがない場合は適切なパス指定を行う必要がある.
UNIX環境などでperl本体へのパスがわかっており,.plファイルに実行可能属性がついていれば,
$ perl pds2hdr_img_v5.1.pl < MVA_hoge.img
は例えば
$ ./pds2hdr_img_v5.1.pl < MVA_hoge.img
としてよい.
画像の見方
モノクロ画像の見方
ただファイルを開いただけでは画像は表示されない.見たいバンドを選び,Load Bandボタンを押すと画像が表示される.複数の画像を同時に見たいときはDisplay #ボタンからNew Displayを選ぶ. 画面には,
- ["Scroll窓"]
- 全体像を縮小表示する
- ["Image窓"]
- 1:1表示を行う
- ["Zoom窓"]
- 拡大表示を行う
がある.Scroll窓の縮小率はウィンドウサイズに依存しているため,任意に選択できない.また,スクロールバーも設定できないので,大きな画像の縮小表示についての自由度が低いのは難点といえる.
ゲイン,コントラストの調整は,Image窓のEnhanceメニューから適当な方法を選ぶ.窓の範囲内で自動調整ができるほか,
Enhance -> Interactive Stretching
からヒストグラムを見ながら調整できる.
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に変換することができる.
.img 用の .hdr を作成する.
$ ./pds2hdr_img_v5.1.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
から地図投影の手順に入る.
幾何情報のある画像
幾何情報のある画像は,好きな投影法で地図投影ができる.モザイクもできる.
Map -> Registration -> Warp from GCPs: Image to Map
から地図投影の手順に入る.GCPとはGround Control Pointのことで,画像内の特定の点に,緯度,経度などの位置情報(=幾何情報)が与えられている.また,親画像の中の同じ場所を写している点(対応点)の場所についての情報になっていることもある.
幾何情報のない画像に対する幾何情報の付与
幾何情報のない画像には,自分の手で幾何情報(GCP)を設定してやる必要がある.
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...
で変形方法を設定(変形の式,リサンプリング方法,解像度)して,変形を行う.よい変形結果を得るためには正確なGCPが多く必要.
IDLの使い方
IDLそのものの使い方は今回割愛する.
<URL:http://www.infra.kochi-tech.ac.jp/takalab/download/manual/idl/index.htm>
などが参考になる.
Keyword(s):
References:[第三回実習会]