ImageJ:.show()不显示图像

时间:2013-03-19 10:58:58

标签: javascript imagej

我对javascript很新,我想在斐济处理一些图片。我一直在使用宏语言,但我正在尝试熟悉正式的ImageJ / Fiji API。我试图运行下面简单的代码片段,它运行没有错误,但它最终没有显示任何图像。出了什么问题?

importClass(Packages.ij.plugin.filter.GaussianBlur);


var image = IJ.openImage("/home/.../KNIIC_BC_Cam2_AirBubble2_Image1038.bmp");
IJ.run(image, "8-bit", "");

var dpl = image.getProcessor().duplicate();
var gs = new GaussianBlur();
gs.blur(dpl,20);
new ImagePlus(gs).show();

提前致谢

1 个答案:

答案 0 :(得分:1)

问题在于您处理ImagePlus的方式:在最后一行中,您尝试创建new ImagePlus,但这不包含任何已加载图像的信息。

GaussianBlur处理您通过ImageProcessor方法获得的ImagePlus#getProcessor()。如果您查看API documentation,您还会看到blur(ImageProcessor,double)已弃用,而不赞成使用其他方法之一:您可能希望在此使用blurGaussian(ImageProcessor, double, double, double)

此代码可以使用:

importClass(Packages.ij.plugin.filter.GaussianBlur);

var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");

var ip = imp.getProcessor();
var gs = new GaussianBlur();
gs.blurGaussian(ip,20,20,0.01);
imp.show();

然而它使用低级别的干扰GaussianBlur类的方式。为了让您的生活更轻松,您还可以通过插件>在GUI中记录javascript命令。宏>记录... ,然后在通过 Process>执行高斯模糊之前选择记录:Javascript 过滤器>高斯模糊...... 。这会使您的代码更短:

var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");
IJ.run(imp, "Gaussian Blur...", "sigma=20");

imp.show();

有关ImageJ中Javascript脚本的一般帮助,请参阅斐济维基的these two个链接。

修改:从ImageJ 1.47n5开始,ImageProcessor有一个新方法blurGaussian(double sigma),将上述(低级别)代码缩短为:

var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");
imp.getProcessor().blurGaussian(20);
imp.show();