適当に”一度バラせば”という方法のマクロを書いてみました。
下記の//////以下の部分をコピーペーストしてテキストファイルとして保存してください。その後、目的のスタック画像をクリックした後、ImageJのPluginsからMacrosの中のRun...を選択、保存したテキストファイルを選択してください。
そうすると、多分変換してくれると思います。ImageJのバージョンによっては動かない可能性があるので、なるべく最新版を使ってください。あまり詳しく検証していませんので、文句があればお教えいただければ改善いたします。
//////////////////////////////////////////////////////
macro StackAutoThreshold {
setBatchMode(true);
myTargetID = getImageID();
myTitle1 = "BinaryImage_";
myThresholdMehods = getList("threshold.methods");
myBackgrounds = newArray(2);
myBackgrounds[0] = "black";
myBackgrounds[1] = "white";
Dialog.create("Please select auto-threshold method...");
Dialog.addChoice("auto-threshold method: ", myThresholdMehods);
Dialog.addChoice("auto-threshold method: ", myBackgrounds);
Dialog.show();
myThresholdM = Dialog.getChoice();
myBackgroundColor = Dialog.getChoice();
if (myBackgroundColor == myBackgrounds[0]) {
myThresholdM = myThresholdM + " dark";
}
showStatus("Binarizing...");
for (i = 0; i < nSlices; i++) {
print(i);
showProgress(i / nSlices);
setSlice(i+1);
myTitle = "title=" + myThresholdM + "_" + myTitle1 + toString(i+1);
run("Duplicate...", myTitle);
setAutoThreshold(myThresholdM);
run("Convert to Mask");
selectImage(myTargetID);
}
run("Images to Stack", "name=BinaryImage title=[] use");
setBatchMode(false);
showMessage("DONE");
} |
|