È necessario utilizzare un browser che supporta Java per utilizzare questo programma.

Laboratorio (Virtuale) di Informatica Medicalogo

Esercizi di Elaborazione ed Analisi di immagini biomediche - Vincenzo Della Mea

Nuovi esercizi di elaborazione ed analisi di immagini biomediche

(altri esercizi)

(tutte le immagini)

Questà pagina propone alcuni esercizi semplici di elaborazione ed analisi di immagini biomediche, utili per comprendere meglio gli argomenti trattati a lezione. Gli esercizi si basano sull'uso del programma di elaborazione di immagini ImageJ, che viene automaticamente lanciato come applet al caricamento di questa pagina (gli interessati possono anche scaricare localmente il programma).

Gli esercizi sono interattivi e non prevedono alcuna conoscenza di programmazione.

Il programma ImageJ si aprirà in una finestra separata; se la connessione è lenta potrà passare qualche minuto.

Nel menu "File" è presente un comando "Open Samples..." che permette di caricare alcune immagini di prova. Le istruzioni del programma sono accessibili al sito originale.

Esercizio 1: Le immagini a colori RGB

In quest'esercizio vedremo come vengono rappresentate e tratte in pratica le immagini a colori RGB.

test image
  1. Caricare l'immagine Fluorescent Cells utilizzando il menu "Open Samples"; subito sopra l'immagine, appare una riga di informazioni sull'immagine stessa, come il numero di pixel ed il numero di bit per pixel (in questo caso, RGB)
  2. Il menu Image:Type permette di cambiare il tipo di un'immagine. Oltre ai toni di grigio, ImageJ gestisce il tipo Stack, cioè sequenza di immagini. Convertendo il tipo RGB a tipo RGB stack, si ottiene una sequenza di tre immagini a toni di grigio, corrispondenti ai tre canali R, G, B.
  3. Osservate che aspetto hanno i tre canali separati, e confrontateli con l'immagine di partenza.
  4. QUest'immagine è particolarmente semplice; se provate a caricare, con la stessa procedura, l'immagine Mandrill, vedrete qualcosa di più complesso.

Esercizio 2: L'istogramma

In questo esercizio analizziamo l'istogramma di alcune immagini e ne deriviamo alcune osservazioni sulle caratteristiche delle immagini.

L'istogramma

  1. Come primo esempio, creiamo un'immagine molto semplice dal menu File:New, con le caratteristiche suggerite nel dialogo. Sarà completamente bianca. Tracciamo un cerchio con l'apposito strumento, e riempiamolo di nero col il comando Edit:Fill. Disattiviamo la selezione del cerchio cliccando altrove nell'immagine (altrimenti le susseguenti operazioni riguarderanno solo il cerchio). Esaminiamo poi l'istogramma (Analyze:Histogram). Come è fatto?
  2. Un istogramma di questo tipo si dice bimodale, ed evidenzia la presenza di due distribuzioni di pixel nell'immagine, una chiara ed una scura.
  3. In immagini reali, la bimodalità si esprime in modo più sfumato. Proviamo a esaminare l'immagine Blobs (aprendola con Open Samples), ed in particolare la forma del suo istogramma
  4. Quando le distribuzioni sono più di due, abbiamo un istogramma multimodale: per esempio, caricate l'immagine Esercizio 1 (con Open Samples)
  5. esaminare l'istogramma di questa immagine: come è fatto?

