際際滷

際際滷Share a Scribd company logo
UNIVERSIT DEGLI STUDI DI ROMA LA SAPIENZA
Corso di
Elaborazione delle immagini
Prof. Luigi Cinque
RICERCA DEI BORDI ALLINTERNO DI UNIMMAGINE
A CURA DI:
Patrizio Tamorri (vaughantheextreme@gmail.com)
Jacopo Flore (jacopo.flore@hotmail.it)
INDICE:
Specifiche Progetto............................................................................................................................................2
Algoritmi di rilevamento dei bordi....................................................................................................................3
SOBEL.....................................................................................................................................................3
CANNY ...................................................................................................................................................4
Algoritmi di cancellazione ...................................................................................................................... 5
Cancellazione cromatica dei bordi di dimensione minima............................................................ 5
Algoritmi di unione dei bordi ............................................................................................................................6
Unione Lineare Con Sogliatura di Canny.............................................................................................6
Panoramica e Conclusioni..................................................................................................................................7
SPECIFICHE
Gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggg
Per ragioni di completezza si 竪 scelto di supportare anche le immagini a colori. All'utilizzo di pre-
elaborazione si 竪 preferito usare filtri post-processing atti a migliorare la qualit del risultato degli algoritmi
di ricerca bordi utilizzati.
ALGORITMI DI RILEVAMENTO DEI BORDI
Utilizzando le tecniche viste durante il corso, estrarre i contorni dalle
immagini termiche fornite.
Data la natura delle immagini, eseguire una fase di post elaborazione
(eventualmente anche di pre-elaborazione) per migliorare i contorni rilevati,
eliminando i pi湛 piccoli in termini di pixel e unendo contorni vicini entro un
prefissato .
Per il rilevamento dei bordi sono stati utilizzati due algoritmi diversi, l'algoritmo SOBEL e l'algoritmo
CANNY. Questi algoritmi analizzano limmagine producendo immagini elaborate contenenti informazioni sui
bordi trovati. Queste immagini vengono successivamente analizzate per eliminare informazioni inutili e
lasciare in evidenza solo i bordi che hanno una rilevanza superiore a una determinata tolleranza
prestabilita.
SOBEL
Lalgoritmo SOBEL 竪 utilizza due operatori matriciali di dimensioni 3 x 3 che rilevano rispettivamente
sullasse X e Y della matrice rappresentante limmagine la differenza e la direzione della variazione di
intensit dei colori, ossia basandosi sullincremento e decremento di luminosit. Ci嘆 che risulta 竪 il modulo
del vettore puntante verso lincremento maggiore di gradiente rappresentante lintensit dei colori
dellimmagine.
Nellimmagine sottostante si possono osservare le due matrici operatore che vengono applicate ad ogni
pixel dellimmagine.
Linterpolazione tra i due valori risultanti si ottiene applicando il teorema di Pitagora.
Si potrebbe calcolare facilmente anche la direzione dellincremento ma ai fini del progetto interessa solo
lintensit dellincremento. Punti con una variazione di intensit molto elevata saranno probabilmente dei
punti di bordo,in quanto si manifesta una elevata variazione di intensit dei colori(si passa da un colore
chiaro a uno pi湛 scuro o viceversa).
CANNY
Lalgoritmo CANNY si divide in due fasi. La prima consiste nellapplicazione di un filtro Gaussiano,
sfruttando la derivata prima di una curva gaussiana. Questa Fase serve a eliminare le influenze negative di
piccole zone di rumore nellimmagine. Essa consiste nellapplicare un operatore matriciale, di dimensione
prefissata allimmagine, di tipo gaussiano ovvero basato su una funzione gaussiana(vedere figura).
In base alla derivata prima di questa funzione 竪 possibile calcolare le influenze dei singoli pixel sullintorno
del pixel in analisi facendo sfocare limmagine eliminando i singoli pixel di rumore. Lalgoritmo crea un
Kernel , o matrice di convoluzione, che funge da maschera per i pixel e contenente la derivata prima della
gaussiana calcolata in tale posizione. Il calcolo della funzione viene calcolata prima sullasse delle
x,prendendo per zero il punto occupato dal pixel in analisi, e in seguito sullasse delle y. Essa sar 0 nel
punto centrale quindi il pixel originale viene completamente tralasciato. Si possono osservare bene i pesi
degli elementi attorno al punto in analisi sul seguente grafico(la derivata della funzione nel grafo 竪 ci嘆 che
viene inserito nella matrice. Ogni punto 竪 interpolazione di due funzioni).
Il Kernel viene sovrapposto alla matrice dei pixel dellimmagine facendo in modo che il suo centro
corrisponda al pixel in analisi. Dopodich辿 ogni posizione (x,y) del Kernel viene moltiplicata con la rispettiva
posizione che essa va a coprire nella matrice dei pixel dellimmagine. Si ottiene una nuova matrice grande
come il Kernel. Il determinante di tale matrice sar il valore finale da assegnare al pixel in analisi. Questo
porta a due conclusioni. La prima 竪 che il Kernel deve essere di grandezza dispari. La seconda 竪 che pi湛 il
kernel 竪 grande maggiore sar la sfocatura finale su immagini con contorni ben definiti. Da notare che se i
contorni non sono ben definiti e sono presenti ampie sfocature, il filtro gaussiano con matrice abbastanza
grande migliorer la definizione dei bordi. Si 竪 cercato quindi un giusto bilanciamento.
La seconda Parte dellalgoritmo CANNY 竪 la vera ricerca dei bordi. La ricerca funziona allo stesso modo del
SOBEL, attraverso la ricerca di gradienti. Tuttavia ci sono alcune differenze. Mentre in Sobel si accettano
come bordo tutti i pixel superiori a un dato , nel Canny sono presenti 2 soglie,dette bassa e alta.Oltre
la soglia alta i valori vengono sempre accettati, sotto quella bassa sempre scartati. Se il valore di un
pixel 竪 compreso tra le due soglie si accetta come bordo solo se 竪 vicino a un altro pixel con un bordo.
Questo processo 竪 detto sogliatura con isteresi
Algoritmi Di Cancellazione
CANCELLAZIONE CROMATICA DEI BORDI DI DIMENSIONE MINIMA
Lalgoritmo 竪 suddiviso in due parti. La prima fase consiste nel contare il numero di pixel appartenenti ad
un bordo. Per fare ci嘆 ogni pixel ogni pixel appartenente ad un determinato bordo viene segnato con un
numero corrispondente al numero identificativo del bordo. In un vettore avente come indice tale numero
identificativo viene segnato il numero dei pixel che costituiscono tale bordo. Lalgoritmo funziona nel
seguente modo:
Si analizzano i pixel dellimmagine riga per riga partendo dal bordo alto a sinistra finendo al pixel in basso a
destra(come se i pixel fossero lettere da leggere) .Se si incontra un bordo si analizzano i quattro pixel
adiacenti precedentemente controllati. Se durante lanalisi si trova un pixel precedentemente colorato con
un colore i, allora anche il pixel in analisi verr colorato con tale e il rispettivo contatore di pixel nel vettore
con quel colore verr incrementato di uno. Se invece viene trovato un pixel appartenente ad un bordo non
avente altri bordi adiacenti allora tale pixel viene colorato con un nuovo colore(i+1).
Al termine del processo si avr limmagine con la colorazione definita e un vettore con il numero di pixel
colorati con quel colore.
Tale processo presenta un problema in quanto nel colorare i pixel pu嘆 analizzare solamente pixel gi
analizzati, perci嘆 pu嘆 capitare che bordi uniti vengano colorati diversamente risultando nel conteggio bordi
diversi. Perci嘆 al termine della colorazione viene eseguito un altro processo che unisce i bordi vicini colorati
diversamente assegnandogli lo stesso colore e assegnando nella cella del vettore corrispondente al colore
la somma del numero dei pixel dei due bordi. Questo per tutti i bordi fino a quando tutti i bordi adiacenti
non avranno pi湛 colorazioni diverse.
La seconda fase consiste in un semplice algoritmo di cancellazione; viene analizzato ogni pixel della matrice,
se un pixel appartiene ad un bordo la cui dimensione 竪 minore di un determinato valore allora tale pixel
viene cancellato (gli viene assegnato valore 0 corrispondente al nero).
ALGORITMI DI UNIONE BORDI
SUFFICIENTEMENTE VICINI.
UNIONE BORDI PIU VICINI DI UN DATO DELTA
Questalgoritmo 竪 stato da noi progettato per unire i punti abbastanza vicini senza alterare la correttezza
dei bordi presenti. Il funzionamento 竪 il seguente: Si analizza ogni bordo dellimmagine trovato attraverso
un algoritmo SOBEL ad alta sogliatura(solo i bordi molto marcati).Successivamente viene applicato un
algoritmo CANNY allimmagine con bassa sogliatura. Il secondo grazie al filtro gaussiano produce un
immagine con contorni lineari e definiti ma trova anche bordi inesistenti o non importanti che
introdurrebbero un eccessivo rumore. Si procede allora a creare una terza immagine utilizzando le due
appena viste. Si analizzano i bordi trovati dal SOBEL uno a uno e si controlla se il CANNY ha un bordo sul
pixel in analisi. Se s狸 viene chiamata una funzione che segue la linea (o le linee ) del CANNY che partono da
tale pixel. Se La linea raggiunge un altro bordo del SOBEL entro Delta Passaggi allora si aggiunge tale bordo
allimmagine risultato Finale(che contiene una copia dellimmagine ottenuta dal SOBEL). Se si incontrano
bivi nel CANNY (linee intrecciate) viene sdoppiata lanalisi e si continua fino a quando non si raggiunge un
pixel del SOBEL o fino a quando non si raggiungano Delta passaggi (avendo cura di non rivisitare pixel
appena visitati proseguendo nella ricorsione).
T ale algoritmo necessit di ( L * N * Delta) passaggi nel caso medio, dove N 竪 il numero di bordi del SOBEL,
Delta 竪 la lunghezza massima di un bordo e L 竪 il numero di bivi Presenti(nelle linee del Canny analizzate).
PANORAMICA E CONCLUSIONI
Allimmagine originale viene applicato dapprima il filtro SOBEL, successivamente il filtro CANNY. Le due
immagini risultanti vengono usate dallalgoritmo di unione dei bordi vicini precedentemente spiegato.
Questo produce un output ben delineato ma ancora affetto dal problema del rumore. A questo punto viene
applicato lultimo algoritmo di eliminazione dei bordi troppo piccoli.
Due simpatiche mucche che pascolavano tranquille prima che il nostro algoritmo le disturbasse
Lalgoritmo produce le seguenti immagini:
SOBEL
CANNY
Applicando lunione dei bordi si ottiene il seguente output
Si nota che limmagine 竪 molto migliore di quella ottenuta sia dallalgoritmo Canny che dallalgoritmo Sobel
presi singolarmente. Gli alberi sullo sono stati identificati ottimamente e le vacche sono ben visibili. Si
legge bene anche la scritta in basso a destra. Applichiamo ora lultimo algoritmo per eliminare i bordi
troppo piccoli.
Come si pu嘆 vedere il rumore 竪 fortemente ridotto. I bordi utili sono stati mantenuti e si distinguono bene
sia le vacche che gli alberi sullo sfondo mentre i bordi sul cielo rilevati solo dal Canny non sono stati
giustamente considerati.
Nelle immagini termiche tuttavia i contorni dei bordi risultavano meno definiti a causa della bassa qualit
dellimmagine. Per ovviare a tale problema 竪 stata aumentata la sensibilit dellalgoritmo Sobel.
Prendendo unimmagine in bianco e nero con qualit maggiore si possono lasciare i valori di sensibilit
dellalgoritmo Sobel usati per limmagine a colori.
Nella pagina seguente riportiamo immagini di altissima qualit per poter apprezzare al meglio il progetto
svolto.
relazione

