ImageJの便利なインターフェースについて

 11th December 2022 at 5:53pm

ImageJプラグインを作成する際に、以下の3つの重要なインターフェースがあります。

  • ij.pugin.PlugIn
  • ij.plugin.filter.PlugInFilter
  • ij.plugin.filter.ExtendedPlugInFilter

Javaにおけるインターフェースは、強制力の強いテンプレートのようなものです。

ImageJにおいて、上の3つのインターフェースを実装したクラスで作成されたプラグインは、実行時に、ある決まったメソッドが自動的に実行されます。

インターフェースを実装する時には、ある決まったメソッドをユーザーが定義する必要があります。

ij.pugin.PlugIn

単純に実行するだけのプラグインです。

public class ABCD implements PlugIn
{
    public void run(ImageProcessor ip)
    {
        ~
    }
}

ij.plugin.filter.PlugInFilter

実行前に、画像のチェックを行います。

public class ABCD implements PlugInFilter
{
    public int setup(String arg, ImagePlus imp)
    {
    	~
    }
    
    public void run(ImageProcessor ip)
    {
        ~
    }
}

ij.plugin.filter.ExtendedPlugInFilter

実行前に、画像のチェック、パラメータ入力用ダイアログの表示などを行います。

public class ABCD implements ExtendedPlugInFilter
{
    public int setup(String arg, ImagePlus imp)
    {
    	~
    }
    
    public void setNPasses(int arg0)
    {
        ~
    }
    
    public int showDialog(ImagePlus imp, String command, PlugInFilterRunner pfr)
    {
    	~
    }
    
    public void run(ImageProcessor ip)
    {
        ~
    }
}

それぞれのメソッドの意味

それぞれのメソッドは、以下のような意味を持ちます。

setup(arg0, arg1)
・ 一度だけ実行されます
・ arg0は、空白ならプログラムの先頭、"final"なら最後に実行されます
・ arg1は、「ImagePlus」つまり画像を意味します
・ 「return DOES_***;」とすれば、画像の形式をチェックしてくれます
8bitグレイ画像 : DOES_8G
16bit画像 : DOES_16
RGB : DOES_RGB
全画像 : DOES_ALL
画像は不要 : NO_IMAGE_REQUIRED
showDialog()
・ setup()の後に、パラメーター入力ダイアログを起動します
・ setupメソッドと同様に、フラグを返さなくてはなりません
run()
・ 処理を実行します
setNPasses()
・ This method is called by ImageJ to inform the plugin-filter about the passes to its run method.

これらのインターフェースを利用すると、ただのプログラミング上のルールにとどまらず、マクロからも呼び出せる強力なプラグインを作成することができます。


HomeへImageJの記事Topへ