Esercizio 3: Miglioramento dell'immagine

  Scopo del presente esercizio è effettuare la forma più semplice di miglioramento di qualità di un'immagine, cioé variare luminosità e contrasto; ciò si ottiene effettuando delle semplici operazioni sull'istogramma dei toni di grigio, che tendenzialmente portano ad aumentare il range di toni effettivamente utilizzato nell'immagine. L'applicazione principale è la visualizzazione, ma di solito è anche utile per ulteriori fasi di elaborazione.Cell nucleus
  1. Acquisizione
  2. Caricare l'immagine Fibroblast_Cell_Nucleus.jpg utilizzando il menu "Open Samples"; subito sopra l'immagine, appare una riga di informazioni sull'immagine stessa, come il numero di pixel ed il numero di bit per pixel (in questo caso, 8, cioé 256 toni di grigio)
  3. Muoviamoci con il mouse all'interno dell'immagine: nella finestrella dei comandi di ImageJ appariranno dati come la posizione su cui ci troviamo ed il valore del pixel ("value"). Si noti come tanto più scuro è il pixel su cui siamo posizionati, minore è il valore mostrato.
  4. l'immagine appare molto scura e poco contrastata: a ciò corrisponderà, come vedremo, un istogramma particolarmente "stretto" e spostato verso lo zero, cioé verso il nero
  5. Trasformazione: restoration
  6. Non è chiaro quale possa essere il modello del rumore per quest'immagine; inoltre, poiché le informazioni presenti sono costituite da piccoli "pallini" all'interno del nucleo, non conviene usare tecniche generiche di filtraggio che potrebbero danneggiare il contenuto
  7. Trasformazione: enhancement
  8. Viste le caratteristiche dell'immagine, proviamo a variarne luminosità e contrasto utilizzando il menu Image:Adjust:Brightness/Contrast
  9. Si notino forma e posizione dell'istogramma. 
  10. Facendo scorrere i due cursori di luminosità e contrasto, cerchiamo di rendere l'immagine più comprensibile. 
  11. Quando siamo soddisfatti, rendiamo effettiva l'operazione con il tasto "Apply": l'istogramma verrà modificato di conseguenza, ed i toni di grigio risulteranno (se abbiamo fatto le cose bene...) distribuiti su tutto lo spazio disponibile di 256 toni. Ovviamente il numero di toni diversi non cambierà: saranno semplicemente più "distanti" l'uno dall'altro, dando maggiore leggibilità all'immagine.

Altri esperimenti: modificare la sola luminosità ed applicare la modifica (tasto Apply). Si vedrà come l'istogramma rimane uguale nella forma ma si sposta verso destra (se abbiamo aumentato la luminosità).

Esercizio 4: restauro e miglioramento di un'immagine

Esempio di miglioramento di un'immagine troppo scura e rumorosa. In questo caso, effettueremo dapprima un miglioramento per aumentare luminosità e contrasto, dopo di che ci accorgeremo che è necessario anche ridurre il rumore.test image

  1. Acquisizione
  2. Dal menu File:Open Samples scegliere l'immagine "Enhance Me". Apparirà una finestra con un'immagine molto scura
  3. Trasformazione
  4. Dal menu Image:Adjust scegliere Brightness/Contrast. Apparirà una nuova finestra con l'istogramma dell'immagine e la possibilità di variare luminosità e contrasto.
  5. Come si può notare, i livelli di grigio dell'immagine si concentrano verso lo zero (in quanto molto scura)
  6. variando brightness e contrast, si può espandere l'intervallo dei toni di grigio utilizzati dall'immagine, fino a renderla chiaramente visibile
  7. Non si vede ancora bene? Clicca sul bottone "Auto", che imposta automaticamente tutto in base a massimi e minimi dell'istogramma...
  8. Cliccare sul bottone Apply per fissare la modifica: l'istogramma cambierà
  9. ora si vede l'immagine, ma è piena di puntini bianchi e grigi: rumore!
  10. per togliere il rumore, si possono utilizzare diverse tecniche. Per provarle sempre sull'immagine di partenza, utilizzare il menu Edit:Undo tra una tecnica e l'altra, per eliminare l'effetto dell'ultima operazione compiuta.

Esercizio 5: L'istogramma e la sogliatura

