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: 1. Binarizzazione targa originale 2. Filtraggio del rumore (righe nere di sfondo e ombreggiature) 3. Allontanamento delle cifre 4. 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: 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. 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: 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.