Visione Artificiale per applicazioni multimodali 27 – Novembre– 2006 Ing. C. Spampinato Overview Image Processing Occhio umano Discretizzazione Immagini binarie Enhancement Spazi di Colori Strumenti Applicazioni multimodali La Percezione Visiva Produce informazioni su: Ciò che esiste nel mondo circostante Dove gli oggetti sono localizzati Come tali oggetti cambiano nel tempo Grazie a tale informazione, un sistema biologico o automatico può conoscere il mondo esterno ed interagire con esso Occhio Umano La cornea è un tessuto spesso e trasparente che ricopre la superficie anteriore dell'occhio e serve a far convergere la luce in esso incidente sul cristallino. La sclera, in continuazione della cornea,è una membrana opaca che ricopre il bulbo oculare nella sua parte interna. La coroide contiene un insieme di vasi sanguigni che portano la maggior parte del nutrimento all'occhio La retina contenente i recettori fotosensibili Occhio Umano Ai suoi estremi anteriori la coroide si divide in due parti: il corpo ciliare l’iride Il cristallino (o lente) ha la funzione: schermare dalle onde nello schermo dell’infrarosso e dell’ultravioletto che possono danneggiare l’occhio mettere a fuoco l’immagine sulla retina Occhio Umano La retina costituisce la membrana più interna dell'occhio e misura circa 5cm x 5cm, ed è l'elemento base su cui si fonda la visione; Il nervo ottico è il collegamento tra lo strumento di acquisizione visiva (l'occhio) e l'elaboratore delle immagini (il cervello),che le interpreta, le processa, le archivia, ecc Computer Vision La CV rappresenta la scienza che riproduce su calcolatori elettronici il percorso cognitivo compiuto dall’uomo nell’intepretazione della realtà. La CV è preposta allo studio di tecniche e tecnologie per analisi di immagini finalizzate ad acquisire informazioni sul mondo esterno. Le tecniche studiate devono supplire diversi livelli cognitivi caratteristici della visione animale, da quello più basso (acquisizione dell’immagine) a quelli più elevato (interpretazione della scena) Computer Vision DIVERSI LIVELLI DI ANALISI La visione artificiale si articola su tre livelli di astrazione: LOW LEVEL: Produce una nuova immagine MIDDLE LEVEL: Estrae informazioni di tipo strutturale HIGH LEVEL: Produce un’interpretazione della scena Low Level Operazioni preliminari: Image Denoising Regolazione del contrasto Image sharpening Fine: evidenziare o ridurre alcune caratteristiche Risultato: immagine a partire da quella di ingresso Middle Level Estrazione delle informazioni strutturali dell’immagine di ingresso (ex: edges,contours) Numero degli oggetti presenti nell’immagine Relazione spaziale fra gli oggetti in essa presenti Fine: estrazione delle informazioni Risultato: descrizione della struttura dell’immagine e della forma degli oggetti in essa trovati High Level La visione ad alto livello opera sulle informazioni provenienti dalla visione a medio livello per comporre un modello “semantico” della scena. Il modello semantico comprende un’interpretazione della scena: ad esempio gli oggetti sono classificati o riconosciuti. Segmentation (partizionare img in regioni o oggetti) Pattern recognition (classificazione di tali oggetti) In genere fa un largo uso di “conoscenza a priori” Produce una descrizione semantica della scena Discipline Correlate Image Processing: Riguarda le proprietà delle immagini e le trasformazioni a cui possono essere sottoposte (filtraggi, compressione, registrazione 3-D, ecc.) Pattern Recognition: Riconoscimento e classificazione di oggetti, che possono essere non solo visuali (es. voice recognition). Immagine Digitale L'immagine è una funzione bidimensionale F(x,y) della intensità luminosa il cui valore o ampiezza ad una determinata coordinata spaziale (x,y) determina l'intensità (cioè la luminosità) dell'immagine in quel punto. L’immagine è intrinsecamente bidimensionale mentre la scena che riprende è 3D. F(x,y) non è necessariamente uno scalare: se ad esempio l'immagine è a colori, F(x,y) è una funzione vettoriale: F(x,y) = [f1(x,y) , f2(x,y) , f3(x,y)] Immagine Digitale Le immagini che normalmente percepiamo sono date essenzialmente dalla luce riflessa dagli oggetti, dunque la F(x,y) risulta costituita da due componenti principali: La quantità di luce diretta incidente sulla scena vista: Componente di illuminazione i(x,y) La quantità di luce riflessa dagli oggetti presenti nella scena: Componente di riflessione r(x,y) F(x,y) = i(x,y) * r(x,y) Risoluzione Risoluzione spaziale Risoluzione spettrale Risoluzione radiometrica Risoluzione temporale Risoluzione Spaziale Numero di pixel per unità di area Diminuendo la risoluzione spaziale otteniamo il tipico effetto "quadrettato" causato dall'aliasing Risoluzione Spaziale Risoluzione Spettrale Diminuendo la banda passante l'immagine diviene più "sfocata" Risoluzione Radiometrica Ecco cosa accade se si riduce la profondità di colore : Tipi di immagine Un’immagine in toni di grigio è rappresentata dal computer come una matrice di interi da 1 byte o 2 byte; Un’immagine in bianco e nero è un’immagine i cui punti possono assumere solo i due valori 0 e 1 (img binaria) Spazi di Colore L’uso del colore nell'immagine è motivato da due fattori principali : Il colore è un potente descrittore che spesso semplifica l’identificazione dell'oggetto e della scena. Gli uomini possono discernere migliaia di ombre di colore e di intensità, in confronto a solo 20-30 ombre di grigio. Spazi di Colore I colori che gli uomini e alcuni animali percepiscono in un oggetto sono determinati dalla natura della luce riflessa dall’oggetto stesso. Se la luce è acromatica (colore privo di luce), il suo solo attributo è l’intensità. La luce cromatica invece si estende lungo la gamma elettromagnetica pprossimativamente dai 400 ai 700 nm. Spazi di Colore Tre principali elementi sono usati per descrivere una fonte di luce cromatica: Radiance: è l’energia totale che fluisce dalla fonte di luce, ed è misurata in watt (W). Luminance, misurata in lumens (lm), dà una misura dell’ammontare di energia che un osservatore percepisce da una fonte di luce. Brightness: è un descrittore soggettivo; incarna la nozione acromatica di intensità. Approssimativamente il 65% di coni dell’occhio umano è sensibile alla luce rossa, il 33% alla verde, e solo il 2% è sensibile all’azzurro (ma i coni blu sono i più sensibili). Spazi di Colore I colori primari possono essere addizionati per produrre colori secondari di luce : il magenta (blu + rosso), il ciano (blu + verde), e il giallo (verde + rosso). Mescolando i tre primari, o un secondario col suo colore primario opposto, nelle intensità giuste si produce luce bianca. Spazi di Colore C’è una differenza tra i colori primari di luce e i colori primari di pigmenti (o coloranti). Nei pigmenti un colore primario è definito come il colore che sottrae o assorbe un colore primario di luce e riflette o emette gli altri due. Spazi di Colore Le caratteristiche che generalmente sono usate per distinguere un colore da un altro sono: Luminosità; Tonalità, che è un attributo associato con la lunghezza d'onda dominante in un insieme di onde luminose. La tonalità rappresenta il colore dominante percepito. Così, quando noi chiamiamo un oggetto rosso, arancione, o giallo, noi stiamo specificando la sua tonalità. Saturazione assegna la relativa purezza o la quantità di luce bianca mescolata con un colore. I colori puri dello spettro sono pienamente saturi. Spazi di Colore L’ ammontare di rosso, verde, e blu sono necessari per creare un qualsiasi colore sono chiamati tristimulus. Un colore è specificato dal suo coefficiente tricromatico: Spazi di Colore : Diagramma di Cromaticità Modelli di colore I modelli più comunemente usati in pratica sono : RGB (rosso, verde, blu), CMY (ciano, magenta, giallo) e il CMYK che sono modelli di colore per stampare; HSI (tonalità, saturazione, intensità) modello che corrisponde da vicino al modo in cui gli uomini descrivono e interpretano il colore. RGB Il sottospazio di colore di interesse è il cubo nel quale i valori di RGB sono tre angoli; ciano, magenta, e giallo sono gli altri tre angoli; il nero è all’ origine; e il bianco è l’angolo opposto all’origine. In questo modello, la scala di grigio (punti di uguali valori RGB) si estende dal nero al bianco . CMY(K) Molte apparecchiature che depositano pigmenti colorati su carta, come stampanti a colori e fotocopiatrici richiedono dati in input CMY o effettuano una conversione da RGB a CMY internamente. Modello HSI Hue : descrive la purezza del colore; Saturation : grado di presenza del bianco; Intensity : livello di grigio per rappresentare la brillantezza; Modello HSI Color Processing Matlab X = imread(’nome_file.jpg’); Red_Channel = X(:,:,1); Green_Channel = X(:,:,2); Blue_Channel = X(:,:,3); Gray_Image = rgb2gray(X) Hsi_Image = rgb2hsv(X) Hue_Channel = Hsi_Image(:,:,1); Saturation_Channel = Hsi_Image(:,:,1); Intensity_Channel = Hsi_Image(:,:,1); Proprietà Topologiche Immagini Binarie Proprietà riferite ad una immagine (o di parte di essa) che non variano in seguito a certe trasformazioni ( traslazione, rotazione, cambiamento di scala ed elongazione) lungo un qualsiasi asse dell'immagine: Intorno e adiacenza Path Connettività; Connected Components; Foreground,Background e Holes; Bordo, Interno; Intorno e adiacenza Dato un pixel p di coordinate (x,y), i quattro vicini (in orizzontale e verticale) hanno coordinate: (x+1, y), (x-1. y), (x, y+1), (x, y-1) e costituiscono l’insieme N4(p) dei di p (Pixel con ul lato in comune). I quattro vicini diagonali di p hanno coordinate (x+1, y +1), (x+1, y-1), (x-1, y+1), (x-1,y-1) e formano l’insieme ND(p). L’insieme degli 8-vicinidi p è dato da: Intorno e adiacenza Path Un path da un pixel [i0,j0], al pixel [in,jn] è una sequenza di pixel [i0,j0] , [i1,j1] , ... , [in1,jn-1] , [in,jn] tale che il pixel [ik,jk] sia un vicino di [ik+1,jk+1] per ogni K[ 0,n-1]. Connected Component Un connected component di una immagine è un insieme di pixel in cui ogni elemento è connesso con tutti gli altri Appare allora chiaro che, ad esempio, un path è un connected component. Talvolta è detto “oggetto” Connected Component L’insieme S di tutti i pixel di valore non nullo di un’immagine è detto foreground L’ insieme dei connected components appartenenti ad S (complementare di S) che abbiano punti sul bordo dell'immagine è detto background L’ insieme di tutti i punti rimanenti (cioè che non sono né di background né di foreground) vengono detti holes Connected Component Convex Hull Definiamo Convex Hull di un oggetto la più piccola regione che contiene quell'oggetto e i cui punti sono unibili con segmenti contenuti nella regione stessa Proprietà geometriche Area (size) A = numero di pixel di un oggetto; Perimetro P = numero di pixel del contorno; Posizione = in genere corrisponde alle coordinate del centro di massa dell'oggetto, calcolate assegnando ad ogni pixel, come peso, il suo valore: xp B(i, j ) x i j A j yp B(i, j ) y i j j A B(i,j) : peso (cioè valore) del punto di coordinate (i,j) A : Area dell'oggetto. Proprietà geometriche Orientazione = angolo dell'asse principale dell'oggetto rispetto ad un asse di riferimento (tipicamente l'asse orizzontale); è calcolata come l'asse per il quale la somma delle distanze quadratiche perpendicolari rispetto a tutti i punti dell'oggetto è minima: x r Bi, j 2 2 i, j i j ri,j : distanza perpendicolare della retta dal punto (i,j) B[i,j] : valore del pixel nel punto (i,j). Proprietà geometriche Compattezza = numero di pixel del contorno; è misurata dalla disuguaglianza isoperimetrica: Più una figura è compatta, minore è il valore del rapporto. La figura che risulta più compatta è il cerchio Enhancement L’ image enhancement consiste nell’elaborazione di un’immagine con il fine di migliorarne determinate caratteristiche, ridurne altre, eliminare o ridurre il rumore… Si mira ad evidenziare alcune caratteristiche che sono utili per passi successivi di processing Oppure si mira a migliorare l’aspetto visivo dell’immagine Enhancement I metodi da utilizzare per il miglioramento delle immagini vanno scelti in base al tipo di immagine ed al tipo di elaborazione. Tali metodi si dividono in due categorie: Metodi nel dominio dello spazio (si basano su una diretta manipolazione dei pixel); Metodi nel dominio della frequenza (si basano su operazioni effettuate sulla trasformata di Fourier); Non c’è una teoria generale sull’enhancement dell’immagine, in quanto la valutazione visiva della qualità dell’immagine è un processo altamente soggettivo. Biondi Enhancement on spatial domain Il termine dominio spaziale è legato al fatto che l’elaborazione si basa direttamente sulla manipolazione dei pixel. Le principali operazioni che si possono eseguire nel dominio dello spazio sono: Intesity o Gray Level transformation Spatial filtering Biondi Background I processi nel dominio dello spazio saranno denotati dall’espressione: g(x, y) = T[f(x, y)] dove: - f(x, y) è l’immagine di input - g(x, y) è l’immagine processata - T è un operatore su f, definito sull’intorno di (x, y) Background L’approccio principale nella definizione di una vicinanza circa un punto (x, y) è usare una sottoparte quadrata o rettangolare dell’immagine centrata in (x, y), come mostra la figura L’operatore T è applicato ad ogni punto (x,y) per ottenere l’uscita g in quel punto Background La più semplice forma di T è quando il contorno è di dimensioni 1x1 (cioè un singolo pixel). g dipende solo dal valore di f in (x, y) T diventa una funzione di trasformazione a livelli di grigio (spesso chiamata a intensity o a mapping) . In tal caso T dipende solo dall’intesità r e non da (x,y) quindi si ha: s = T(r) Dove: - r indica il livello di grigio di f(x, y) - s indica il livello di grigio di g(x, y) Alcune trasformazioni basilari a livelli di grigio Ci sono tre tipi base di funzioni usate frequentemente per il miglioramento dell’immagine: - lineare - logaritmica - a legge di potenza Trasformazioni lineari: Negativo (1/2) La negativa di un’immagine con livelli di grigio nel range [0, L-1] è ottenuta usando la trasformazione negativa mostrata nella figura precedente con la formula: s=L–1–r Invertendo i livelli di intensità di un’immagine in questa maniera si produce l’equivalente di una negativa fotografica Trasformazioni lineari: Negativo (2/2) Trasformazioni logaritmiche (1/2) La trasformazione logaritmica assieme al constrast stretching rappresentazione le principali trasformazioni per la manipolazione dinamici dei range di grigio. La formula generale della trasformazione logaritmica è: s = c*log(1 + r) Dove: - c è una costante - si assume che r ≥ 0 La funzione log ha l’importante caratteristica di comprimere il range dinamico nelle immagini con una larga variazione nei valori dei pixel Trasformazioni logaritmiche (2/2) Viene usato per comprimere range dinamici. Es. trasformata Fourier: intervalli [0 10^6]. Constrast stretching Permette di comprimere i livelli di grigio minore di un valore m di un’immagine in un ristretto intervallo di livelli scuri. Se T(r) ha la forma mostrata nella prima figura l’effetto di questa trasformazione è quello di produrre un’immagine ad alto contrasto rispetto all’originale s T r 1 1 (m / r ) E r rappresenta l’intensità dell’immagine di ingresso. E controlla la forma della funzione. Trasformazioni a legge di potenza Le trasformazioni a legge di potenza hanno la forma base: s = crγ dove c e γ sono costanti positive Spesso tale equazione è scritta come: s = c(r + ε)γ Trasformazioni a legge di potenza Trasformazioni a legge di potenza Tali trasformazioni sono usate per correggere i “difetti” di alcune periferiche usate per la cattura dell’immagine, la stampa, e la visualizzazione Il processo usato per correggere questi fenomeni di risposta della legge di potenza è chiamato gamma correction Trasformazioni a legge di potenza Come si può notare nell’esempio di questa spina dorsale, grazie a tale trasformazione si possono esaltare zone (le lesioni) che erano quasi “nascoste” nell’immagine originale. 0.4 0.6 0.3 Trasformazioni a legge di potenza 3 4 5 Funzioni di trasformazione “piecewise”-lineare Vantaggi: - la forma delle funzioni “piecewise” può essere resa arbitrariamente complessa - un’implementazione pratica di molte importanti trasformazioni può essere formulata solamente come funzioni “piecewise” Svantaggi: - la loro specifica richiede considerevolmente più input da parte degli utenti Funzioni di trasformazione “piecewise”-lineare Constrast strecthing L’idea dietro lo stiramento del contrasto è di aumentare il range dinamico dei livelli di grigio nell’immagine che sta per essere processata. Gray-level slicing: Con questa tecnica si da rilievo ad uno specifico range di livelli di grigio in un’immagine. “Divisione del bit-plane: Si suppone che ogni pixel in un’immagine sia rappresentata da 8 bit. Si immagini che l’immagine sia composta da 8 piani da 1 bit, ordinati dal bit-plane 0 (il bit meno signifivìcativo) al bit-plane 7 (il più significativo) Constranst Stretching delle “piecewise trasformation” semplici è la contrast-stretching. Una più Constranst Stretching (2/2) Gray-level and Bit-plane slicing Evidenziare un specifico range di livelli di grigio è spesso desiderabile. Esistono molti approcci per effettuare lo slicing, ma essenzialmente si possono ricondurre a due. Può essere molto utile evidenziare il contributo dei singoli bit piuttosto che un intero range di grigio. Gray-level and Bit-plane slicing Gray-level and Bit-plane slicing Histogram Processing L’istogramma di un’immagine è una curva che fornisce informazioni sulla frequenza con cui ogni livello di grigio è presente nell’immagine. L’istogramma si determina contando per ogni valore dell’insieme dei valori assumibili dai pixel dell’immagine (detto codominio dell’immagine) il numero di volte che compare nell’immagine stessa. Histogram Processing Allora se rk con k=0,…,255 rappresenta i valori di grigio si ha che l’istogramma è: nk p rk N Dove nk rappresenta il numero di pixel con valore di grigio rk ed N è il numero totale di pixel dell’immagine Histogram Processing L’istogramma è la base per numerose tecniche di processimento nello spazio. E’ molto efficiente per l’enhancement. Ma non solo… compressione e segmentazione!!! E’ possibile effettuare alcune trasformazione dell’istogramma: Equalizzazione dell’istogramma; Matching dell’istogramma Histogram Processing Local Enhancement L’enhancement è un operazione di miglioramento dell’immagine. Esistono due tipi di enhancement GLOBALE e LOCALE. Nelle sezioni precedenti sono elaborazioni globali. Le procedure precedentemente viste possono essere applicate definendo un quadrato e spostando da pixel a pixel. Local Enhancement Le tecniche di processamento di un istogramma sono facilmente adattabili al local enhancement. La procedura deve definire un’area quadrata o rettangolare e trasportare il centro di questa area da pixel a pixel. Su ciascuna ubicazione, verrà calcolato l'istogramma dei punti che si trovano vicini in maniera tale da ottenere una delle due seguenti funzioni di trasformazione: histogram equalization o histogram specification Local Enhancement Tali funzioni vengono usate per mappare il livello di grigio del pixel concentrato nei dintorni. Il centro della regione vicina è mosso poi su una locazione del pixel adiacente e la procedura è ripetuta. Ad ogni iterazione ogni nuova riga o colonna dei dintorni cambia durante la traslazione da pixel-a-pixel della regione. Questo approccio ha vantaggi ovvi in quanto calcola l'istogramma ripetutamente su tutti i pixel nella regione vicina e ogni volta la regione è mossa a un pixel location. Local Enhancement Un altro approccio usato qualche volta per ridurre il calcolo è utilizzare regioni non sovrapposte, ma questo metodo di solito produce un indesiderabile effetto checkerboard (quadrettato). Local Enhancement A A=immagine originale; B=Eq.istogramma globale; C=Eq.istogramma locale; B C Use of Histogram Statistics for Image Enhancement E’ molto utile usare parametri statistici nell’istogramma piuttosto che l’intero istogramma. Sia r una variabile random discreta che rappresenta un livello di grigio discreto in un range [0, L-1] e p(ri) rappresenta l’istogramma normalizzato e il corrispondente componente all’i-esimo valore di r. Use of Histogram Statistics for Image Enhancement Il momento n-esimo di r: Dove m è il valore medio del livello di grigio: Use of Histogram Statistics for Image Enhancement Due usi della media e della varianza per scopi di enhancement. La media e la variazione globale sono misurate su un'immagine intera e sono utili primariamente per rettifiche sull’ intensità complessiva e sul contrasto. Enhancement locale: media e la varianza locale sono usate per trasformazioni che dipendono dalle caratteristiche dell'immagine in una determinata regione. Use of Histogram Statistics for Image Enhancement Siano (x,y) le coordinate di un pixel nell’immagine, e sia Sxy una sottoimmagine di grandezza specificata, centrata in (x,y). Il valore medio m del pixel in Sxy può essere calcolato usando l’espressione: Esempio E’ necessario evidenziare un’area e lasciare l’altra inalterata!!! Enhancement locale capace di evidenziare solo le aree più scure!!! Esempio Una misura di quando un’area è relativamente chiara o scusa è quella di confrontare media e varianza locale con media e varianza globale. Un pixel (x,y) sarà candidato per il processamento se: Un pixel che soddisfa tali condizioni verrà processato moltiplicando per una costante E può essere maggiore 1 o minore di 1 a seconda del tipo di elaborazione. Esempio Ricapitolando: Sia f(x,y) il valore di un determinato pixel alla coordinata (x,y) e sia g(x,y) il enhanced pixel alla stessa coordinata. Allora: Esempio Con E=4, K0=0.4, K1=0.02, K2=0.4 A B C A= è stata applicata la media locale B= è stata applicata la deviazione standard C= immagine formata dalla moltiplicazione di tutte le costanti usate per l’enhancement Esempio OpenCV La libreria OpenCV (Open Source Computer Vision) costituisce una collezione di algoritmi ed esempi di computer vision. Il codice è ottimizzato per la famiglia dei processori Intel ed è compatibile con la precedente libreria free IPL (Image Processing Library). OpenCV OpenCV costituisce un supporto per usi commerciali o di ricerca in settori della computer vision quali human-computer interface, monitoraggio, biometrica, sicurezza, …, fornendo un’infrastruttura free ed open che può essere consolidata e ottimizzata grazie al lavoro dei membri della vision community. Esempio IplImage *src;// dichiaro un’IplImage (struttura dati usata per immagini 2D) char path[]=“C\\colombina.bmp”; //creo una finestra di nome “window” cvNamedWindow("window",CV_WINDOW_AUTOSIZE); src=cvLoadImage(path); //carico l’immagine contenuta nel file colombina.bmp in “src” (la memoria per l’immagine è allocata in modo implicito) cvShowImage("window",src); //mostro nella finestra “window” l’immagine contenuta in “src” RGB 2 GRAY CvSize size_src=cvSize(src->width,src->height); //creo la variabile “size_src” di tipo //“CvSize” per contenere //larghezza ed altezza dell’immagine src_gray=cvCreateImage(size_src,src->depth,1); //creo l’immagine src_gray con //le dimensioni fissate da size_src //e con un solo canale cvCvtColor(src,src_gray,RBG2GRAY); //passo “src” convertita a toni di grigio // nella variabile “src_gray” cvNamedWindow("window color",CV_WINDOW_AUTOSIZE); // la costante “CV_WINDOW_AUTOSIZE” richiede che // la window si adatti alle dimensioni dell’immagine cvShowImage("window color",src); cvNamedWindow("window gray",1); Applicazioni Multimodali Analisi Attentiva Object Recognition: Face; Gesture; Tracking Eye; Face;