Funzionalità algoritmiche dei sistemi di visione

L’elaborazione delle immagini

Lo scopo di questa breve sezione introduttiva è tracciare il percorso di elaborazione software che nella maggioranza delle applicazioni viene applicato: dunque non una panoramica esaustiva dello stato dell’arte o di mercato, ma piuttosto una road-map che consenta al lettore di orientarsi in questo ambito, dando risposta alla seguente domanda: “da dove parto e in che direzione devo procedere?”
Lo schema a blocchi seguente può essere illuminante a tal proposito: si tratta dei blocchi di elaborazione fondamentali che, a partire dall’immagine consentono di fornire le informazioni sintetiche necessarie in uscita. Ogni blocco è un mondo a sé, cioè contiene una pletora di singoli algoritmi di calcolo che meriterebbero una trattazione separata. Ma per essa il lettore interessato può trovare una lista molto lunga  di testi ben fatti, semplicemente utilizzando parole chiave quali ‘image processing’, ‘machine vision algorithms’, ‘imaging’.

elaborazione software

Schema a blocchi della catena di elaborazione software

La pre-elaborazione dell’immagine
Le funzioni che appartengono a questa classe di elaborazione hanno come scopo quello di condizionare l’immagine, non diversamente da come si è abituati a fare con i segnali monodimensionali (ad esempio quelli di tensione). Le tipiche operazioni sono quelle di
(i) incremento del rapporto segnale-disturbo, mediante operazioni di filtraggio spaziale,
(ii) compensazione di distorsioni prospettiche e ottiche,
(iii) correzione di effetti di ombra o di disuniformità nei livelli di grigio legati al sistema di illuminazione.
L’esperienza insegna che in un sistema ben progettato questa tipologia di operazioni dovrebbe avere un peso ridotto: ad esempio, la scelta di una lente di buona qualità riduce sensibilmente l’effetto distorsivo, e aumenta la visibilità dei dettagli nell’immagine, e, se ben combinata con la telecamera, evita aliasing, scongiurando la presenza di artefatti nell’immagine, che riducono inevitabilmente l’affidabilità del sistema nel suo complesso.
Nel blocco di pre-elaborazione va ricompresa anche la scelta di elaborare l’immagine per area d’interesse (ROI: Region Of Interest): l’obiettivo è focalizzare la fase computazionale alle sole zone dell’immagine che contengono i dettagli d’interesse (ad esempio fori, bordi, geometrie tipiche del pezzo), eliminando dalla catena i dati che non portano informazione. Questa operazione va sotto il nome di mascheratura d’immagine, e la sua strategicità è confermata dal fatto che tutte le piattaforme di elaborazione d’immagine disponibili sul mercato consentono la definizione di ROI di forma variabile, sia utilizzando forme geometriche (linee, rettangoli, cerchi, corone circolari, …) sia utilizzando linee tracciabili dall’operatore nelle fasi di impostazione del sistema.
Fanno parte di questa categoria anche gli algoritmi che trasformano l’immagine a livelli di grigio in un’immagine nella quale solo le variazioni rapide di luminosità sono evidenziate (edge image): si tratta di tool di calcolo che cercano derivate alte nei livelli di grigio e hanno lo scopo di evidenziare i dettagli dell’immagine in corrispondenza ad esempio ai bordi dell’oggetto rappresentato nell’immagine. Un tipico esempio è presentato in Figura .

pre elaborazione

Esempio di pre processing d’immagine; da sinistra: (a) immagine affetta da distorsione ottica e prospettica; (b) immagine anti-distorta; (c) edge image applicata sulla porzione centrale dell’immagine (b).

 

