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

17th October 2021 at 8:44pm

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()
    • 一度だけ実行されます
    • return DOES_***;とすれば、画像の形式をチェックしてくれます
      • 8bitグレイ画像 : DOES_8G
      • 16bit画像 : DOES_16
      • RGB : DOES_RGB
      • 全画像 : DOES_ALL
      • 画像は不要 : NO_IMAGE_REQUIRED
    • setup(arg0, arg1)において
      • arg0 : 空白ならプログラムの先頭、"final"なら最後に実行されます
      • arg1 : "ImagePlus"、つまり画像を意味します
         
  • 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へ