ラディオン'sカルテ

株投資初心者のトレード記録を中心に雑記記事を書いています。

Imagej : stacks に対してPlot Profileの値を取得する

なんでこれがデフォルトできないないの(怒)?

っ人がかなりいると信じています!!

放射線技師の方や画像の評価等でImagejを活用する方に届いてもらえると嬉しいです。

 

Imagej使用時のstacksで表示している全imageに対してPlot Profileで計測した値を取得するマクロのコードです。

導入方法も含めて簡単に説明します。

コード自体は一番最後にあります。

 

導入方法

①コードをメモ帳にコピペし、[.ijm]フォルダとして保存する。

※例とてして今回は「stack profile Save results」として保存しています。

 

f:id:Radion0000:20190206212639p:plain

コードをコピペをして

f:id:Radion0000:20190206212647p:plain

ファイルとして保存します。拡張子が「.txt」になっている場合は「すべてのファイル」に変更してください。

 

②作成したファイルをImagejのフォルダ中にある「Plugins」の「stacks」内に入れる。

※保存されている場所がわからない場合は、Imagejのショートカットアイコンを右クリックして「ファイルの場所を開く」を選択するとフォルダに飛びます。

 

f:id:Radion0000:20190206213004p:plain

 

 

③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]);
}
}
}

---------------------------------------