A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con...

15
A

Transcript of A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con...

Page 1: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

A

Page 2: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...
Page 3: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Gerardo IovaneGiuseppe Lamponi

Luigia Puccio

Metodi matematiciper l’analisi delle immagini

Applicazioni e laboratorio

Page 4: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Copyright © MMXVIAracne editrice int.le S.r.l.

[email protected]

via Quarto Negroni, Ariccia (RM)

()

----

I diritti di traduzione, di memorizzazione elettronica,di riproduzione e di adattamento anche parziale,

con qualsiasi mezzo, sono riservati per tutti i Paesi.

Non sono assolutamente consentite le fotocopiesenza il permesso scritto dell’Editore.

I edizione: settembre

Page 5: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

7

Indice

7 Prefazione 9 Capitolo I

Nozioni Fondamentali di Programmazione in LabVIEW

1.1. L’Ambiente di Sviluppo LabVIEW della National Instruments, 9 – 1.2. Cicli e Strutture in LabVIEW, 15 – 1.3. Polimorfismo ed Ereditarietà, 20 – 1.4. Grafici in LabVIEW, 25

29 Capitolo II

Esempi Introduttivi di Programmazione in LabVIEW

2.1. Classi di Funzioni Trattate 29 – 2.2. Strutture, 29 – 2.3. Stringhe e I/O, 36 – 2.4. Array, 43 – 2.5. Cluster, 52

55 Capitolo III

Esercizi di Imaging in LabVIEW

3.1. Imaging, 55

113 Capitolo IV Image Processing

4.1. Filters, 113 – 4.2. Morphology 117 – 4.3. Analysis, 125 – 4.4. Color Processing, 129 – 4.5. Operators, 141 – 4.6. Frequency Domain, 158

177 Capitolo V

Machine Vision

5.1. Select Region of Interest, 177 – 5.2. Coordinate System, 178 – 5.3. Count & Measure Objects, 181 – 5.4. Measure

5

Page 6: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

6 Indice8 Indice

Intensities, 181 – 5.5. Measure Distances, 183 – 5.6. Searching and Matching, 192 – 5.7. Caliper, 204 – 5.8. Analytic Geometry, 208 – 5.9. Classification, 212 – 5.10. OCR, 220 – 5.11. Instrument Readers, 224 – 5.12. Inspection, 230

231 Testi di riferimento

Prefazione

Il presente testo di esercizi svolti, nasce con l’obiettivo di mettere a disposizione dei discenti che si avvicinano allo studio del LabVIEW uno strumento di aiuto per compiere i primi passi nella programmazione nel linguaggio G, conoscere l’am-biente di sviluppo del LabView e fornire le basi per un eventuale studio più appro-fondito.

Tramite la presentazione di una serie di esercizi graduati in difficoltà, lo stu-dente potrà conoscere l’ambiente LabView di National Instruments, comprendere l’uso degli strumenti che l’ambiente fornisce e acquisire le conoscenze necessarie per costruire i propri strumenti virtuali (VI), in maniera facile e veloce.

In ogni capitolo, tramite gli esercizi proposti, si illustrano i concetti fondamen-tali del LabVIEW e si descrivono le principali funzioni che le librerie compren-dono. Ogni esercizio, oltre ad una spiegazione completa sulla sua risoluzione, offre una descrizione delle funzioni e delle strutture usate in esso.

Gli approfondimenti teorici relativi all’analisi delle immagini possono essere rintracciati nel testo di G.Iovane, Metodi Matematici e Tecnologie Informatiche per l’Analisi delle Immagini in Biometria e Sicurezza, Aracne Editore, pp. 310, 2009. Ulteriori approfondimenti esercitativi e tanto materiale di sviluppo è invece reperibile nella Developer Zone di National Instruments al sito web www.ni.com.

Il libro è rivolto a studenti sia della Laurea Triennale che della Magistrale, ma può essere utilizzato anche in corsi di dottorato o da professionisti che non cono-scono il linguaggio di programmazione ed intendono avere a disposizione una ra-pida guida all’apprendimento.

11

Page 7: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

8 Indice

Intensities, 181 – 5.5. Measure Distances, 183 – 5.6. Searching and Matching, 192 – 5.7. Caliper, 204 – 5.8. Analytic Geometry, 208 – 5.9. Classification, 212 – 5.10. OCR, 220 – 5.11. Instrument Readers, 224 – 5.12. Inspection, 230

