Elastix

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
elastix
software
GenereElaborazione digitale delle immagini
SviluppatoreStefan Klein and Marius Staring et. al.
Ultima versione5.1.0 (12 gennaio 2023)
Sistema operativoLinux
Microsoft Windows
macOS
LicenzaVersioni di elastix dalla 4.8 sono rilasciate con licenza Apache 2.0, versioni di elastix prima della 4.8 sono rilasciate con licenza BSD
(licenza libera)
Sito webelastix.lumc.nl/

Elastix è un toolbox per la registrazione di immagini basato sul software Insight Segmentation and Registration Toolkit (ITK).[1] È interamente open-source e offre una vasta gamma di algoritmi impiegati nella registrazione di immagini. I suoi componenti sono pensati per essere modulari per facilitare una creazione rapida e affidabile di varie pipeline di registrazione ad hoc per specifiche applicazioni. Inizialmente è stato sviluppato da Stefan Klein e Marius Staring sotto la supervisione di Josien PW Pluim presso Image Sciences Institute (ISI).[2] La sua prima versione permetteva solo l'utilizzo da linea di comando, consentendo all'utente finale di utilizzare script per l'elaborazione automatica di grandi quantità di dati e sviluppare più pipeline di registrazione con poche linee di codice. Oggi, per ampliare ulteriormente il suo bacino di utenze, è disponibile anche SimpleElastix,[3] sviluppato da Kasper Marstal, che consente l'integrazione di elastix con linguaggi di alto livello, come Python, Java e R.[4]

Fondamenti della registrazione di immagini[modifica | modifica wikitesto]

Lo stesso argomento in dettaglio: Registratura d'immagini.
Schema ad alto livello di alcuni dei blocchi principali del processo di registrazione di immagini

La registrazione di immagini è una tecnica ben nota nell'elaborazione digitale delle immagini che ha lo scopo di identificare la trasformazione geometrica che, applicata a un'immagine, permette di riallinearla con una seconda immagine utilizzata come riferimento. In generale, le immagini da registrare sono acquisite con sensori differenti (multimodali), in istanti di tempo differenti (multitemporali) e da diversi punti di vista (multiviste), questo richiede che queste immagini vengano correttamente allineate per poter procedere con ulteriori analisi e con l'estrazione di caratteristiche rilevanti.[5] Anche se sono presenti diversi approcci al problema della registrazione di immagini, la maggior parte degli approcci è composta dagli stessi blocchi base, vale a dire la trasformazione, l'interpolatore, la metrica e l'ottimizzatore.[6] La registrazione di due o più immagini può essere vista come un problema di ottimizzazione che richiede più iterazioni per convergere alla soluzione ottimale. Infatti, a partire da una trasformazione iniziale calcolata utilizzando i momenti dell'immagine, il processo di ottimizzazione ricerca i parametri di trasformazione più appropriati in base al valore della metrica di similarità considerata. La figura mostra la rappresentazione ad alto livello del processo di registrazione di due immagini, in cui l'immagine di riferimento rimane fissa durante l'intero processo, mentre quella che deve essere registrata viene trasformata in base ai parametri di trasformazione calcolati. In altre parole, la registrazione termina quando la metrica di similarità, che è una funzione matematica con un certo numero di parametri da ottimizzare, raggiunge il valore ottimale che però è fortemente dipendente dall'applicazione.[6]

Principali blocchi base[modifica | modifica wikitesto]

Seguendo la struttura a blocchi degli algoritmi di registrazione di immagini, elastix propone una soluzione modulare che propone, per ciascuno dei blocchi, algoritmi ben noti nella registrazione di immagini. Inoltre aiuta gli utenti a sviluppare la propria pipeline di registrazione selezionando per ciascun blocco l'algoritmo più adatto. Ogni blocco è facilmente configurabile grazie alla possibilità di selezionare i valori suggeriti sia provando più combinazioni di parametri e quindi scegliendo il più adatto. Considerando che la registrazione viene eseguita su immagini, elastix supporta tutti i formati di dati già supportati da ITK, che vanno da JPEG e PNG a formati standard nel campo medico come DICOM e NIFTI. Inoltre, se fornito nei metadati, memorizza inoltre la distanza fisica dei pixel, l'origine e la posizione relativa dell'immagine rispetto a un sistema di riferimento esterno da utilizzare per facilitare il processo di registrazione, in particolare nelle applicazioni in ambito medico.[7]

Trasformazione[modifica | modifica wikitesto]

