なんでこれがデフォルトできないないの(怒)?
っ人がかなりいると信じています!!
放射線技師の方や画像の評価等でImagejを活用する方に届いてもらえると嬉しいです。
Imagej使用時のstacksで表示している全imageに対してPlot Profileで計測した値を取得するマクロのコードです。
導入方法も含めて簡単に説明します。
コード自体は一番最後にあります。
導入方法
①コードをメモ帳にコピペし、[.ijm]フォルダとして保存する。
※例とてして今回は「stack profile Save results」として保存しています。
コードをコピペをしてファイルとして保存します。拡張子が「.txt」になっている場合は「すべてのファイル」に変更してください。
②作成したファイルをImagejのフォルダ中にある「Plugins」の「stacks」内に入れる。
※保存されている場所がわからない場合は、Imagejのショートカットアイコンを右クリックして「ファイルの場所を開く」を選択するとフォルダに飛びます。
③Imagejを再起動し、「Plugins」→「stacks」→「stack profile Save results」が表示されたら使う準備は終了です。
処理の中身ですが、スタックしている画像に対して設定した単一ROIにおけるPlot Profileの値のみをResultsにどんどん追加していきます(グラフ自体は保存していません)。
CTやMRI画像のように複数枚が1セットになっているデータ群に対してまとめてプロファイルの値を取得できます。あとは、Excelなどで解析してもグラフにしても良いと思います。
動作不良や改善点などございましたら、コメントにてご連絡ください。
使い方を動画にまとめておりますので合わせてご覧ください。
以下、マクロのコードです。(----で区切られた中身をコピペしてください)
※アンダーラインを引いた部分を消してから保存すると、Alt+kで表示されるようなプロファイルの値を取得できます。
--------------------------------------
macro "stack profile Save results"
{
for (i=0; i<nSlices; i++)
{
PlotNo=i+1;
if (i>0)
{
run("Next Slice [>]");
}
// Set alt key down for vertical profile of a rectangular selection
//setKeyDown("alt");
run("Plot Profile");
Plot.getValues(x, y);
run("Close");
for (j=0; j<x.length; j++)
{
setResult("X", j, x[j]);
setResult(PlotNo, j, y[j]);
}
}
}
--------------------------------------