■画像配列の基礎と操作■

IDLに画像を取り込んだ場合、そのデータ配列はBSQ,BIL,BIPのどれかになる。

マシンが左上から順に横へデータを読み込んでいく。

BSQはバンドの塊別に二次元の画像データを並べたものである。

BILはライン別に画素をバンドの順番で並べたものである。

BIPは画素別にバンドの値を集めてライン番号順に並べたものである。

基本的にはBSQが分かりやすい。

IDLにおいてはBSQを(X, Y, Z)とすると、BILは(X, Z, Y)、BIPは(Z, X, Y)の配列に相当する。

ちなみにERmapperの画像データ形式はBILである。

 

画像配列の操作

■任意の範囲の切り取り■

上の図のような30*30画素のデータから黄色い部分を抜き出す。

img=Indgen(30, 30) 例画像データの作成

cut_img=img(11:17, 7:13) (Xの最初:Xの終わり, Yの最初:Yの終わり、(Zの最初:Zの終わり)) もちろんZ面も切り出せる。

上記のような方法はPrintTVコマンドの時にも併用できる。

 

■BILからBSQへの変換■

切り出しの方法は配列の変換にも使える。

例:BILフォーマットのimg(200,7,200)をBSQファーマットのimage(200,200,7)にするには以下の通り。

for i=0, 6 do begin  i は0から始まり6まで1ずつ増加させるfor文

image(*,*,i)=img(*,i,*)   change from BIL to BSQ

endfor

 

■*(アスタリスク)による抜き出し■

上のBILからBSQの変換例で*マークを用いている。このマークを使うことによって画像の一部分を抜き出すことができる。

(*,10,10)と書くと、yの10個目&zの10個目にあるすべてのXの値を指すことになる。

例えば:下の図のようにRGBの3バンドの画像がimg(100,100, 3)であり、そこから真中の緑のバンドだけを抜き出す場合は

image=img(*, *, 1) となる。

 

以上。