La scelta della trasformazione è un punto cruciale considerando che definisce quali sono le trasformazioni consentite. Nella registrazione di immagini, la distinzione principale può essere fatta tra trasformazioni che mantengono il parallelismo tra rette e trasformazioni che consentono di mappare linee parallele in linee non parallele (deformabili). In elastix, gli utenti possono sia selezionare una trasformazione che comporre più trasformazioni o come addizione o come composizione. Di seguito vengono riportati i diversi modelli di trasformazione in ordine di crescente flessibilità e il nome della classe elastix corrispondente tra parentesi.[7]

  • Traslazione (TranslationTransform) permette solo le traslazioni
  • Rigida (EulerTransform) espande la traslazione aggiungendo rotazioni e l'oggetto viene trattato come un corpo rigido
  • Similitudine (SimilarityTransform) espande la rigida introducendo il deformazione isotropa
  • Affine (AffineTransform) espande la rigida permettendo sia il ridimensionamento che la deformazione di taglio
  • B-splines (BSplineTransform) è una trasformazione deformabile solitamente preceduta da una rigida o affine[8]
  • Spline a piastra sottile (SplineKernelTransform) è una trasformazione deformabile appartenente alle trasformazioni basate su kernel[9] ed è una composizione di una affine e una parte non rigida

Metrica[modifica | modifica wikitesto]

La metrica di similarità è la funzione matematica i cui parametri devono essere ottimizzati per poter registrare correttamente le immagini e, durante il processo, viene calcolata più volte. Di seguito sono riportate le metriche disponibili calcolate utilizzando sia l'immagine di riferimento che le immagini trasformate e il nome della classe elastix corrispondente tra parentesi.[7]

Campionatore[modifica | modifica wikitesto]

Per il calcolo delle metriche di similarità, non è sempre necessario considerare tutti i voxel e, a volte, può essere utile utilizzarne solo una frazione per ridurre i tempi di esecuzione per immagini di grandi dimensioni.[10] Di seguito sono riportati i criteri disponibili per la selezione di una frazione dei voxel e il nome della classe elastix corrispondente tra parentesi.[7]

  • Totale (Full) per impiegare tutti i voxel
  • Griglia (Grid) utilizza una griglia regolare definita dall'utente per sottocampionare l'immagine
  • Casuale (Casuale) seleziona casualmente una percentuale di voxel scelta dall'utente, tutti i voxel hanno la stessa probabilità di essere selezionati
  • Coordinate casuali (RandomCoordinate) simile a quella casuale, ma in questo caso è possibile selezionare anche posizioni tra voxel, viene usato per semplificare il processo di ottimizzazione

Interpolatore[modifica | modifica wikitesto]

Dopo l'applicazione della trasformazione, può accadere che i voxel utilizzati per il calcolo della metrica di similarità non siano più allineati con la griglia, pertanto è necessario eseguire l'interpolazione per garantire la correttezza della procedura. Di seguito sono riportati gli interpolatori implementati e il nome della classe elastix corrispondente tra parentesi.[7]

  • Nearest neighbor (NearestNeighborInterpolator) da utilizzare per utilizzare poche risorse computazionali, ma fornisce risultati di bassa qualità
  • Lineare (LinearInterpolator) in generale è sufficiente per ottenere risultati accettabili
  • N-esimo ordine di B-spline (BSplineInterpolator) N=0 e N=1 sono rispettivamente il Nearest neighbor e il lineare. Aumentando l'ordine N aumentano la qualità e il tempo di calcolo[11]

Ottimizzatore[modifica | modifica wikitesto]

L'ottimizzatore definisce la strategia utilizzata per la ricerca dei parametri di trasformazione per raggiungere una corretta registrazione ed è generalmente sfrutta un processo iterativo. Di seguito sono riportate alcune delle strategie di ottimizzazione implementate.[7]

  • Gradiente discendente
  • Robbins-Monro simile al gradiente discendente ma approssima le derivate della funzione di costo

Sono inoltre disponibili altri ottimizzatori, come Quasi-Newton o strategie evolutive.

Altre caratteristiche[modifica | modifica wikitesto]

Elastix offre anche altre funzionalità che permettono di velocizzare la procedura di registrazione e per fornire agli utenti algoritmi più avanzati. Alcuni esempi sono l'introduzione della sfocatura e della piramide gaussiana per ridurre la quantità di dati utilizzati e la possibilità di implementare analisi multi-immagine e multi-metrica per gestire applicazioni più complesse.[7]

Applicazioni[modifica | modifica wikitesto]

Elastix viene principalmente utilizzato in campo medico, in cui la registrazione delle immagini è fondamentale per ottenere informazioni complete sulla regione anatomica analizzata.[12] È ampiamente impiegato nella chirurgia assistita da immagini, nel monitoraggio dei tumori e nella valutazione dell'andamento terapico.[5]