231 Testi di riferimento

Prefazione

Il presente testo di esercizi svolti, nasce con l’obiettivo di mettere a disposizione dei discenti che si avvicinano allo studio del LabVIEW uno strumento di aiuto per compiere i primi passi nella programmazione nel linguaggio G, conoscere l’am-biente di sviluppo del LabView e fornire le basi per un eventuale studio più appro-fondito.

Tramite la presentazione di una serie di esercizi graduati in difficoltà, lo stu-dente potrà conoscere l’ambiente LabView di National Instruments, comprendere l’uso degli strumenti che l’ambiente fornisce e acquisire le conoscenze necessarie per costruire i propri strumenti virtuali (VI), in maniera facile e veloce.

In ogni capitolo, tramite gli esercizi proposti, si illustrano i concetti fondamen-tali del LabVIEW e si descrivono le principali funzioni che le librerie compren-dono. Ogni esercizio, oltre ad una spiegazione completa sulla sua risoluzione, offre una descrizione delle funzioni e delle strutture usate in esso.

Gli approfondimenti teorici relativi all’analisi delle immagini possono essere rintracciati nel testo di G.Iovane, Metodi Matematici e Tecnologie Informatiche per l’Analisi delle Immagini in Biometria e Sicurezza, Aracne Editore, pp. 310, 2009. Ulteriori approfondimenti esercitativi e tanto materiale di sviluppo è invece reperibile nella Developer Zone di National Instruments al sito web www.ni.com.

Il libro è rivolto a studenti sia della Laurea Triennale che della Magistrale, ma può essere utilizzato anche in corsi di dottorato o da professionisti che non cono-scono il linguaggio di programmazione ed intendono avere a disposizione una ra-pida guida all’apprendimento.

117

Page 8: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...
Page 9: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Nozioni fondamentali di programmazione

1.1. L’Ambiente di Sviluppo LabVIEW della National Instruments

La prima versione dell’ambiente di sviluppo software LabVIEW acronimo di Laboratory Virtual Instrument Engineering Workbench risale al 1987 e fino ad oggi ha comportato un impegno pari a più di due secoli uomo per il suo sviluppo; tale dato più di altri fornisce la dimensione dello sforzo che la National Instruments ha dedicato a questo prodotto che si è imposto come un vero e proprio standard di riferimento per la gestione e l’elaborazione di segnali provenienti da assegnati di-spositivi di acquisizione dati.

La filosofia che ha ispirato il team che ha studiato e sviluppato LabVIEW si può schematizzare in due linee guide essenziali:

1. Facilità nell’individuazione del flusso dei dati; 2. Facilità nell’individuazione delle strutture che costituiscono il programma.

Per realizzare questi due obiettivi è stato creato il linguaggio G, dove G è l’iniziale di Graphical Language; trattandosi appunto di un linguaggio grafico, il programmatore ha a disposizione un’interfaccia ad alto livello di facile utilizzo. LabVIEW è un linguaggio orientato agli oggetti, visuale e grafico.

Una importante peculiarità di questo linguaggio è dovuta al fatto che LabVIEW traduce in C le istruzioni che l’utente definisce durante la fase di stesura del codice; pertanto, l’utente LabVIEW non opera con un linguaggio interpretato che, in fase di esecuzione, traduce ogni singola istruzione in linguaggio macchina, ma opera come un linguaggio compilato che prevede una fase di compilazione durante la quale si creano i vari oggetti ed una fase di Link che collega fra loro tali oggetti, creando in questo modo il programma eseguibile. Tutte queste operazioni avvengono in modo assolutamente trasparente; pertanto, il programmatore ha la sensazione di operare con un sistema interpretato, con immediata operatività in fase di correlazione del programma e grande facilità nelle operazioni di debug, ma allo stesso tempo ha a disposizione i grandi vantaggi, in termini di velocità di ese-cuzione, che può fornire solo un linguaggio compilato.

in LabVIEW

13

Capitolo I

9

Page 10: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

La possibilità che l’utente ha, mediante LabVIEW ed il computer, di crearsi il proprio strumento di misura o analisi personale ha portato ad un’enorme diffu-sione di questo prodotto; il Lawrence Livermore Laboratory, il Jet Propulsion La-boratory, la NASA, il CERN di Ginevra sono esempi illustri di utilizzatori di que-sto moderno linguaggio di programmazione. Da quanto detto appare chiaro che, un programma scritto in LabVIEW non richiede la stesura di una serie di istruzioni utilizzando un editor, come si è soliti fare se si utilizza un linguaggio di program-mazione tradizionale.