La sogliatura dell'istogramma è un meccanismo che permette di evidenziare una delle distribuzioni di pixel presenti all'interno dell'immagine, delimitandone, spesso manualmente, gli estremi che si ritengono essere (approssimativamente) il suo massimo ed il suo minimo.

  1. Con l'immagine es1.jpg precedentemente caricata (oppure ricaricatela...), scegliere il comando Image:Adjust:Threshold..., che serve per selezionare interattivamente i due valori di soglia. La regione selezionata appare in rosso: provare a muovere i cursori al fine di segmentare i quadrati o il cerchio.
  2. Attenzione: se si applica la sogliatura, l'immagine viene trasformata in un'immagine binaria in cui lo zero indica le aree non selezionate , e l'uno quelle selezionate. Non è necessario farlo, e non è da fare se si intende valutare poi aspetti colorimetrici dell'immagine.
  3. Nelle immagini reali, dove le distribuzioni possono essere sovrapposte, si segmenteranno anche pixel che non appartengono alla regione di interesse
  4. Quali possono essere i limiti della sogliatura come mezzo di segmentazione? Si provi a caricare l'immagine Esercizio 2, e se ne esamini l'istogramma.
  5. Ora modifichiamo l'immagine in modo da creare un oggetto fittizio, chiaramente riconoscibile come tale, ma non segmentabile con la sogliatura dell'istogramma, come segue.
  6. Con lo strumento cerchio, selezionare un'area circolare; invertire poi i valori dei pixel con il comando Edit:Invert (questa operazione trasforma il bianco in nero, il nero in bianco ed a scalare i toni in mezzo sottraendo il valore del pixel alla costante 255). Si ottiene in questo modo una regione rotonda che è un oggetto diverso dallo sfondo.
  7. provare a segmentare l'oggetto di interesse con la sogliatura dell'istogramma.
  8. Come si possono segmentare oggetti del genere? La soluzioneè quella di utilizzare trasformate locali basate sul gradiente, poiché sul confine tra oggetto e sfondo i valori dei pixel differiscono molto di più che all'interno dell'uno o dell'altro. Si provi per esempio il comando Process:Find Edges.

Esercizio 6: calibrazione e misurazione

In questo esercizio misureremo le dimensioni di alcuni oggetti presenti nell'immagine, sapendo a priori a quanto corrisponde nella realtà un pixel. Ciò è possibile quando conosciamo il modello del sistema di acquisizione (per esempio, l'ingrandimento effettivo di un microscopio, la presenza di raccordi con la telecamera, la dimensione del pixel del dispositivo CCD, etc) oppure quando abbiamo avuto modo di misurare il singolo pixel con un campione di dimensioni note (nei microscopi, appositi vetrini graduati ai 10 micron). test image
  1. Acquisizione
  2. Dal menu File:Open Samples scegliere l'immagine "Blobs".
  3. Muovendosi sopra l'immagine, si noti come in questo caso al nero corrispondano valori di grigio più alti rispetto a quelli dei colori chiari. Questo significa che l'immagine è stata codificata diversamente dalla due precedenti: 0=bianco, 255=nero
  4. Trasformazione
  5. Questa volta non attueremo alcuna trasformazione, perché la qualità è sufficientemente buona
  6. Riduzione
  7. La fase di misurazione può essere fatta corrispondere alla riduzione, tenendo però presente che è effettuata in modo interattivo, cioé non automaticamente dal calcolatore ma con operazioni dell'utente supportate da elaborazioni del calcolatore
  8. Proviamo subito a fare delle misure di lunghezza: nella finestrella dei comandi di ImageJ, scegliamo l'icona della linea, dopodiché torniamo sull'immagine, clicchiamo col mouse sul punto di inizio dell'oggetto che intendiamo misurare, e tenendo cliccato arriviamo fino alla fine. Nella finestrella appariranno alcuni dati, tra cui la lunghezza in pixel dell'oggetto.
  9. Purtroppo la lunghezza in pixel non ci dice molto...
  10. Come passo ulteriore, è necessario far conoscere al calcolatore a quanto corrisponde nella realtà il singolo pixel sull'immagine. Scegliere quindi il menu Analyze:Set scale... che aprirà un nuovo dialogo.
  11. Il dialogo permette di associare ad un certo numero di pixel una lunghezza ed una unità di misura, che verranno poi usate per fare i calcoli. Se sappiamo che ogni pixel corrisponde a 2.5 micron di lunghezza, e che i pixel sono quadrati, scriveremo nell'ordine: 1 come distanza in pixel, 2.5 come distanza nota, lasciamo 1.0 come aspect ratio (rapporto tra X ed Y), "micron" come unità di misura.
  12. A questo punto, se rifacciamo le misure di prima, i valori che otteniamo sono espressi in micron
  13. Interpretazione
  14. Se abbiamo pazienza di segnare i valori che raccogliamo in questo modo, per esempio misurando il diametro di ogni particella presente sul'immagine, potremmo calcolare dati come la dimensione media e la deviazione standard, che potrebbero (probabilmente con altro genere di immagini) essere utili per classificare l'immagine.

