問題は、 : の処理方法ですImagePlus
。最後の行で を作成しようとしますnew ImagePlus
が、ロードしたイメージの情報がこれに含まれる可能性はありません。
GaussianBlur
メソッドを介して取得する an を処理ImageProcessor
します。API ドキュメントImagePlus#getProcessor()
を見ると、他のメソッドのいずれかが優先されて非推奨になっていることもわかります。ここで使用することをお勧めします。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 コマンドを記録し、記録: 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 スクリプトに関する一般的なヘルプについては、Fiji wiki への次の 2 つのリンクを参照 してください。
編集: 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();