3

ImageJ を使用して、数千の画像を処理したいと考えています。

一般的な imageJ プラグインを使用して、何百もの画像に自動的に適用する方法はありますか?

たとえば、何千もの画像を取得し、それぞれに極座標変換を適用したいとします---

ImageJ の極座標変換プラグインは次の場所にあります。

http://rsbweb.nih.gov/ij/plugins/polar-transformer.html

すごい!使ってみましょう。から:

http://albert.rierol.net/imagej_programming_tutorials.html#How%20to%20automate%20an%20ImageJ%20dialog

以下を使用してプラグインを適用できることがわかりました。

(defn x-polar 
  [imageP]
  (let [thread (Thread/currentThread)
        options ""]
    (.setName thread "Run$_polar-transform")
    (Macro/setOptions thread options)
    (IJ/runPlugIn imageP "Polar_Transformer" "")))

これは、他の方法ではすべての画像に対してポップアップするダイアログを抑制するため、優れています。しかし、これを実行すると、変換された画像を単に返すだけの場合、変換された画像を含むウィンドウが常に表示されます。

私がやりたいことを行う最も愚かな方法は、表示されたウィンドウを閉じて、表示されていた画像を返すことです。

私が望むことはしますが、完全に遅れています:

(defn x-polar 
  [imageP]
  (let [thread (Thread/currentThread)
        options ""]
    (.setName thread "Run$_polar-transform")
    (Macro/setOptions thread options)
    (IJ/runPlugIn imageP "Polar_Transformer" "")
    (let [return-image (IJ/getImage)]
      (.hide return-image)
      return-image)))

プログラミングのコンテキストで imageJ プラグインを使用する方法について、明らかに何かが欠けています。これを行う正しい方法を知っている人はいますか?

ありがとう、 -- ロバート・マッキンタイア

4

1 に答える 1

4

残念ながら、ImageJプラグインがプログラムによる使用を念頭に置いて作成されることは非常に一般的であり、プラグインのコードを変更せずにそれを回避するエレガントな方法は実際にはありません。(あなたはそれの周りに不十分な方法があることをすでに発見しました:))それで、あなたの立場で私はただPolar_Transformer.java次の方法でコードを変更するでしょう:

http://gist.github.com/452826

...これは、フィジーのプラグイン設計ガイドラインで提案されている方針に漠然と沿っていますが、元のコードに最小限の変更を加えようとしています。次に、PlugInオブジェクトを作成し、exec(...)必要なオプションを指定してそれを呼び出すことができます。(私はそのパッチを実際にテストしていませんが、あなたはその考えを理解しています。)

それがお役に立てば幸いです。ただし、あなたの質問は少し前のものだったと思います。その間に、他の回避策を見つけたかもしれません。

于 2010-06-25T13:36:16.367 に答える