2010-05-02 40 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