# Visione artificiale

La visione artificiale (nota anche come computer vision) è l'insieme dei processi che mirano a creare un modello approssimato del mondo reale (3D) partendo da immagini bidimensionali (2D). Lo scopo principale della visione artificiale è quello di riprodurre la vista umana. Vedere è inteso non solo come l'acquisizione di una fotografia bidimensionale di un'area ma soprattutto come l'interpretazione del contenuto di quell'area. L'informazione è intesa in questo caso come qualcosa che implica una decisione automatica.
Un sistema di visione artificiale è costituito dall'integrazione di componenti ottiche, elettroniche e meccaniche che permettono di acquisire, registrare ed elaborare immagini sia nello spettro della luce visibile che al di fuori di essa (infrarosso, ultravioletto, raggi X, ecc.). Il risultato dell'elaborazione è il riconoscimento di determinate caratteristiche dell'immagine per varie finalità di controllo, classificazione, selezione, ecc.

## Sistema di visione

Un sistema di visione è costituito da diverse componenti:
* telecamere e ottiche
* sistema di illuminazione
* l'oggetto da esaminare
* il sistema di acquisizione e di elaborazione dell'immagine
* le interfacce uomo macchina
* le interfacce con l'ambiente esterno
Le parti da ispezionare vengono posizionate - spesso attraverso sistemi di movimentazione automatica - di fronte a una o più telecamere ed illuminati in modo appropriato, in modo cioè da evidenziare il più possibile i difetti da individuare. Il sistema ottico forma un'immagine sul sensore della telecamera che produce un segnale elettrico in uscita. Questo segnale verrà digitalizzato e memorizzato.
L'immagine, catturata e resa in questo modo "comprensibile" da un calcolatore, potrà quindi essere elaborata con un apposito software che comprende particolari algoritmi di calcolo ed analisi, in grado di individuare le caratteristiche dell'immagine e amplificarne alcuni aspetti - ad esempio contorni, spigoli, forme, strutture - allo scopo di eseguire i controlli e le verifiche per i quali il sistema è stato concepito.
Sulla base dei risultati dell'elaborazione il sistema prenderà decisioni in merito alla destinazione dell'oggetto, ad esempio smistarlo fra i "buoni" o scartarlo e fornirà le informazioni opportune al resto del sistema produttivo.

## Compiti tipici

Un problema classico nella visione artificiale è quello di determinare se l'immagine contiene o no determinati oggetti (Object recognition) o attività. Il problema può essere risolto efficacemente e senza difficoltà per oggetti specifici in situazioni specifiche per esempio il riconoscimento di specifici oggetti geometrici come poliedri, riconoscimento di volti o caratteri scritti a mano. Le cose si complicano nel caso di oggetti arbitrari in situazioni arbitrarie.
Nella letteratura troviamo differenti varietà del problema:
* Recognition (riconoscimento): uno o più oggetti prespecificati o memorizzati possono essere ricondotti a classi generiche usualmente insieme alla loro posizione 2D o 3D nella scena.
* Identification (identificazione): viene individuata un'istanza specifica di una classe. Es. Identificazione di un volto, impronta digitale o veicolo specifico.
* Detection (rilevamento): l'immagine è scandita fino all'individuazione di una condizione specifica. Es. Individuazione di possibili cellule anormali o tessuti nelle immagini mediche
Altro compito tipico è la ricostruzione dello scenario: dati 2 o più immagini 2D si tenta di ricostruire un modello 3D dello scenario. Nel caso più semplice si parla di un insieme di singoli punti in uno spazio 3D o intere superfici. Generalmente è importante trovare la matrice fondamentale che rappresenta i punti comuni provenienti da immagini differenti.

## Applicazioni in campo industriale

Grazie alle funzionalità e alla elevata potenza di calcolo i sistemi di visione possono trovare campi di applicazione virtualmente illimitati.
Fra le applicazioni in campo industriale figurano:
* Riconoscimento difetti e rispetto delle tolleranze
* Orientamento, posizionamento e guida robot
* Misure non a contatto
* Verifiche su nastri in continuo (Web Inspection)
* Classificazione e scelta
* Lettura di caratteri e codici

### Riconoscimento difetti e rispetto delle tolleranze

Si tratta di una delle applicazioni più diffuse, in quanto nessuna produzione industriale può dirsi esente da difetti e gran parte dei difetti è riscontrabile visivamente. Spesso l'ispezione della produzione è condotta da operatori specializzati, con elevati costi per la movimentazione dei pezzi e di risorse umane.
L'applicazione di un sistema di controllo basato sulla visione artificiale presenta numerosi vantaggi:
* Riduzione costi legati alla manodopera
* Controllo della produzione al 100%
* Controllo in base a criteri oggettivi e ripetibili
I principali controlli di qualità sono riconducibili a molte delle tipiche funzionalità della visione artificiale: controlli superficiali, controlli di presenza/assenza parti, conteggi, verifiche di colore, ecc.

