2010-05-02 71 views
3

我想用ImageJ來做幾千張圖片的處理。如何在Java或clojure中使用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

不幸的是,這是很常見的,而不考慮程序中使用寫入ImageJ的插件,而且也沒有真正圍繞得到的一種優雅的方式不改變插件的代碼。 (你已經發現,大約有不太滿意的方式:))所以,在你的位置,我只想改變代碼Polar_Transformer.java以下列方式:

http://gist.github.com/452826

...這是隱約沿Fiji PlugIn Design Guidelines中建議的行,同時仍試圖對原始代碼進行最小更改。然後,您可以創建PlugIn對象並在其上調用exec(...),以提供所需的選項。 (我沒有真正測試過這個補丁,但你明白了。)

我希望這有些幫助 - 我看到你的問題是前一段時間,所以我猜你可能已經找到了其他一些解決方法同時。

+0

這非常有用,也是一個很好的解釋。我把這個項目放在一邊,很快就會回來,所以答案仍然相關。謝謝! – 2010-06-26 10:39:24