L’interfaccia che consente la stesura del programma è di tipo grafico e fa uso di due piani di lavoro distinti:

1. Il Front Panel (pannello di controllo, vedi Figura 1). 2. Il Block Diagram (diagramma a blocchi, vedi Figura 2).

Figura 1 - Front Panel.

Per poter operare, LabVIEW, richiede un sistema operativo che sia in grado di fornire un’interfaccia grafica molto potente e sofisticata; è questo il motivo per cui, nelle fasi iniziali, LabVIEW è stato sviluppato solamente per il mondo Ma-cintosh, poi con l’avvento di Windows 3.1 e successivamente di Windows 95 è stato possibile fornire LabVIEW anche agli utenti Microsoft. Attualmente lo si trova anche per UNIX e LINUX. Esso oltre ad essere un ambiente di sviluppo grafico, ha la possibilità di integrare altri linguaggi come C, C#, script di Matlab, Mathematica o codice sotto forma di DLL (Data Link Library) o Active X.

14 Metodi matematici per l’analisi delle immagini10 Metodi matematici per l’analisi delle immagini

Page 11: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

La possibilità che l’utente ha, mediante LabVIEW ed il computer, di crearsi il proprio strumento di misura o analisi personale ha portato ad un’enorme diffu-sione di questo prodotto; il Lawrence Livermore Laboratory, il Jet Propulsion La-boratory, la NASA, il CERN di Ginevra sono esempi illustri di utilizzatori di que-sto moderno linguaggio di programmazione. Da quanto detto appare chiaro che, un programma scritto in LabVIEW non richiede la stesura di una serie di istruzioni utilizzando un editor, come si è soliti fare se si utilizza un linguaggio di program-mazione tradizionale.

L’interfaccia che consente la stesura del programma è di tipo grafico e fa uso di due piani di lavoro distinti:

1. Il Front Panel (pannello di controllo, vedi Figura 1). 2. Il Block Diagram (diagramma a blocchi, vedi Figura 2).

Figura 1 - Front Panel.

Per poter operare, LabVIEW, richiede un sistema operativo che sia in grado di fornire un’interfaccia grafica molto potente e sofisticata; è questo il motivo per cui, nelle fasi iniziali, LabVIEW è stato sviluppato solamente per il mondo Ma-cintosh, poi con l’avvento di Windows 3.1 e successivamente di Windows 95 è stato possibile fornire LabVIEW anche agli utenti Microsoft. Attualmente lo si trova anche per UNIX e LINUX. Esso oltre ad essere un ambiente di sviluppo grafico, ha la possibilità di integrare altri linguaggi come C, C#, script di Matlab, Mathematica o codice sotto forma di DLL (Data Link Library) o Active X.

14 Metodi matematici per l’analisi delle immagini

Figura 2 - Block Diagram.

Esaminiamo in dettaglio il significato di ognuno di questi due piani di lavoro.

Il Front Panel è l’interfaccia grafica che permette di definire ed introdurre tutte le grandezze in ingresso, ossia gli input del problema e le grandezze in uscita, vale a dire i valori delle misure, i risultati dei calcoli e delle varie elaborazioni che il programma ha effettuato durante la fase di esecuzione. Esso diverrà alla fine del lavoro l’interfaccia grafica dell’applicazione costruita. Il valore dei parametri in ingresso viene visualizzato in forme differenti, quali caselle numeriche, potenzio-metri a cursore, potenziometri ad ago rotante, ecc.; tutti questi oggetti prendono il nome di controlli. Analogamente i risultati possono essere visualizzati mediante indicatori che, anche in questo caso, assumono aspetti differenti: indicatori ad ago o indicatori digitali per visualizzare il valore assunto dalle variabili intere o reali.

Il Block Diagram è lo strumento grafico che consente di scrivere il codice vero e proprio; esso si presenta sotto una forma che può ricordare a grandi linee lo schema di un circuito elettrico, i vari elementi di questo circuito appaiono sotto forma di icone ed effettuano le varie operazioni richieste dalla logica del pro-gramma. Tali elementi sono collegati tra loro da fili che sono percorsi dal flusso dei dati; i fili hanno colori differenti a seconda del tipo di variabile: essi sono di colore blu se la variabile è un numero intero, sono di colore verde per variabili booleane, di colore rosa per le stringhe ed i cluster, infine sono di colore arancio per numeri reali o complessi; per gli array i fili hanno gli stessi colori precedenti, ma in tal caso essi appaiono più spessi. Si veda la Tabella 1.