More Related Content

relazione

  • 1. UNIVERSIT DEGLI STUDI DI ROMA LA SAPIENZA Corso di Elaborazione delle immagini Prof. Luigi Cinque RICERCA DEI BORDI ALLINTERNO DI UNIMMAGINE A CURA DI: Patrizio Tamorri (vaughantheextreme@gmail.com) Jacopo Flore (jacopo.flore@hotmail.it)
  • 2. INDICE: Specifiche Progetto............................................................................................................................................2 Algoritmi di rilevamento dei bordi....................................................................................................................3 SOBEL.....................................................................................................................................................3 CANNY ...................................................................................................................................................4 Algoritmi di cancellazione ...................................................................................................................... 5 Cancellazione cromatica dei bordi di dimensione minima............................................................ 5 Algoritmi di unione dei bordi ............................................................................................................................6 Unione Lineare Con Sogliatura di Canny.............................................................................................6 Panoramica e Conclusioni..................................................................................................................................7 SPECIFICHE Gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg gggggggggggggg Per ragioni di completezza si 竪 scelto di supportare anche le immagini a colori. All'utilizzo di pre- elaborazione si 竪 preferito usare filtri post-processing atti a migliorare la qualit del risultato degli algoritmi di ricerca bordi utilizzati. ALGORITMI DI RILEVAMENTO DEI BORDI Utilizzando le tecniche viste durante il corso, estrarre i contorni dalle immagini termiche fornite. Data la natura delle immagini, eseguire una fase di post elaborazione (eventualmente anche di pre-elaborazione) per migliorare i contorni rilevati, eliminando i pi湛 piccoli in termini di pixel e unendo contorni vicini entro un prefissato .
  • 3. Per il rilevamento dei bordi sono stati utilizzati due algoritmi diversi, l'algoritmo SOBEL e l'algoritmo CANNY. Questi algoritmi analizzano limmagine producendo immagini elaborate contenenti informazioni sui bordi trovati. Queste immagini vengono successivamente analizzate per eliminare informazioni inutili e lasciare in evidenza solo i bordi che hanno una rilevanza superiore a una determinata tolleranza prestabilita. SOBEL Lalgoritmo SOBEL 竪 utilizza due operatori matriciali di dimensioni 3 x 3 che rilevano rispettivamente sullasse X e Y della matrice rappresentante limmagine la differenza e la direzione della variazione di intensit dei colori, ossia basandosi sullincremento e decremento di luminosit. Ci嘆 che risulta 竪 il modulo del vettore puntante verso lincremento maggiore di gradiente rappresentante lintensit dei colori dellimmagine. Nellimmagine sottostante si possono osservare le due matrici operatore che vengono applicate ad ogni pixel dellimmagine. Linterpolazione tra i due valori risultanti si ottiene applicando il teorema di Pitagora. Si potrebbe calcolare facilmente anche la direzione dellincremento ma ai fini del progetto interessa solo lintensit dellincremento. Punti con una variazione di intensit molto elevata saranno probabilmente dei punti di bordo,in quanto si manifesta una elevata variazione di intensit dei colori(si passa da un colore chiaro a uno pi湛 scuro o viceversa).
  • 4. CANNY Lalgoritmo CANNY si divide in due fasi. La prima consiste nellapplicazione di un filtro Gaussiano, sfruttando la derivata prima di una curva gaussiana. Questa Fase serve a eliminare le influenze negative di piccole zone di rumore nellimmagine. Essa consiste nellapplicare un operatore matriciale, di dimensione prefissata allimmagine, di tipo gaussiano ovvero basato su una funzione gaussiana(vedere figura). In base alla derivata prima di questa funzione 竪 possibile calcolare le influenze dei singoli pixel sullintorno del pixel in analisi facendo sfocare limmagine eliminando i singoli pixel di rumore. Lalgoritmo crea un Kernel , o matrice di convoluzione, che funge da maschera per i pixel e contenente la derivata prima della gaussiana calcolata in tale posizione. Il calcolo della funzione viene calcolata prima sullasse delle x,prendendo per zero il punto occupato dal pixel in analisi, e in seguito sullasse delle y. Essa sar 0 nel punto centrale quindi il pixel originale viene completamente tralasciato. Si possono osservare bene i pesi degli elementi attorno al punto in analisi sul seguente grafico(la derivata della funzione nel grafo 竪 ci嘆 che viene inserito nella matrice. Ogni punto 竪 interpolazione di due funzioni). Il Kernel viene sovrapposto alla matrice dei pixel dellimmagine facendo in modo che il suo centro corrisponda al pixel in analisi. Dopodich辿 ogni posizione (x,y) del Kernel viene moltiplicata con la rispettiva posizione che essa va a coprire nella matrice dei pixel dellimmagine. Si ottiene una nuova matrice grande come il Kernel. Il determinante di tale matrice sar il valore finale da assegnare al pixel in analisi. Questo porta a due conclusioni. La prima 竪 che il Kernel deve essere di grandezza dispari. La seconda 竪 che pi湛 il kernel 竪 grande maggiore sar la sfocatura finale su immagini con contorni ben definiti. Da notare che se i contorni non sono ben definiti e sono presenti ampie sfocature, il filtro gaussiano con matrice abbastanza grande migliorer la definizione dei bordi. Si 竪 cercato quindi un giusto bilanciamento. La seconda Parte dellalgoritmo CANNY 竪 la vera ricerca dei bordi. La ricerca funziona allo stesso modo del SOBEL, attraverso la ricerca di gradienti. Tuttavia ci sono alcune differenze. Mentre in Sobel si accettano come bordo tutti i pixel superiori a un dato , nel Canny sono presenti 2 soglie,dette bassa e alta.Oltre
  • 5. la soglia alta i valori vengono sempre accettati, sotto quella bassa sempre scartati. Se il valore di un pixel 竪 compreso tra le due soglie si accetta come bordo solo se 竪 vicino a un altro pixel con un bordo. Questo processo 竪 detto sogliatura con isteresi Algoritmi Di Cancellazione CANCELLAZIONE CROMATICA DEI BORDI DI DIMENSIONE MINIMA Lalgoritmo 竪 suddiviso in due parti. La prima fase consiste nel contare il numero di pixel appartenenti ad un bordo. Per fare ci嘆 ogni pixel ogni pixel appartenente ad un determinato bordo viene segnato con un numero corrispondente al numero identificativo del bordo. In un vettore avente come indice tale numero identificativo viene segnato il numero dei pixel che costituiscono tale bordo. Lalgoritmo funziona nel seguente modo: Si analizzano i pixel dellimmagine riga per riga partendo dal bordo alto a sinistra finendo al pixel in basso a destra(come se i pixel fossero lettere da leggere) .Se si incontra un bordo si analizzano i quattro pixel adiacenti precedentemente controllati. Se durante lanalisi si trova un pixel precedentemente colorato con un colore i, allora anche il pixel in analisi verr colorato con tale e il rispettivo contatore di pixel nel vettore con quel colore verr incrementato di uno. Se invece viene trovato un pixel appartenente ad un bordo non avente altri bordi adiacenti allora tale pixel viene colorato con un nuovo colore(i+1). Al termine del processo si avr limmagine con la colorazione definita e un vettore con il numero di pixel colorati con quel colore. Tale processo presenta un problema in quanto nel colorare i pixel pu嘆 analizzare solamente pixel gi analizzati, perci嘆 pu嘆 capitare che bordi uniti vengano colorati diversamente risultando nel conteggio bordi diversi. Perci嘆 al termine della colorazione viene eseguito un altro processo che unisce i bordi vicini colorati diversamente assegnandogli lo stesso colore e assegnando nella cella del vettore corrispondente al colore la somma del numero dei pixel dei due bordi. Questo per tutti i bordi fino a quando tutti i bordi adiacenti non avranno pi湛 colorazioni diverse. La seconda fase consiste in un semplice algoritmo di cancellazione; viene analizzato ogni pixel della matrice, se un pixel appartiene ad un bordo la cui dimensione 竪 minore di un determinato valore allora tale pixel viene cancellato (gli viene assegnato valore 0 corrispondente al nero). ALGORITMI DI UNIONE BORDI SUFFICIENTEMENTE VICINI.
  • 6. UNIONE BORDI PIU VICINI DI UN DATO DELTA Questalgoritmo 竪 stato da noi progettato per unire i punti abbastanza vicini senza alterare la correttezza dei bordi presenti. Il funzionamento 竪 il seguente: Si analizza ogni bordo dellimmagine trovato attraverso un algoritmo SOBEL ad alta sogliatura(solo i bordi molto marcati).Successivamente viene applicato un algoritmo CANNY allimmagine con bassa sogliatura. Il secondo grazie al filtro gaussiano produce un immagine con contorni lineari e definiti ma trova anche bordi inesistenti o non importanti che introdurrebbero un eccessivo rumore. Si procede allora a creare una terza immagine utilizzando le due appena viste. Si analizzano i bordi trovati dal SOBEL uno a uno e si controlla se il CANNY ha un bordo sul pixel in analisi. Se s狸 viene chiamata una funzione che segue la linea (o le linee ) del CANNY che partono da tale pixel. Se La linea raggiunge un altro bordo del SOBEL entro Delta Passaggi allora si aggiunge tale bordo allimmagine risultato Finale(che contiene una copia dellimmagine ottenuta dal SOBEL). Se si incontrano bivi nel CANNY (linee intrecciate) viene sdoppiata lanalisi e si continua fino a quando non si raggiunge un pixel del SOBEL o fino a quando non si raggiungano Delta passaggi (avendo cura di non rivisitare pixel appena visitati proseguendo nella ricorsione). T ale algoritmo necessit di ( L * N * Delta) passaggi nel caso medio, dove N 竪 il numero di bordi del SOBEL, Delta 竪 la lunghezza massima di un bordo e L 竪 il numero di bivi Presenti(nelle linee del Canny analizzate). PANORAMICA E CONCLUSIONI Allimmagine originale viene applicato dapprima il filtro SOBEL, successivamente il filtro CANNY. Le due immagini risultanti vengono usate dallalgoritmo di unione dei bordi vicini precedentemente spiegato.
  • 7. Questo produce un output ben delineato ma ancora affetto dal problema del rumore. A questo punto viene applicato lultimo algoritmo di eliminazione dei bordi troppo piccoli. Due simpatiche mucche che pascolavano tranquille prima che il nostro algoritmo le disturbasse
  • 8. Lalgoritmo produce le seguenti immagini: SOBEL CANNY
  • 9. Applicando lunione dei bordi si ottiene il seguente output Si nota che limmagine 竪 molto migliore di quella ottenuta sia dallalgoritmo Canny che dallalgoritmo Sobel presi singolarmente. Gli alberi sullo sono stati identificati ottimamente e le vacche sono ben visibili. Si legge bene anche la scritta in basso a destra. Applichiamo ora lultimo algoritmo per eliminare i bordi troppo piccoli.
  • 10. Come si pu嘆 vedere il rumore 竪 fortemente ridotto. I bordi utili sono stati mantenuti e si distinguono bene sia le vacche che gli alberi sullo sfondo mentre i bordi sul cielo rilevati solo dal Canny non sono stati giustamente considerati. Nelle immagini termiche tuttavia i contorni dei bordi risultavano meno definiti a causa della bassa qualit dellimmagine. Per ovviare a tale problema 竪 stata aumentata la sensibilit dellalgoritmo Sobel. Prendendo unimmagine in bianco e nero con qualit maggiore si possono lasciare i valori di sensibilit dellalgoritmo Sobel usati per limmagine a colori. Nella pagina seguente riportiamo immagini di altissima qualit per poter apprezzare al meglio il progetto svolto.