3

我想使用 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

1 回答 1

4

不幸的是,在编写 ImageJ 插件时不考虑编程用途是很常见的,并且在不更改插件代码的情况下并没有一种优雅的方式来解决这个问题。(您已经发现有一些不令人满意的方法 :))所以,在您的位置上,我只需Polar_Transformer.java按以下方式更改代码:

http://gist.github.com/452826

...这与Fiji PlugIn Design Guidelines中建议的路线大致相同,同时仍试图对原始代码进行最小的更改。然后你可以创建 PlugIn 对象并调用exec(...)它来提供你想要的选项。(我还没有真正测试过那个补丁,但你明白了。)

我希望这会有所帮助-不过,我看到您的问题是前一段时间的,所以我想您可能同时找到了其他解决方法。

于 2010-06-25T13:36:16.367 回答