"制造二元"切换单个图像和堆栈之间的背景

时间:2015-12-21 15:06:47

标签: java plugins imagej

我正在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,但也没有认为它是相关的,并且不想让样本陷入困境。当然,如果有人认为有必要,我可以包括所有内容。

我的问题是,这可以在单个图像上精美地工作,但Make Binary会反转堆栈中的黑/白。我敢打赌,我可以简单地将Prefs.blackBackground切换为false,这将解决它,但随后它不会在单个图像上工作。

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

非常感谢任何帮助。非常感谢你。

1 个答案:

答案 0 :(得分:1)

我同意ImageJ1.x的这种行为不一致。我不确定是否有意,但可以在ImageJ forummailing list上报告,因此可能会修复。

  

另一条信息是,如果我采用"堆栈"走出了   制作二进制行,它会弹出一个提示我的对话框   选择几个选项,其中一个是背景是否   黑色。

这确实是这里工作解决方案的路径:只需添加关键字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并运行进程>获取所需的关键字二元>在堆栈上创建二进制