"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 获得所需的关键字。
我正在 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 获得所需的关键字。