### Orientamento, posizionamento e guida robot

Una parte significativa dell'intelligenza artificiale si occupa di gestire sistemi interfacciati a robot o macchine che si muovono nello spazio o compiono movimenti. Questa tipologia di processo implica spesso l'acquisizione di informazioni fornite da un sistema di visione artificiale che occupa il ruolo di sensore visivo.
Esistono sistemi in grado di dirigere manipolatori, robot antropomorfi o carrelli in ambienti industriali non noti a priori. Ad esempio robot di carico e scarico che devono individuare la posizione esatta di oggetti diversi e posizionarli su pallet o in contenitori o ad un sistema di movimentazione intelligente, in grado di muoversi in uno stabilimento dove circolano persone, altri mezzi di movimentazione e spesso le aree sono occupate da merci.

### Misure non a contatto

Si distinguono in genere misure ad una o due dimensioni: diametri, lunghezze, altezze eccentricità, linearità, misure a tre dimensioni, calcoli di volume (attraverso l'analisi di immagini acquisite da più angolazioni). L'utilizzo del SdV risulta particolarmente indicato per misurare oggetti fragili, difficili da raggiungere, contenuti in altri oggetti, a temperature elevate: ad esempio colate di acciaio fuso in laminatoi, ecc. Un vantaggio della visione artificiale consiste anche nella possibilità di effettuare misure non convenzionali e superiori a quelle fatte con i sistemi tradizionali, ad esempio misurando aree di forme complesse.

### Lettura in continuo (web inspection)

Consiste nella rilevazione di difetti o letture di caratteri su nastri o lastre poste in scorrimento veloce. Questa analisi viene fatta tipicamente con telecamere lineari. Esempi di questa applicazione sono la verifica della correttezza della stampa, l'assenza di difetti su laminati, su tessuti, ecc.

### Classificazione e scelta

Si tratta di una delle applicazioni più complesse in quanto spesso i meccanismi di scelta non sono facilmente codificabili. Un tipico settore è quello della scelta delle piastrelle di ceramica o di marmo o di tavole di legno.

### Lettura di caratteri e codici

Si tratta di funzionalità molto diffuse in settori come l'alimentare o il farmaceutico per eseguire tutta una serie di controlli sui prodotti in uscita come ad esempio la data di scadenza dei prodotti, i lotti di produzione, la correttezza dei fogli di istruzione allegati, ecc.

## Applicazioni in altri campi

* Controllo veicoli autonomi
* Individuazione di eventi (video sorveglianza)
* Organizzazione di informazioni (indicizzazione di database di immagini e sequenze di immagini)
* Modellazione di oggetti o ambienti (ispezioni industriali, analisi di immagini in ambiente medico e modellazione topografica)
* Interazione (input in un dispositivo per l'interazione tra l'uomo e il computer)
* Studi interdisciplinari con la neurobiologia
In fisica, una branca significativa della visione artificiale è utilizzata per comprendere i meccanismi in cui le radiazioni elettromagnetiche, tipicamente nel campo degli infrarossi, sono riflesse dalle superfici.
Ancora un altro ambiente di applicazione è l'elaborazione dei segnali. Infatti molte tecniche utilizzate per elaborare segnali ad una variabile possono essere estesi a segnali a 2 variabili in maniera naturale. Tuttavia non tutti i metodi utilizzati per le immagini possono essere riutilizzati su segnali a singola variabile.

### Controllo veicoli autonomi

Una nuova area di applicazioni emergente è quella dei veicoli autonomi come sommergibili, veicoli terrestri su ruote o cingolati o aerei. Un sistema di visione artificiale può sia supportare un pilota di questi veicoli in varie situazioni, come può addirittura (nel caso di veicoli fully-autonomous) occuparsi dell'intera navigazione. In questo caso è importante saper riconoscere gli ostacoli e riuscire a produrre una mappa della zona circostante. Esempi in questa area sono warning-system nelle automobili, sistemi per l'atterraggio automatico degli aerei o sistemi per la guida automatica di autovetture. Quest'ultima tecnologia anche se studiata e prodotta non ha ancora raggiunto i costi sufficienti per essere lanciata sul mercato.
Le applicazioni militari sono probabilmente una delle più grandi aree che sfrutta i benefici della visione artificiale anche se solo una piccola parte del lavoro svolto in questo ambiente viene reso pubblico. Ovvi esempi possono essere il sistema di guida e puntamento dei missili.

### Ambito medico

Una delle maggiori e promettenti aree è quella medica. Quest'area è caratterizzata dall'estrazione di informazioni dall'immagine con l'intento di effettuare una diagnosi di un paziente. Tipicamente l'immagine è acquisita attraverso microscopia, raggi X, angiografia e tomografia. Esempi di informazioni che possono essere dedotte dalle immagini sono la presenza di tumori, arteriosclerosi o altre disfunzioni maligne.

### Neurobiologia

Un altro importante ruolo è la neurobiologia, in specifico lo studio del sistema visivo. In biologia la percezione visiva dell'uomo e degli animali viene studiata attraverso sistemi che operano in termini di processi psicologici. La visione artificiale dall'altra parte studia e descrive un sistema visivo artificiale implementato in software o hardware. La prima affronta il problema dall'esterno la seconda dall'interno. Lo scambio interdisciplinare tra lo studio biologico e la computer vision ha dato importanti risultati da entrambe le parti. Nel corso dell'ultimo secolo c'è stato un intenso studio degli occhi, dei neuroni e della struttura del cervello per comprendere come viene processato dall'organismo umano e animale il segnale visivo. Qua le due discipline si sono incontrate in quanto anche la visione artificiale tenta di simulare come realmente si comporta l'apparato visivo biologico anche se ad un differente livello di complessità. Da qui la motivazione per cui alcuni metodi utilizzati nella visione artificiale hanno avuto riscontro anche in ambito biologico.

## I benefici della tecnologia
### Costanza, affidabilità, oggettività dei controlli

Un operatore umano che lavora su un nastro trasportatore per il controllo difettosità dei pezzi non può eseguire un controllo al 100% su tutti i pezzi e mantenere nel tempo la costanza dei criteri di valutazione, mentre un sistema di visione può operare per intere giornate senza alcuna variazione delle prestazioni. Anche la omogeneità del giudizio fra operatori diversi costituisce un elemento che porta a preferire un controllo automatizzato: è virtualmente impossibile ottenere da operatori umani la costanza ed omogeneità dei criteri di valutazione.

### Operabilità in ambienti ostili

In condizioni ambientali limite come ambienti molto rumorosi, esposti ad agenti chimici, temperature molto elevate o molto fredde, aree nel raggio di azione di macchine o sistemi di movimentazione, spazi ristretti, un sistema di visione può operare in tranquillità senza mettere a rischio la vita dei lavoratori o sottoporli a stress fisici inutili.

### Elevate velocità di controllo

Un Sistema di Visione è in grado di svolgere operazioni di verifica in frazioni di secondo anche su oggetti in movimento molto veloce, come su nastri trasportatori.
La velocità di controllo genera due importanti opportunità fra loro correlate: è possibile ripensare il sistema di controllo qualità passando da verifiche a campione a controlli totali (100% dei prodotti) con tutti i vantaggi che ne conseguono;
è possibile ridisegnare i processi e le linee di produzione, introducendo sistemi di movimentazione automatici ed evitando i polmoni intermedi dedicati precedentemente ai controlli qualità e al trasferimento dei pezzi da una fase all'altra.

### Piccole dimensioni degli oggetti da controllare

La dimensione degli oggetti è una variabile che spesso limita la verifica e il controllo umano nel processo produttivo. I sistemi di visione consentono di analizzare particolari non visibili o difficilmente identificabili dall'uomo grazie a ottiche e software specifici.

### Elevata precisione del controllo

Anche in presenza di oggetti caratterizzati da tolleranze molto ristrette, i Sistemi di Visione consentono di raggiungere una precisione ed un'accuratezza del controllo di gran lunga superiore a quella umana. Questo permette di ottenere prodotti sempre più conformi alle esigenze del mercato.

### Generazione di dati sul processo

Oltre ad assolvere ai compiti di controllo – ad esempio individuando e scartando pezzi difettosi – i nostri sistemi di visione sono in grado di generare e memorizzare dati sul processo in tempo reale, evidenziando scostamenti dai parametri ottimali.
Questo consente di individuare eventuali segnali o trend di peggioramento del processo (derive), aiutando così i gestori della linea di produzione ad intraprendere le azioni correttive prima che si esca dalle soglie di tolleranza previste.

## Nuove tendenze

Dopo l'anno 2000 con l'aumentare dell'integrazione dell'hardware e della conseguente riduzione degli spazi, vediamo affermarsi la categoria di sistemi di visione compatti chiamati smart-camera. Fondamentalmente non c'è nessuna variazione qualitativa rispetto ai sistemi basati su PC, ma solo un aumento di praticità. Dopo l'anno 2005 compaiono i primi sistemi integrati di visione che sfruttano a pieno la sempre maggiore potenza dei personal computer utilizzando software ad alto livello che usa logiche ibride. Questi sistemi di visione hanno, diversamente dai sistemi classici, un alto livello di adattabilità agli eventi esterni che li rendono decisamente più affidabili e versatili. Questi sistemi sono decisamente più semplici da usare perché risolvono automaticamente alcune problematiche tipiche della visione artificiale, lasciando all'operatore l'incombenza di configurare solo gli aspetti funzionali del sistema.

## Storia

Sebbene esistono precedenti studi e lavori, è non prima del 1970 che gli studi nel settore si sono potuti specializzare, grazie all'aumento delle prestazioni dei computer che hanno potuto elaborare grandi quantità di informazioni come le immagini. Dobbiamo aspettare gli anni 1980 per vedere le prime vere e proprie applicazioni pratiche di questa disciplina, caratterizzate spesso da uno scopo puramente dimostrativo. Negli anni 1990 vediamo comparire i primi frame-grabber standard da inserire su PC e i sistemi di visione acquistano maggiore funzionalità e robustezza abbandonando l'aspetto tipicamente sperimentale del decennio precedente, soprattutto in campo industriale si notano notevoli alti e bassi di questa disciplina caratterizzati da alcune soluzioni funzionali costellati di parecchi insuccessi. Nel 2000-2008 il campo della visione artificiale può essere descritto come vario ed immaturo. La causa va probabilmente ricercata nella sua evoluzione, a cui hanno contribuito diverse discipline scientifiche senza però convenire su una formulazione standard del "problema della visione artificiale". Inoltre, con conseguenze ancor più evidenti, non esiste una formulazione standard di come i problemi di visione artificiale vadano risolti. Esiste invece un'abbondanza di metodi atta a risolvere compiti ben definiti della visione artificiale, dove le procedure sono spesso dipendenti dal contesto e raramente possono essere estese ad uno spettro più ampio di applicazioni. Molti di questi metodi sono ancora a livello di ricerca base, ma molti altri ancora hanno trovato spazio nella produzione commerciale dove fanno parte di grandi sistemi che risolvono problemi complessi. Nelle applicazioni più pratiche i computer sono pre-addestrati per risolvere un particolare compito, tuttavia attualmente stanno diventando sempre più comuni i metodi basati sull'apprendimento. Dal 2009 vediamo affermarsi l'uso delle telecamere con comunicazione digitale, soprattutto lo standard GIGEtherneth che unisce fattori come una discreta velocità, l'economicità, la standardizzazione (usa normali porte GigaBit Ethernet da PC), ed una discreta robustezza in campo industriale, di conseguenza i frame grabbers analogici tendono a uscire di scena. Dal punto di vista di generazione del software assistiamo ad una particolare concentrazione nella soluzione di problematiche 3D. In generale l'affidabilità delle soluzioni migliora.

### Reti neurali

Malgrado la sperimentazione con reti neurali nella visione artificiale e qualche applicazione sia antecedente al 1996, è proprio a partire da quest'anno che soprattutto in Europa ed in Giappone si iniziano a vedere parecchie applicazioni di visione che risolvono brillantemente applicazioni di tipo industriali. L'uso di queste logiche rispetto agli algoritmi di tipo classico ha portato sicuramente a risolvere problemi più complessi in modo soddisfacente, spesso però la complicazione dell'apprendimento e i risultati non sempre omogenei hanno ridotto i benefici portati da questa tipologia di logiche. Infatti i modelli prodotti dalle reti neurali, anche se molto efficienti, non sono spiegabili in linguaggio simbolico umano: i risultati vanno accettati "così come sono", da cui anche la definizione inglese delle reti neurali come black box ("scatola nera"). Come per qualsiasi algoritmo di modellazione, anche le reti neurali sono efficienti solo se le variabili predittive sono scelte con cura.

### Logiche ibride

Logiche ibride (2001) è la terminologia generica usata per classificare una serie di algoritmi composti da una miscellanea di logiche. Non si tratta di un termine propriamente "esatto" e spesso varie case produttrici di sistemi di visione e centri di ricerca danno nomi diversi a questo tipo di tecnologia per cui è difficile identificarlo. È più interessante la filosofia che si nasconde dietro questo termine: visto i limiti delle logiche di tipo classico (matematico e statistico) e di quelle neurali, alcune aziende per risolvere le varie problematiche di visione artificiale hanno "mescolato" vari tipi di logiche per risolvere con un alto indice di affidabilità delle problematiche reali. I sistemi di visione che utilizzano diversi algoritmi di questo tipo si chiamano anche sistemi integrati di visione.