【问题标题】:parameter passing in imagej macroimagej 宏中的参数传递
【发布时间】:2014-02-24 04:18:31
【问题描述】:

经过数小时并访问了许多网站和教程后,我向大家求助。我需要将径向多项式函数应用于圆形 roi。多项式的参数是针对我的 imagej 宏中其他位置的每个图像计算的。

我已经尝试过处理>数学>宏和 Ditmer 的插件“表达式”,但我无法获得正确的语法来传递变量。显然,尽管使用了 & 甚至完全连接,但我没有找到有关传递参数的信息。特别是,我找不到在宏模式下使用表达式来获取其参数语法的示例。

以下是在单个打开图像上运行的代码示例:

run("32-bit");
rename("working");
//setTool("oval");
makeOval(30, 37, 444, 444);
p0=1.31061     
p1=-0.0023456;
p2=-0.000017459;
selectWindow("working");
//run("Macro...", "code=v=v*(1.31061-0.0023456*d-0.00001745*pow(d,2))");
//run("Macro...", "code=v=v*(&p0+&p1*d+&p2*pow(d,2))");
//run("Expression ", "preset='Radial_cutdown'");
//run("Expression ", "preset='Radial_cutdown_parampass'");

第一个运行命令有效。第二个没有。

第三个使用 Ditmer 的 Expression 插件,预设代码如下:

i*(1.31061-0.0023456*d-0.00001745*d*d)
0
0
0
maxval
0
0
0
w
h
0
100

这也有效。但是包含宏参数而不是数字的预设不会:

Radial_cutdown_parampass
i*(&p0+&p1*d+&p2*d*d)
0
0
0
maxval
0
0
0
w
h
0
100

我很抱歉问了一个简单的问题,但我承认被难住了。

【问题讨论】:

  • 如果你花了几个小时搜索,我相信你也遇到过ImageJ mailing list,这通常是最好的询问和报告错误的地方(因为如果没有按照教程中的预期工作,这也可能是一个错误..)。

标签: macros imagej


【解决方案1】:

使用String concatenation 语法:

run("Macro...", "code=v=v*(" + p0 + "+" + p1 + "*d+" + p2 + "*pow(d,2))");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多