JavaまたはClojureでImageJを使用してバッチ画像処理を行うにはどうすればよいですか?
-
02-10-2019 - |
質問
ImageJを使用して、数千の画像の処理を行いたいと思います。
一般的なImageJプラグインを使用して、数百の画像に自動的に適用する方法はありますか?
たとえば、私は千の画像を撮り、それぞれに極変換を適用したいとします---
ImageJの極トランスフォーメーションプラグインはこちらにあります:
http://rsbweb.nih.gov/ij/plugins/polar-transformer.html
素晴らしい!使ってみましょう。から:
以下を使用してプラグインを適用できることがわかりました。
(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プラグインを使用する方法について何かを見逃しています。誰かがこれを行う正しい方法を知っていますか?
ありがとう、 - ロバートマッキンタイア
解決
残念ながら、ImageJプラグインをプログラムを念頭に置いて記述することは非常に一般的であり、プラグインのコードを変更せずにそれを回避するエレガントな方法はありません。 (あなたはすでにそれの周りに不十分な方法があることを発見しました:)) Polar_Transformer.java
次の方法で:
...で提案されている線に沿って漠然としている フィジープラグインデザインガイドライン, 、まだ元のコードに最小限の変更を加えようとしています。その後、プラグインオブジェクトを作成して呼び出すことができます exec(...)
その上であなたが望むオプションを提供します。 (私はそのパッチを実際にテストしていませんが、あなたはアイデアを得ます。)
それが助けてくれることを願っています - しかし、あなたの質問はしばらく前のことだと思います。そのため、その間、他の回避策を見つけたかもしれません。