I. Nozioni fondamentali di programmazione in LabVIEW 15I. Nozioni fondamentali di programmazione in LabVIEW 11

Page 12: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Tabella 1 - Controlli ed indicatori in LabVIEW.

Controlli Indicatori Tipo di dato Colore

Floating point singola precisione reale Arancio

Floating point doppia precisione reale Arancio

Floating point precisione estesa reale Arancio

Floating point singola precisione complessa Arancio

Floating point doppia precisione complessa Arancio

Floating point precisione estesa complessa Arancio

Interi ad 8 bit con segno Blu

Interi a 16 bit con segno Blu

Interi a 32 bit con segno Blu

Ineri ad 8 bit senza segno Blu

Interi a 16 bit senza segno Blu

Interi a 32 bit senza segno Blu

Tipo enumerativo Blu

Booleano Verde

Stringa Rosa Se le connessioni avvengono in maniera corretta le linee saranno integre al-

trimenti le linee appariranno spezzate (vedi Figura 3).

Figura 3 - Connessione Errata.

Per poter operare è necessario che siano presenti sul pannello frontale la

Tools Palette e la Control Palette, rappresentate entrambe in Figura 4:

16 Metodi matematici per l’analisi delle immagini12 Metodi matematici per l’analisi delle immagini

Page 13: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Tabella 1 - Controlli ed indicatori in LabVIEW.

Controlli Indicatori Tipo di dato Colore

Floating point singola precisione reale Arancio

Floating point doppia precisione reale Arancio

Floating point precisione estesa reale Arancio

Floating point singola precisione complessa Arancio

Floating point doppia precisione complessa Arancio

Floating point precisione estesa complessa Arancio

Interi ad 8 bit con segno Blu

Interi a 16 bit con segno Blu

Interi a 32 bit con segno Blu

Ineri ad 8 bit senza segno Blu

Interi a 16 bit senza segno Blu

Interi a 32 bit senza segno Blu

Tipo enumerativo Blu

Booleano Verde

Stringa Rosa Se le connessioni avvengono in maniera corretta le linee saranno integre al-

trimenti le linee appariranno spezzate (vedi Figura 3).

Figura 3 - Connessione Errata.

Per poter operare è necessario che siano presenti sul pannello frontale la

Tools Palette e la Control Palette, rappresentate entrambe in Figura 4:

16 Metodi matematici per l’analisi delle immagini

Figura 4 - Tools palette e Controls palette.

La Tools Palette permette, nel front panel ad esempio di utilizzare il cursore

testo per nominare le variabili input ed output, il pennello per modificare i colori, la mano posta in alto a sinistra per modificare i valori delle variabili input; inoltre, il block diagram consente, tra le altre cose, di utilizzare il rocchetto, per poter col-legare tra loro i vari oggetti, che costituiscono il programma, mediante dei fili.

La Control palette, invece, permette di inserire oggetti nell’interfaccia gra-fica come ad esempio indicatori ad ago, indicatori digitali e grafici.

Sul block diagram deve essere presente oltre alla Tools Palette anche la Functions Palette, rappresentata in Figura 5, che consente di accedere alle librerie di LabVIEW.

La Functions Palette mette a disposizione del programmatore moltissime funzioni di vario tipo: matematiche, logiche, statistiche, funzioni che consentono l’elaborazione dei risultati, la loro scrittura su file, l’acquisizione di dati, la ge-stione di un colloquio con periferiche di vario tipo, ecc. Tutte queste funzioni (og-getti) si presentano sotto forma di icona; ad ogni icona sono associate due famiglie di connettori: alla prima famiglia si collegano le grandezze in ingresso, alla se-conda quelle in uscita.

Le principali categorie che appaiono nella Functions Palette sono: Structures: contiene tutte le strutture di ciclo, di gestione degli eventi, di

sequenza, di esecuzione e di gestione condizionata; Numeric: contiene tutte le operazioni principali, operazioni trigonometri-

che, logaritmiche e dei numeri complessi; Boolean: contiene tutti gli operatori logici; String: contiene tutte le funzioni per l’utilizzo e la manipolazione delle

