我正在尝试使用jython在斐济进行一些图像处理并遇到麻烦。我正在尝试开发一个插件,其中图像由boxcar内核进行卷积。通过录制宏,我得到以下内容,可以粘贴到jython脚本中:
run(“Convolve ...”,“text1 = [0.04 0.04 0.04 0.04 0.04 \ n0.04 0.04 0.04 0.04 0.04 \ n0.04 0.04 0.04 0.04 0.04 \ n0.04 0.04 0.04 0.04 0.04 \ n0.04 0.04} 0.04 0.04 0.04 \ n]“);
其中text1是用于卷积的字符串。然而,问题在于插件要求用户可以定义boxcar内核的大小。因此,我无法将其硬编码到脚本中。有谁知道如何继续。只要最终结果是boxcar卷积,我就会接受其他方法。
非常感谢您提前
答案 0 :(得分:0)
您可以在jython中为给定的size
动态构建代表内核的字符串,并将其作为参数传递给imagej。
args=split(getArgument);
kernel = args[0];
run("Convolve...", "text1=&kernel");
或者,将size
作为参数传递,并使用imagej宏语言本身构造字符串。
args=split(getArgument);
size = args[0];
// for loop to create kernel
run("Convolve...", "text1=&kernel");
答案 1 :(得分:0)
几年后,但后代:
查看ImageJ API,您实际上可以使用必要的参数来调用Convolver()类。
例如:
from ij import IJ
from ij import ImagePlus
from ij.plugin.filter import Convolver
imp = IJ.openImage("http://imagej.nih.gov/ij/images/blobs.gif")
ip = imp.getProcessor()
kernel = [1.0, 2.0, 1.0,
0.0, 0.0, 0.0,
-1.0, -2.0, -1.0]
Convolver().convolve(ip, kernel, 3, 3)
out = ImagePlus("convolved", ip)
out.show()
从那里向用户询问输入内核列表应该是任意的。