在jython中为Fiji使用boxcar内核卷积图像



我正在尝试使用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()
要求用户从那里输入内核列表应该是任意的。

最新更新