Le problème est la manière dont vous traitez avec le ImagePlus
: dans la dernière ligne, vous essayez de créer un new ImagePlus
, mais il n'y a aucune chance que celui-ci contient toutes les informations de votre image chargée. Traite un ImageProcessor
que vous obtiendrez via la méthode ImagePlus#getProcessor()
. Si vous regardez le API documentation, vous verrez également que blur(ImageProcessor,double)
est déprécié en faveur de l'une des autres méthodes: vous pouvez utiliser blurGaussian(ImageProcessor, double, double, double)
ici.
Ce code fonctionnerait:
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();
mais il utilise la voie à faible niveau d'interférer avec la classe GaussianBlur
. Pour faciliter votre vie, vous pouvez également enregistrer la commande javascript dans l'interface graphique via Plugins> Macros> Enregistrer ... puis en sélectionnant Enregistrement: Javascript avant d'effectuer le flou gaussien via Traiter> Filtres> Flou gaussien ... Cela rendrait votre code beaucoup plus court:
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();
aide générale avec les scripts Javascript dans ImageJ, voir thesetwo liens vers le wiki Fidji.
Modifier: A partir de ImageJ 1.47n5, ImageProcessor
a une nouvelle méthode blurGaussian(double sigma)
, raccourcir le code ci-dessus (niveau bas) à:
var imp = IJ.openImage("http://imagej.nih.gov/ij/images/clown.jpg");
IJ.run(imp, "8-bit", "");
imp.getProcessor().blurGaussian(20);
imp.show();
Est-ce lié à http://fiji.sc/Javascript_Scripting#Creating_a_script_for_ImageJ – mplungjan