PLATES RECOGNITION Part II Segmentazione targa e Riconoscimento cifre tramite SIFT Docente: Fiora Pirri Corso: Visione e Percezione Studenti: Alessio Borraccino Antonio Andriella Anno Accademico 2006/2007
Obiettivo: Data una immagine di una targa automobilistica, l’obiettivo del progetto è quello di riconoscerne i caratteri. Il progetto quindi si divide in 2 parti: 1) Segmentazione della targa, isolandone le singole cifre; 2) Riconoscimento delle cifre confrontandole con un database di cifre, tramite l’algoritmo delle SIFT.
Segmentazione Targa Il metodo di segmentazione è il seguente: Binarizzazione targa originale Filtraggio del rumore (righe nere di sfondo e ombreggiature) Allontanamento delle cifre Clusterizzazione mediante Mean Shift a Kernel Uniforme Dopo la clusterizzazione, vengon presi solo i cluster che hanno le dimensioni tipiche di un carattere della targa, escludendo così altri simboli eventuali o macchie nere rimaste comunque durante il filtraggio.
Riconoscimento Cifre Dato un database che contiene tutti i caratteri delle targhe con i relativi keypoints, e i caratteri risultato della segmentazione della targa in esame, il metodo di riconoscimento funziona nel seguente modo: Viene effettuato il matching tra il primo carattere della targa e tutti quelli del database, sia in un verso che in un altro. Il matching migliore (maggior numero di keypoints corrispondenti) equivarrà quindi al carattere cercato.
GUI La GUI mostra tutti i passaggi in tempo reale effettuati dal progetto. Inoltre dà la possibilità di mettere in pausa l’avanzamento del progetto, di sceglierne la velocità e di scegliere la targa da un buon campionario di immagini diverse. Anche la GUI è stata implementata tramite MATLAB
GUI
Risultati Il progetto non ha però dei risultati soddisfacenti. Mentre la segmentazione della targa funziona bene anche per targhe ombreggiate o ruotate, il riconoscimento tramite SIFT ha delle limitazioni: Le somiglianze tra i caratteri (per esempio il 6 è uguale al 9 a meno di una rotazione) creano dei problemi perchè le SIFT teoricamente sono invarianti rispetto a rotazione traslazioni e scalature, e non distinguerebbero l’oggetto. Inoltre le SIFT sono invarianti anche per parziale occlusione dell’oggetto, e quindi a livello locale una F può essere considerata una E poichè uguale ma privata di una sua parte. Il modo più efficiente è quindi quello di aumentare il numero di keypoints e avere un database di tutte le cifre con versioni diverse di per ognuna (con rumore diverso). A questo punto però, avendo un database di tanti caratteri con rumore diverso rimane più funzionale usare un OCR implementato con una rete neurale.