Come posso fare l'elaborazione delle immagini in batch con ImageJ in Java o clojure?
-
02-10-2019 - |
Domanda
Voglio usare ImageJ per fare qualche trattamento di diverse migliaia di immagini.
C'è un modo per prendere alcun plugin generale ImageJ e applicarlo a centinaia di immagini automaticamente?
Per esempio, dico che voglio prendere le mie mille immagini e applicare una trasformazione polare per ogni ---
Una trasformazione polare Plugin per ImageJ può essere trovato qui:
http://rsbweb.nih.gov/ij/plugins/polar -transformer.html
Grande! Lo si può usare. Da:
Trovo che posso applicare un plugin utilizzando la seguente:
(defn x-polar
[imageP]
(let [thread (Thread/currentThread)
options ""]
(.setName thread "Run$_polar-transform")
(Macro/setOptions thread options)
(IJ/runPlugIn imageP "Polar_Transformer" "")))
Questo è un bene perché sopprime la finestra di dialogo che altrimenti pop-up per ogni immagine. Ma l'esecuzione di questo porta sempre una finestra contenente l'immagine trasformata, quando quello che voglio è semplicemente restituire l'immagine trasformata.
Il modo più stupido per fare quello che voglio è quello proprio vicino alla finestra che si apre e riportare l'immagine che si stava visualizzando.
Fa quello che voglio, ma è assolutamente ritardato:
(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)))
Sono ovviamente manca qualcosa su come utilizzare i plugin ImageJ in un contesto di programmazione. Qualcuno sa il modo giusto per fare questo?
Grazie, --Robert McIntyre
Soluzione
Purtroppo, è molto comune per i plugin di ImageJ da scrivere senza l'uso programmatico in mente, e non c'è davvero un modo elegante di muoversi che senza modificare il codice del plugin. (Hai già scoperto che ci sono modi insoddisfacenti intorno ad esso :)) Quindi, nella tua posizione che sarebbe solo modificare il codice Polar_Transformer.java
nel seguente modo:
... che è vagamente lungo le linee suggerite nel Fiji PlugIn design Linee guida , mentre ancora cercando di fare solo modifiche minime al codice originale. Poi si può solo creare l'oggetto PlugIn e call exec(...)
su di esso fornendo le opzioni desiderate. (Non ho davvero provato che patch, ma si ottiene l'idea.)
Spero che sia di qualche aiuto - Vedo che la tua domanda era qualche tempo fa, però, quindi credo che si puo 'trovare qualche altra soluzione alternativa nel frattempo
.