gpt4 book ai didi

java - ImageJ(Java 插件): auto threshold method doesn't work

转载 作者:行者123 更新时间:2023-11-30 08:50:27 24 4
gpt4 key购买 nike

我尝试将 Java 插件写入 ImageJ,它应该:

  • 加载图像(24 位)。
  • 做一些预处理操作。
  • 以多种方法对图像进行阈值处理。
  • 做一些其他操作。

我对阈值操作有疑问。我的部分代码如下所示:

Opener opener = new Opener();
ImagePlus imp = opener.openImage(source);
// Preprocessing
IJ.run("Threshold..." , method);
// Other operations e.g. "open", "outline" etc.
IJ.saveAs(destination);

我的目标是通过各种方法(例如“Default”、“Huang”、“Intermodes”、“IsoData”、“Li”等)获得二值化图像。我可以获得二值化图像的唯一方法是运行:

IJ.run(imp, "8-bit", "");
IJ.run(imp, "Make Binary", "");

但是,我只能通过一种方法获得二值化图像。如何通过运行Java代码(ImageJ插件)实现自动阈值?

最佳答案

Threshold dialog 中的自动阈值方法所有算法都适用于单 channel (8 位或 16 位)图像。在Color Threshold对话框中,它们专门应用于 24 位彩色图像的亮度 channel 。

要在 Java 中重现这一点,请使用以下代码:

IJ.run(imp, "HSB Stack", "");
imp.setSlice(3);
IJ.setAutoThreshold(imp, "Triangle dark");
Prefs.blackBackground = true;
IJ.run(imp, "Convert to Mask", "only");

(将图像转换为 8 位无非是使用亮度 channel ,丢弃色相和饱和度信息。除非您真的使用颜色阈值中的其他 slider 对话框,您也可以在应用阈值之前将图像转换为 8 位。)

关于java - ImageJ(Java 插件): auto threshold method doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com