La segmentazione dell’immagine
La segmentazione è una fase cruciale della catena di elaborazione e consiste nel determinare quali siano le aree di background (pixel che non contengono informazione utile) e quelle di foreground (pixel che contengono informazione utile) dell’immagine.
I criteri di assegnazione di ogni pixel al background o al foreground variano moltissimo a seconda della particolare applicazione. Un metodo semplice e molto efficace è quello che utilizza il contrasto dell’immagine. Per ogni pixel nell’immagine il livello di grigio corrispondente viene comparato a un valore di soglia e viene classificato come appartenente al background o al foreground se è inferiore o superiore al valore della soglia: in questo modo gli elementi scuri dell’immagine diventano background e quelli chiari diventano foreground. Se l’obiettivo è assegnare al foreground gli elementi scuri la logica di comparazione ovviamente si inverte. Questo approccio, molto efficace ed efficiente, porta con sé una criticità legata al valore scelto per la soglia e alla variabilità dei livelli di grigio presenti nell’immagine: ad esempio, se le immagini elaborate dal sistema variano nei livelli di illuminazione, può essere che la segmentazione avvenga in modo non affidabile. Una buona progettazione dell’illuminazione del sistema può essere risolutiva a tal proposito, ma, in altri casi si possono presentare situazioni per le quali ciò non basta. Si ricorre allora al calcolo del valore di soglia locale, mediante algoritmi che lavorano su zone ridotte dell’immagine (le cosiddette finestre di calcolo), e generano un valore di soglia che varia in ciascuna zona. Anche per le operazioni di sogliatura è stata sviluppata una vastissima serie di algoritmi, come a testimoniarne l’importanza e la criticità. Un esempio è riportato in Figura.

sogliatura

Effetto della sogliatura con soglia costante sulla ROI della Figura precedente

La segmentazione può essere basata anche sull’informazione di colore, sulla tessitura o sull’informazione della forma geometrica d’interesse: in questo ultimo caso si utilizzano algoritmi di calcolo basati su correlazione fra un templato e l’immagine. Il primo è il dettaglio che si è interessati a identificare e può essere sia a sua volta una immagine a livelli di grigio di dimensioni ridotte rispetto a quella sotto indagine, oppure una immagine edge che identifica il dettaglio sulla base della sua geometria. In ambedue i casi si tratta di algoritmi di template matching, il primo basato su correlazione di livelli di grigio, il secondo su correlazione fra edge. La ricerca sviluppata su questo tema ha portato a una grande varietà di tool di elaborazione, caratterizzati da un notevole grado di flessibilità e di affidabilità: ad esempio, è possibile riconoscere la presenza di dettagli indipendentemente dalla loro orientazione e dalla loro dimensione, sulla base di soglie di correlazione pre-impostabili.

Etichettatura (Labelling)
L’operazione di labelling consiste nell’analizzare i pixel nel foregroung per separare oggetti differenti gli uni dagli altri. Il criterio seguito è che i pixel connessi fra loro appartengano alla stessa entità, alla quale viene dato il nome di blob. Le blob definite nell’immagine hanno associato un numero sequenziale (label), che le distingue le une dalle altre. L’utilizzo naturale dell’operazione di labelling è identificare una specifica blob, quella d’interesse, ed eliminare le altre, riservando le successive operazioni alla blob selezionata. In Figura è mostrato un esempio di labelling: nell’immagine di sinistra tutte le blob vengono etichettate; nell’immagine a destra sono selezionate e ricolorate le sole blob che hanno etichetta pari (blob verdi).

labelling

Operazione di labelling applicata all’immagine della figura precedente. Ogni blob viene numerata (immagine a sinistra); viene quindi effettuata una operazione di selezione sulla base della label: le blob con label pari sono ricolorate di verde (immagine a destra)

 

Estrazione delle feature
Il passo successivo della catena di elaborazione consiste nella misura quantitativa di specifiche caratteristiche delle blob selezionate, come ad esempio, l’area, il perimetro, la simmetria, la posizione, l’orientamento, il grado di convessità. Un esempio è identificare un oggetto mediante labelling della blob che lo rappresenta e calcolarne il baricentro, per applicazioni di presa (pick –and-place); un altro è identificare due blob in corrispondenza a due fori , stimarne il baricentro e calcolare la distanza fra le due posizioni, oppure calcolarne l’area, per la verifica dimensionale dei fori. L’analisi delle blob è ristretta alle immagini binarie.
Esistono tuttavia molti metodi di estrazione delle caratteristiche metriche degli oggetti che si basano sui livelli di grigio o sugli edge (i cosiddetti caliper). L’applicazione degli algoritmi di caliper fra edge fornisce la stima delle distanze fra le caratteristiche d’interesse dell’oggetto ispezionato. Gli algoritmi di template matching, già menzionati nella sezione precedente, forniscono per propria natura le caratteristiche dimensionali degli oggetti identificati, essendo i template predefiniti a priori. L’analisi dei livelli di grigio dell’istogramma dell’immagine (il valore medio, la deviazione standard, l’entropia) può dare informazioni sulle caratteristiche degli oggetti stessi
Un’altra classe di algoritmi elabora le immagini portandole dal proprio dominio naturale nel dominio della frequenza, mediante l’analisi di Fourier. Metodi ancora più sofisticati consentono l’identificazione di ben definiti elementi geometrici, quali linee o cerchi, mediante trasformata di Hough, applicabile questa a valle della segmentazione.

