gpt4 book ai didi

java - ImageJ 中的应用程序和代码有不同的结果

转载 作者:行者123 更新时间:2023-12-02 05:36:29 26 4
gpt4 key购买 nike

当我尝试使用 ImageJ 运行图片分析并尝试计算孔隙率时,出现了问题。

我记录了宏并在 java 中运行相同的过程。这两次执行的结果不同,我不知道为什么。你能帮忙吗?

我尝试使用 ImageJ API 再次编写代码。我运行的两个示例如下所示:

    ImagePlus imp = new ImagePlus();
imp = IJ.openImage("path_to_image");
int measurements = Measurements.AREA + Measurements.MEAN +Measurements.STD_DEV + Measurements.AREA_FRACTION;
ResultsTable rt = new ResultsTable();
Analyzer analyzer = new Analyzer(imp, measurements, rt);
IJ.setAutoThreshold(imp, "Default");
System.out.println(rt.MIN);

并带有录制的代码

    imp = IJ.openImage("path_to_image");
IJ.run("Set Measurements...", "area mean standard modal min median area_fraction limit redirect=None decimal=3");
IJ.setAutoThreshold(imp, "Default");
IJ.run(imp, "Measure", "");

最佳答案

您的代码有几个问题:

您录制的代码似乎是 Javascript,而不是 ImageJ 宏代码,因此以下是脚本的一些版本,它们均采用Blob示例图像(文件 > 打开示例 > Blob (25K)),设置默认阈值并测量相同的参数。

ImageJ1 宏:

run("Blobs (25K)");
setAutoThreshold("Default");
run("Set Measurements...", "area mean standard modal min median area_fraction limit redirect=None decimal=3");
run("Measure");

Javascript:

importClass(Packages.ij.IJ);

imp = IJ.openImage("http://imagej.nih.gov/ij/images/blobs.gif");
IJ.setAutoThreshold(imp, "Default");
IJ.run("Set Measurements...", "area mean standard modal min median area_fraction limit redirect=None decimal=3");
IJ.run(imp, "Measure", "");
imp.show();

Beanshell(最接近Java代码):

import ij.IJ;

imp = IJ.openImage("http://imagej.nih.gov/ij/images/blobs.gif");
IJ.setAutoThreshold(imp, "Default");
IJ.run("Set Measurements...", "area mean standard modal min median area_fraction limit redirect=None decimal=3");
IJ.run(imp, "Measure", "");
imp.show();

如果您想避免调用 IJ 并使用较低级别的 ImageJ API,这就是它在 Beanshell 中的样子:

import ij.ImagePlus;
import ij.IJ;
import ij.measure.Measurements;
import ij.measure.ResultsTable;
import ij.plugin.filter.Analyzer;

ImagePlus imp = IJ.openImage("http://imagej.nih.gov/ij/images/blobs.gif");
// IJ.setAutoThreshold(imp, "Default");
imp.getProcessor().setAutoThreshold("Default");

// IJ.run("Set Measurements...", "area mean standard modal min median area_fraction limit redirect=None decimal=3");
int measurements = Measurements.AREA + Measurements.MEAN + Measurements.MIN_MAX + Measurements.STD_DEV + Measurements.MODE + Measurements.MEDIAN + Measurements.AREA_FRACTION + Measurements.LIMIT;

// IJ.run(imp, "Measure", "");
ResultsTable rt = new ResultsTable();
Analyzer analyzer = new Analyzer(imp, measurements, rt);
analyzer.measure();

Double result = rt.getValue("Min", rt.getCounter() - 1); // get value of interest
IJ.log(result.toString()); // print to log window
// Alternatively, show the full results table
// rt.show("New Results");

关于java - ImageJ 中的应用程序和代码有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920270/

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