如何使用Java或clojure中的ImageJ进行批处理图像处理?
作者:互联网
我想使用ImageJ来处理几千张图像.
有没有办法采用任何通用的imageJ插件并将其自动应用于数百个图像?
举例来说,假设我要拍摄我的一千张图片,并对每个图片应用极坐标转换-
可以在这里找到ImageJ的Polar转换插件:
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中的代码:
…依约Fiji PlugIn Design Guidelines中的建议含糊其词,同时仍在尝试仅对原始代码进行最小的更改.然后,您可以只创建PlugIn对象并在其上调用exec(…),以提供所需的选项. (我还没有真正测试过该补丁,但是您知道了.)
希望对您有所帮助-但是,我看到您的问题是在一段时间之前,所以我想您在此期间可能还会找到其他解决方法.
标签:clojure,image-processing,image-manipulation,imagej,java 来源: https://codeday.me/bug/20191106/2000138.html