■プログラムを書く■

ここではIDLにおけるプログラムの書き方と実行・コンパイルの解説を簡単に行う。

まずは下のグレースケールのTIFF画像(350*275)を白黒2値化にさせるプログラムを考える。

結果を最初に見せると次のようになるはずである。

これを、ファイルの入出力から2値化させるまでの行程をプログラム化したのが下である。

■解説■

1:  pro white_or_black, xsize, ysize

2:  file=dialog_pickfile(filter='*.tif')
3:  data=read_tiff(file)

 
4:  x=0
5:  y=0
6:  repeat begin

7:  if( data(x,y) gt 127) then begin
8:  data(x,y)=254
9:  endif else begin
10: data(x,y)=0
11:
 endelse

12: x=x+1

13: if(x gt xsize-1) then begin
14: x=0

15: y=y+1
16: endif

17: endrep until (y gt ysize-1)

18: output=dialog_pickfile(/write)
19: write_tiff,output,data

20: end

1行目関数をつくる時を除いては、すべて最初にproと書く。その後にスペースを空け、実行するときの名前を書く。

    実行時にパラメータを入力したい時は、実行名の後にカンマを打って、変数名を宣言しておく。

    このプログラムをコマンドラインに打って実行する時は、 white_or_black, 350, 275 のように打つことになる。proはいらない。

     ファイルの保存名と実行名を同にしておくと後で便利である。

2行目: fileという変数にウインドウズのダイアログから入力ファイルのアドレスを格納するコマンド。

3行目: TIFFデータを読み込むコマンド。

4行目: 画像のx方向へのカウント値を初期設定。

5行目: 画像のy方向へのカウント値を初期設定。

6行目:2値化処理のループ文の始まり。

7行目:データの閾値処理。もし入力データの値が127より大きければ・・・

8行目:データに254(白色)を入れろ。

9行目:もし7行目が該当しなければ・・・

10行目:データに0(黒色)を入れろ。

11行目:閾値処理の終わり。

12行目:次の処理する画素(ひとつ横)に移る。

13行目:もし処理する画素が画像の端っこまで来たら・・・

14行目:処理する画素のXの位置は元に戻して・・・

15行目:一個下の画素(Y方向)へ。

16行目:画素の移動処理の終わり。

17行目:全部の画素について2値化したら終わり。つまり、処理する画素のyの値がysizeより大きくなった時。

18行目:画像の出力の準備。

19行目:TIFF画像で書き出し。

20行目:プログラムの終わりはEND。Run

 

■プログラムの実行1

IDLのメニューにあるRUNからCompile All 選んでプログラムをコンパイル。

エラーが出なければ、コマンドラインに white_or_black, 350, 275 と打ち込んでENTERを押す。

 

■プログラムの実行2

もし、プログラムの実行において、パラメータを入力しない時は、実行名をコマンドラインに打ち込む以外も、RUNメニューのRUN ****を押してもいける。