参数传递在imagej宏中

时间:2014-02-24 04:18:31

标签: macros imagej

我在几个小时后向大家求助,并访问了很多网站和教程。我需要将径向多项式函数应用于圆形roi。为我的imagej宏中的其他图像计算多项式的参数。

我已尝试过程> math>宏和Ditmer的插件“Expression”,但我无法通过变量传递语法。很明显,尽管使用了& amp;甚至完全连接。特别是,我找不到在宏模式下使用Expression的示例来获取其参数的语法。

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

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

我为问什么应该是一个简单的问题而道歉,但我承认自己被难倒了。

1 个答案:

答案 0 :(得分:1)

使用String concatenation语法:

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