Проблема заключается в путь, как вы имеете дело с 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
класса. Чтобы сделать вашу жизнь легкой, вы также можете записать команду javascript в графическом интерфейсе через Плагины> Макросы> Запись ..., а затем выберите Запись: Javascript перед выполнением размытия Gaussian через Процесс> Фильтры> Gaussian Blur .. .. Это позволит сделать ваш код намного короче:
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();
Общей помощи при Javascript сценариев в ImageJ см thesetwo ссылки на вики Фиджи.
Edit: Начиная с 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();
Является ли это связано с http://fiji.sc/Javascript_Scripting#Creating_a_script_for_ImageJ – mplungjan