このようなスクリプトを書き始める良い方法は、ImageJ のマクロ レコーダーを使用することですPlugins > Macros > Record ...
。この例では、Record:
オプション ボックスを に切り替えたと仮定していますJavaScript
が、ImageJ マクロ言語や Java でプラグインを作成することに慣れている場合は、他のいずれかを選択することをお勧めします。次に、画像を開いてImage > Stacks > Set Slice ...
スライス 20 を使用して選択すると、次のように表示されます。
imp.setSlice(20);
...レコーダーに表示されます。実行Image > Adjust > Brightness/Contrast...
して を選択すると、 0.35% の飽和ピクセルを維持Auto
して実行するのと同等であることがレコーダーに表示されます。Enhance Contrast
お気づきのように、これに関する問題は、そのスライスだけでなく、スタック全体の最小値と最大値を調整することです。ただし、 を実行するEnhance Contrast
と、別のオプションで実行できますProcess > Enhance Contrast
。ImageJ ドキュメント wikiのそのオプションに関するセクションでは、スタックの最小値と最大値を設定するのではなくピクセル値を変更する場合は、「正規化」オプションを選択する必要があると説明しています。代わりにそれを行うことを選択した場合、マクロ レコーダーは次のように記録します。
imp.setSlice(20);
IJ.run(imp, "Enhance Contrast", "saturated=0.35 normalize");
...そして、スライス 20 だけが変更されていることがわかるはずです。次に、すべてのスライスで同じ拡張機能を実行するループでそれをラップできます。
var imp = IJ.getImage();
var n = imp.getStackSize();
for( var i = 0; i < n; ++i) {
imp.setSlice(i+1);
IJ.run(imp, "Enhance Contrast", "saturated=4 normalize");
}
(フィジーを使用している場合、スクリプト エディタ (例: 経由File > New > Script
) は、そのようなスクリプトを試す簡単な方法です。)
もちろん、正規化オプションを使用すると、ピクセル値が変更されます。つまり、この場合、情報が失われることになるため、得られたスタックを定量的な結果には使用しません。
それが何かの役に立てば幸いです。