Esercizio 7: Ancora calibrazione e misurazione

In questo esercizio vedremo come ricavare la misura di calibrazione in sistemi di acquisizione per i quali è più difficile dare a priori la dimensione del pixel. La tecnica è usata spesso in fotografia macroscopica, dove la presenza di zoom o la diversa distanza dei campioni impedisce una calibrazione a priori. test image
  1. Acquisizione
  2. Dal menu Open samples, caricate l'immagine Rene .
  3. Assieme all'immagine è stato fotografato anche un righello. Questo permette di capire la scala dell'immagine anche a prescindere dal suo uso al calcolatore: il metodo si usa infatti in sala anatomica per avere un'idea delle dimensioni dei campioni, quando vengono fotografati in modo tradizionale, o anche in campo più genericamente biologico per campioni di vario tipo..
  4. Trasformazione
  5. L'immagine è già di buona qualità (almeno, dal punto di vista della misurazione), però è rovesciata. Cerchiamo di riportarla nella posizione corretta effettuandone la rotazione tramite il menu Image:Rotate:....
  6. Riduzione
  7. Questa volta, dopo avere selezionato lo strumento linea, cerchiamo di tirare una riga il più dritta possibile tra i 5 ed i 10 centimetri del righello.
  8. Fatto ciò, andiamo al menu Analyze:Set Scale...
  9. Così facendo, il numero di pixel apparirà direttamente nell'apposito campo; sappiamo che a ciò corrispondono 5 cm, per cui impostiamo gli altri valori di conseguenza;
  10. Proviamo ora a misurare vari aspetti dell'immagine

Ulteriori osservazioni: quanto sarà grande il più piccolo dettagllio misurabile?

Esercizio 8: Misurazioni automatiche