Gli algoritmi di classificazione

A questo punto della catena di elaborazione si hanno a disposizione un certo numero di misure che caratterizzano tutti gli oggetti d’interesse presenti nell’immagine. Queste misure devono poter consentire di decidere se l’elemento passa il controllo o meno. In molti casi questa operazione è semplice: ad esempio, nel caso della verifica del diametro di un foro rispetto alla specifica di tolleranza. In altre situazioni invece è necessaria una fase di classificazione basata sulla verifica di un insieme di regole. L’esempio classico è, nell’ambito del riconoscimento di caratteri, distinguere, a valle della segmentazione, un 8 da un 6 o da un 9. Certamente il conteggio dei cerchi mediante labeling delle blob consente di distinguere la prima cifra dalle altre, ma per distinguere fra loro il 6 dal 9, bisogna ricorrere a una logica del tipo sequenziale che individui la caratteristica specifica di un simbolo rispetto all’altro. La classificazione deve essere robusta, cioè non deve risentire di variazioni modeste delle condizioni al contorno, quali variazioni di luminosità, imprecisioni nel posizionamento dei pezzi, velocità di passaggio dei pezzi, il loro colore, variazioni di riflettività. Tuttavia, le misure sono soggette a incertezza, e quindi il progettista deve sempre tenere presente che la probabilità di commettere falsi positivi o falsi negativi non è mai nulla.
Un diverso approccio alla classificazione si sta sempre più diffondendo, ed è basato su deep-learning, nel contesto delle reti neurali. Le reti neurali sono una tecnologia certamente non nuova, ma innovative è il loro impiego nell’analisi d’immagine, poiché consentono, per propria struttura, di ridurre la quantità di informazione presente nell’immagine in ingresso ad una forma estremamente sintetica, spesso basata su pochi bit nell’immagine di uscita, seguendo pertanto lo stesso paradigma dell’analisi d’immagine tradizionale, volto a ridurre all’osso il contenuto informative a partire da una set molto ampio di dati.
La modalità secondo la quale funzionano si basa sulla capacità di ogni singolo neurone di pesare opportunamente i valori che si ritrova in ingresso e di collegarli (o meno) ai neuroni adiacenti. Questa abilità tuttavia non si basa su una logica basata su regole, ma su una fase di addestramento, nella quale un altissimo numero di immagini già classificate viene presentato alla rete e le connessioni fra i neuroni vengono determinate grazie ad algoritmi di feedback molto sofisticati, che hanno al proprio ingresso il pattern di bit atteso all’uscita della rete, per ciascuna immagine. Questa fase può essere molto onerosa in termini di numero di immagini da esaminar, e naturalmente dipende dalla qualità delle immagini, oltre che dal loro numero. La classificazione che si ottiene utilizzando una rete neurale è di natura statistica, il modello decisionale si basa su correlazioni e non su causalità. Il loro impiego nei sistemi di visione industriale è per ora limitato ad applicazioni quali il riconoscimento di caratteri; tuttavia la tendenza è a utilizzarle in applicazioni per le quali la variabilità dei casi d’uso è tale da rendere impossibile l’approccio per regole di causalità.
(Giovanna Sansoni)

Con il patrocinio di

Anipla
Patrocinio Anipla
Patrocinio Cnosfap
IMVG
AIDAM
Facoltà Di Ingegneria Di Pavia