0

私はjavascriptに非常に慣れていないので、フィジーでいくつかの画像を処理したいと思います。私はしばらくの間マクロ言語を使用していますが、正式なImageJ /FijiAPIに慣れようとしています。次の単純なコードを実行しようとしています。エラーなしで実行されますが、最終的に画像が表示されません。何が問題なのですか?

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();

前もって感謝します

4

1 に答える 1

1

問題は、 : の処理方法です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();
于 2013-03-19T12:37:38.560 に答える