3D scanner & Reverse Engineering. Una panoramica sulle tecnologie di reverse engineering e sui modelli di scanner commerciali e open source/DIY. Come riparare i file con Meshlab e netfabb. Uso della kinect.
Cosa sono le self driving cars e la loro tassonomia
Il problema della localizzazione
Modello probablisitico
Filtri di Kalman
Particle filter
Ricerca del percorso
Modello Deep Learning
Conclusioni
L'occhio del biologo: elementi di fotografiaMarco Benini
The slides of the course "L'occhio del biologo", Alta Formazione, Università degli Studi dell'Insubria.
It is a small course on the fundamentals of photography oriented towards the scientific photography in a biological laboratory.
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...Francesco Andreuzzi
[Versione senza link]
Tesi triennale per il corso di laurea triennale in Ingegneria Informatica, Università degli Studi di Trieste (Dipartimento di Ingegneria e Architettura).
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...Francesco Andreuzzi
Tesi triennale per il corso di laurea triennale in Ingegneria Informatica, Università degli Studi di Trieste (Dipartimento di Ingegneria e Architettura).
Presentazione Sviluppo e confronto di tecniche di stima della traiettoria di ...Andrea Bidinost
TARGET: Estimate camera pose and trajectory from 3D images acquired by 3D structured light sensor.
Development of new algorithm for egomotion estimation (Frame Based and Color Fusion) and comparison with Iterative Closest Point approaches.
Usage of inverse depth space for 3D data modelization.
3D scanner & Reverse Engineering. Una panoramica sulle tecnologie di reverse engineering e sui modelli di scanner commerciali e open source/DIY. Come riparare i file con Meshlab e netfabb. Uso della kinect.
Cosa sono le self driving cars e la loro tassonomia
Il problema della localizzazione
Modello probablisitico
Filtri di Kalman
Particle filter
Ricerca del percorso
Modello Deep Learning
Conclusioni
L'occhio del biologo: elementi di fotografiaMarco Benini
The slides of the course "L'occhio del biologo", Alta Formazione, Università degli Studi dell'Insubria.
It is a small course on the fundamentals of photography oriented towards the scientific photography in a biological laboratory.
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...Francesco Andreuzzi
[Versione senza link]
Tesi triennale per il corso di laurea triennale in Ingegneria Informatica, Università degli Studi di Trieste (Dipartimento di Ingegneria e Architettura).
BisPy: un pacchetto Python per il calcolo della massima bisimulazione di graf...Francesco Andreuzzi
Tesi triennale per il corso di laurea triennale in Ingegneria Informatica, Università degli Studi di Trieste (Dipartimento di Ingegneria e Architettura).
Presentazione Sviluppo e confronto di tecniche di stima della traiettoria di ...Andrea Bidinost
TARGET: Estimate camera pose and trajectory from 3D images acquired by 3D structured light sensor.
Development of new algorithm for egomotion estimation (Frame Based and Color Fusion) and comparison with Iterative Closest Point approaches.
Usage of inverse depth space for 3D data modelization.
1. UNIVERSITÀ DEGLI STUDI DI ROMA “LA SAPIENZA”
Corso di
“Elaborazione delle immagini”
Prof. Luigi Cinque
RICERCA DEI BORDI ALL’INTERNO DI UN’IMMAGINE
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 l’immagine 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
L’algoritmo SOBEL è utilizza due operatori matriciali di dimensioni 3 x 3 che rilevano rispettivamente
sull’asse X e Y della matrice rappresentante l’immagine la differenza e la direzione della variazione di
intensità dei colori, ossia basandosi sull’incremento e decremento di luminosità. Ciò che risulta è il modulo
del vettore puntante verso l’incremento maggiore di gradiente rappresentante l’intensità dei colori
dell’immagine.
Nell’immagine sottostante si possono osservare le due matrici operatore che vengono applicate ad ogni
pixel dell’immagine.
L’interpolazione tra i due valori risultanti si ottiene applicando il teorema di Pitagora.
Si potrebbe calcolare facilmente anche la direzione dell’incremento ma ai fini del progetto interessa solo
l’intensità dell’incremento. 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
L’algoritmo CANNY si divide in due fasi. La prima consiste nell’applicazione 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 nell’immagine. Essa consiste nell’applicare un operatore matriciale, di dimensione
prefissata all’immagine, 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 sull’intorno
del pixel in analisi facendo “sfocare” l’immagine eliminando i singoli pixel di rumore. L’algoritmo 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 sull’asse delle
x,prendendo per zero il punto occupato dal pixel in analisi, e in seguito sull’asse 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 dell’immagine 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 dell’immagine. 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 dell’algoritmo 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
L’algoritmo è 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. L’algoritmo funziona nel
seguente modo:
Si analizzano i pixel dell’immagine 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 l’analisi 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à l’immagine 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
Quest’algoritmo è 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 dell’immagine trovato attraverso
un algoritmo SOBEL ad alta sogliatura(solo i bordi molto marcati).Successivamente viene applicato un
algoritmo CANNY all’immagine 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
all’immagine risultato Finale(che contiene una copia dell’immagine ottenuta dal SOBEL). Se si incontrano
bivi nel CANNY (linee intrecciate) viene sdoppiata l’analisi 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
All’immagine originale viene applicato dapprima il filtro SOBEL, successivamente il filtro CANNY. Le due
immagini risultanti vengono usate dall’algoritmo 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 l’ultimo algoritmo di eliminazione dei bordi troppo piccoli.
Due simpatiche mucche che pascolavano tranquille prima che il nostro algoritmo le disturbasse
9. Applicando l’unione dei bordi si ottiene il seguente output
Si nota che l’immagine è molto migliore di quella ottenuta sia dall’algoritmo Canny che dall’algoritmo 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 l’ultimo 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à
dell’immagine. Per ovviare a tale problema è stata aumentata la sensibilità dell’algoritmo Sobel.
Prendendo un’immagine in bianco e nero con qualità maggiore si possono lasciare i valori di sensibilità
dell’algoritmo Sobel usati per l’immagine a colori.
Nella pagina seguente riportiamo immagini di altissima qualità per poter apprezzare al meglio il progetto
svolto.