Omografia e Parallasse: applicazione per la rilevazione del goal “fantasma” Loris Bazzani VR067184 27 giugno 2008 Indice 1 Introduzione 1.1 Elementi di Computer Vision . . . . . . . . . . . . . . . . . . . . 1 2 2 Geometria epipolare di un piano 3 3 Omografia indotta da un piano 3.1 Stima dell’omografia . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 4 Omografia infinito 7 5 Parallasse 5.1 Stima dell’epipolo . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Stima del parallasse . . . . . . . . . . . . . . . . . . . . . . . . . 7 8 10 6 Applicazione: Rilevazione del goal “fantasma” 11 6.1 Problemi pratici . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 7 Conclusioni 1 16 Introduzione La Computer Vision, in italiano Visione artificiale, definisce gli elementi teorici per ricostruire una scena tridimensionale a partire da immagini bidimensionali acquisite da punti di vista differenti. In altre parole permette alle macchine di “vedere” cercando di emulare la percezione visiva umana. Il mapping tra la scena e la retina contiene una perdita di informazione intrinseca: riduzione di dimensionalità da 3D a 2D. È poi il cervello a processare i dati provenienti dai recettori dei due occhi per eseguire una ricostruzione 3D. In questo lavoro si studia l’aspetto geometrico di tale disciplina tralasciando molti argomenti interessanti, i quali richiederebbero diversi libri per essere analizzati nel dettaglio. Lo scopo principale è la realizzazione di un’applicazione per rilevare il goal in un calcio di rigore, studiando cosı̀ alcuni argomenti rilevanti nell’ambito della Visione artificiale. Si dá una base teorica che riguarda la geometria di due viste con l’asse ottico verso un piano. Gli elementi che ci serviranno sono l’omografia, che è una specializzazione della geometria di due 1 viste. Poi ci servirà il parallasse, che in una sua accezione può essere visto come una sorta di distanza dei punti 3D dal piano. Nella sottosezione successiva si descrivono gli elementi basilari utili per la definizione dell’omografia. In seguito si entra nel dettaglio nella definizione e nel calcolo dell’omografia, dell’epipolo e del parallasse. Infatti per ogni argomento rilevante in questo contesto verrà presentato il codice Matlab che lo implementa. L’ultima parte descrive l’utilizzo delle tecniche definite per una applicazione particolare: la rivelazione del goal “fantasma”. 1.1 Elementi di Computer Vision La geometria epipolare descrive la relazione geometrica tra due viste prospettive della stessa scena tridimensionale. L’elemento chiave di tale teoria è che i punti delle due immagini, i quali corrispondono allo stesso punto 3D, giacciono in linee particolari dell’immagine: rette epipolari. La retta epipolare di un punto contenuto in una vista è la proiezione del raggio ottico di quel punto sull’altra vista. In termini formali si ha la seguente equazione: ml ζr mr = er + ζl Pr1:3 Pl−1 1:3 (1) che rappresenta il vincolo epipolare. Pl e Pr sono rispettivamente la matrice di proiezione prospettica della telecamera sinistra e destra. Tale vincolo permette di fare triangolazione, ovvero dati due punti corrispondenti si può calcolare la profondità del punto 3D. La ricostruzione della scena viene effettuata tramite il meccanismo di triangolazione. Se conosciamo le matrici Pl e Pr siamo nel caso di telecamera calibrata. In caso contrario non conosciamo niente sulla geometria epipolare della scena, perciò ci viene in aiuto la matrice fondamentale. La matrice fondamentale permette di descrivere la geometria epipolare nel caso in cui non si conosce niente sulle telecamere: parametri intrinseci ed estrinseci sconosciuti. Siano due telecamere Pl = Kl [I|0] e Pr = Kr [R|t], la matrice fondamentale si ottiene tramite la manipolazione del vincolo epipolare ottenendo: mr [er ]× Kr RKl−1 ml = 0 {z } | (2) F dove F = [er ]× Kr RKl−1 è la matrice fondamentale. Con tale matrice è possibile ricostruire la scena a meno di una trasformazione proiettiva. Una proiettività o trasformazione proiettiva f : Pn → Pn è un’applicazione lineare in coordinate omogenee tale per cui: f :Rn+1 → Rn+1 (3) x 7→ H · x (4) dove H è una matrice (n + 1) × (n + 1) non singolare. Altri sinonimi per proiettività sono omografia oppure collineazione. Se viene applicata una collineazione ad un insieme di punti che giacciono su una retta, dopo la trasformazione i punti apparterranno ancora ad una retta trasformata. In altre parole, un omografia ha la proprietà di preservare la collinearità dei punti. Tuttavia non mantiene il parallelismo tra lati, angoli e nemmeno le lunghezze di segmenti, essendo una trasformazione generale (non ci sono molti vincoli nella definizione). 2 2 Geometria epipolare di un piano La geometria epipolare, vista nella sezione precedente, può essere specializzata in un caso particolare: due telecamere acquisiscono immagini da una scena in cui è presente un piano. La situazione si presenta come illustrato in figura 1. La Figura 1: Omografia indotta dal piano Π sui due piani immagine figura rappresenta il piano Π che è definito nel sistema di riferimento mondo, Il e Ir sono rispettivamente i piani immagine delle telecamere di sinistra a di destra. Hl e Hr sono le trasformazioni che proiettano i punti del piano in Il e Ir . Il mapping che esiste tra il piano Π e la sua proiezione sull’immagine, i.e. Hl e Hr , è una collineazione in P2 . Per dimostrare ciò basta fissare il sistema di riferimento del mondo in modo tale che il piano formato dai versori x e y corrisponda con il piano Π. Questo corrisponde all’annullamento della componente z. L’immediata conseguenza di questa operazione si riflette nell’espansione dell’equazione proiettiva: x u x y = [P1 |P2 |P4 ] y ζ v = P (5) 0 1 1 1 |{z} |{z} m M dove P è la matrice di proiezione della telecamera (con Pi si indica l’i-esima colonna di P ). L’equazione 5 rappresenta il mapping tra un punto del piano M e un punto dell’immagine m; la matrice [P1 |P2 |P4 ] (3 × 3 e non singolare) è perciò una collineazione in P2 . Quindi si hanno due collineazioni: una per l’immagine sinistra e una per la destra. Si può notare dalla figura 1 che esiste una trasformazione anche tra punti dell’immagine sinistra nell’immagine destra (Hr Hl−1 ) e inoltre è invertibile. In questo caso un punto dell’immagine sinistra si proietta in un unico punto nell’immagine destra e viceversa. Vi è una corrispondenza punto-punto tra le due immagini, al contrario di quanto avveniva per la matrice fondamentale, la quale rappresenta un mapping punto-retta epipolare. 3 3 Omografia indotta da un piano Ora cerchiamo di analizzare meglio cosa succede tra le due telecamere. Si vuole dimostrare che i punti delle immagini che appartengono al piano Π sono legati da una ulteriore collineazione. In altre parole, dato un punto ml del piano esiste una collineazione che permette di calcolare il punto corrispondente mr . Più formalmente, il piano Π induce una collineazione HΠ tra le viste, la quale trasferisce punti da una vista all’altra nel seguente modo: mr ' HΠ ml ∀M ∈ Π (6) dove HΠ è una matrice non singolare 3 × 3. L’equazione 6 vale nel caso in cui il punto M nel sistema di riferimento mondo appartiene al piano. Se il punto si sposta dal piano, l’equazione 6 diventa “meno vera”. Lo scarto definito dalla proiezione dello spostamento di M si chiama parallasse; lo vedremo dettagliatamente nelle sezioni successive. Una collineazione ha otto gradi di libertà, in quanto è definita a meno di un fattore di scala, mentre l’istanziazione di un piano nello spazio ha bisogno di tre parametri: normale e distanza dall’origine. A questo punto una domanda può sorgere spontanea: non dovrebbero avere gli stessi gradi di libertà? In caso affermativo che vincoli su HΠ mancano? Non manca alcun vincolo, perchè HΠ permette di definire qualsiasi omografia indotta da un piano generico. Mentre un piano viene definito in dipendenza al sistema di riferimento. In corrispondenza al piano si dovrebbero considerare anche i cinque gradi di libertà di tutte le possibili configurazione delle telecamere (R e t). Qualsiasi combinazione casuale di numeri può generare un’omografia (se non singolare). Però non tutte sono compatibili con la geometria epipolare. Per esprimere meglio tale concetto si considerano i punti che soddisfano 6 e si inseriscono in 2: T (HΠ ml ) F ml = 0. | {z } (7) mr L’equazione 7 corrisponde ad affermare che la collineazione indotta dal piano deve essere compatibile con la geometria epipolare. Manipolando l’equazione 7 si ottiene: T mTl (HΠ F )ml = 0 (8) T il che implica l’anti-simmetria della matrice HΠ F . Un altro modo per scrivere il vincolo di anti-simmetria di una matrice è il seguente: T HΠ F + F T HΠ = 03×3 . (9) Come si può notare, si ha un sistema di nove equazioni perché la matrice risultante dalla somma è 3 × 3. Le componenti di una matrice anti-simmetrica non sono tutte indipendenti per definizione. In particolare solo sei componenti sono indipendenti, le rimanenti tre sono un cambio di segno delle altre. Questi sono i vincoli per la definizione di una collineazione che sia compatibile con la matrice fondamentale. Il concetto di compatibilità è abbastanza delicato: una collineazione si dice compatibile a F se i punti sul piano soddisfano l’equazione 4 7, ovvero se i vincoli del sistema di equazioni 9 sono soddisfatti1 . Inoltre si dimostra che una collineazione H è compatibile ad F se e solo se: F ' [er ]× H. (10) Per pervenire ad un metodo per calcolare HΠ si manipola l’equazione 1 della retta epipolare destra considerando solo i punti M che appartengono al piano Π. Tali punti hanno equazione nT M = d dove n è la normale al piano e d la distanza dall’origine. Perciò si ottiene: t · nT ζr mr = Kr R + Kl−1 ml . (11) ζl d Dunque, mettendo insieme l’equazione 6 e 11 si ottiene la forma esplicita della collineazione indotta da Π: t · nT Kl−1 . HΠ = Kr R + (12) d Nel caso di telecamera calibrata, in cui sono noti tutti parametri sia impliciti che espliciti, il calcolo di HΠ risulta immediato. Però si nota che si ha una parametrizzazione della collineazione che dipende dalla definizione del piano, ovvero compaiono i termini n e d. Per questo motivo risulta più efficace definire una procedura basata sulle corrispondenze tra punti. 3.1 Stima dell’omografia Dato un insieme di corrispondenze mir ↔ mil , l’obiettivo è quello di calcolare H. Le corrispondenze dovrebbero essere tali per cui il punto M che rappresentano giaccia sul piano. Come si è già visto, l’omografia deve soddisfare la formula mr ' HΠ ml per ogni corrispondenza. Per la proprietà di collinearità di due punti si riscrive con il prodotto esterno: mr × Hml = 0. L’idea è di isolare le incognite del problema (H), allo scopo di ottenere un sistema lineare del tipo Ax = 0, dove la soluzione è lo spazio nullo della matrice A. Per pervenire a tale risultato si utilizza l’operatore vec e una proprietà del prodotto di Kronecker: mr × Hml = 0 ⇐⇒ [mr ]× Hml = 0 ⇐⇒ vec([mr ]× Hml ) = 0 ⇐⇒ (mTl (13) ⊗ [mr ]× )vec(H) = 0. (14) Quante corrispondenze servono per risolvere il problema di spazio nullo della matrice (mTl ⊗ [mr ]× )? È immediato verificare che la dimensionalità di questa matrice è 3 × 9, in quanto mTl è 1 × 3 e [mr ]× è 3 × 3. La matrice antisimmetria è “rank-deficient” per come è definita, dunque ha rango due. Ne consegue che una riga è linearmente dipendente alle altre due. D’altra parte la matrice H è 3 × 3 di rango otto, perché definita a meno di un fattore di scala. Perciò la matrice A verrà realizzata giustapponendo almeno quattro matrici del tipo (mTl ⊗ [mr ]× ). In altre parole sono necessarie almeno quattro corrispondenze per il calcolo dell’omografia indotta da un piano. Il vettore delle incognite sarà x = vec(H). 1 Si noti che le equazioni 7, 8 e 9 rappresentano tutte lo stesso vincolo, riformulato allo scopo di definire i vincoli su HΠ . 5 Si risolvere il sistema lineare applicando la decomposizione a valori singolari (svd) e prendendo come soluzione l’ultima colonna della matrice V derivata dalla fattorizzazione (A = U DV T ). Tale vettore genera lo spazio nullo dalla matrice A ed è soluzione del sistema lineare. Questo procedimento prende il nome di DLT algorithm (Direct Linear Transform) in una delle sue accezioni. In caso di rumore la matrice A non ha esattamente rango otto, ma può avere rango massimo. Questo significa che la soluzione esatta del sistema è la soluzione banale (x = 0). In questo caso si vorrebbe una soluzione ai minimi quadrati con un errore → 0. Si dimostra che l’algoritmo DLT trova la soluzione del sistema H 0 ai minimi quadrati che risulta la più vicina in norma di Frobenius alla soluzione esatta H: minH 0 kH − H 0 k2F . In seguito si presenta l’implementazione in Matlab dell’algoritmo per la stima dell’omografia indotta dal piano: Stima dell’omografia 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 function H = homographyEstimation ( ml , mr ) H = []; i f ( s i z e ( ml ,2) <4 | | s i z e ( mr, 2 ) < 4 ) f p r i n t f ( ’ E r r o r e : n p u n t i i n s u f f i c i e n t e \n ’ ) ; return end i f ( s i z e ( ml , 1 ) ˜ = 2 | | s i z e ( mr , 1 ) ˜ = 2 ) f p r i n t f ( ’ E r r o r e : c o o r d i n a t e non c a r t e s i a n e \n ’ ) ; return end % precondizionamento [ Tl , ml ] = p r e c o n d 2 ( ml ) ; [ Tr , mr ] = p r e c o n d 2 ( mr ) ; % rendiamo omogenee l e c o o r d i n a t e ml = [ ml ; o n e s ( 1 , s i z e ( ml , 2 ) ) ] ; mr = [ mr ; o n e s ( 1 , s i z e ( mr , 2 ) ) ] ; A = []; % c a l c o l o i l p r o d o t t o d i Kronecker f o r i = 1 : s i z e ( ml , 2 ) Ai = kron ( ml ( : , i ) ’ , s t a r ( mr ( : , i ) ) ) ; A = [ A ; Ai ] ; end % a p p l i c o l a decomposizione a v a l o r i s i n g o l a r i [ U, D, V ] = svd (A ) ; % c o n t r o l l o s e l a m a t r i c e e ‘ ben c o n d i z i o n a t e D = diag (D ) ; cond = D( 1 ) /D( end − 1 ) ; i f ( cond>200) w ar n in g ( ’ M a t r i c e e ‘ mal c o n d i z i o n a t a : %0. f ’ , cond ) ; end % s o l u z i o n e : e ‘ l ’ u l t i m a co lo nn a d i V H = V ( : , end ) ; H = reshape (H, s i z e ( ml , 1 ) , s i z e ( ml , 1 ) ) ; % m i n i m i z z a z i o n e d e l l ’ e r r o r e g e o m e t r i c o su H H = f m i n s e a r c h (@(H) g e o E r r (H, ml , mr ) ,H ) ; % recupero omografia e normalizzo H = inv ( Tr ) ∗H∗ Tl ; H = H/H( end , end ) ; % u l t i m o e l e m e n t o a 1 L’algoritmo ricalca perfettamente quanto descritto. Inoltre sono state aggiunte delle fasi di controllo in modo da irrobustire l’interfaccia. I primi due controlli, restituiscono errore nei casi in cui ci siano meno di quattro corrispondenze e in cui i punti non siano in forma cartesiana (u, v). Poi vi è una fase di precondizionamento dei dati, la quale viene descritta meglio nella sezione 6.1. Le coordinate sono rese omogenee all’interno della procedura, con l’inserimento di uni. Dalla riga 17 alla 24 si definisce la matrice A di cui si calcola il vettore che ne genera il kernel, che è soluzione del sistema. 6 Ai fini pratici risulta interessante analizzare il numero di condizionamento (σi sono i valori singolari di di A. Il numero di condizionamento c = σσmax min A) definisce quanto la matrice è vicina ad essere singolare. Quando c è elevato la matrice risulta mal condizionata (in pratica singolare). Il numero di condizionamento massimo (200) viene rilevato sperimentalmente. Infine l’algoritmo procede con la selezione dell’ultima colonna di V (kernel di A), la normalizzazione di H per far diventare uno l’ultimo elemento e il ridimensionamento. La riga 35 ha lo scopo di minimizzare l’errore geometrico, mentre la riga 37 serve per riportare l’omografia nello spazio 3D originale prima del precondizionamento. Le motivazioni che ci spingono ad effettuare tali operazioni vengono descritte nel dettaglio nella sezione 6.1. 4 Omografia infinito Nella sezione precedente si è definita l’omografia indotta da un piano che si trova nella parte reale di P2 . Analogamente esiste anche un’omografia che viene indotta dal piano che giace all’infinito. Questa prende il nome di omografia infinito e ha la funzionalità di mappare i punti di fuga2 di una telecamera nei punti di fuga dell’altra. Ricordiamo che un punto di fuga è il luogo geometrico dell’immagine dove si incontrano tutte le rette proiettate che sono parallele nel sistema di riferimento mondo. Ponendo d → ∞ nell’equazione 11 si deriva la definizione di omografia infinito: H∞ = Kr RKl−1 . (15) Il termine di traslazione è sparito, quindi l’omografia dipende solo dalla rotazione della seconda telecamera. Questo fatto si rispecchia nella pratica osservando che i punti di fuga rimangono fissi se si applicano traslazioni alla telecamera. L’esempio più classico che si può riportare riguarda ciò che succede quando si guarda fuori dal finestrino di un treno che si muove in moto rettilineo. Se si fissano le montagne all’orizzonte si nota che rimangono ferme per un periodo di tempo molto lungo. Ovviamente le montagne non sono oggetti che giacciono all’infinito, perció dopo un periodo di tempo si muoveranno. 5 Parallasse Già nelle sezioni precedenti si descrive l’idea del concetto di parallasse. Ricordando che i punti appartenenti al piano soddisfano l’equazione mr ' HΠ ml , ci si può domandare cosa succede ai punti che non appartengono al piano. Questa domanda trova risposta nel parallasse che viene generato dall’omografia indotta da un piano. Per definirlo si ha bisogno di maneggiare l’equazione 1 nel seguente modo: 1 ζr mr = H∞ ml + er . ζl ζl 2 La (16) parola “punti di fuga” è una traduzione poco esplicativa dall’inglese di “vanishing points”. 7 Questa relazione deriva dall’equazione della retta epipolare, quindi non è limitata per i punti M che appartengono al piano come l’equazione 11. Il mapping tra un punto e il suo coniugato è composto da: • la proiezione attraverso l’omografia infinito H∞ ml e • una correzione di parallasse 1 ζl er . Si noti che se t = 0 nell’equazione 16 il termine di parallasse scompare, per come è definito l’epipolo. In questo caso, se la telecamera ruota intorno al suo centro non si genera parallasse, perciò tutti i punti coniugati sono messi in relazione tramite l’omografia infinito. Il parallasse ha la stessa direzione dell’epipolo, ma modulo che è l’inverso della distanza ζl tra M e ml . In altre parole punti che stanno molto lontani dalla telecamera hanno un parallasse molto piccolo. D’altra parte punti che sono vicini al piano immagine hanno un parallasse grande. Seguendo questo ragionamento si può vedere il parallasse di un immagine come un campo vettoriale, i cui vettori puntano tutti verso l’epipolo e il loro modulo dipende dalla profondità dei punti in modo inversamente proporzionale. L’equazione 16 viene definita in modo dipendente al piano all’infinito. Avrebbe più senso generalizzarla in modo da ottenere una relazione che è definita per qualsiasi piano. Dall’equazione 11 si ottiene: t · nT Kl−1 (17) H∞ = HΠ − Kr d dalla quale: ζr mr = HΠ ml + γer ζl con γ = a d·ζl (18) dove a è la distanza tra M e il piano. L’equazione 18 ci dice che quando un punto M giace sul piano si ha mr ' HΠ ml (eq. 6). Altrimenti è presente uno spostamento residuo, chiamato parallasse, il cui modulo risulta proporzionale a γ ed è orientato nella direzione della retta epipolare. Si noti che l’equazione 18 è sempre il vincolo epipolare, quindi rappresenta il vincolo di collinearità tra tre punti, che in questo caso sono: mr , HΠ ml e er . Formalmente si ha mTr (er × HΠ ml ) = 0 e portandolo in forma bilineare con la conversione prodotto esterno in prodotto matriciale si ottiene la matrice fondamentale: F ' [er ]× H. Questa è la dimostrazione della derivazione della formula 10. In seguito si descrive prima la tecnica per stimare l’epipolo e poi per stimare il parallasse. 5.1 Stima dell’epipolo L’equazione 18 è caratterizzata dalla presenza dell’epipolo della vista destra. Visto che per la stima del parallasse si utilizzerà proprio questa relazione, risulta necessaria un’operazione preliminare per calcolare er . Per definizione l’epipolo destro è la proiezione del centro ottico della telecamera sinistra nel piano immagine di destra. Inoltre è il punto di intersezione di tutte le rette epipolari (nel caso ideale senza rumore). Si sfrutta questa proprietà per il suo calcolo. 8 Data un omografia HΠ tra due viste e due coppie di punti coniugati (m0l ↔ m0r e m1l ↔ m1r ) non appartenenti al piano Π, si ha la stima dell’epipolo come segue: er = (HΠ m0l × m0r ) × (HΠ m1l × m1r ). (19) È definito come l’intersezione tra la retta che passa per HΠ m0l (proiezione di m0l nella telecamera destra) e m0r e la la retta che passa per HΠ m1l e m1r . La figura 2 rappresenta la situazione appena descritta. Si noti che l’epipolo è definito a Figura 2: Stima dell’epipolo meno di un fattore di scala, perché anche per questo punto vale l’equazione 6. In seguito viene riportato il codice Matlab che implementa la stima dell’epipolo: Stima dell’epipolo 2 4 6 8 10 12 14 16 18 function e r = e p i p o l e E s t i m a t i o n (H, ml , mr ) er =[]; i f ( s i z e ( ml , 2 ) ˜ = 2 | | s i z e ( mr , 2 ) ˜ = 2 ) f p r i n t f ( ’ E r r o r e : t r o p p i p u n t i ( ne b a s t a n o due ) \n ’ ) ; return end i f ( s i z e ( ml , 1 ) ˜ = 2 | | s i z e ( mr , 1 ) ˜ = 2 ) f p r i n t f ( ’ E r r o r e : c o o r d i n a t e non c a r t e s i a n e \n ’ ) ; return end % rendiamo omogenee l e c o o r d i n a t e ml = [ ml ; o n e s ( 1 , s i z e ( ml , 2 ) ) ] ; mr = [ mr ; o n e s ( 1 , s i z e ( mr , 2 ) ) ] ; % calcoliamo l ’ epipolo e r = c r o s s ( c r o s s (H∗ml ( : , 1 ) , mr ( : , 1 ) ) , . . . c r o s s (H∗ml ( : , 2 ) , mr ( : , 2 ) ) ) ; e r = e r . / e r ( end ) ; er = er ( 1 : 2 ) ; Le prime righe sono semplici controlli sulla dimensione dei punti che vengono inseriti dall’utente, simili a quelli per la stima dell’omografia. In particolare il primo controllo è necessario perché per calcolare l’epipolo si ha bisogno solo di due coppie di punti, oltre all’omografia. Il cuore di tale funzione sta nelle ultime tre righe: qui si implementa l’equazione 19 (cross è il prodotto esterno). L’operazione successiva è quella di normalizzazione, allo scopo di rendere omogenee le coordinate dell’epipolo. Infine si prendono solo le prime due componenti (u, v), le quali rappresentano le coordinate dell’epipolo nell’immagine. 9 5.2 Stima del parallasse Una volta calcolato l’epipolo, si hanno tutti gli elementi necessari per stimare il parallasse. Ci si può chiedere: perché si deve stimare il parallasse? Non si può usare direttamente la formula vista precedentemente per calcolare γ? Queste domande trovano risposta nella definizione che abbiamo visto precedentemente: a γ = d·ζl . Le variabili che entrano in gioco implicano la conoscenza a priori della distanza tra un punto M e il piano Π. Per avere tali informazioni si dovrebbe conoscere la geometria dell’intera scena (piano, telecamera, ecc.). Questi dati non si conoscono, perciò si deve stimare il parallasse seguendo una strada alternativa. Si parte proprio dall’equazione 18 e si ottiene: HΠ ml = −γer + ζr mr , ζl (20) la quale ha una forma nota: l’equazione vettoriale. Si riesce a riconoscere perché HΠ ml , er e mr sono collineari, quindi almeno un vettore è linearmente dipendente dagli altri. Si può dimostrare che l’equazione vettoriale (con γ e ζζrl incognite) si risolve con la seguente formula: γ= (HΠ ml × mr )T (mr × er ) 2 ||mr × er || . (21) Si noti che anche il modulo del parallasse è definito a meno di un fattore di scala, proprietà “ereditata” dall’omografia e dall’epipolo. In una possibile accezione, il parallasse può essere interpretato come la profondità rispetto al piano di riferimento Π nel caso di telecamere non calibrate. Per questo motivo verrà utilizzato per determinare quando un generico punto passa da una parte del piano all’altra. Come nel caso della stima dell’epipolo, l’implementazione della stima del parallasse è una semplice traduzione di una formula: Stima del parallasse 2 4 6 8 10 12 14 16 18 function gamma = p a r a l l a x E s t i m a t i o n (H, e r , ml , mr ) i f ( s i z e ( ml , 2 ) ˜= s i z e ( mr , 2 ) ) f p r i n t f ( ’ E r r o r e : n d i p u n t i non c o r r i s p o n d o n o \n ’ ) ; return end i f ( s i z e ( ml , 1 ) ˜ = 2 | | s i z e ( mr , 1 ) ˜ = 2 ) f p r i n t f ( ’ E r r o r e : c o o r d i n a t e non c a r t e s i a n e \n ’ ) ; return end % rendiamo omogenee l e c o o r d i n a t e ml = [ ml ; o n e s ( 1 , s i z e ( ml , 2 ) ) ] ; mr = [ mr ; o n e s ( 1 , s i z e ( mr , 2 ) ) ] ; er = [ er ; 1 ] ; % stima d e l p a r a l l a s s e f o r i = 1 : s i z e ( ml , 2 ) gamma( i ) = c r o s s (H∗ml ( : , i ) , mr ( : , i ) ) ’ ∗ . . . c r o s s ( mr ( : , i ) , e r ) / (norm( c r o s s ( mr ( : , i ) , e r ) ) ˆ 2 ) ; end L’equazione 21 viene implementato nelle ultime tre righe. Si nota che viene computata per ogni coppia di corrispondenze, le quali vengono acquisite per ogni frame della sequenza ad istanti temporali successivi. Il comando norm rappresenta la norma Euclidea. 10 Ora sono stati presentati tutti gli strumenti necessari che vengono utilizzati in una particolare applicazione: la rilevazione del goal fantasma. 6 Applicazione: Rilevazione del goal “fantasma” In questa sezione si studia un’applicazione specifica della visione computazionale. In particolare si presenta un esempio “giocattolo” per analizzare le potenzialità degli strumenti messi a disposizione da questa disciplina, i quali sono applicabili in contesti più significativi e interessanti rispetto al caso in esame. Date diverse sequenze di immagini, rappresentanti la stessa scena e acquisite da due punti di vista differenti, si vuole rilevare quando un oggetto oltrepassa un piano. In particolare la scena raffigura una porta di un campo da calcio, la quale delinea il piano che genera l’omografia. L’azione in tale contesto si articola con un calcio di rigore. L’obiettivo è di rilevare quando (in termini di frame) il pallone entra in porta (goal). Per pervenire a tale obiettivo si utilizzano gli elementi teorici che sono stati descritti sopra. In particolare il goal finale è il calcolo del parallasse per ogni frame della sequenza. Nel momento in cui si ha un cambio di segno del parallasse, allora si è rilevato il passaggio del pallone dall’altra parte del piano. La figura 3 definisce le varie fasi del lavoro, che rispecchiano le parti principali del codice implementato. Inizialmente si carica la sequenza di immagini, che nel (0) Caricamento delle immagini Denizione 4 corrispondenze nel piano Denizione 2 corrispondenze fuori dal piano Per ogni frame denizione 1 corrispondenza sull'oggetto (1) Stima dell'omograa (2) Stima dell'epipolo (3) Stima del parallasse Verica dell'omograa Verica dell'epipolo Veriifca cambio di segno Figura 3: Schema procedurale del codice che implementa la rilevazione del goal caso specifico sono cinque immagini per ogni telecamera, dieci in totale quindi. La loro risoluzione è relativamente alta (1280 × 960), perché si ha bisogno di precisione nella definizione delle corrispondenze. Per calcolare l’omografia, è necessario trovare almeno quattro corrispondenze tra l’immagine destra e quella sinistra. La selezione di tali coppie di punti potrebbe essere fatta seguendo due approcci: • manuale: i punti vengono selezionati dall’utente attraverso l’interazione con un’interfaccia; 11 • automatico: definendo un criterio di similarità, si trovano quali porzioni di immagine (finestre) sono simili nelle due viste. Il primo approccio è il più semplice, poiché l’utente è in grado di decidere correttamente quali punti definiscono delle corrispondenze. D’altra parte non li può selezionare con precisione elevata, causando perciò errori. Viceversa non esiste un metodo generale per la risoluzione del secondo approccio; infatti le procedure da utilizzare dipendono fortemente dal problema in esame. Questo è un problema classico nella ingegnerizzazione di sistemi automatici. Un possibile procedimento per trovare in modo automatico le corrispondenze appartenenti al piano (porta) è quello di inserire dei marcatori nella scena e poi ridentificarli. In questo lavoro, si adotta l’approccio di selezione manuale delle corrispondenze. Inoltre si noti che i punti vengono selezionati sulla prima immagine destra e sinistra della sequenza, perché le telecamere sono fissate e il piano è statico. Selezionate le quattro coppie di punti corrispondenti sul piano si passa al calcolo dell’omografia utilizzando l’algoritmo presentato nella sezione 3.1. Una fase opzionale è la verifica della correttezza dell’omografia. Per realizzare questo controllo si considerano i punti selezionati da una vista e li si proiettano nella vista opposta. Siano ml e mr due punti coniugati, e sia mlp ' Hml la proiezione di ml sull’immagine destra; l’omografia è corretta se mlp = mr , o meglio se la distanza tra i due punti è minima. Viceversa sia mrp ' H −1 mr la proiezione di mr nell’immagine sinistra, allora l’omografia è corretta se mrp = ml . Le figure 4 e 5 confermano effettivamente che l’omografia è corretta. (a) Punti originali (b) Punti proiettati a destra Figura 4: Immagini che verificano la correttezza dell’omografia (punti rossi). Per la stima dell’epipolo occorrono due coppie di punti coniugati che non appartengono al piano. Le corrispondenze possono essere selezionate adottando uno dei due criteri elencati sopra. Quindi si stima l’epipolo utilizzando l’algoritmo riportato nella sezione 5.1. Per verificare la correttezza della stima si segue il procedimento per disegnare le rette epipolari in figura 2: si disegna la retta passante per m0r e Hm0l e la retta passante per m1r e e Hm1l . L’intersezione tra le due rette definisce l’epipolo. Si può adottare la stessa tecnica opportunamente adattata per la verifica dell’epipolo sinistro. Si ha la conferma della correttezza dell’epipolo in figura 6. Dopo la stima dell’omografia e dell’epipolo, si passa al calcolo del parallasse per ogni frame della sequenza, al fine di trovare quando il pallone attraversa 12 (a) Punti proiettati a sinistra (b) Punti originali Figura 5: Immagini che verificano la correttezza dell’omografia (punti blu). (a) Rette epipolari sinistre (b) Rette epipolari destre Figura 6: Immagini che verificano la correttezza dell’epipolo destro. 13 la porta. L’utente seleziona i punti coniugati sul pallone per ogni immagine. Si assume che l’oggetto sia puntiforme, quindi per essere precisi si consiglia di selezionarli nel suo centroide. Nella sezione 5.2 si trova l’implementazione del codice per calcolare il parallasse che ha come input i punti selezionati su tutti i frame. Ricordando che il parallasse definisce una sorta di distanza di un punto dal piano, si vuole trovare il frame in cui vi è un cambio di segno. Quindi si crea un grafico in cui sull’asse delle ascisse c’è il tempo (in frame) e sull’asse delle ordinate c’è il valore del parallasse. In figura 7 si può vedere un esempio: la spezzata blu definisce il parallasse dal primo al quinto frame. Il parallasse è stato calcolato a passi discreti, mentre tra un frame e l’altro si ha una interpolazione lineare. Si nota che il goal viene rilevato tra il frame 3 e 4 (zero-crossing: intersezione della spezzata blu e rossa). Figura 7: Verifica zero-crossing del parallasse. In seguito vediamo che problemi pratici sono sorti nello studio del caso in esame. 6.1 Problemi pratici Analizzando la tecnica per la rilevazione del goal fantasma si sono incontrati diversi problemi. Alcuni molto semplici da risolvere, derivati da problemi pratici nell’implementazione dei metodi. Vale la pena di analizzare dettagliatamente il precondizionamento. In presenza di rumore o errore gaussiano nei dati in ingresso, l’accuratezza della soluzione del sistema lineare dipende dal numero di condizionamento. Più è basso meno l’errore sarà amplificato, ovvero il sistema risulta più stabile. È stato dimostrato che gli algoritmi del tipo DLT sono fortemente mal condizionati. Banalmente se si prende per esempio la stima dell’omografia, si nota che i valori della matrice H variano da 1 a 104 circa. Nella pratica, quando si applica l’algoritmo presentato nella sezione 3.1 (senza precondizionamento) si può notare che il numero di condizionamento è dell’ordine di 105 o 106 . Tali valori non possono 14 essere trascurabili per motivi di precisione nel calcolo del parallasse. Se già alla prima fase vi è un errore notevole, allora questo verrà ulteriormente amplificato nelle fasi successive, compromettendo la soluzione del problema. Hartley in un suo lavoro ha dimostrato che attraverso un semplice cambio di coordinate ed un riscalamento delle corrispondenze il numero di condizionamento diminuisce drasticamente. In pratica si deve effettuare una traslazione del sistema di riferimento centrato in alto a sinistra, in un nuovo sistema di riferimento la cui origine si trova nel centroide dei punti considerati per risolvere il sistema. Poi si √ normalizzano le coordinate in modo che la loro distanza media dall’origine sia 2. Tale soluzione porta ad un ulteriore vantaggio oltre al miglioramento dell’accuratezza: si ha un invarianza a trasformazioni di similarità nel piano immagine. La funzione che implementa tale trasformazione è precond2, la quale prende in ingresso i punti e restituisce i punti trasformati e la trasformazione effettuata (T ). Tale funzione viene chiamata nel calcolo dell’omografia, la quale non è più definita per i punti originali, ma per i punti trasformati. Quindi per riportare l’omografia nello spazio originale si opera la seguente operazione: H = Tr−1 Hp Tl (22) dove Tr e Tl sono rispettivamente le trasformazioni per i punti dell’immagine destra e sinistra e Hp è l’omografia calcolata sui punti precondizionati. Nel caso in esame il precondizionamento ha portato ad un miglioramento del numero di condizionamento, il quale è sceso da un ordine di 105 circa a un ordine di 10 circa. Perciò si è ottenuto un notevole miglioramento della stabilità del sistema lineare, che si è tradotto in un precisione migliore nel calcolo del parallasse. Un’altra fase che risulta necessaria quando si manipolano i dati reali, è la minimizzazione dell’errore geometrico. In generale gli algoritmi che trovano una soluzione ai minimi quadrati minimizzano l’errore algebrico, il quale non ha un vero significato geometrico se non per casi particolari. Perchè preferire un errore geometrico? I motivi sono diversi: i residui che si minimizzano hanno un significato, la soluzione è più stabile ed invariante a trasformazioni Euclidee. Di solito per fare ciò si utilizza un algoritmo di discesa del gradiente. Queste tecniche dipendono fortemente dal punto di partenza da dove si inizia la discesa lungo la funzione da minimizzare. Perciò si possono trovare minimi locali, i quali non rappresentano la soluzione del sistema. Per evitare questo problema si usa come punto di partenza la soluzione trovata dall’algoritmo DLT e si suppone che la soluzione trovata non si troppo distante dalla vera soluzione. In questo modo si ottengono prestazioni ottimali. Nel caso specifico dell’omografia si vuole minimizzare: X min d(Ĥmjl , mjr )2 + d(Ĥ −1 mjr , mjl )2 . (23) Ĥ j dove d è la distanza tra coordinate omogenee. In pratica si minimizza la distanza tra i punti e le rispettive proiezioni nelle viste opposte. Si è visto che nell’algoritmo per la stima dell’omografia si richiama fminsearch la quale minimizza la funzione geoErr rispetto H. Di seguito si riporta l’implementazione Matlab dell’errore geometrico: 2 function f = g e o E r r (H, ml , mr ) f = 0; 15 4 6 8 10 12 14 16 % punti p r o i e t t a t i a destra e s i n i s t r a Hml = H∗ml ; Hml = Hml . / repmat ( Hml ( end , : ) , 3 , 1 ) ; invHmr = inv (H) ∗ mr ; invHmr = invHmr . / repmat ( invHmr ( end , : ) , 3 , 1 ) ; % c o o r d i n a t e c a r t e s i a n e p e r c a l c o l a r e l a norma Hml = Hml ( 1 : 2 , : ) ; invHmr = invHmr ( 1 : 2 , : ) ; ml = ml ( 1 : 2 , : ) ; mr = mr ( 1 : 2 , : ) ; % c a l c o l o d e l l ’ errore geometrico f o r i = 1 : s i z e ( mr , 2 ) tmp = norm( Hml ( : , i )−mr ( : , i ) ) ˆ 2 + norm( invHmr ( : , i )−ml ( : , i ) ) ˆ 2 ; f = tmp + f ; end In particolare si può notare che vengono calcolate le norme utilizzando le coordinate cartesiane, previa normalizzane e eliminazione dell’ultima componente. Questo perché non è definita la distanza Euclidea per le coordinate omogenee. 7 Conclusioni Questo lavoro analizza alcuni aspetti geometrici specifici di una disciplina molto vasta. Perciò si è cercato di analizzare e toccare con mano una minima parte di operazioni funzionali all’applicazione realizzata. I risultati ottenuti nella rilevazione del goal fantasma sono abbastanza soddisfacenti, ricordando però che sono state fatte molte approssimazioni per rendere il problema facilmente risolvibile. Per esempio la procedura di selezione dei punti potrebbe essere automatizzata in modo da rendere l’intero processo completamente automatico. Un’altra semplificazione riguarda la staticità delle telecamere e del piano; in un contesto reale possono essere dinamici, quindi l’omografia andrebbe calcolata periodicamente. L’approssimazione del pallone ad un punto è un ulteriore facilitazione. Nonostante ciò il lavoro non è mancato di problemi. 16