「ImageJマクロを使う」シリーズでは、ImageJを使って生命科学系の画像解析をするにあたって必要な知識をまとめていきます。
今回は、マクロを使ってInteractive Watershedの引数を設定するをできるようにしていきます。
プラグインであるInteractive Watershedをmacroを使って動かせるようにしていきましょう。
for文を使って繰り返し解析を行うためには、引数を変数を使って設定する必要があります。
Interactive Watershedの引数がどのようになっているか?変数をどのように設定すれば良いのか?を見ていきましょう。
「細胞の核を数える」シリーズで描いたフローチャートの「ココ」の部分をやっていきます。
Interactive Watershedの引数を見てみる
ImageJマクロを記録するの記事でInteractive Watershedを動かしたものを記録しているので見てみましょう。
(Interactive Watershedを使った細胞計数の方針はこちらの記事で立てています。)
記録して出力されたコード全体がこちら
4行目から7行目がInteractive Watershedを動かした時に記録されたコードです。
コードの部分があまりにも小さいので、打ち出してみました。
Interactive Watershedの引数を変数に書き換える
6行目に注目してみましょう。
画像の名前が変数になっているので、画像の名前を変数に書き換えてマクロを動かしてみます。
ImageJで開いた画像の名前を取得する方法はこちらの記事で紹介しています。
Interactive Watershedで分割して、2値化された画像ができました。
症状としては、Scientific Community Image Forumのこちらのスレッドで質問されているのと同じもの。解決方法をこちらにまとめるので、エラーが出た場合は参考にしてみてください。
2値化した後は、その画像を使って"Analyze Particles.."で領域を計数していきます。
そのためには、2値化された画像を選択しておく必要があります。
Interactive Watershedで2値化した画像を解析して結果を保存する
マクロを記録したときに作成されたコードの、7行目は2値化した画像を選択するコードです。
Interactvie Watershedを動かした後にアクティブになっているのは2値化した画像になっているので、"selectWindow"関数を使わなくても解析できます。
なので、思い切って7行目を削除しちゃいましょう。
Interactive Watershedの後に解析データを保存するまでしていきます。
解析データの保存方法はこちらの記事で紹介しています。
書いたコードはこちら。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
//解析をする画像が入っているフォルダを選ぶ showMessage("Select Analyze Folder"); chooseDir = getDirectory("Choose a Directory"); //カウントの結果を保存するフォルダを作る a = split(chooseDir, "/"); resultFolder = replace(chooseDir, a[a.length-1], "count_results"); File.makeDirectory(resultFolder); //フォルダ内のファイルリストを取得する filelist = getFileList(chooseDir); //画像を開く open(chooseDir+filelist[0]); //解析結果の名前をつける name = getTitle(); extension = indexOf(name, "."); title = substring(name, 0, extension); newname = title + "_count_result"; //解析のプログラム //画像を8-bitにする run("8-bit"); run("H_Watershed", "impIn=[name] hmin=12.0 thresh=24.0 peakflooding=100.0 outputmask=true allowsplitting=true"); //解析方法の設定 run("Set Measurements...", "area mean redirect=None decimal=3"); run("Analyze Particles...", "size=50-Infinity display exclude clear include summarize add"); //Summaryウィンドウの結果を保存 selectWindow("Summary"); saveAs("Results", resultFolder+newname+".csv"); close(newname+".csv"); //画像ウィンドウを消す close(); close(name); //ResultsとROI Managerのウィンドウを消す close("Results"); close("ROI Manager"); |
動かしてみましょう。
無事コードを動かした後も、画面はスッキリ!
次回は、この解析コードをfor文に突っ込んで回してみます。