Как я могу выполнить обработку партии изображения с ImageJ в Java или Clojure?

StackOverflow https://stackoverflow.com/questions/2752174

Вопрос

Я хочу использовать 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 в контексте программирования. Кто -нибудь знает правильный способ сделать это?

Спасибо, -Robert McIntyre

Это было полезно?

Решение

К сожалению, очень часто записываются плагины ImageJ без учета программного использования, и на самом деле нет элегантного способа обойти это без изменения кода плагина. (Вы уже обнаружили, что есть неудовлетворительные способы обойти это :)) Так что, на вашей должности я бы просто изменил код в Polar_Transformer.java следующим образом:

http://gist.github.com/452826

... что смутно вдоль линий, предложенных в Рекомендации по проектированию плагинов FIJI, все еще пытаясь просто внести минимальные изменения в исходном коде. Тогда вы можете просто создать объект плагина и вызвать exec(...) На нем поставляя нужные варианты. (Я действительно не проверил этот патч, но вы поняли идею.)

Я надеюсь, что это поможет - я вижу, что ваш вопрос был некоторое время назад, так что, я думаю, вы, возможно, нашли какой -то другой обходной путь в то же время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top