Plate Locator Riconoscimento Automatico di Targhe



Documenti analoghi
Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Tutorial di HTML basato su HTML 4.0 e CSS 2

Convertitori numerici in Excel

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

Compilatore risorse display grafico LCD serie IEC-line

RICONOSCIMENTO DI TARGHE AUTOMOBILISTICHE

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Istruzioni per l uso dei programmi MomCad, TraveCon, TraveFon

Funzioni in C. Violetta Lonati

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Algoritmi e diagrammi di flusso

Le immagini digitali. Le immagini digitali. Caterina Balletti. Caterina Balletti. Immagini grafiche. Trattamento di immagini digitali.

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Guida all uso di Java Diagrammi ER

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

L amministratore di dominio

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

4. Operazioni elementari per righe e colonne

EXCEL FUNZIONI PRINCIPALI

Strumenti informatici Realizzare grafici e tabelle con Excel e SPSS

CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

MS Word per la TESI. Barra degli strumenti. Rientri. Formattare un paragrafo. Cos è? Barra degli strumenti

ITCG Cattaneo via Matilde di canossa n.3 - Castelnovo ne' Monti (RE) SEZIONE I.T.I. - Corso di Fisica - prof. Massimo Manvilli

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

[Dimensionare la pagina-creare le tabelle-formattare le tabelle-formattare la pagina

8.9 CREARE UNA TABELLA PIVOT

FUNZIONI DI IMPAGINAZIONE DI WORD

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Il programma CONFELMOD CAD creazione e modifica

Quinta lezione: Stampare e salvare una mappa

Analisi e diagramma di Pareto

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Moduli (schede compilabili) in Word Esempio: scheda di alimentazione per un degente

4 3 4 = 4 x x x 10 0 aaa

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Capitolo TOTALI PARZIALI E COMPLESSIVI Aprire la cartella di lavoro Lezione2 e inserire la tabella n 2 nel Foglio1 che chiameremo Totali.

Prova di Laboratorio di Programmazione

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Dimensione di uno Spazio vettoriale

Database 1 biblioteca universitaria. Testo del quesito

S-TRAINER v.1.00 Esempio d uso

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

In caso un ordine sia già stato importato, sarà visualizzato in grigio chiaro, e non sarà selezionato in automatico per l importazione.

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Foveonizzazione. E' possibile scaricare DCRaw per piattaforme Windows e MacOS da questo sito:

Soluzione dell esercizio del 2 Febbraio 2004

MODULO 5 ACCESS Basi di dati. Lezione 4

Formattazione. ü Introduzione

( x) ( x) 0. Equazioni irrazionali

Procedura SMS. Manuale Utente

MODELLO UNICO DI DOMANDA

Le Mappe di Karnaugh.

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Prenota On-line - Manuale Utente

Guida Software GestioneSpiaggia.it

Esercizi Capitolo 6 - Alberi binari di ricerca

MANUALE ESSE3 Gestione Registro delle lezioni

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Per effettuare la stampa di una cartella di lavoro si accede al comando. Stampa dal menu File o si utilizza il pulsante omonimo sulla barra

Tabelle 3.4. Unità didattica. Copyright 2009 Apogeo. Obiettivi. Prerequisiti

Manuale Utente Amministrazione Trasparente GA

3. Confronto tra due sequenze

Sistema Informativo di Teleraccolta EMITTENTI

7. Layer e proprietà degli oggetti

Rappresentazione delle informazioni

Leggere un messaggio. Copyright 2009 Apogeo

Costruzione del layout in gino cms

Appunti sull utilizzo del software gvsig, a cura dell ing. Ernesto Sferlazza

Alcuni consigli per un uso di base delle serie di dati automatiche in Microsoft Excel

Algoritmi e strutture dati. Codici di Huffman

1. PRIME PROPRIETÀ 2

FONDAMENTI DI INFORMATICA. 3 Elaborazione testi

Gestione Risorse Umane Web

Manuale Utente. Versione 3.0. Giugno

INTERPUMP GROUP SPA-VIA E. FERMI S.ILARIO (RE) http: //

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

Requisiti dei file.pdf dei libri

Mac Application Manager 1.3 (SOLO PER TIGER)

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

LEZIONE 31. B i : R n R. R m,n, x = (x 1,..., x n ). Allora sappiamo che è definita. j=1. a i,j x j.

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Figura 1 Le Icone dei file di Excel con e senza macro.

Manuale Utente Albo Pretorio GA

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

FIRESHOP.NET. Gestione del taglia e colore.

MANUALE EDICOLA 04.05

Guida Compilazione Piani di Studio on-line

Punto Print Il programma per stampare. Documentazione Tecnica

9 Word terza lezione 1

Transcript:

Progetto per Laboratorio di Informatica 3 - Rimotti Daniele, Santinelli Gabriele Plate Locator Riconoscimento Automatico di Targhe Il programma plate_locator.m prende come input: l immagine della targa binarizzata un valore binario (1: stampe attivate; 0: stampe disattivate) un messaggio di errore. Dopo aver letto e convertito l immagine dalla scala RGB alla scala di livelli di grigi viene chiesto all utente di inserire la distanza dell auto e, a seconda della scelta, vengono impostate le variabili utilizzate successivamente dal programma. L algoritmo si divide essenzialmente in 5 passi. 1. trovare tutte le variazioni di colore Consiste nel trovare tutte le variazioni di colore da nero al bianco e dal bianco al nero. Queste vengono salvate nella matrice near_positions che contiene per ogni riga le posizioni di ogni variazione trovata, mentre l array near_counter contiene il numero di variazioni per ogni riga dell immagine. Per visualizzare il risultato sono stati colorati di rosso i pixel corrispondenti a ogni variazione, ecco un esempio del risultato ottenuto dopo il primo passo.

2. trovare variazioni vicine Il secondo passo ha il compito di tenere, tra tutte le variazioni trovate nel passo precedente, solo quelle la cui distanza dalla variazione successiva sia compresa tra min_var e max_var (rappresentano la larghezza minima e massima del tratto del carattere, il valore di queste 2 variabili cambia a seconda della distanza dell auto). Delle due variazioni vicine viene mantenuta solo la prima. Si iniziano così ad eliminare molte variazioni che sicuramente non hanno niente a che vedere con la targa. Anche in questo caso le variazioni vicine vengono salvate nella matrice near_var_positions, mentre l array near_var_counter contiene il numero di variazioni vicine per ogni riga. Come si può notare, questa seconda fase ha eliminato tutte quelle variazioni troppo distanti tra loro. Questo si può facilmente notare nello stemma rotondo al centro dell immagine: tutte le variazioni centrali sono state eliminate, perchè la loro distanza è eccessiva; sono invece rimaste le variazioni agli estremi superiore e inferiore, perchè lo spessore del tratto bianco è molto simile a quello di un carattere della targa.

3. conservare righe con almeno min_hotspots "variazioni vicine" Nel terzo passo per ogni riga dell immagine ottenuta al passo precedente, vengono conservate le righe contenenti almeno min_hotspots variazioni vicine e dove almeno due variazioni non sono più distanti di max_hotspots. Questo ha lo scopo di eliminare sia le variazioni isolate, sia quelle il cui numero nella riga esaminata è esiguo (si suppone che in una targa ci siano molte variazioni vicine). Come nel passo precedente le due variabili (min_hotspots e max_hotspots) vengono impostate a valori diversi a seconda della scelta iniziale dell utente sulla distanza dell auto. Le posizioni delle variazioni rimaste, chiamate hotspots, vengono salvate nella matrice hotspots_positions, mentre l array hotspots_counter contiene il numero di hotspots per ogni riga. Si può notare come, dopo il terzo passo, siano rimasti in evidenza quasi esclusivamente gli hotspots della targa. I restanti hotspots individuati sono facilmente distinguibili da quelli della targa (ce ne sono pochi per ogni riga e la loro estensione in verticale è molto piccola) e nella fase successiva non verranno presi in considerazione.

4. trovare corrispondenze tra le righe Il quarto passo consiste nel trovare le corrispondenze tra le righe. Per ogni riga i e per ogni variazione j si controlla se nelle rows righe successive e precedenti siano presenti altre variazioni (le variazioni non devono distare più di un pixel dalla riga i). In caso affermativo si salva nella nuova matrice hotspots_positions2 l hotspots di cui si è verificata una corrispondenza nelle righe adiacenti, altrimenti altrimenti non viene salvato. Come sempre viene anche creato un array hotspots_counter2 contenente il numero di hotspots per ogni riga. La seconda figura mostra solamente gli hotspots rimasti dopo la quarta fase. Come si può notare, sono rimasti solamente gli hotspots della targa e quelli del logo FIAT, facilmente distinguibili.

5. salvare su files le targhe individuate La funzione is_plate() analizzata in seguito effettua un controllo su una singola riga (quindi muovendosi orizzontalmente), per vedere se queste potrebbero far parte di una targa. Ma questa informazione non basta: è necessario effettuare un controllo anche in verticale, muovendosi sulle righe. Una targa infatti è caratterizzata da un elevato numero di hotspots nella stessa riga, ma anche le righe successive dovranno mantenere questa particolarità. Inizialmente viene quindi creato l array binario plate_rows che segnala quali righe sono state riconosciute come presunte targhe dalla funzione is_plate(). In seguito, per ogni riga riconosciuta come presunta targa, si controlla che questa non sia isolata, ovvero che nelle successive quasi_plate righe ci sia almeno un altra riga riconosciuta come presunta targa. Qualora questa condizione si sia verificata, e nelle successive quasi_plate righe non si siano trovate altre righe riconosciute come targhe, allora potremmo trovarci di fronte a una targa. Le informazioni interessanti vengono salvate nella lista di matrici plate_info. Ogni elemento della lista corrisponde a una targa individuata: per ogni targa viene memorizzata una matrice in cui ogni riga corrisponde alle righe delle targhe riconosciute come presunte targhe dalla funzione is_plate(), e per ognuna di queste la prima cella della matrice contiene il numero di riga, la seconda cella contiene la posizione del primo hotspot di quella riga, la terza cella contiene la distanza tra il primo e l ultimo hotspot (la larghezza della targa in quella particolare riga). A questo punto il programma si troverà ad avere diverse targhe memorizzate nella lista plate_info(). Quelle composte da troppe poche righe verranno eliminate (è improbabile che si tratti di una targa), per le restanti si stabilisce la lunghezza della targa (lunghezza massima tra le lunghezze delle righe che compongono la targa, la cui dimensione si trova nella terza cella delle matrici presenti in plate_info). Se la lunghezza della targa è compresa tra min_plate_width e max_plate_width (che cambiano a seconda della distanza dell auto), allora quella che stiamo considerando è veramente una targa. Viene quindi calcolata l altezza della targa (come distanza tra la prima e l ultima riga che la compongono), l estremo sinistro (come valore minimo tra i primi hotspots della targa) e l estremo superiore (il primo hotspot della prima riga della targa). A questo punto abbiamo le dimensioni del rettangolo della targa individuato mediante gli hotspots, ovviamente questo rettangolo con grande probabilità non è sufficiente a contenere tutta la targa senza tagliarla, è quindi necessario aumentarne le sue dimensioni aggiungendo una quantità pari a due volte offset_x in orizzontale e pari a due volte offset_y in verticale (questa quantità cambia nel caso in cui il rettangolo esca dalle dimensioni dell immagine). Le dimensioni della targa individuata e la matrice contenente la regione stessa della targa vengono quindi ritornate all utente.

Funzione is_plate() Questa funzione prende come argomento: la riga su cui agire la matrice degli hotspots hotspots_positions2 l array contatore hotspots_counter2 La funzione controlla se nella riga corrente c è un numero sufficiente di hotspots (la soglia è definita dalla variabile min_var). In caso affermativo per ogni hotspot della riga controlla se il successivo hotspot dista più di check_width dal precedente. check_width è intesa come la distanza massima tra due caratteri alfanumerici, quando si supera questo valore è probabile che si sia usciti da una targa. Nel caso in cui si siano trovati alcuni hotspots a una distanza minore di check_width, allora si controlla che la distanza tra il primo e l ultmo hotspots (la lunghezza della targa) sia maggiore di min_plate_width (variabile già vista al passo 5). A questo punto possiamo conludere che la riga presa in considerazione presenta delle caratteristiche simili a quelle di una targa. Questa risposta viene ritornata sotto forma di variabile binaria (is), assieme alla localizzazione del primo hotspot della riga (xmin) e alla distanza tra il primo hotspot e l ultimo (plate_dim).