Ad esempio, nella pianificazione della radioterapia, la registrazione delle immagini consente sia di fornire correttamente il trattamento sia di valutare i risultati ottenuti. L'utilizzo del software elastix, grazie all'ampia gamma di algoritmi implementati, consente a medici e ricercatori di testare diverse pipeline di registrazione, da quelle più semplici a quelle più complesse, e di salvare la migliore combinazione su un file di configurazione. L'utilizzo di questo file e il fatto che il software sia completamente open-source consente la facile riproduzione del lavoro di ricerca, che può aiutare a supportare il paradigma di open science e un rapido riutilizzo di una stessa configurazione su dati di diversi pazienti.[13]

Nella chirurgia assistita da immagini, i tempi di registrazione e l'accuratezza sono un elemento di criticità poiché, durante la registrazione, il paziente rimane sul tavolo operatorio e le immagini da registrare hanno generalmente una risoluzione inferiore rispetto a quelle di riferimento. In questo campo, la possibilità di integrare elastix con linguaggi di alto livello, come OpenCL, permette di considerare l'utilizzo di GPU e altri acceleratori hardware.[14]

Note[modifica | modifica wikitesto]

  1. ^ (EN) ITK | Insight Toolkit, su itk.org. URL consultato il 25 giugno 2020.
  2. ^ S. Klein, M. Staring e K. Murphy, elastix: A Toolbox for Intensity-Based Medical Image Registration, in IEEE Transactions on Medical Imaging, vol. 29, n. 1, gennaio 2010, pp. 196–205, DOI:10.1109/TMI.2009.2035616.
  3. ^ SimpleElastix, su simpleelastix.github.io. URL consultato il 25 giugno 2020.
  4. ^ Kasper Marstal, Floris Berendsen e Marius Staring, SimpleElastix: A User-Friendly, Multi-Lingual Library for Medical Image Registration, 2016, pp. 134–142.
  5. ^ a b Barbara Zitová e Jan Flusser, Image registration methods: a survey, in Image and Vision Computing, vol. 21, n. 11, ottobre 2003, pp. 977–1000, DOI:10.1016/S0262-8856(03)00137-9.
  6. ^ a b Lisa Gottesfeld Brown, A survey of image registration techniques, in ACM Computing Surveys, vol. 24, n. 4, 1º dicembre 1992, pp. 325–376, DOI:10.1145/146370.146374.
  7. ^ a b c d e f g Stefan Klein e Staring, elastix.lumc.nl, https://elastix.lumc.nl/download/elastix-5.0.0-manual.pdf.
  8. ^ D. Rueckert, L.I. Sonoda e C. Hayes, Nonrigid registration using free-form deformations: application to breast MR images, in IEEE Transactions on Medical Imaging, vol. 18, n. 8, 1999, pp. 712–721, DOI:10.1109/42.796284.
  9. ^ M.H. Davis, A. Khotanzad e D.P. Flamig, A physics-based coordinate transformation for 3-D image matching, in IEEE Transactions on Medical Imaging, vol. 16, n. 3, giugno 1997, pp. 317–328, DOI:10.1109/42.585766.
  10. ^ M. Unser e P. Thevenaz, Optimization of mutual information for multiresolution image registration, in IEEE Transactions on Image Processing, vol. 9, n. 12, 2000, pp. 2083–2099, DOI:10.1109/83.887976.
  11. ^ M. Unser, Splines: a perfect fit for signal and image processing, in IEEE Signal Processing Magazine, vol. 16, n. 6, 1999, pp. 22–38, DOI:10.1109/79.799930.
  12. ^ J.B.Antoine Maintz e Max A. Viergever, A survey of medical image registration, in Medical Image Analysis, vol. 2, n. 1, marzo 1998, pp. 1–36, DOI:10.1016/S1361-8415(01)80026-8.
  13. ^ Ruta Zukauskaite, Carsten Brink e Christian Rønn Hansen, Open source deformable image registration system for treatment planning and recurrence CT scans, in Strahlentherapie und Onkologie, vol. 192, n. 8, 20 giugno 2016, pp. 545–551, DOI:10.1007/s00066-016-0998-4.
  14. ^ Denis Shamonin, Fast parallel image registration on CPU and GPU for diagnostic classification of Alzheimer's disease, in Frontiers in Neuroinformatics, vol. 7, 2013, DOI:10.3389/fninf.2013.00050.

Collegamenti esterni[modifica | modifica wikitesto]