stringhe; Array: contiene tutte le funzioni per l’utilizzo e la manipolazione degli

array e delle matrici;

I. Nozioni fondamentali di programmazione in LabVIEW 17I. Nozioni fondamentali di programmazione in LabVIEW 13

Page 14: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Cluster: contiene le funzioni per l’utilizzo dei cluster che rappresentano la generica classe in qualsiasi altro linguaggio object oriented;

Comparison: contiene tutte le funzioni di comparazione; Time & Dialog: contiene le funzioni di timer e quelle dedicate alle finestre

di dialogo; File I/O: contiene le funzioni relative all’apertura, chiusura, lettura e scrit-

tura dei File; NI Measuraments: contiene le funzioni relative all’imaging ed altri stru-

menti di misura.

Figura 5 - Function palette.

Uno strumento molto utile per comprendere l’uso corretto delle funzioni, ca-

pire quali sono gli input richiesti e quali gli output prodotti, è l’Help. La finestra di Help, avviata con Ctrl più H, visualizza la funzione o l’elemento selezionato e mostra tutte le informazioni ad esso riferite. In Figura 6 ne viene mostrato un esempio.

Figura 6 - Context Help.

18 Metodi matematici per l’analisi delle immagini14 Metodi matematici per l’analisi delle immagini

Page 15: A01 · Tramite la presentazione di una serie di esercizi graduati in ... sensazione di operare con un sistema ... script di Matlab, Mathematica o codice sotto ...

Cluster: contiene le funzioni per l’utilizzo dei cluster che rappresentano la generica classe in qualsiasi altro linguaggio object oriented;

Comparison: contiene tutte le funzioni di comparazione; Time & Dialog: contiene le funzioni di timer e quelle dedicate alle finestre

di dialogo; File I/O: contiene le funzioni relative all’apertura, chiusura, lettura e scrit-

tura dei File; NI Measuraments: contiene le funzioni relative all’imaging ed altri stru-

menti di misura.

Figura 5 - Function palette.

Uno strumento molto utile per comprendere l’uso corretto delle funzioni, ca-

pire quali sono gli input richiesti e quali gli output prodotti, è l’Help. La finestra di Help, avviata con Ctrl più H, visualizza la funzione o l’elemento selezionato e mostra tutte le informazioni ad esso riferite. In Figura 6 ne viene mostrato un esempio.

Figura 6 - Context Help.

18 Metodi matematici per l’analisi delle immagini

1.2. Cicli e Strutture in LabVIEW

In questo paragrafo analizzeremo le più importanti strutture supportate dall’ambiente LabVIEW: i Cicli, la struttura Case, la struttura Sequence.

Qualunque linguaggio di programmazione prevede una struttura che con-sente la ripetizione di un set di istruzioni; LabVIEW offre due strutture che con-sentono questo tipo di operazione: While Loop e For Loop; la prima esegue la parte di codice annidata al suo interno fino a che una specifica condizione non è più vera, mentre la seconda la esegue per un numero definito di volte; si veda la Figura 7.

Figura 7 - Il ciclo While Loop e il ciclo For Loop.

La struttura For Loop esegue il codice contenuto all’interno del suo perime-

tro un numero di volte pari al valore assegnato alla costante N. Si procede come segue:

Si trascina la struttura sul block diagram e si dimensiona in modo che possa contenere al suo interno la parte di codice che deve essere eseguita N volte trascinandone lo spigolo in basso a destra.

Si definisce il valore di N collegandolo ad un controllo o ad una costante. Si scrive infine la parte di codice che deve essere eseguita N volte all’interno

dell’area del For Loop. A titolo di esempio costruiamo un semplice programma che effettui il qua-

drato della variabile i, ne visualizzi il risultato ed attenda 2 secondi; tale sequenza di operazioni sia eseguita 9 volte. Questo esempio ci consente di utilizzare una nuova funzione, molto importante nel caso in cui si debba temporizzare una se-quenza di operazioni e cioè la funzione Wait, tale funzione richiede come parame-tro di ingresso il valore del tempo di attesa espresso in millisecondi.

Il block diagram del programma, che richiede solamente la presenza di un indicatore che visualizzi il valore della operazione compiuta all’interno del For Loop, è rappresentato in Figura 8.

I. Nozioni fondamentali di programmazione in LabVIEW 19I. Nozioni fondamentali di programmazione in LabVIEW 15