如何在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(...)
在它提供您想要的选项上。 (我还没有真正测试过该补丁,但是您明白了。)
我希望这有所帮助 - 不过,我看到您的问题已经前一段时间了,所以我想您可能在此期间发现了其他一些解决方法。
不隶属于 StackOverflow