In questo esercizio vedremo come sia possibile effettuare una serie di misurazioni automaticamente, a partire dalle cose viste in precedenza. Lo scopo è avere dati sulle dimensioni dei blobs che costituiscono il contenuto dell'immagine. test image
  1. Acquisizione
  2. Dal menu File:Open Samples scegliere di nuovo l'immagine "Blobs".
  3. Trasformazione
  4. Questa volta cercheremo di migliorare l'immagine, poiché è destinata all'elaborazione automatica
  5. Trasformazione: restoration
  6. Volendo isolare le macchie scure dallo sfondo, cerchiamo di ridurre la variabilità dello sfondo con un'operazione di filtraggio, che dovrebbe semplicemente rendere l'immagine più uniforme. Scegliamo quindi il filtro mediano dal menu Process:Filters:Median. Impostiamo il raggio di azione del filtro a 3: questo significa che, in un intorno di 3 pixel attorno ad ogni pixel dell'immagine, sceglierà quello col valore di grigio corrispondente alla mediana e lo sostituirà a quello esaminato. L'esito è un'immagine più "liscia", sia nelle sue parti chiare che nelle sue parti scure.
  7. Trasformazione: enhancement
  8. Per rendere più evidente la differenza tra sfondo e primo piano, aumentiamo il contrasto con la tecnica vista in precedenza (menu Image:Adjust:Brightness/Contrast). Poichè non siamo interessati alla visualizzazione ma solo alla misura delle dimensioni dei blobs, possiamo "sparare" lo sfondo affinché diventi bianco.
  9. Riduzione
  10. Impostiamo la scala come in precedenza, 2.5 micron/pixel (menu Process:Set Scale)
  11. A questo punto, impostiamo una soglia che separi agevolmente le macchie dallo sfondo col menu Image:Adjust:Treshold. In realtà, è possibile impostare due soglie, una inferiore ed una superiore, che permettono di isolare delle aree dell'immagine i cui valori di grigio sono compresi tra i due valori di soglia. Giocando con i due cursori, vediamo come varia la parte dell'immagine "presa" con la sogliatura (è quella evidenziata in rosso). Poiché il nostro scopo è cercare di isolare le macchia, dovremo prendere i valori "più alti" dell'istogramma (ricordiamoci che il nero, in questo caso, vale 255).
  12. Stabiliamo ora quali sono i parametri che ci interessa misurare, utilizzando il menu Analyze:Set Measurements. Qui possiamo stabilire cosa misurare; poiché abbiamo fatto numerose trasformazioni che hanno inciso sui toni di grigio, sarà inutile scegliere le misure riferite ad essi. Scegliamo per esempio area, perimetro, centro di massa.
  13. Con il menu Analyze:Analyze particles cominciamo la misurazione automatica. La cosa più rapida è scegliere "Show Outlines" (mostrerà un'immagine nuova  con evidenziate le particelle misurate), "Display Results" , Ok, e vedere cosa succede...
  14. Apparirà una tabella con i valori richiesti per ognuna delle particelle identificate in rosso. Ciò comprende anche quelle più piccoline, che probabilmente corrispondono a del rumore, ed a quelle sui bordi, incomplete e quindi in grado di falsare i nostri risultati (si pensi all'area media, per esempio).
  15. Vediamo come risolvere i due problemi citati. Torniamo al dialogo Analyze Particles, impostiamo una soglia minima di area per le particelle da misurare (per esempio, 15 pixel), settiamo "Exclude edge particles", e, per eliminare i risultati precedenti, "Clear Results table". Vediamo ora cosa è cambiato...
  16. Nell'immagine creata si vedono ora le particelle prese in considerazione, che sono ovviamente meno delle precedenti.
  17. Interpretazione
  18. I risultati mostrati nella tabella potrebbero essere valutati statisticamente per evidenziare alcune particelle in qualche modo 'patologiche" (cioé classificabili come tali), oppure per associare all'intera immagine una classe.

Ulteriori osservazioni: confronta il numero di particelle ottenute dal calcolo automatico con quelle del tuo vicino...

Esercizio 9 - Ricostruzione 3D

In questo esercizio verranno effettuate delle semplici ricostruzioni tridimensionali a partire da una sequenza di immagini da risonanza magnetica.

Esercizio 10 - Immagini bitmap e vettoriali

In questo esercizio confronteremo le immagini bitmap e vettoriali dal punto di vista della qualità. Non usiamo più ImageJ, ma Paint e Word.

  1. Aprire il programma Paint, e disegnare un cerchio colorato (internamente); poi copiarlo.
  2. Aprire Word, ed incollare il cerchio in una pagina vuota.
  3. Con lo strumento di disegno di Word, creare un cerchio simile di fianco al precedente
  4. Proviamo ora ad ingrandire la presentazione a video del documento, con lo zoom. Cosa succede ai due cerchi?
  5. Il primo è bitmap, il secondo è vettoriale. Il primo si può ingrandire esclusivamente ingrandendo la dimensione dei singoli pixel, il secondo può essere ridisegnato di volta in volta a qualsiasi risoluzione

Esercizio 11 - Ecografia

Caricare questa immagine ecografica; si può usare per provare ad esaminare il profilo di una linea, in modo da simulare A-mode con Analyze: Plot profile.