PLATES RECOGNITION PLATES RECOGNITION Part IIPart II
Segmentazione targa eRiconoscimento cifre tramite SIFT
Docente: Fiora PirriCorso: Visione e Percezione
Studenti: Alessio Borraccino Antonio Andriella
Anno Accademico 2006/2007
Obiettivo: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 TargaSegmentazione TargaIl metodo di segmentazione è il seguente:
1.Binarizzazione targa originale2.Filtraggio del rumore (righe nere di sfondo e ombreggiature)3.Allontanamento delle cifre4.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 CifreRiconoscimento 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:1. Viene effettuato il matching tra il primo carattere della
targa e tutti quelli del database, sia in un verso che in un altro.
2. Il matching migliore (maggior numero di keypoints corrispondenti) equivarrà quindi al carattere cercato.
GUIGUILa 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
GUIGUI
RisultatiRisultati 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:
1. 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.
2. 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.
3. 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.