我正在尝试使用jython在斐济做一些图像处理,并且遇到了麻烦。我正试图开发一个插件,其中的图像是由一个boxcar内核卷积。通过记录一个宏,我得到以下可以粘贴到jython脚本中的内容:
run("Convolve…","text1=[0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04 0.04n0.04 0.04 0.04 0.04n0.04 0.04 0.04 0.04n0.04 0.04 0.04 0.04 0.04n]");
,其中text1是用于卷积的字符串。然而,问题是插件要求用户可以定义boxcar内核的大小。因此,我不能将其硬编码到脚本中。有人知道怎么做吗?只要最终结果是箱车卷积,我对其他方法持开放态度。
提前感谢您
您可以在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");
多年后,为了子孙后代:
查看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()