"Make Binary" 在单个图像和堆栈之间切换背景

"Make Binary" switches background between single image and stack

我正在 imagej 中构建一个插件,它将在进行分析之前对图像进行一些预处理。我希望这个插件能够在单个图像和堆栈上运行。到目前为止,这是我的插件代码示例:

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.*;



public class My_Analysis implements PlugIn {

    public void run(String arg) {

        ImagePlus imp = IJ.getImage();
        IJ.run(imp, "Find Edges", "stack");
        Prefs.blackBackground = true;
        IJ.run(imp, "Make Binary", "stack");
        IJ.run(imp, "Erode", "stack");
    }
}

之后还有更多,但只是参考分析,我认为它不相关。此外,我在代码的前面有一个 GenericDialog,但也不认为它是相关的,不想拖延示例。当然,如果有人认为有必要,我可以全部包含。

我的问题是,这在单个图像上工作得很好,但生成二进制文件会反转堆栈上的 black/white。我打赌我可以简单地将 Prefs.blackBackground 切换为 false 并修复它,但它不会在单个图像上工作。

另一条信息是,如果我从 Make Binary 行中取出 "stack",它会弹出一个对话框,提示我 select 几个选项,其中一个是背景是否为黑色。如果我执行 select 这个选项,它会正确执行 Make Binary,但不会将其应用于整个堆栈或其他东西,因为我最终得到的只是分析第一张图像和其余图​​像在堆栈中看起来很奇怪。

如有任何帮助,我们将不胜感激。非常感谢。

我同意 ImageJ1.x 的这种行为是不一致的。我不确定它是否有意为之,但请随时在 ImageJ forum or the mailing list 上报告它,因此它可能会得到修复。


Another piece of information is that if I take the "stack" out of the Make Binary line, it will pop open a dialog box that prompts me to select several options, one of which is whether the background is black.

这确实是这里有效解决方案的路径:只需添加关键字 black 即可重现脚本或宏中的行为,例如此 Groovy 脚本在单个图像和堆栈上运行相同:

import ij.IJ;
import ij.ImagePlus;
import ij.Prefs;

ImagePlus imp = IJ.getImage();
IJ.run(imp, "Find Edges", "stack");
Prefs.blackBackground = true;
IJ.run(imp, "Make Binary", "stack black"); // this line changed
IJ.run(imp, "Erode", "stack");

您通过在堆栈上使用 Macro recorder 和 运行 Process > Binary > Make binary 获得所需的关键字。