首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ImageJ中应用程序和代码的不同结果

在ImageJ中应用程序和代码的不同结果
EN

Stack Overflow用户
提问于 2014-07-23 20:24:48
回答 1查看 806关注 0票数 0

当我试图使用ImageJ进行图片分析并试图计算孔隙度时,我的问题就出现了。

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

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

代码语言:javascript
运行
复制
    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);

并且有记录的代码

代码语言:javascript
运行
复制
    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", "");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 09:14:57

您的代码有几个问题:

您记录的代码似乎是Javascript,而不是ImageJ宏代码,因此下面是一些脚本版本,它们都采用Blobs示例图像(File > Open > Blobs (25K)),设置默认阈值并测量相同的参数。

ImageJ1宏:

代码语言:javascript
运行
复制
run("Blobs (25K)");
setAutoThreshold("Default");
run("Set Measurements...", "area mean standard modal min median area_fraction limit redirect=None decimal=3");
run("Measure");

Javascript:

代码语言: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代码):

代码语言:javascript
运行
复制
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中的外观如下:

代码语言:javascript
运行
复制
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");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24920270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档