■練習★IDLのフィーリングを掴む■
IDLはC言語のようにプログラムをコンパイル実行する他に、一行ずつ命令を打ち込んで行うインタラクティブなプログラム実行もできる。
とりあえず、ここでは難しいことを考えず、後者の操作をすることによって、IDLの感触を掴むべし。
習うより慣れろ!
ちなみに、IDLには大文字小文字の区別はない。
■お題1.モノクロのTIFF画像を読み込んで、色を反転させ、表示する。
読み込む画像:IDLの練習フォルダの中にあるimage.tif
以下のソースを一行ずつIDLのコマンドラインに打ち込んでENTERを押してみる。
<実行ソース>
file=dialog_pickfile( ) ウインドウズのダイアログ画面が立ち上がるので、入力するファイルを選択。
img=read_tiff( file ) Read_tiffコマンドを使ってfileに格納されたアドレスのデータを、変数imgの中にTIFF画像として読み込む。
tr_img=intarr(768, 512) 色を反転させた画像を入れるための配列を用意する。ここでは整数型の配列を作っている。
tr_img=255-img 色の反転、255からimgの輝度値を引き算した式。黒は白に。白は黒になる。
tvscl, tr_img 結果の表示。
<実行結果>
■お題2.モノクロのTIFF画像を読み込んで、好きな範囲を切り取り、輝度値を表示する。
読み込む画像:IDLの練習フォルダの中にあるimage.tif
<実行ソース>
file=dialog_pickfile( ) ウインドウズのダイアログ画面が立ち上がるので、入力するファイルを選択。
img=read_tiff( file ) Read_tiffコマンドを使ってfileに格納されたアドレスのデータを、変数imgの中にTIFF画像として読み込む。
cut_img=img(100:120,200:220) imgのデータの切り取る範囲を指定。
print,cut_img 輝度値を画面に出力。
<実行結果>
■お題3.Landsat_TMのデータを読み込みNDVI(植生指標)画像を作成・TIFFファイルに出力する。
読み込む画像:各自で用意するべし。
ちなみに使用したのは以下のERmapper画像。
file=dialog_pickfile( ) 画像データのアドレスの読み込み
img=read_binary(file, data_type=1, data_dims=[555, 7, 555]) バイナリーとして読み込む。読み込んだのは7バンドの画像でBIL形式。
nir=img(*,3,*) 読み込んだ画像から近赤外の画像だけ抜き出す。
vis=img(*,2,*) 読み込んだ画像から可視域の赤の画像だけ抜き出す。
nir=reform(nir,555,555) 抜き出したら[555,1,555]となっている配列を[555,555]に変換する。
vis=reform(vis,555,555) 抜き出したら[555,1,555]となっている配列を[555,555]に変換する。
nir=float(nir) NDVIの計算結果は実数になるであらかじめデータを実数に変換しておく。
vis=float(vis) NDVIの計算結果は実数になるであらかじめデータを実数に変換しておく。
nvi=(nir-vis)/(nir+vis) NDVIを計算。
window,0,xsize=555,ysize=555 できた画像表示するためのウィンドを定義する。
!order=1 描画を左上から行うためのコマンド。IDLのデフォルトは左下からになっている。
tvscl, nvi NDVIは-1〜1の値をとっているので0〜255色にスケーリングさせて表示させる。
nvi_scl=tvrd( ) 表示されたウインド画像をデータとしてスキャンする。
write_tiff, "c:\nvi_image.tif",nvi_scl スキャンした画像をTIFF形式の画像で任意の場所に保存。
<実行結果>
以上。