applicazione dei modelli deformabili alla digitalizzazione 3d passiva
Transcript
applicazione dei modelli deformabili alla digitalizzazione 3d passiva
UNIVERSITÀ DEGLI STUDI DI PADOVA DIPARTIMENTO DI INGEGNERIA DELL’INFORMAZIONE TESI DI LAUREA APPLICAZIONE DEI MODELLI DEFORMABILI ALLA DIGITALIZZAZIONE 3D PASSIVA RELATORE: Prof. Guido Maria Cortelazzo CORRELATORE: Nicola Brusco LAUREANDO: Luca Ballan Padova, Aprile 2005 Indice 1 Digitalizzazione 3D 1.1 Introduzione . . . . . . . . . . . . . 1.2 Metodi di digitalizzazione 3D . . . 1.2.1 Metodi ottici attivi . . . . . 1.2.2 Metodi ottici passivi . . . . 1.3 Il sistema preesistente . . . . . . . 1.4 Il sistema proposto . . . . . . . . . 1.4.1 Analisi degli errori di misura . . . . . . . 1 1 2 3 5 11 12 13 . . . . . . . . . 17 18 19 20 21 24 24 25 28 29 3 Il problema Silhouette-Stereo Fusion 3.1 La fusione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Camere e superfici 2.1 Le k-varietà . . . . . . . . . . . . . . . . . . . 2.1.1 Il concetto di curvatura . . . . . . . . . 2.1.2 Caratteristiche delle parametrizzazioni 2.2 Le superfici discrete . . . . . . . . . . . . . . . 2.2.1 Un criterio di qualità per le mesh . . . 2.2.2 Operatori su mesh . . . . . . . . . . . 2.3 Il concetto di vista . . . . . . . . . . . . . . . 2.4 Il contorno . . . . . . . . . . . . . . . . . . . . 2.5 Il visual hull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 3.1.1 L’introduzione di ξ silhouette . . . . . . . . . . . . . . . . . . I modelli deformabili . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Risolviamo il nostro problema: Modelli Parametrici o Gradient Descent . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Ricaviamo le forze . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Il problema delle concavità: il GVF . . . . . . . . . . . . . 4 I dettagli implementativi 4.1 Il calcolo del Gradient Vector Flow . . . . . 4.1.1 Modifiche introdotte . . . . . . . . . 4.1.2 La struttura 2n -tree . . . . . . . . . . 4.2 Il calcolo delle forze di Silhouette . . . . . . 4.2.1 Comparazione . . . . . . . . . . . . . 4.2.2 Comparazione con la nuova Fsilhouette 4.3 Le forze interne . . . . . . . . . . . . . . . . 4.4 L’evoluzione . . . . . . . . . . . . . . . . . . 4.5 Il modello iniziale . . . . . . . . . . . . . . . 4.6 Remeshing . . . . . . . . . . . . . . . . . . . 35 38 42 46 50 . . . . . . . . . . 55 56 60 61 66 70 73 73 76 78 79 5 Silhouette-Stereo-Shadow Fusion 5.1 Self-Shadow detection . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Shadow-Carving . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Silhouette-Stereo-Shadow Fusion . . . . . . . . . . . . . . . . . . . 83 83 84 86 6 Risultati 6.1 Hardware e procedura . 6.1.1 La rana . . . . . 6.1.2 Il buddha . . . . 6.1.3 La venere di Milo 6.1.4 Il cubo . . . . . . 89 89 90 90 95 97 7 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Sommario In letteratura esistono diversi metodi per la ricostruzione della forma di un oggetto di cui si dispone di sole fotografie dello stesso. Ognuno di essi si distingue in base al tipo di informazione estratta dalle varie foto e utilizzata nel processo di ricostruzione. La tendenza attuale è quella di realizzare digitalizzatori 3D definiti multimodali, ovvero sistemi in grado di utilizzare assieme più tipi di informazione. Due sono le caratteristiche che li rendono particolarmente interessanti: la robustezza agli errori e l’ampio range di oggetti ricostruibili. Infatti la possibilità di misurare una stessa regione con metodi differenti, ci permette di compensare l’assenza di un tipo di informazione e di rilevare e correggere errori che l’uno o l’altro metodo possono generare. In letteratura esistono tre recenti articoli che descrivono sistemi di fusione silhouette-stereo, silhouette-shadow e stereo-shading. Scopo di questa tesi è quello di progettare e realizzare un sistema di digitalizzazione 3D ottica passiva multimodale che utilizzi le informazioni di tessitura, silhouette e di self-shadow. In particolare verrà definito il problema della fusione di queste informazioni come un problema di minimo variazionale nel dominio delle sotto-varietà chiuse di <3 . La superficie finale sarà quindi un punto di minimo per un funzionale particolare che penalizza superfici poco regolari e non consistenti con i dati rilevati. Tale problema verrà infine risolto tramite un algoritmo di discesa del gradiente sulle equazioni di eulero-lagrange relative. In letteratura questo approccio viene denotato con il termine deformable models, perché la sua evoluzione coincide con la deformazione nel tempo di una superficie soggetta a forze di origine interna o esterna. La scelta di tale approccio è dovuta al fatto che in questo modo si possono controllare sia le caratteristiche parametriche che quelle geometriche della varietà finale. Le scelte di progettazione comprendono l’uso del Gradient Vector Flow di C. Xu al fine di sopperire al problema delle concavità, la definizione di una nuova forza di silhouette di origine variazionale e l’utilizzo della curvatura media come indice di regolarizzazione geometrica. Infine verranno presentati i risultati dei test eseguiti sia su modelli reali che sintetici valutandone qualità ed errori di ricostruzione. Quest’ultimi verranno successivamente confrontati con quelli ottenuti utilizzando metodi monomodali stereo-based (preesistente in laboratorio LTTM) o multimodali come il silhouettestereo [ES04] e lo shadow-carving [SSP01]. Capitolo 1 Digitalizzazione 3D 1.1 Introduzione Con il termine “digitalizzazione 3D” denotiamo il processo di cattura della geometria di un oggetto reale mediante l’uso di macchinari appositi. In letteratura troviamo moltissimi termini che rappresentano questo stesso concetto quali: fotogrammetria digitale, 3d scanning, range acquisition, shape acquisition, 3d model acquisition, rangefinding e range scanning. Le sue applicazioni sono molteplici e aumentano di anno in anno man mano che la tecnologia permette realizzazioni sempre più veloci, precise e automatiche. Queste spaziano dall’ambito medico a quello della sicurezza, dalla conservazione del patrimonio artistico all’intrattenimento visuale. In particolare in medicina le informazioni provenienti da processi come TAC, MR, PET sono molto confuse e talmente poco intuitive che richiedono una grossa esperienza per essere comprese. La possibilità quindi di trasformare questi dati in un modello 3d, dà la possibilità all’operatore di analizzare un qualsiasi organo come se lo avesse in mano. In questo modo, si possono eseguire valutazioni numeriche sull’entità di una malattia e simulazioni di intervento o di cura senza dover nemmeno toccare il paziente. Inoltre l’ultima frontiera consiste nell’essere impiegato durante l’intervento stesso al fine di controllare l’effettivo risultato delle azioni eseguite. Nell’ambito industriale la digitalizzazione 3d viene utilizzata sia nella fase di progettazione, che in quella di test, dove il pezzo creato dal processo di produzione deve combaciare con il modello desiderato. Inoltre viene utilizzata con scopi di CAPITOLO 1. DIGITALIZZAZIONE 3D Digitalizzatori 3D senza contatto a contatto riflessivi ottici trasmissivi non ottici Figura 1.1: Classificazione dei metodi di digitalizzazione 3D. ingegneria inversa per ad esempio, ricostruire parti meccaniche realizzate quando ancora non esistevano strumenti CAD. Per quanto riguarda il patrimonio artistico, la possibilità di ricostruire siti archeologici e manufatti antichi o addirittura intere statue come il David di Michelangelo1 , dà l’opportunità ai ricercatori di analizzare queste informazioni anche a chilometri di distanza, oppure ai curiosi in generale, di avere un’esperienza di realtà immersiva nei luoghi culturali desiderati. Il settore dell’intrattenimento e dello spettacolo richiede sempre di più l’uso di queste tecniche sia per l’acquisizione di intere scene al fine di aggiungere ad esse effetti speciali sia per l’acquisizione di modelli in creta per essere successivamente animati in un film. 1.2 Metodi di digitalizzazione 3D Attualmente, esistono diversi metodi di digitalizzazione 3d. In figura [1.1] si propone una loro classificazione. Principalmente essi si caratterizzano in base al fatto che l’acquisizione necessiti o meno del contatto fisico con la superficie in esame. I digitalizzatori a contatto consistono tipicamente in sonde che riescono a 1 Progetto iniziato nel ’97 e realizzato da un gruppo di ricercatori dell’università di Stanford e di Washington. 2 1.2. METODI DI DIGITALIZZAZIONE 3D rilevare la loro posizione nello spazio. In alcuni casi, esse sono composte da un singolo braccio snodato in grado di muoversi su un qualsiasi asse, in altre invece, sono delle vere e proprie macchine (come nel caso delle Coordinate Measuring Machines CMM) che vanno a tastare la superficie nei punti di acquisizione. Ogni volta che la sonda tocca la superficie, ne viene registrata la sua posizione. Questo tipo di digitalizzatori è molto preciso ma oltre ad essere molto costoso, è lento e richiede la presenza continua di un operatore. Inoltre il fatto stesso che la sonda debba toccare l’oggetto fa si che sia inapplicabile su superfici fragili o inconsistenti. I digitalizzatori senza contatto invece, operano osservando le radiazioni di diversa natura provenienti dalla superficie. Queste radiazioni possono essere riflesse dall’oggetto o trasmesse dallo stesso. Un approccio trasmissivo allo shape acquisition viene realizzato tramite la famosa tomografia assiale computerizzata (o TAC). Essa consiste nel bombardare con raggi X l’oggetto e misurarne la quantità di radiazione che gli passa attraverso. In questo modo otterremo una descrizione molto accurata della densità di materia presente nell’oggetto stesso. A differenza dei metodi riflessivi, i metodi trasmissivi riescono a catturare concavità interne dell’oggetto non sono visibili dall’esterno. Inoltre essi sono insensibili alle proprietà riflessive della superficie, vantaggio non di poco conto come vedremo fra un po’. D’altro canto però essi sono molto costosi e pericolosi per la salute, poiché fanno uso di materiali radioattivi. I metodi riflessivi invece si distinguono in ottici o meno. Quest’ultimi includono i sonar e i radar (RAdio Detecting And Rangig), che tipicamente valutano la distanza dall’oggetto misurando il tempo richiesto da un impulso sonar o di micronde per arrivare all’oggetto ed essere riflesso indietro sino alla sorgente. In più, informazioni come l’ampiezza e la frequenza del segnale di ritorno possono essere utilizzate per affinare le misurazioni. I sensori sonar sono si economici ma anche lenti ed imprecisi. I radar invece, vengono tipicamente applicati per grandi superfici dove ottenendo risultati eccellenti. Quando si ha a che fare con oggetti di ridotte dimensione però, il tempo di andata/ritorno da misurare è molto piccolo e quindi anche disponendo di contatori precisi, l’errore di misura è grande e quindi anche quello sulla valutazione della distanza. Questo è il motivo per cui i radar non trovano applicazione nella digitalizzazione di piccoli oggetti. 1.2.1 Metodi ottici attivi I metodi ottici trattano onde elettromagnetiche dello spettro luminoso. Se quest’ultime sono generate e controllate da una sorgente ausiliaria, si parlerà di 3 CAPITOLO 1. DIGITALIZZAZIONE 3D ottici passivi monomodali attivi multimodali triangolazione imaging radar interferometrici versione attiva di metodi passivi Figura 1.2: Classificazione dei metodi di digitalizzazione ottici. digitalizzatori attivi, in caso contrario di digitalizzatori passivi (figura [1.2]). Nei primi, la luce viene proiettata in modo strutturato (ovvero secondo un certo schema) e, misurando la distorsione che essa subisce una volta riflessa si determina la forma dell’oggetto. Il modo in cui viene calcolata l’informazione di profondità determina la sottoclasse di appartenenza del digitalizzatore. Imaging radar ad esempio, funziona con lo stesso principio del radar classico solo che a frequenza ottiche (in particolare si usa un raggio laser). I metodi interferometrici invece, operano proiettando uno segnale luminoso variabile sia nel tempo che nello spazio. Successivamente, il segnale riflesso viene mescolato con uno creato ad hoc, l’interferenza tra i due rivela la geometria della superficie. I digitalizzatori a triangolazione invece, sono i più diffusi e la loro struttura si può rappresentare schematicamente nella seguente figura. L’emettitore può essere una sorgente puntiforme o una striscia verticale o avere uno schema molto più complesso, inoltre può produrre luce coerente (laser) o incoerente (un normalissimo proiettore). Nel caso di sorgente puntiforme, il calcolo dell’esatta posizione di P nello spazio viene facilmente eseguita una volta noto l’angolo β. Esso viene calcolato in base alle coordinate di P nel piano 4 1.2. METODI DI DIGITALIZZAZIONE 3D immagine della telecamera e quindi, noti α, d con un po’ di trigonometria si riesce a determinare P . Se invece di proiettare un singolo punto si proietta una striscia verticale, si acquisiscono più punti contemporaneamente, inoltre il loro numero aumenta nel caso di più strisce. Questo tipo di digitalizzatori sono molto veloci ma presentano molte limitazioni quali: • La necessità di eliminare la luce ambientale, che altrimenti interferirebbe con quella generata dall’emettitore; • La superficie dell’oggetto deve avere una buona riflessione altrimenti ciò che giunge al sensore è indistinguibile dal rumore di fondo. Problemi si hanno con superfici troppo ruvide dove cioè, si ha troppa dispersione luminosa oppure, con superfici troppo scure dove invece si ha troppo assorbimento. • Inoltre essa non può essere ne speculare ne trasparente altrimenti vengono valutati punti provenienti da altre porzioni dell’oggetto o dal mondo esterno; • Come tutti i sensori ottici, tendono a sbagliare in presenza di concavità o zone d’ombra, ovvero nei punti in cui la luce non riesce ad arrivare. 1.2.2 Metodi ottici passivi Nei digitalizzatori ottici passivi invece, non vengono utilizzate sorgenti ausiliarie bensı̀ la luce riflessa dall’oggetto è di origine naturale. Solitamente le caratteristiche di questa sorgente sono sconosciute. Da notare quindi che questi macchinari non interagiscono in alcun modo con l’oggetto in esame, ne tramite un contatto fisico, ne tramite un irraggiamento. L’analisi dell’oggetto può essere quindi effettuata in base a delle informazioni prelevate da persone che non avevano assolutamente l’intenzione di digitalizzarlo, è sufficiente infatti, che esso sia stato fotografato da più punti. Questa caratteristica fa si che possano venir ricostruiti oggetti di cui attualmente se ne ha solo un’informazione fotografica. Inoltre, l’economicità dell’hardware (una semplice macchina fotografica) e la velocità nel prelevare i dati contraddistinguono questi metodi da tutti gli altri. Sfortunatamente però tutte queste caratteristiche si pagano in precisione del modello e tempo di calcolo. I relativi algoritmi infatti, sono molto complessi e possono impiegare ore e ore di elaborazione per un singolo oggetto. La precisione inoltre, come si vedrà più avanti, è strettamente legata alla risoluzione di acquisizione dell’immagine che allo stato attuale non raggiunge i livelli di alcuni sensori ottici 5 CAPITOLO 1. DIGITALIZZAZIONE 3D attivi. Rispetto a quest’ultimi inoltre, il fatto che l’analisi venga fatta in condizioni naturali, fa si che il rumore sia molto più elevato, queste condizioni infatti, son ben distanti da quelle ideali per l’acquisizione, che invece vengono quasi sempre ricreate nelle versioni attive. I digitalizzatori ottici passivi vengono a loro volta classificati in base al tipo di informazione che estraggono dall’immagine. Nel caso utilizzino più di una tipologia, verranno chiamati multimodali. Le informazioni solitamente estratte dall’immagine sono: 1. La silhouette dell’oggetto; 2. La sua ombreggiatura; 3. Le ombre che esso genera su se stesso; 4. La sua messa a fuoco; 5. Il suo colore. I metodi che utilizzano il primo tipo di informazione prendono il nome di shape-from-silhouette. Inizialmente introdotti da Baumgart nel 1974 sono stati successivamente formalizzati in una robusta teoria da Laurentini nell’articolo [Lau94], dove viene introdotto il concetto di visual-hull. Quest’ultimo è un upperbound della superficie in esame ed è contenuto nel convex-hull della superficie stessa. Questi metodi sono veloci e robusti ma possono descrivere perfettamente solo una piccolissima famiglia di oggetti, quelli ovvero il cui visual-hull corrisponde con l’oggetto stesso. Il secondo tipo di informazione invece, unito a diverse ipotesi sulla natura della sorgente luminosa e approssimazioni sulle caratteristiche riflessive dell’oggetto, ci permette di stimare le normali alla superficie nei sui punti visibili. Quindi, supponendo una certa regolarità di quest’ultima, possiamo calcolarne la posizione dei suoi punti tramite metodi di integrazione. Questi algoritmi prendono il nome di shape-from-shading [Hor90]. La versione più semplice di questo tipo di digitalizzatori, suppone una sorgente luminosa puntuale e una superficie puramente lambertiana. Queste condizioni vengono raggiunte quando la sorgente è posta molto lontano dall’oggetto e quest’ultimo è opaco (come ad esempio un vestito, un tappeto, ecc...). In tal caso la radiazione emessa da uno qualsiasi dei suoi punti è uguale in ogni direzione, o meglio essa dipende solo dall’angolo θ formato dalla direzione del raggio luminoso di intensità IL e la normale alla superficie nel 6 1.2. METODI DI DIGITALIZZAZIONE 3D punto di incidenza secondo la legge di Lambert: I = kIL cos θ (1.1) dove k è la riflettanza diffusa del materiale. La ricostruzione della superficie avviene integrando lungo la direzione del raggio luminoso L e il risultato sarà un’immagine 2.5D che corrisponderà alla superficie originale a meno di una traslazione in profondità. Negli articoli [SSP01], [DD98], [HK88] vengono presentati degli algoritmi in grado di stimare la forma di un oggetto osservando le ombre sulla sua superficie (Shape-from-self-shadowing). In particolare in [SSP01] quel che viene ricostruito è un upper-bound dell’oggetto originale, contenuto nel visual-hull dello stesso. Infatti l’algoritmo, che non a caso viene chiamato shadow-carving, prende come stima iniziale il visual-hull dell’oggetto ed elimina da esso tutto quel volume la cui presenza è in contraddizione con le ombre osservate. Come nel shape-fromshading, anche qui abbiamo bisogno di stimare inizialmente la posizione della sorgente luminosa nello spazio. Da notare inoltre, che questo metodo richiede la capacità di individuare le zone d’ombra sulla superficie dell’oggetto. Abilità che, in generale non è semplice da implementare e che per molti oggetti è improponibile. Infatti non è sempre possibile affermare con certezza che una zona scura dell’immagine corrisponda ad un’ombra che l’oggetto proietta su se stesso: essa potrebbe corrispondere ad una regione dell’oggetto a bassa riflettanza (di colore scuro). Concludiamo quindi che questo metodo è applicabile a soli oggetti in cui è semplice rilevare una zone d’ombra ovvero, quelli ad alta riflettanza (chiari). Per quanto riguarda i metodi che utilizzano il quarto tipo di informazione, si deve tener presente che l’immagine di un punto è sfuocata in modo proporzionale alla sua distanza dal piano a fuoco della camera (contenente cioè, tutti i punti messi a fuoco). Questa distanza tra l’altro, è uguale, a meno di una costante additiva, alla distanza di tale punto dal piano retinale della camera e quindi, coincide con l’informazione di profondità. Per eseguire una buona misurazione della sfocatura però, abbiamo bisogno di superfici con tessitura nitida. Photo-consistency Il quinto tipo di informazione si riferisce alle proprietà spettrali della riflettanza del materiale, ovvero al suo colore. I metodi relativi, funzionano bene per oggetti in cui queste proprietà variano frequentemente e velocemente lungo la loro superficie, ovvero quando essi presentano buone tessiture (figura [1.3a]). In tal caso infatti, è possibile riconoscere se due punti provenienti da immagini differenti 7 CAPITOLO 1. DIGITALIZZAZIONE 3D Figura 1.3: a) Ricostruzione in marmo della parte superiore della venere di milo: essa presenta una buona tessitura, ottima per i metodi stereo. b) Elmo greco: presenta una buona tessitura ma ha un’elevata riflettanza speculare. c) Cavallo: nessuna tessitura e discreta riflettanza speculare. corrispondono alla proiezione di uno stesso punto p della superficie dell’oggetto, osservando le proprietà di riflettanza di p e quelle dei suoi vicini. Una volta trovata questa corrispondenza si può operare con una triangolazione al fine di stimare la sua posizione nello spazio. I metodi che utilizzano questo tipo di informazione vengono chiamati “stereo-matching”. Sono però presenti due grossi problemi: 1. Non è sempre possibile misurare con accuratezza queste proprietà; 2. Vi possono essere due o più punti sulla superficie dell’oggetto con caratteristiche di riflettanza indistinguibili dallo strumento di misura. In tal caso, la triangolazione viene eseguita su coppie di punti non in corrispondenza fisica tra loro, con conseguente errore di valutazione della profondità. Questo errore prende in nome di errore di matching (vedi figura [1.7]). Quel che possiamo misurare, osservando le foto dell’oggetto in esame, è la luce riflessa dalla sua superficie. Questa, nel caso lambertiano è direttamente proporzionale alle proprietà spettrali di riflettanza (vedi [1.1]). Ciò significa che, se la sorgente luminosa è fissa rispetto all’oggetto, la luce misurata nelle varie foto avrà caratteristiche uguali se proveniente da uno stesso punto della superficie. Non è quasi mai vero il contrario, come esplicato dal punto due. L’uso delle caratteristiche spettrali della luce anziché della sua intensità, elimina in parte la necessità di avere un oggetto con una buona riflessione (condizione necessaria per 8 1.2. METODI DI DIGITALIZZAZIONE 3D molti digitalizzatori ottici). Infatti punti scuri possono comunque esser messi in corrispondenza con altri punti in altre foto, tanto ne si confronta solo il colore. Questa proprietà ci permette di rilevare le corrispondenze anche quando la sorgente luminosa non è fissa rispetto all’oggetto nelle varie foto. E’ comunque necessario però, che la luce riflessa abbia un’intensità tale da poter esser confrontata nella varie foto: superiore ovvero, al rumore di misura. Quindi i punti poco illuminati della superficie difficilmente vengono registrati con questi metodi. Vengono escluse, ad esempio, le zone d’ombra (concavità ecc...) o regioni lontane dalla sorgente luminosa. Nel caso di superfici speculari (non lambertiane), la luce riflessa può presentare alcuni picchi di intensità che, saturando il sensore, impediscono la corretta rilevazione del colore. Inoltre essendo la loro posizione sulla superficie dell’oggetto fortemente dipendente da quella dell’osservatore, sono causa di numerosi errori di matching. Dato che le posizioni delle camere sono note a priori oppure stimate con metodi di autocalibrazione, il problema della ricerca della corrispondenza di un dato punto viene limitata all’interno della retta epipolare relativa. Quest’ultima non è altro che la proiezione sulla seconda immagine della retta passante per il centro focale della prima camera e per il punto in esame. Il fatto che la ricerca sia monodimensionale diminuisce fortemente la probabilità che avvenga un errore di matching. Quest’ultima però non viene comunque annullata: si pensi ad esempio a superfici con tessiture ripetitive o a bassa varianza. Gli approcci multimodali I metodi multimodali, come già accennato, ricostruiscono la superficie estraendo più di un tipo di informazioni dall’immagine. Questo genere di approccio, di recente formulazione, si propone di sopperire ai problemi generati dall’uso di un solo tipo di informazione. Infatti, come già osservato, vi sono metodi che si comportano bene in situazioni dove altri stentano e male in situazioni dove gli altri funzionano tranquillamente. L’idea base è che le informazioni che uno non riesce ad misurare, vengono estratte dall’altro e viceversa. Questi metodi quindi si prestano a ricostruire un vasto range di oggetti, eliminando i soliti vincoli presenti nei metodi monomodali. Inoltre la possibilità di misurare una stessa informazione con metodi differenti, ci permette di attenuare gli errori che l’uno o l’altro metodo possono generare. Riassumiamo quindi le caratteristiche che rendono questi metodi vincenti: 1. Robustezza agli errori; 9 CAPITOLO 1. DIGITALIZZAZIONE 3D 2. Ampio range di oggetti ricostruibili. Con il principio introdotto dai metodi multimodali, possiamo fondere ogni combinazione di informazione estraibile da una foto. Più informazioni estraiamo dal nostro oggetto e più precisa sarà la sua acquisizione. Ovviamente tutto ciò va a scapito del tempo di calcolo e della complessità degli algoritmi. Questi metodi infatti, necessitano di una stadio di fusione dei dati non trascurabile. Rimane allora il problema di come fondere assieme tutte queste informazioni. I metodi presenti in letteratura seguono sostanzialmente due tendenze sul modo di fondere queste informazioni: • La prima, denominata Carving, consiste nell’utilizzare un primo tipo di informazione per creare un modello che sovrastimi l’oggetto reale. Questo è il caso, ad esempio, delle silhouette e delle ombre. Successivamente il modello viene scavato nei punti che creano inconsistenza con il secondo tipo di informazione. Ovviamente il processo si può ripetere per un terzo tipo di informazione e cosı̀ via. Le informazioni di carving possono essere l’ombra dell’oggetto [SSP01] o la sua tessitura [SD00], [KNK00], [YMK99]. I metodi di carving si basano sul volume dell’oggetto e non sulla sua superficie, quest’ultima infatti viene ricostruita solo alla fine del processo. Lo spazio viene quindi discretizzato in voxel di diverse dimensioni che possono essere occupati o meno dal modello. Questa discretizzazione fa si che la superficie finale non sia regolare ne abbia un bel aspetto. Un’altro svantaggio di questo metodo è che esso suppone che ambedue le informazioni non siano soggette ad errori. Se infatti lo fossero, non ci sarebbe modo di recuperare il volume perso da un carving errato. Si pensi ad esempio ad un errore di estrazione delle silhouette o una stima errata sulla profondità di un pixel. • La seconda invece, formalizza il problema della fusione come un problema di minimo. Questo tipo di approccio, anche se banalmente generico, prende il nome di deformable models methods. L’obbiettivo è quello di minimizzare una funzione di costo che tiene conto di tutte le informazioni estratte coi vari metodi monomodali. L’algoritmo quindi, si complica parecchio e aumenta notevolmente il suo tempo di calcolo. Quel che otteniamo però, è un sistema tollerante agli errori presenti nelle varie misurazioni. Operando sulla formulazione del problema, possiamo infatti far si che vengano scartate le informazioni totalmente in contrasto tra loro, mentre quando queste sono più o meno simili, ne venga calcolata una media pesata. Inoltre, a differenza dei metodi carving, possiamo definire le caratteristiche che dovrà avere la 10 1.3. IL SISTEMA PREESISTENTE superficie ricostruita. Qui infatti non abbiamo il vincolo della discretizzazione dello spazio, perché il problema viene definito nel continuo. In [FL95] questa tecnica viene applicata per fondere le informazioni di ombreggiatura e di tessitura, mentre in [ES04] e in [SN03] viene usata per tessitura e silhouette. Esistono altre tecniche per la fusione, che vengono per lo più utilizzate come raffinamento della stima ottenuta. In questo caso la superficie subisce piccole e locali alterazioni in modo da garantire la sua consistenza con l’informazione di tessitura e di ombreggiatura. Riassumiamo qui i vantaggi e gli svantaggi delle due tecniche sopra descritte: • Carving – Veloce – Non tollera gli errori – Impossibilità nel controllare la qualità della superficie ricostruita • Deformable models – Onerosi in termini di tempo – Tollerano bene gli errori – Controllo totale sui parametri della superficie 1.3 Il sistema preesistente In laboratorio è presente un sistema di digitalizzazione implementato da N. Brusco e E. Simioni basato su una Stereo-based pipeline schematizzata in figura [1.4]. L’algoritmo stereo estrae un modello per ogni coppia di fotografie scattate da punti di vista relativamente vicini. Ognuno di essi verrà successivamente corretto eliminandone i punti vistosamente esterni alle silhouette. Il modello finale sarà quindi il risultato di una media spaziale applicata a tutti i modelli generati. 11 CAPITOLO 1. DIGITALIZZAZIONE 3D Silhouette Extractor Eliminazione punti esterni alla silhouette Stereo-matching Media dei modelli Figura 1.4: Tipica Stereo-based pipeline. 1.4 Il sistema proposto Quel che vogliamo proporre è un sistema ottico passivo multimodale che utilizza le informazioni di silhouette, tessitura e ombra. In figura [1.5] viene descritta schematicamente la pipeline del digitalizzatore. Dalle fotografie vengono estratte le varie informazioni silhouette, tessitura e ombra utilizzando rispettivamente algoritmi di silhouette-extraction, stereo-matching e shadow-detection. I primi vengono scelti in base alla scena che contiene l’oggetto da esaminare al momento dello scatto della foto: si possono infatti utilizzare tecniche di chroma key, segmentazione o edge-detection. Gli algoritmi di estrazione delle ombre invece, verranno analizzati nel capitolo 5. Successivamente utilizzando la sola informazione proveniente dalle silhouette viene generato un modello approssimativo che verrà in seguito elaborato nello stadio di fusione assieme alle informazioni di tessitura, di ombra e di silhouette. Quest’ultimo processo è l’elemento fondamentale di ogni metodo multimodale nonché la parte centrale della mia tesi e viene esaustivamente descritto nei capitoli 3, 4 e 5. 12 1.4. IL SISTEMA PROPOSTO Shape-form-Silhouette Silhouette Extractor Stereo-matching FUSIONE Shadow Detector Figura 1.5: Pipeline del sistema di digitalizzazione passiva proposto. 1.4.1 Analisi degli errori di misura Riassumiamo i pregi e i difetti dei tre tipi di informazione utilizzati: • Silhouette – Rileva bene i bordi dell’oggetto; – Rileva bene regioni riflettenti, speculari o prive di tessitura, se di esse ne si fotografa il profilo; – Non rileva le concavità. • Tessitura – Rileva bene regioni, anche concavità, che presentano tessitura e sufficiente illuminazione; – Non rileva concavità poco illuminate; – Non rileva regioni riflettenti, trasparenti, troppo speculari, prive di tessitura o con tessiture troppo ripetitive; 13 CAPITOLO 1. DIGITALIZZAZIONE 3D x1 Dx x2 Px Px-1 z f Figura 1.6: Rappresentazione dell’errore di quantizzazione lungo l’asse x. – Non rileva bene i bordi: questo perché gli algoritmi stereo tendono a confondere i punti dell’oggetto con quelli appartenenti allo sfondo, generando cosı̀ errori di matching che si traducono in un’assenza di corrispondenze. • Ombre – Rileva le concavità non illuminate che non presentano bassa riflettanza: per una completa descrizione del problema rimando al capitolo 5. Il fatto che le informazioni vengano estratte da delle foto, fa sı̀ che l’errore intrinseco nella loro misurazione sia quello di quantizzazione. La risoluzione raggiunta dalle fotocamere digitali odierne si aggira intorno ai 7-8 megapixel, il che significa una risoluzione massima di circa 3200x2400 pixel. Prendiamo ad esempio l’ultima uscita dalla casa Nikon, la Coolpix 8800 che raggiunge una risoluzione di 3264x2448 pixel. Essa dispone di un sensore CCD 2/3”2 . Quest’ultimo ha dimensione 9 mm x 7 mm, quindi la dimensione di un pixel nel piano retinale sarà 2, 76µm x 1, 86µm. Osservando un oggetto a distanza z dalla camera, vedi figura [1.6], Px z f Px − dx = z f x1 = (1.2) x2 (1.3) e quindi Dx = |x1 − x2 | = dx 2 14 z f Il valore 2/3” indica il diametro del wafer di silicio che ospita il sensore. (1.4) 1.4. IL SISTEMA PROPOSTO Con lo stesso procedimento otteniamo Dy . Quindi l’errore di quantizzazione che si commette nel misurare le coordinate3 x, y di un punto posto a distanza z dalla camera sarà: dx z 2f dy = z 2f εx = (1.5) εy (1.6) Supponendo una lunghezza focale di circa 90mm, si ha εx = z ∗ 15µ e εy = z ∗ 10µ. Quindi un punto a distanza di un 100 metri viene rilevato con un errore di circa 1,5mm in x e 1mm in y. Per quanto riguarda l’errore di quantizzazione commesso nel valutare la coordinata z utilizzando il metodo di triangolazione, rimandiamo il calcolo al lavoro di [Sim04]. L’errore massimo che si commette è proporzionale a z εz = k z (1.7) con k funzione della posizione della seconda telecamera rispetto alla prima. In generale k >> 2f1 e quindi anche εz >> εx , εy . Nel misurare la silhouette dell’oggetto commettiamo due tipi di errori: • Errore di quantizzazione εx , εy intrinseco all’interno di un pixel; • Errore nel determinare se un pixel appartiene o meno all’oggetto. Quest’ultimo errore dipende dallo sfondo presente nella fotografia e dal metodo utilizzato per ricavarne la silhouette, solitamente si aggira intorno ai ±1 pixel. Metodi come blue screen riducono notevolmente questo tipo di errore. Per quanto riguarda invece il sistema stereo, gli errori sono: • Errore di quantizzazione εx , εy , εz ; • Errori di matching. Quest’ultimo errore, nella maggior parte dei casi si aggira attorno a ±1 pixel. Infatti punti vicini sulla retta epipolare possono presentare intorni molto simili. Ovviamente l’errore aumenta in presenza di tessiture a bassa varianza. Possono comunque verificarsi picchi di ±n pixel, quando la corrispondenza è totalmente errata. Ciò accade sopratutto in presenza di tessiture ripetitive. 3 Queste coordinate si intendono espresse secondo il sistema di riferimento della camera, prendendo l’asse z parallelo all’asse ottico. 15 CAPITOLO 1. DIGITALIZZAZIONE 3D Figura 1.7: Statuetta di buddha con relativa acquisizione stereo. Si possono notare gli errori di matching corrispondenti ai picchi nel modello e la forte discretizzazione della profondità. Quest’ultima viene attenuata prelevando più coppie stereo. Sia in teoria che nella pratica, gli errori dello stereo sono molto maggiori rispetto a quelli commessi nel valutare la silhouette. Per quanto riguarda infine l’informazione ombra rimando al capitolo 5 per una completa descrizione del problema. 16 Capitolo 2 Camere e superfici In questo capitolo verranno introdotte le basi necessarie alla comprensione della formulazione del problema di fusione, descritto formalmente nel capitolo successivo. Ho cercato di raccogliere e formalizzare i numerosi concetti presenti in letteratura riguardo la digitalizzazione 3D passiva. Verrà inoltre definita un simbologia e un linguaggio unico che utilizzerò in tutto il resto della tesi. Nel primo paragrafo presenterò un richiamo alle nozioni di geometria differenziale utili per introdurre il concetto di superficie discreta nel secondo paragrafo. Il risultato dell’algoritmo che andremo a implementare infatti, sarà una superficie. Dato che però, un calcolatore non è in grado di elaborare e memorizzare un’entità cosı̀ complessa, dobbiamo accontentarci di una sua approssimazione. Ovvero dobbiamo restringere il campo di ricerca della soluzione ad un insieme C, definito a priori, di superfici elaborabili da un calcolatore. In questo modo la soluzione sarà un s ∈ C, che più si avvicina alla soluzione del problema senza vincoli. In letteratura sono state introdotte numerose classi di superfici elaborabili, come ad un esempio surface spline, mesh, mesh implicite, voxel, ecc. Per il nostro problema useremo la classe delle mesh, ovvero l’insieme di tutti i poliedri a facce triangolari. Nel terzo paragrafo verrà introdotto il concetto di vista e descritto il processo geometrico di generazione dell’immagine sul piano retinale, si parlerà inoltre di matrici proiettive e di come ricavarle noti i parametri della camera. Dal quarto in poi, verranno descritti i concetti di proiezione, contorno e infine enunciati i principali risultati della teoria di Laurentini sul visual hull già accennata precedentemente. CAPITOLO 2. CAMERE E SUPERFICI 2.1 Le k-varietà Una varietà differenziabile1 (manifold) è una coppia ordinata (S, ϑ), dove S è l’insieme dei punti che compongono la varietà, mentre ϑ è una struttura differenziabile, ovvero una struttura che supporta il processo di differenziazione. Quest’ultima non è altro che un insieme di carte, ovvero un insieme di parametrizzazioni locali di S coerenti tra loro. Per parametrizzazione locale intendiamo un omeomorfismo2 f : B → U ⊆ S, dove B è un aperto di uno spazio di banach. Il concetto di coerenza viene espresso quando più carte descrivono una stessa porzione di S, in tal caso la funzione g = f1 ◦ f2−1 ristretta alla controimmagine della zona in comune deve essere un diffeomorfismo3 di classe C ∞ . Con ∂M denotiamo il bordo di M . Diremo che M è una varietà differenziabile immersa in Π, se S ⊆ Π. Diremo inoltre che M è una k-varietà differenziabile se lo spazio di banach a cui ogni carta afferisce è <k . In tal caso preso un punto x ∈ S, esiste sempre un intorno A di x per cui esiste una parametrizzazione locale f ∈ ϑ, ovvero un omeomorfismo da un aperto di <k in A. f in generale non è mai unica. Diremo che una k-varietà (S, ϑ) è totalmente parametrizzabile se esiste una sua mappa il cui codominio è l’intera S. Useremo il termine curva per denotare una 1-varietà, superficie per 2-varietà e solido per una 3-varietà. Chiameremo genus di una superficie M il numero massimo di curve chiuse non intersecanti tra loro, che si possono disegnare sulla superficie senza separarla. In termini meno formali esso indica il numero di buchi della superficie. Diremo che (S, ϑ) è una sottovarietà di <n se è una (n − 1)-varietà immersa in <n ed esiste c ∈ <k e F : <n → <k con F di classe C s e con jacobiana di rango massimo ovunque tale che S = {∀x ∈ <n | F (x) = c} = LevelSetF (c) (2.1) Quindi una sottovarietà di <3 è una superficie immersa in <3 regolare, ovvero che non presenta spigoli. Più formalmente, S è una superficie regolare se ogni sua mappa r : D ⊆ <2 → <3 è un diffeomorfismo di classe C 1 con matrice jacobiana a rango due ovunque. Ovvero ∂r ∂r ∧ 6= 0 ∂u ∂v 1 (2.2) Per una completa introduzione a questi oggetti consiglio il lavoro di R. Abraham [RA83]. Un omeomorfismo è un’applicazione biunivoca, continua, e con inversa continua. 3 Un diffeomorfismo di classe C ∞ è un’applicazione di classe C ∞ , biunivoca, e con inversa di classe C ∞ . 2 18 2.1. LE K-VARIETÀ per ogni (u, v) ∈ <2 . Le proprietà delle superficie che andremo a definire nei paragrafi successivi saranno indipendenti dalla particolare parametrizzazione locale scelta per descriverle. 2.1.1 Il concetto di curvatura Data una superficie S, un punto x ∈ S, e una sua parametrizzazione locale r in x, definiamo il piano tangente alla superficie S, il luogo di punti P tali che: ∂r ∂r (x) ∧ (x) • (P − x) = 0 (2.3) ∂u ∂v Inoltre definiamo la direzione normale a S in x, come la direzione del vettore normale al piano tangente a S in x: ∂r ∂r (x) ∧ (x) NS (x) = Direzione ∂u ∂v Da notare che queste due proprietà sono indipendenti dalla parametrizzazione locale scelta. Definiamo prima forma fondamentale di S, la forma quadrica I (du, dv) = Edu2 + 2F dudv + Gdv 2 (2.4) E = ∂ru · ∂ru (2.5) F = ∂ru · ∂rv (2.6) G = ∂rv · ∂rv (2.7) Definiamo seconda forma fondamentale di S, la forma bilineare II (du, dv) = edu2 + 2f dudv + gdv 2 (2.8) e = ∂ruu · N (2.9) f = ∂ruv · N (2.10) g = ∂rvv · N (2.11) Con κ (v) denotiamo la curvatura normale (o selettiva) della superficie S nel punto x lungo il vettore tangente v (v ∈ <2 ), ovvero κ (v) = II (v) I (v) (2.12) 19 CAPITOLO 2. CAMERE E SUPERFICI Essa rappresenta la variazione del piano tangente a S nel punto x, per movimenti lungo v. Ovvero coincide con la variazione della normale NS (x) per movimenti lungo v. Il valore massimo e minimo di κ (v) in x, vengono denotati rispettivamente κ1 e κ2 e rappresentano le curvature principali della superficie nel punto x. Le direzioni relative a questi valori vengono chiamate direzioni principali. Quest’ultime sono perpendicolari tra loro se κ1 6= κ2 , mentre in caso contrario, ogni direzione del piano tangente è direzione principale. Dalla definizione κ1 , κ2 dipendono solo e in modo non lineare da ∇r (u, v) , Hr (u, v) e ovviamente sono invarianti per la particolare parametrizzazione locale r scelta. Esse inoltre corrispondono agli autovalori della matrice " #−1 " # E F e f · (2.13) F G f g Definiamo la curvatura media κ= eG − 2f F + gE κ1 + κ2 = 2 2(EG − F 2 ) (2.14) Definiamo la curvatura totale κ = κ21 + κ22 (2.15) Si deve osservare che la definizione che più si avvicina al concetto intuitivo di curvatura è quello della curvatura totale. Infatti la curvatura media presenta un comportamento poco chiaro nei punti di sella della superficie, in tal caso infatti κ essa è prossima a 0. 2.1.2 Caratteristiche delle parametrizzazioni Presa una specifica parametrizzazione r di S, essa può essere vista come un telo che viene deformato al fine di aderire perfettamente alla superficie. In tal caso, il valore k5rk2 rappresenta quanto ogni porzione infinitesima del telo viene allungata o accorciata per eseguire questa operazione. Una buona parametrizzazione si fa quando k5rk2 = 1, ovvero quando r è una isometria 4 . In tal caso non vi sono ne stiramenti ne compressioni del telo. 4 Un’isometria è un’applicazione biettiva tra due spazi metrici che preserva le distanze: d (f (x) , f (y)) = d (x, y) 20 2.2. LE SUPERFICI DISCRETE In meccanica si usa definire l’energia di membrana Z Z 2 2 ∂r 1 1 2 + ∂r dudv Emembrane (r) = k∇rk ds = ∂v 2 A 2 A ∂u (2.16) che rappresenta l’allungamento complessivo del telo. Nel caso r sia una isometria, essa coincide con la metà dell’area della porzione di superficie descritta. Il quadrato della norma di Frobenius della matrice hessiana di r 2 2 2 2 2 2 ∂ r 1 ∂ r 1 2 + + 2 ∂ r kHrkF = 2 2 ∂u2 ∂v 2 ∂v∂u (2.17) rappresenta quanto il telo deve piegarsi per aderire a S. Questo concetto è molto simile a quello di curvatura ma non sempre coincide numericamente con esso. Possiamo però affermare che se r è una isometria allora 1 kHrk2F = κ 2 ovvero coincide con la curvatura totale in tale punto. Definiamo inoltre l’energia di thin plate Z 1 kHrk2F ds Ethin plate (r) = 2 A (2.18) (2.19) che rappresenta la curvatura complessiva. Ovviamente nel caso di isometria Z Ethin plate (r) = κ21 + κ22 ds (2.20) A 2.2 Le superfici discrete Dalla teoria dei grafi [Die97], definiamo Definizione 2.1 Sia G = (V, E) un grafo, diciamo che g è un embedding planare su G in D ⊆ <2 , se g è una funzione che mappa ogni vertice v ∈ V in punti distinti di D. Per ogni lato (v1 , v2 ) ∈ E il segmento che congiunge g (v1 ) e g (v2 ) deve essere contenuto in D. A due a due, questi segmenti non devono intersecarsi se relativi a lati non incidenti. Mentre, se relativi a lati incidenti possono intersecarsi solo nell’immagine g del vertice in comune. Definizione 2.2 Un grafo G è detto planare se ammette un embedding planare. Ψ = (V, E, g) è un grafo piano su D se e solo se (V, E) è grafo planare e g un 21 CAPITOLO 2. CAMERE E SUPERFICI suo embedding planare su D. I lati del grafo dividono D in regioni che vengono chiamate facce. Per lunghezza di una faccia intendiamo il numero di lati che la delimitano. Un grafo piano in cui ogni faccia abbia lunghezza 3 viene detto triangolare. Supponiamo per semplicità di avere una parametrizzazione totale di S, r : D ⊆ <2 → S. Prendiamo ora Ψ un grafo piano triangolare in D e campioniamo r nei suoi vertici. In questo modo, la lunghezza del segmento relativo ad ogni lato e di Ψ, indicherà il passo di campionamento in quella regione. Inoltre E descrive una topologia dei punti di campionamento. Analizzando il codominio di r, possiamo dire che l’immagine r (v) di ogni vertice di Ψ rappresenta un punto di campionamento della superficie S. La lunghezza dell’immagine del segmento relativo ad un lato e rappresenta il passo di campionamento effettivo sulla superficie S. Inoltre, per ogni faccia f di G definiamo la sua immagine secondo r come r(f ) = T riangle (r (f.v1 ) , r (f.v2 ) , r (f.v3 )) (2.21) ovvero un triangolo che ha come vertici l’immagine dei vertici adiacenti alla faccia. L’unione di queste immagini [ P = r(f ) (2.22) f è un poliedro a facce triangolari, mesh, che approssima la superficie S. Ψ va ad indicare uno schema di campionamento della parametrizzazione r. Un buon campionamento non deve in generale essere un campionamento a passo costante anzi, esso avere un passo inversamente proporzionale alla precisione desiderata per quella porzione di superficie. O meglio, maggiore è l’interesse per quella zona e minore dovrà essere il passo di campionamento. Normalmente questo passo è proporzionale alla curvatura della superficie, infatti zone piane, a bassa curvatura, hanno bisogno di pochi punti per essere descritte, al contrario zone a curvatura elevata necessitano di un passo di campionamento molto più piccolo(vedi figura [2.1]). Dobbiamo tener conto però che il passo di campionamento effettivo dipende si, dalla lunghezza dei segmenti relativi ai lati di Ψ ma, anche da k5rk2 . Nel calcolatore solitamente viene memorizzata la mesh e non la parametrizzazione r, né tanto meno la superficie S. Dato quindi che r è incognita e non univocamente ricavabile dalla mesh, possiamo concettualmente giocare sulla sue 22 2.2. LE SUPERFICI DISCRETE Figura 2.1: Sinistra: Mesh della venere di milo: il passo di campionamento varia in funzione della curvatura. Il relativo Qequ è comunque basso dato che il modello presenta triangoli ben distanti dall’essere equilateri. Destra: Mesh della rana: il passo di campionamento è pressoché costante mentre Qequ è prossimo a 1. 23 CAPITOLO 2. CAMERE E SUPERFICI caratteristiche. Ad esempio, possiamo supporre che essa sia un’isometria, e quindi faremo variare il passo di campionamento di Ψ al fine di ottenere il risultato desiderato. Viceversa possiamo tener costante il campionamento Ψ e far variare r. 2.2.1 Un criterio di qualità per le mesh In [FB99] vengono proposti due indici per misurare la qualità di una mesh: Qequ , Qplanarity . Il primo dipende dalla forma delle facce che la compongono: una buona mesh ha solo triangoli equilateri. Per ogni singola faccia esso è definito come 6 A ∈ [0, 1] Qequ (f ) = √ 3s·h (2.23) con A area della faccia, s il relativo semiperimetro e h la lunghezza del lato più lungo. Il valore massimo, Qequ = 1 viene raggiunto se e solo se la faccia corrisponde ad un triangolo equilatero. Il secondo invece, dipende dai parametri geometrici della superficie: una buona triangolazione deve descrivere bene le regioni a curvatura elevata. In questo si impone un lower-bound al campionamento della superficie. Non si impone alcun upper-bound per far si che la mesh descriva in modo compatto le regioni a bassa curvatura (limite informalmente imposto nel precedente paragrafo). Qplanarity viene definito n · n1 + n · n2 + n · n3 Qplanarity = ∈ [0, 1] (2.24) 3 dove n è la normale della faccia, mentre n1 , n2 , n3 sono le normali dei triangoli adiacenti ai relativi lati. Dalla figura [2.1] osserviamo che la mesh della venere di Milo ha un buon coefficiente Qplanarity , dato che essa descrive dettagliatamente le aree a curvatura elevata. Essa però presenta triangoli ben distanti dall’essere equilateri e quindi ha un basso Qequ . Per quanto riguarda la rana invece, i triangoli sono tutti equilateri e i dettagli non mancano, quindi Qplanarity e Qequ sono prossimi a uno. Inoltre, questo modello è abbastanza compatto, infatti il passo di campionamento è basso nelle regioni a bassa curvatura. 2.2.2 Operatori su mesh Definiamo un modo per stimare il laplaciano e il bilaplaciano della parametrizzazione r avendo a disposizione solo la mesh relativa. 24 2.3. IL CONCETTO DI VISTA Teorema 2.3 Sia M una mesh generata dalla parametrizzazione r con schema Ψ, se la lunghezza di ogni lato di Ψ è unitaria e se per ogni vertice v, tutti gli angoli formati da due lati tra loro adiacenti e incidenti a v sono uguali tra loro, allora e ∇2 r ' ∆ e2 ∇4 r ' ∆ (2.25) (2.26) ovvero il laplaciano di r è approssimato dall’operatore umbrella definito X vi e (v) = −v (2.27) ∆ m i∈N1 (v) e l’operatore biarmonico (bilaplaciano) è approssimato dall’operatore umbrella quadro definito e 2 (v) = ∆ e ∆ e (v) ∆ (2.28) con N1 (v) è l’insieme dei vertici direttamente connessi a v e m = #N1 (v). 2.3 Il concetto di vista Evitando l’uso del linguaggio della geometria proiettiva, possiamo definire formalmente il concetto di punto di vista o camera presente in molti articoli. Definizione 2.4 Denotiamo con P roject la funzione <3 → <2 tale che Px Pz Py = Pz P roject (P )x = (2.29) P roject (P )y (2.30) per ogni P ∈ <3 . Definizione 2.5 Una funzione V : <3 → <2 è detta vista se e solo se esiste una trasformazione T : <3 → <3 biettiva e affine tale che V (P ) = P roject (T (P )) (2.31) per ogni P ∈ <3 . 25 CAPITOLO 2. CAMERE E SUPERFICI In particolare denotiamo con V.T , la trasformazione T associata a V . Quest’ultima, data la sua natura, può essere descritta come V.T (P ) = M · P + O (2.32) dove M ∈ M3x3 invertibile e O ∈ <3 . Inoltre essa è direttamente correlata alla matrice proiettiva K ∈ M4x3 definita in [Zis00], nel modo h i K= M O (2.33) Di K conosciamo la sua relazione con il modello fisico di una camera pinhole ideale (introdotto da Albercht Durer nel 1525). In particolare essa si può separare in due ulteriori matrici secondo il seguente schema 1 0 0 0 (2.34) K = I × 0 1 0 0 × E 0 0 1 0 dove I è la matrice dei parametri intrinseci, ovvero quelli dipendenti solo dalla camera stessa, mentre E è la matrice dei parametri estrinseci, ovvero dipendenti solo dalla sua posizione e orientamento nello spazio. I è definita come f px (tan α) pfy cx I =0 f py cy 0 0 1 (2.35) dove f (espressa in millimetri) è la lunghezza focale della camera, ovvero la distanza tra la superficie del sensore (o piano retinale) e il centro della lente dell’obbiettivo (o centro di proiezione). px , py sono rispettivamente la larghezza e l’altezza in millimetri di un pixel nel piano retinale. α è l’angolo di skew e indica di quanto gli assi x, y dell’immagine si scostano dall’ortogonalità. c = (cx, cy, 1) è il punto principale della camera ovvero il punto in cui la l’asse ottico interseca il piano retinale. Ricordiamo che l’asse ottico è definito come la retta passante per il centro di proiezione C e ortogonale al piano retinale. Il field-of-view lungo y di una camera è definito come py dimy F OVy = 2arctan (2.36) 2f e rappresenta l’angolo in radianti indicato in figura [2.2]. dimy è la risoluzione verticale del CCD. 26 2.3. IL CONCETTO DI VISTA FOVy Asse ottico Figura 2.2: Schematizzazione del field-of-view di una camera pin-hole. E, invece è definita come " # R t E= T 03 1 (2.37) dove R è una matrice di rotazione ortonormale e t è il vettore di traslazione. Se, ad esempio avessimo una camera con centro di proiezione in C, asse ottico V e up-vector U (ovvero il vettore che indica l’asse y nel sistema di riferimento della camera), la relativa matrice estrinseca è h i U ×V U V " # M −1 −M −1 C E = 0T3 1 M = (2.38) (2.39) Il centro h di proiezione C i = (X, Y, Z) può essere ricavato dalla matrice proiettiva K = k1 k2 k3 k4 det X = Y h h T i det k1 k3 k4 = − det Z = i k2 k3 k4 T h (2.40) (2.41) i k1 k2 k4 h T i T = − det k1 k2 k3 (2.42) (2.43) 27 CAPITOLO 2. CAMERE E SUPERFICI Figura 2.3: Concetto di contorno. 2.4 Il contorno Definizione 2.6 Sia V una vista e M una sottovarietà chiusa di <3 , chiamiamo V (M ) la proiezione di M vista da V, e denotiamo con γ VM = ∂V (M ) il contorno apparente (o silhouette) di M visto da V, e con ΓVM = V −1 γ VM (2.44) (2.45) il contorno di M visto da V. Per definizione V (M ) è una superficie di <2 mentre il suo bordo γ VM é una famiglia di curve chiuse di <2 non intersecanti tra loro. Come si può facilmente notare dalla figura [2.3], ne V (M ) ne γ VM sono in generale regolari, infatti è molto probabile che presentino delle singolarità. ΓVM è, invece un famiglia di curve non necessariamente chiuse di <3 , i cui punti appartengono a M . Per questa ragione e data M regolare, anch’esse sono regolari. In [CP00] viene esposto un teorema molto utile al fine del calcolo di γ VM e di ΓVM : Teorema 2.7 Sia V una vista e M una sottovarietà chiusa di <3 , e sia c il punto di vista di V e n (x) la normale alla superficie M nel punto x, allora ΓVM ⊆ {∀x ∈ M | (x − c) · n(x) = 0} 28 (2.46) 2.5. IL VISUAL HULL Ovvero, i punti del contorno di M visto da V sono dei punti della superficie la cui normale è ortogonale alla retta che congiunge il punto di vista di V con il punto stesso. Non è vero in generale il contrario, infatti questi punti possono essere interni alla V (M ) o occlusi da regioni di M . Per ovviare parzialmente a questo problema, possiamo aggiungere la condizione che il segmento che congiunge tale punto x di M a c, non deve intersecare M se non in x, ovvero: @λ ∈ [0, 1) | λ(x − c) + c ∈ M (2.47) Come corollario aggiungiamo che γ VM ⊆ {V (x) | (x − c) · n(x) = 0, ∀x ∈ M } 2.5 (2.48) Il visual hull Laurentini nel suo famoso articolo del ’94 [Lau94] introduce il concetto di visual hull di una superficie S. Definizione 2.8 Sia R un insieme di viste e S una sottovarietà chiusa di <3 , denotiamo con vh (S, R) l’insieme di punti sottoinsieme di <3 tale che p ∈ vh (S, R) se e solo se per ogni vista V ∈ R, la semiretta che parte dal centro di proiezione di V e passa per p contiene almeno un punto di S. Il visual hull è quindi un insieme <3 che nel caso migliore è una 3-varietà. Solitamente siamo interessati al suo bordo ∂vh (S, R) che rappresenta la miglior approssimazione di S ottenibile con la sola informazione proveniente dalle proiezioni di S relative alle viste V ∈ R. Ciò è rigorosamente dimostrato in [Lau94] e qui riportiamo solo alcuni dei risultati: • Il visual hull contiene sempre la superficie originale, ovvero S ⊆ vh (S, R); • Esso è sottoinsieme del convex hull di S, ovvero vh (S, R) ⊆ ch (S); • ∂vh (S, R) ha le stesse proiezioni di S nelle R, ovvero per ogni V ∈ R, si ha Vj (S) = Vj (∂vh (S, R)) (2.49) • Se R1 ⊆ R2 allora vh (S, R2 ) ⊆ vh (S, R1 ) 29 CAPITOLO 2. CAMERE E SUPERFICI • vh (S, R) = T V ∈R vh (S, {V }) Quest’ultima proprietà ci suggerisce un metodo per calcolare il visual hull come l’intersezione dei coni visuali prodotti da S per ogni vista V ∈ R. Questo algoritmo prende il nome di Volume Carving [Pot87]. Esso viene implementato discretizzando lo spazio in voxel, inizialmente di ugual dimensione, che possono assumere tre differenti stati relativamente alla loro appartenenza al visual hull o meno. Essi sono: appartenente; parzialmente appartenente; e non appartenente. Per valutare questa caratteristica, basta eseguire un controllo su ogni cono visuale e su tutti i punti appartenenti al voxel. In particolare, nel caso di voxel quadrati basterà valutare l’appartenenza dei singoli spigoli. Una volta calcolati gli stati, si suddividono tutti e soli i voxel parzialmente appartenenti al visual hull. Ne seguirà una valutazione del loro stato ed il tutto si ripeterà ricorsivamente fino a che non si giunga alla risoluzione desiderata. A questo punto sarebbe necessario trovare una mesh che meglio approssimi ∂vh (S, R). A tal fine si può usare l’algoritmo dei marching cubes, e in particolare la sua variante a decomposizione tetraedrica. Infatti la versione classica dei marching cubes crea mesh che in generale non sono discretizzazioni di varietà. Notiamo infine, che preso R come l’insieme di tutte le possibili viste in <3 , il visual hull relativo viene chiamato vh∞ (S) ed in generale non è uguale a S. Infatti esso non può mai descrivere le regioni concave di S (si veda l’esempio in figura [4.14]). 30 Capitolo 3 Il problema Silhouette-Stereo Fusion L’elemento fondamentale di un metodo multimodale è l’algoritmo di fusione delle informazioni. Esso prende in ingresso tutti i dati ricavati dalle varie immagini e dopo averli elaborati genera un modello della superficie analizzata. Nel nostro caso, quest’ultimo sarà una mesh triangolare. In questa fase le informazioni complementari vengono unite tra loro, mentre quelle ridondanti vengono selezionate per eliminare misure totalmente errate. Successivamente ne viene stimato il valore effettivo. In questo modo vengono raggiunte le caratteristiche fondamentali dell’approccio multimodale, ovvero: la robustezza agli errori e l’ampio range di oggetti ricostruibili. In questo capitolo verrà inizialmente definito il problema della fusione delle informazioni di tessitura e di silhouette come problema di minimo. Successivamente verranno proposti i due metodi di risoluzione tramite i modelli deformabili descrivendone pregi e difetti. Infine si sceglierà di utilizzare il modello parametrico per risolvere il nostro problema. 3.1 La fusione A questo punto del processo di ricostruzione 3D, abbiamo una superficie reale Λ di cui, di n suoi punti yi ∈ Λ sono note le relative misure xi = yi + εi . Esse sono ovviamente soggette ad un errore εi dovuto da svariate cause, già precedentemente CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION elencate nel capitolo uno. Gli algoritmi stereo, assieme alle misure xi forniscono inoltre, un relativo livello di incertezza pi ∈ [0, 1], che dà un informazione indicativa su quanto si è sicuri che quel punto appartenga o meno alla superficie Λ. Questo valore coincide con la correlazione della corrispondenza trovata per quel punto, e quindi, come sappiamo, non ha nulla a che fare con l’entità di εi . Anzi, il punto in questione potrebbe essere molto distante da Λ ma avere un pi uguale a uno. Questo è il tipico scenario che si ha in presenza di un errore di matching. Quando invece il punto xi è prossimo alla superficie Λ, il valore di pi non ne dà in generale una precisa stima sull’entità di εi , ma un sua approssimazione che, nel caso di tessitura a bassa varianza potrebbe essere totalmente sbagliata. Inoltre dobbiamo sempre tener presente dell’esistenza dell’errore di quantizzazione intrinseco in qualsiasi misurazione. Quindi la stima di |εi | non potrà mai essere inferiore all’errore di quantizzazione, nemmeno se pi = 1. Abbiamo inoltre a disposizione un numero m di viste Vj e le relative proiezioni Pj di Λ viste da Vj soggette ad un errore η j . Informalmente potremo descrivere Pj come la somma Vj (Λ) + η j (ovviamente non è definita un’operazione + per le superficie in <2 , né tanto meno è noto il concetto di piccola superficie di errore η j ). Quindi, riassumendo, i dati a nostra disposizione sono: • Un insieme Σ di n coppie ordinate (xi , pi ) ∈ <3 × [0, 1] • Un insieme Ψ di m coppie ordinate (Vj , Pj ) In base a queste informazioni, l’obbiettivo del problema “silhouette-stereo fusion” è quello di trovare una stima di Λ. Supponiamo dapprima che l’errore η j nelle proiezioni sia nullo: ipotesi abbastanza verosimile dato che quest’ultimo é molto inferiore rispetto a quello presente nelle misure xi . In tal caso il problema può essere formulato come un problema di minimo vincolato nel seguente modo: Definizione 3.1 Sia Π l’insieme di tutte le sottovarietà chiuse di <3 , Σ = {(xi , pi )} ⊂ <3 × [0, 1] una nuvola di punti e Ψ = {(Vj , Pj )} un insieme di coppie vista-proiezione, il problema silhouette-stereo fusion consiste nel trovare M ∈ Π tale che: 32 M = arg min {ξ(M ) | ∀M ∈ X} (3.1) X = {∀M ∈ Π | Vj (M ) = Pj , ∀j = 1, . . . m} (3.2) 3.1. LA FUSIONE dove ξ : Π → < è un funzionale costo scomponibile in due addendi ξ (M ) = κinterna · ξ interna (M ) + κtexture · ξ texture (M ) (3.3) dove il primo ξ interna , impone un costo a superfici troppo poco regolari, e può essere definito come Z ξ interna (M ) = κ21 + κ22 ds (3.4) M oppure come Z ξ interna (M ) = κds (3.5) M mentre il secondo ξ texture , impone un costo alle superfici che non passano vicino alla nuvola di punti Σ, e può essere definito come X ξ texture (M ) = pi · d(xi , M )k (3.6) i dove d(xi , M ) è la distanza tra il punto xi e la superficie M o più formalmente d(xi , M ) = inf {k xi − z k| ∀z ∈ M } (3.7) In questo modo, la soluzione M al problema sarà una superficie sufficientemente regolare (smooth) che passerà il più vicina possibile alla nuvola di punti Σ, mantenendo sempre la coerenza con le proiezioni della superficie reale osservate dalle varie viste. In generale la soluzione non è unica. I parametri κinterna e κtexture determinano quanto gravosa è la perdita di regolarità della superficie in relazione alla distanza della stessa dalla nuvola di punti. Ovvero aumentando κtexture ottengo una superficie poco regolare che cerca di passare per tutti i punti di Σ. Viceversa, aumentando κinterna ne ottengo una molto più regolare ma ben lontana dall’approssimare la nuvola di punti. Al fine di ottenere una buona stima della superficie reale Λ, κinterna e κtexture devono essere scelte in base all’errore εi e alla curvatura totale o media di Λ. Queste due informazioni però, non sono quasi mai disponibili, in particolare la seconda. Per i εi infatti, se ne può stimare la media e la varianza ma la curvatura di Λ risulta un parametro impossibile da misurare con metodi non invasivi. Per questo motivo, la loro scelta sarà arbitraria e dipenderà solo da che tipo di approssimazione di Λ si intende ottenere. In letteratura sono sempre presenti ambedue le costanti ma, dato che i funzionali costo sono equivalenti per costanti moltiplicative possiamo, per semplicità eliminare κtexture senza modificare la sostanza il problema. Quindi: 33 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION Figura 3.1: Rispettivamente a destra e a sinistra vengono rappresentate le operazione eseguite dalla [3.6] e dalla [3.9]. Si può notare che quest’ultima pesa anche le regioni lontane da Σ. ξ (M ) = κinterna · ξ interna (M ) + ξ texture (M ) (3.8) In [OF03] ξ texture viene definito Z dΣ (P )k ds ξ texture (M ) = k1 (3.9) M con dΣ (P ) = min {d (P, x) | ∀x ∈ Σ} (3.10) Ovvero, è funzione della minima distanza di ogni elemento infinitesimo ds della superficie dalla nuvola Σ. Nella [3.6] invece, ξ texture dipende della distanza minima di ogni punto di Σ da M . Anche se queste due formulazioni possono sembrare equivalenti tra loro, in realtà sono molto differenti, infatti nella [3.9], ogni elemento della superficie deve essere confrontato con Σ, anche se molto distanti da esso (vedi figura [3.1]). Il che significa che una superficie M passante per regioni prive di punti Σ, ha un costo ξ molto elevato. La soluzione del problema quindi, sarà una superficie che cercherà di evitare le suddette regioni. Nella [3.6] invece, viene valutato il comportamento di M solo nelle regioni ad alta densità di Σ. Nelle altre invece, la superficie può comportarsi come vuole lasciando invariato ξ texture . Quest’ultima caratteristica fa aumentare notevolmente il numero di soluzioni possibili al problema, lasciando a ξ interna il compito di selezionarle. Per il problema “silhouette-stereo fusion” sarebbe quindi consigliato utilizzare la formulazione [3.6], perché zone poco dense di Σ sono molto frequenti quando 34 3.1. LA FUSIONE l’oggetto ha concavità poco illuminate o presenta zone prive di tessitura. In tali zone non dovremo comportarci come se l’oggetto sia bucato, bensı̀ dovremo far passare una superficie il più regolare possibile per tutta la regione. Sfortunatamente però, il metodo risolutivo che adotteremo, ha bisogno di una definizione integrale di ξ texture , quindi la formulazione [3.6] non è applicabile nel nostro caso. Analizzeremo i problemi creati da questa scelta nel capitolo 6. 3.1.1 L’introduzione di ξ silhouette Sia eliminando l’ipotesi che gli errori η j siano nulli, che procedendo all’analisi del problema appena definito, arriveremo alla conclusione che, è necessario introdurre un funzionale di costo anche per le proiezioni. Infatti si può osservare che i vincoli imposti nella [3.1] sono troppo poco analitici per trovare un metodo facilmente implementabile che ricavi una soluzione al problema. Quindi è opportuno trasformare il problema di minimo vincolato in uno privo di vincoli utilizzando un metodo di penalizzazione. Ovvero, si somma alla funzione costo un termine che introduce un costo elevato nei punti esterni all’insieme ammissibile X. Per motivi che saranno chiari solo successivamente, chiameremo questo nuovo funzionale κsilhouette · ξ silhouette (M ) (3.11) dove κsilhouette è la costante che determina la precisione con cui la soluzione del problema modificato approssima quella del problema originale. Alle stesse conclusioni arriviamo eliminando l’ipotesi che gli errori η j siano nulli. In tal caso però, introdurremo si un termine κsilhouette · ξ silhouette , ma κsilhouette avrà un significato leggermente diverso. Esso indicherà di quanto dovremo mediare l’informazione proveniente dalle proiezioni in relazione alla regolarità della superficie e al livello di approssimazione di Σ. Questo parametro dovrà essere molto maggiore di κtexture , per i motivi espressi precedentemente (ovvero dovrà essere molto maggiore di uno per la [3.8]). La banale definizione di ξ silhouette come un funzionale uguale a uno se M ∈ / X, e uguale zero in caso contrario, ci porterebbe ad una ξ poco analitica e difficile da analizzare. Dobbiamo quindi, trovare un concetto simile a quello di distanza tra le proiezioni di M (ovvero tra le superfici in <2 ). Non è necessario inoltre, che sia effettivamente una distanza anzi, la tipica nozione di distanza fra superfici d (δ, ζ) = sup {d(x, y) | ∀x ∈ δ, y ∈ ζ} (3.12) non ci andrebbe bene. 35 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION ∂Vc(M) v ∂Vc(M) ∂Pc ∂Pc v Figura 3.2: ξ silhouette . g d(v,∂Pc)-g Rappresentazione delle distanze utilizzate nella definizione di Definiamo quindi Z Sc (Vc (P )) ds ξ silhouette (M ) = (3.13) M con c = arg minj d (Vj (P ) , ∂Pj ) e d (v, ∂Pj ) è la distanza con segno da v a ∂Pj , ovvero è positiva quando v ∈ Pj , e negativa viceversa. In questo modo, se P è esterno a qualche proiezione di Λ, c ne indicherà la vista in cui P è più esterno. Nel caso invece, P sia interno per ogni proiezione di Λ, c ne indicherà la vista in cui P è più interno. Sc (v) è cosı̀ definita ( 1 d (v, ∂Pc )2 v∈ / Pc 2 Sc (v) = (3.14) (d (v, ∂Pc ) − g) · h (g) v ∈ Pc dove g rappresenta la distanza di v dal punto di intersezione tra il bordo di Vc (M ) e il segmento che congiunge v al punto più vicino di ∂Pj (ovvero quello usato per calcolare la distanza d (v, ∂Pc )). La figura [3.2] aiuta a chiarire questo concetto. (d (v, ∂Pc ) − g) è la distanza tra ∂Vc (M ) e ∂Pc lungo il segmento descritto sopra. Questo valore rimane costante per tutti i punti appartenenti al prolungamento di tale segmento, fino a quando ovviamente non si trova un bordo più vicino. h (g) invece è una funzione non decrescente che dà peso maggiore ai punti più interni di Vc (M ) che comunque sono esterni a Pc (vedi il relativo grafico in figura [3.3]). ( 1 2 − 2p x +x+1 06x6p h (x) = (3.15) p + 1 x > p 2 Come si vede da figura [3.3], il costo dei punti la cui proiezione giace sul bordo di Vc (M ) sarà semplicemente proporzionale alla distanza di questo bordo da 36 3.1. LA FUSIONE Figura 3.3: Grafico della funzione h (x) con p = 4 e rappresentazione del costo da essa introdotto per i punti di Vc (M ). quello di Pc mentre, più ci si dirige verso l’interno di Vc (M ) più il costo aumenta fino ad un valore limite fissato da h (x). In questo modo vengono penalizzate tutte le superfici le cui proiezioni sono inglobate in quelle di Λ. I punti di M invece la cui proiezione secondo Vc risulta esterna a Pc , avranno un costo pari al semi-quadrato della loro distanza dal bordo ∂Pc . In questo modo vengono penalizzate tutte le superfici per cui almeno una proiezione ingloba quelle di Λ. Anche se la formulazione [3.13] sembra inutilmente complicata, la sua forma è necessaria per: • Avere una formulazione integrale su M di ξ silhouette ; • Penalizzare tutte le superfici le cui proiezioni non coincidano con quelle di Λ; • Assumere valore nullo nel caso tutte le proiezioni coincidano. Le ultime due affermazioni viene confermate dal seguente teorema: Teorema 3.2 ξ silhouette (M ) = 0 se e solo se Vj (M ) = Pj , ∀j = 1, . . . m. Dimostrazione. Se Vj (M ) = Pj , ∀j = 1, . . . m allora ∂Vj (M ) = ∂Pj quindi la (d (v, ∂Pc ) − g) = 0, ovvero la distanza tra i bordi è nulla. Inoltre per ogni 37 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION v ∈ Vc (M ), si ha che v ∈ Pc e quindi Sc (v) = (d (v, ∂Pc ) − g) · h (g) = 0, quindi ξ silhouette (M ) = 0. Se ξ silhouette (M ) = 0, dato che è definita come integrale di una funzione positiva, Sc (Vc (P )) deve essere 0 per ogni P . Quindi sicuramente v non può non appartenere a Pc perché porterebbe Sc 6= 0. Dato che v ∈ Pc si ha che (d (v, ∂Pc ) − g) · h (g) = 0. h (g) è sempre maggiore di zero quindi (d (v, ∂Pc ) − g) deve essere 0. Ovvero la distanza tra i bordi è nulla, ovvero ∂Vc (M ) = ∂Pc . Dato che c viene scelto arg minj d (Vj (P ) , ∂Pj ) allora ∂Vj (M ) = ∂Pj ∀j = 1, . . . m. Se i bordi sono uguali, allora anche le superfici ad essi relativi sono uguali, quindi Vj (M ) = Pj , ∀j = 1, . . . m. Dalle considerazioni appena fatte, il nostro funzionale ξ diventa ξ (M ) = κinterna · ξ interna (M ) + ξ texture (M ) + κsilhouette · ξ silhouette (M ) ovvero, supponendo k unitario, Z Z ξ (M ) = κinterna · κds + M 3.2 (3.16) Z dΣ (P )ds + κsilhouette · M Sc (Vc (P )) ds (3.17) M I modelli deformabili Vi sono molti modi per risolvere un problema di minimo. Essi si distinguono nel modo e nel dominio su cui operano. In particolare per problemi dove sono in gioco superfici, curve o varietà in generale, esiste un framework molto diffuso in computer vision denominato deformable models (modelli deformabili). Un modello deformabile è una varietà che sottoposta a forze di varia natura, si deforma nel tempo. Nella maggior parte dei casi, ma non sempre, queste forze tendono a minimizzare un funzionale di costo definito a priori. Per questo motivo essi vengono impiegati anche per risolvere problemi di minimo. Le forze si distinguono in forze interne e forze esterne. Le prime sono generate dal modello stesso e solitamente sono di natura elastica, mentre le seconde dipendono dal problema specifico e sono quelle che fanno raggiungere i risultati desiderati. I modelli deformabili apparvero per la prima volta nell’articolo [MKT87], dove si definiva per la prima volta un oggetto chiamato snake o active contour. Esso consiste in una curva parametrica x(s) immersa nello spazio di un’immagine che si 38 3.2. I MODELLI DEFORMABILI deforma nel tempo mantenendo una certa regolarità e convergendo verso il bordo dell’oggetto rappresentato dall’immagine stessa. Il funzionale ad esso associato è Z 1 Z i 1 1h 2 2 0 00 |5[Gσ ∗ I](x(s))|2 ds (3.18) E (S) = α |x (s)| + β |x (s)| ds − 2 0 0 dove I (x, y) è la funzione intensità dell’immagine e Gσ (x, y) è una gaussiana bidimensionale con media nulla e deviazione standard σ. Nel lavoro di [MKT87] E viene chiamata energia totale del modello, per sottolineare l’affinità del suo comportamento con quello di oggetti fisici quali, fluidi o plastiche. A sua volta, i termini di E vengono chiamati energia interna e energia esterna. Come si vede dalla [3.18], quest’ultimo termine è dato dall’integrale sulla curva S della norma al quadrato del gradiente della convoluzione tra la funzione intensità I e una gaussiana Gσ , che corrisponde al contorno (edge map) dell’immagine I filtrata in modo gaussiano. L’energia interna ha il compito di rendere il più convessa possibile l’energia totale, dato che in generale quella esterna non lo è. Il funzionale [3.18], usando l’equazione di eulero-lagrange [Fox87], da luogo a due forze Fint (s) = αx00 (s) − βx0000 (s) 2 Fext (s) = − 5 |5[Gσ ∗ I]| (x(s)) (3.19) (3.20) Le forze interne Fint sfavoriscono l’allungamento e la flessione dello snake, mentre le forze esterne Fext lo spingono ad approssimare il contorno dell’immagine. Successivamente, per risolvere i grossi problemi di convergenza, furono introdotte numerose varianti al modello originale. Una di esse è il modello balloon [Coh91] ideato per eliminare la necessità di avere uno snake iniziale prossimo a quello finale. In questo modello viene introdotta una forza costante lungo la normale allo snake. In questo modo esso tenderà naturalmente a contrarsi o a estendersi eliminando in alcuni casi, la possibilità che si blocchi in un minimo locale. I modelli deformabili quindi, trovarono subito applicazione come edge-detectors, ma nel giro di pochi anni vennero applicati nei più impensati campi della computer vision come shape-modeling [TF88], [MT95], segmentazione [LL93], [RDY95], e motion-tracking [LL93], [TS92]. In letteratura esistono attualmente, due tipi di modelli deformabili: parametric deformable models (o modelli classici) [MKT87], [TF88], [Coh91] e geometric deformable models [VCD93], [VCS95], [OF03]. Mentre i primi sono la diretta evoluzione degli snakes di [MKT87], i secondi sono di recente formulazione e derivano dalla teoria dei level-set. 39 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION Figura 3.4: A sinistra è raffigurata un’interpretazione geometrica dell’operazione LevelSetF (c) con F : <2 → <, a destra il suo risultato. In questo secondo framework, le varietà in gioco evolvono in funzione delle sole proprietà geometriche del modello ovvero, in modo indipendente dalle sue possibili parametrizzazioni. Infatti, la forma parametrica del modello, necessaria ai fini pratici, viene computata solo a convergenza raggiunta. Durante l’evoluzione infatti, il modello M viene visto semplicemente come una sottovarietà di <n , ovvero come una (n − 1)-varietà immersa in <n per cui esiste una funzione F : <n → <k sufficientemente regolare1 e un costante c ∈ <k tale che M = {∀x ∈ <n | F (x) = c} = LevelSetF (c) (3.21) ovvero M è la sezione a livello c del grafico di una funzione <n → <k (vedi figura [3.4]). In questo modo possiamo considerare i punti di <n come interni a M quelli per cui F (x) < 0, viceversa come esterni a M quelli per cui F (x) > 0. I punti appartenenti a M invece, vengono chiamati “di interfaccia”. Le forze vengono quindi applicate al grafico di F e non direttamente a M . In questo modo la varietà può, durante la sua evoluzione, cambiare facilmente topologia (basti osservare la figura [3.4]). Questa caratteristica non è presente nei modelli parametrici, a meno che non si ricorra ad un controllo delle collisioni e ad una successiva riparametrizzazione di M (procedimento abbastanza complesso). La topologia dinamica è il punto di forza dei modelli geometrici ed è anche il motivo primario per cui allora, sono stati introdotti. Questa facilità nel cambiare topologia anche se spesso desiderata, non è sempre voluta, e introduce il grosso problema del suo controllo. [XHP03] hanno recentemente proposto un metodo per controllare questi continui cambi. 1 40 Per una definizione formale rimando al capitolo 2. 3.2. I MODELLI DEFORMABILI La funzione F evolve nel tempo seguendo la relazione: ∂F (t) = c(κ(t) + V0 ) |5F (t)| ∂t dove c (x) = 1 1 + |5[Gσ ∗ I](x)| (3.22) (3.23) V0 è una costante e κ è la curvatura media definita come la divergenza della normale di F 5F (3.24) κ=5·N =5· |5F | In questo modo, i punti dell’interfaccia di F (LevelSetF (c)) si muovono lungo la loro direzione normale 5F con velocità c(κ + V0 ). κ si occuperà di mantenere regolare M , mentre V0 si occuperà di espanderla o restringerla fino a che non venga bloccata dai termini c (x). V0 |5F (t)| viene spesso chiamato campo di velocità autogenerato di M , ed imprime al modello la caratteristica di intrufolarsi all’interno di ogni concavità di |5[Gσ ∗ I](x)|, quasi come fosse la superficie di frontiera di un liquido. Questa analogia è molto azzeccata infatti, le equazioni che governano il moto di questo oggetto fisico, sono molto simili a quelle appena presentate. In particolare, se ponessimo c costante a uno, l’equazione [3.22] modellerebbe il fronte di una fiamma che brucia all’interno di un materiale. Quindi in presenza di una cavità o di un buco nel contorno dell’immagine |5[Gσ ∗ I](x)|, il level-set tenderà ad espandersi al suo interno. Questa comportamento è un’altra caratteristica tipica dei modelli geometrici. A livello teorico, dovrebbe accadere la stessa cosa anche in quelli parametrici ma, dato che la loro implementazione non è altro che una banale discesa del gradiente, è probabile che l’evoluzione si blocchi a dei minimi locali. Guarda caso, questi minimi, si presentano proprio in varietà poste sul limite della concavità. Questo problema verrà trattato in seguito. Nei modelli geometrici invece, vi è il problema opposto, ovvero la nostra interfaccia tende a infilarsi in ogni buco, anche in quelli dovuti a imperfezioni di contorno dell’immagine. Questo problema è talmente indesiderato che gli è stato dato persino un nome: “boundary leaking problem”. Per risolverlo si introducono termini di “stop” nella [3.22] come 5c · 5F (3.25) Riassumiamo qui le differenze tra i due modelli deformabili: • Geometrici 41 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION – Possono cambiare dinamicamente la topologia – Si espandono facilmente all’interno delle concavità – Tempo di evoluzione di gran lunga superiore a quello dei modelli parametrici – Difficile controllare la loro topologia • Parametrici – La loro topologia rimane costante, a meno che non avvenga una esplicita riparametrizzazione – Hanno molta difficoltà ad infilarsi all’interno delle concavità – Veloci – Facili da controllare 3.2.1 Risolviamo il nostro problema: Modelli Parametrici o Gradient Descent Ritorniamo ora, al nostro problema di “silhouette-stereo fusion”. Come già in [SN03], [ES04] la scelta sul modo in cui risolverlo cade sui modelli deformabili parametrici. In questo caso, restringeremo la ricerca della soluzione del problema a tutte quelle varietà M per cui esista una loro parametrizzazione totale. Più formalmente: ∃ ψ : A ⊂ <k → <n , con A aperto <k tale che ψ (A) = M −I con mis[ψ −1 (I)] = 0 (ovvero il cui codomio ψ è M a meno di un insieme di punti di misura nulla). In particolare vorremmo che ψ sia di classe C 4 per motivi che saranno chiari solo in seguito. Inoltre gli oggetti su cui andremo ad operare e a ricercare la soluzione, saranno queste parametrizzazioni e non le varietà che descrivono. Ovvero il dominio del problema sarà Π = C 4 (A, <n ) (3.26) con A aperto limitato di <k , e k la dimensione della varietà. Dato che esistono infinite parametrizzazioni ∈ Π che descrivono la stessa varietà M , sarà opportuno imporre come vincolo del problema il fatto che questa parametrizzazione dovrà essere il più regolare possibile, con il significato dato nel capitolo 2. L’insieme Π appena definito ha una struttura di spazio vettoriale infinito dimensionale su < e data la sua completezza rispetto alla norma del massimo kvk∞ = sup |v (x)| x∈A 42 (3.27) 3.2. I MODELLI DEFORMABILI è spazio di Banach. Quindi per z (Π, <), ovvero l’insieme di tutti i funzionali che da Π vanno in <, è definito il concetto di derivata di Gateaux (è ovvio, infatti che anche < è spazio di Banach). In particolare, esso esiste anche per il nostro funzionale ξ ∈ z (Π, <). Utilizzando i risultati del calcolo delle variazioni [Fox87], possiamo affermare che i punti di minimo della nostra ξ si devono ricercare tra suoi punti stazionari, ovvero quei punti per cui la dervata di Gateaux è nulla per ogni possibile direzione λ. Più formalmente v ∈ Π è punto stazionario o critico per ξ se e solo se ∂ξ (v) = 0 ∂λ , ∀λ ∈ Π (3.28) Una volta trovati tutti i punti stazionari di ξ, dovremo controllarli uno per uno e verificare che siano effettivamente dei minimi. Infatti, i punti critici di un funzionale comprendono oltre ai suoi minimi assoluti, anche i minimi locali, i massimi (locali e non), e altri punti che lungo alcune direzioni sono di massimo, per altre son di minimo e per altre ancora magari, ne di minimo ne di massimo. Dalla [3.17] il nostro funzionale ξ è posto nella forma Z ξ (s) = g (s (u, v) , ∇s (u, v) , Hs (u, v)) dudv (3.29) A dove s è una superficie parametrica o meglio, una funzione C 4 (A, <3 ), con A aperto limitato di <2 , ∇s è il gradiente (o la matrice jacobiana) di tale funzione ∂s ∂s ∇s = , (3.30) ∂u ∂v Hs è la sua matrice hessiana " Hs = ∂2s ∂u2 ∂2s ∂v∂u ∂2s ∂u∂v ∂2s ∂v 2 # (3.31) 2 4 e g(s, z1 , z2 , p1 , p2 , p3 , p4 ) è una funzione <3 × (<3 ) × (<3 ) → <. In particolare le derivate prime e seconde di s sono utilizzate solo nella parte ξ interna del funzionale che invece è indipendente da s (u, v). Questo perché la curvatura di una superficie non dipende da dove quest’ultima è posta nello spazio, ma dalla sua forma. ξ texture , ξ silhouette invece, dipendono solo da s (u, v). Per il teorema di Eulero-Lagrange [Fox87], i punti stazionari della [3.29] per variazioni che rispettano gli estremi, soddisfano la condizione ∂ ∂g ∂ ∂g ∂ 2 ∂g ∂ 2 ∂g ∂ 2 ∂g ∂ 2 ∂g ∂g − − + 2 + 2 + + = 0 (3.32) ∂s ∂u ∂z1 ∂v ∂z2 ∂u ∂p1 ∂v ∂p2 ∂v∂u ∂p3 ∂u∂v ∂p4 43 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION per (u, v) ∈ A. Data la linearità dell’equazione di eulero-lagrange, si possono analizzare separatamente le varie parti di g, calcolandone le derivate e solo alla fine porre la somma uguale a zero. Ques’ultime verranno chiamate rispettivamente Finterna , Ftexture e Fsilhouette . Possiamo quindi enunciare il seguente teorema: Teorema 3.3 s è punto stazionario di ξ per variazioni che rispettano gli estremi se e solo se Finterna (∇s (u, v) , Hs (u, v)) + Ftexture (s (u, v)) + Fsilhouette (s (u, v) , M ) = 0 (3.33) per ogni (u, v) ∈ A. E’ significativo il fatto che ogni punto di s deve soddisfare la [3.33] in modo quasi indipendente dagli altri. Inoltre dato che Finterna , Ftexture , Fsilhouette hanno codominio in <3 , è intuitivo vedere queste tre funzioni come tre forze applicate alla superficie. In particolare Finterna è funzione solo della forma di s in un piccolo intorno del punto considerato. Ftexture dipende solo dalla sua posizione nello spazio. Fsilhouette invece, oltre che dalla posizione nello spazio, dipende anche dall’intera varietà M (equivalente al codomio di s). Possiamo quindi concludere che Corollario 3.4 Una superficie s è stazionaria per ξ se e solo se ogni suo punto bilancia le tre forze Finterna , Ftexture , Fsilhouette applicate su di esso. Questa considerazione ci suggerisce un metodo per trovare i punti stazionari di ξ. Infatti essa crea un’analogia con una superficie reale che si deforma nel tempo sottoposta a forze di varia natura (vedi figura [3.5]). Se quest’ultime raggiungono una situazione di equilibrio, allora possiamo affermare che in ogni loro punto saranno bilanciate le forze ad esso applicate. Anche se nella letteratura relativa ai modelli deformabili è sempre presente il concetto di forza, in realtà essa viene sempre integrata come una velocità, ovvero sulla derivata prima e non sulla seconda. Dovremo quindi, per correttezza chiamarle velocità dei punti della superficie e non forze. D’altro canto, il vero concetto di forza introdurrebbe anche quello di massa di inerzia di un punto appartenente alla superficie, al che si rallenterebbe la dinamica e si istaurerebbero più oscillazioni di quante ve ne siano già. Ciò nonostante, anche noi adotteremo la convenzione assunta implicitamente in tutti gli articoli correlati. 44 3.2. I MODELLI DEFORMABILI Figura 3.5: Superficie deformabile soggetta a forze di varia natura. L’equazione del moto di questa superficie è la seguente: ( s (0) (P ) = s0 (P ) ∂s (t) (P ) = β · (Finterna (P, s) + Ftexture (P ) + Fsilhouette (P, s)) ∂t (3.34) Ovvero partendo da uno stato iniziale s0 , la superficie evolverà nel tempo sottoposta a queste tre forze modulate dal parametro β che assicurerà la convergenza asintottica dell’intero modello. La superficie quindi, per t → ∞, giungerà ad uno stato di equilibrio che corrisponderà ad un punto stazionario2 di ξ. La scelta di β non è un problema banale e verrà trattata nel prossimo capitolo. Considerazioni pratiche sulla scelta di questo parametro, ci portano ad osservare che β troppo elevati portano oscillazioni nel tempo della superficie. Queste possono essere dovute da forze di texture o di silhouette che spostano qua e là il modello nello spazio o da forze interne che generano fronti d’onda che si propagano sulla sua superficie (vedi figura [3.6]). β troppo piccoli invece, rallentano la convergenza del modello e quindi aumentano il tempo di calcolo. Osservando la [3.34], si vede subito che questo metodo non è altro che un algoritmo di discesa del gradiente sull’equazione di eulero-lagrange [3.33] ∂s ∂Eq ξ (t) = −β (s (t)) ∂t ∂s (3.35) Quindi esso eredita tutti i problemi relativi alla discesa del gradiente quali, la convergenza nei minimi locali ed il rallentamento dell’algoritmo in presenza di appiattimenti della funzione costo. Escludiamo inoltre, la possibilità di ottenere 2 In realtà noi vorremmo giungere ad un punto di minimo di ξ, quindi la sommatoria Finterna + Ftexture + Fsilhouette derivata dalla [3.33] dovrà essere presa col segno che va a minimizzare ξ. 45 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION Figura 3.6: Oscillazioni generate sulla superficie del modello a causa di un errato valore di β. Σ d(p,Σ) P1 P2 P3 Figura 3.7: A sinistra, versione monodimensionale di dΣ . A destra invece, l’insieme di discontinuità di una dΣ bidimensionale. superfici massime o di sella per ξ dato che l’algoritmo non può convergere in tali soluzioni. Per integrare numericamente la [3.34], useremo il metodo Eulero in avanti : xt+1 = xt + β · (Finterna + Ftexture + Fsilhouette ) 3.2.2 (3.36) Ricaviamo le forze Passiamo ora a ricavare l’espressione analitica delle nostre tre forze. Per quanto riguarda Ftexture , dalla [3.9] con k = 1 e dalla [3.32] essa coincide con ∂ dΣ (s) ∂s (3.37) Questo funzionale infatti dipende solo dal valore di s e non dalle sue derivate. 46 3.2. I MODELLI DEFORMABILI Ora dΣ : <3 → < definito nella [3.10] non è differenziabile ovunque, infatti la presenza della funzione min introduce dei punti angolosi (vedi figura [3.7]). L’insieme di non differenziabilità però, ha misura nulla, infatti esso coincide con le curve di equidistanza tra i punti3 di Σ (vedi figura [3.7]). Per tutti gli altri punti x invece, esiste un intorno A (x) tale che esiste un punto y ∈ Σ, per cui ogni punto di A (x) è più vicino a y che ad ogni altro punto di Σ. Per questo intorno allora la funzione dΣ assumerà la forma dΣ (a) = d(a, y) ,∀a ∈ A (x) che è differenziabile, e la suo gradiente vale: x−y kx − yk (3.38) (3.39) Ovvero pari alla direzione che congiunge il punto x al punto più vicino dell’insieme Σ. Quindi4 y−x Ftexture (x) = dove y è il più vicino punto di Σ (3.40) ky − xk Dato che Ftexture non dipende assolutamente dalla superficie, esso può essere visto come un campo di forze esterno generato da Σ, a cui s sarà soggetta. Per quanto riguarda Finterna invece, dovremo applicare eulero-lagrange alla funzione eG − 2f F + gE (3.41) κ(∇s (u, v) , Hs (u, v)) = 2(EG − F 2 ) dove E, F ,G sono i coefficienti della prima forma fondamentale mentre, e, f , g quelli della seconda. Il calcolo risulta essere abbastanza laborioso, quindi rimando all’articolo di [MDB99] per il dettagli. La forza relativa è FmeanCurvature = −κn (3.42) Questa forza però non è sufficiente a raggiungere gli obbiettivi del nostro problema. Abbiamo precedentemente accennato al fatto che la nostra soluzione dovrà avere una parametrizzazione il più possibile regolare. Ora nessuno dei funzionali ξ fa riferimento all’esplicita parametrizzazione s, ma sempre alla sua geometria. Aggiungiamo quindi, al funzionale ξ interna un termine che ci permetterà di ottenere questo obbiettivo: Z 2 2 ∂s 1 + ∂s dudv Emembrane (s) = (3.43) ∂v 2 A ∂u 3 Per garantire la misura nulla di tale insieme è sufficiente che Σ sia finito. Noi lavoreremo solo con Σ finiti. 4 Aggiungiamo il segno meno alla forza in modo che sia diretta verso il minimo. 47 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION Esso penalizza le parametrizzazioni in cui derivata prima è elevata. La sua forza relativa quindi, tenderà a rendere la parametrizzazione il più simile possibile ad una isometria. Il funzionale ξ interna diventerà ξ interna (s) = elasticity · Emembrane (s) + rigidity · Ecurvature (s) (3.44) dove elasticity controllerà l’elasticità (nel senso fisico) della superficie. Essa inoltre regola la tendenza della superficie a restringersi fino a diventare un punto. rigidity invece, prende il posto di κinterna in [3.8], ovvero regola la resistenza alle pieghe. Valori elevati di questo parametro fanno tendere la superficie ad una sfera (ovvero nell’unica forma a curvatura costante). Nell’articolo [MDB99] il funzionale Ecurvature viene sostituito con 2 2 Z 2 2 2 2 ∂ s ∂ s 1 + + 2 ∂ s dudv Ethin plate (s) = (3.45) ∂v 2 ∂v∂u 2 A ∂u2 Esso, oltre a essere facile da calcolare, dipende fortemente dalla parametrizzazione. Inoltre se quest’ultima è una isometria, la [3.45] coincide con la curvatura totale. Quindi applicando assieme Emembrane e Ethin plate avremo una parametrizzazione che dapprima tenderà a diventare un’isometria e successivamente minimizzerà la sua curvatura totale. Usando la [3.32] ricaviamo le forme secondo eulero-lagrange della [3.43] e della [3.45], e quindi anche le relative forze: ∂2s ∂2s + = ∇2 (s) (3.46) ∂u2 ∂v 2 ∂4s ∂4s ∂4s Fthin plate = − 4 − 4 − 2 2 2 = −∇4 (s) (3.47) ∂u ∂v ∂u ∂v equivalenti ovvero, al laplaciano e al bilaplaciano. Taubin in [Tau95] usando la teoria dei segnali ha dimostrato che combinando queste due forze tra loro nel modo (λ + µ) ∇2 − λµ∇4 , si può ottenere un filtraggio gaussiano della superficie. Fmembrane = Per quanto riguarda Fsilhouette invece, possiamo osservare che la [3.13] è posta nella forma Z Z ξ silhouette (M ) = Sc (Vc (P )) ds = g (s (u, v)) dudv (3.48) M M Applichiamo quindi la formula di eulero-lagrange nei punti in cui g è derivabile, ovvero in quei punti in cui la vista c rimane costante. Quest’ultima rimane definita c = arg minj d (Vj (P ) , ∂Pj ). Quindi ∂ 0 − Sc ◦ Vc (P ) = − (∇Sc ◦ Vc ) · Vc (P ) (3.49) ∂s 48 3.2. I MODELLI DEFORMABILI ∂Vc(M) ∂Pc v ∂Pc ∂Vc(M) (a) ∂Vc(M) Non è soggetto ad alcuna forza (B) ∂Pc (D) (c) Figura 3.8: a), b), c) esempi di forze di silhouette. d) grafico della funzione h0 (x). Ora se Vc (P ) ∈ / Pc , Sc (v) = 12 d (v, ∂Pc )2 . In tal caso l’opposto del suo gradiente è un vettore in <2 che se applicato a v si rivolgere verso il punto più vicino di ∂Pc con intensità pari a d (v, ∂Pc ) (vedi figura [3.8a]). Se invece, Vc (P ) ∈ Pc allora Sc (v) = (d (v, ∂Pc ) − g) · h (g) e il relativo gradiente è ∇Sc (v) = (d (v, ∂Pc ) − g) · h0 (g) (3.50) Infatti ∇ (d (v, ∂Pc ) − g) = ∇d (v, ∂Pc )−∇g è uguale a zero perché ∇d (v, ∂Pc ) , ∇g sono versori paralleli. Per quanto riguarda h0 (x) invece ( 0 h (x) = − p1 x + 1 0 6 x 6 p 0 x>p (3.51) In questo modo la forza esiste solo per i punti che distano al più p dal bordo ∂Vc (M ) (vedi figura [3.8d]). Inoltre essa è diretta verso il punto più vicino di ∂Pc 49 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION Figura 3.9: Campo di forze generato dalla [3.40] in presenza dell’oggetto a forma di U: a) Evoluzione dello snake relativo, b) Rappresentazione del campo di forze, c) Zoom del campo in prossimità della regione concava. con intensità pari a 1 (d (v, ∂Pc ) − g) 1 − g p (3.52) ovvero proporzionale alla distanza tra i due bordi. Essa inoltre, si indebolisce man mano che ci si allontana dal bordo di Vc (M ), annullandosi definitivamente a distanza p da esso (vedi figura [3.8c]). Per i punti appartenenti a ∂Vc (P ) invece, la sua intensità è sempre pari a (d (v, ∂Pc ) − g) (vedi figura [3.8b]). 3.2.3 Il problema delle concavità: il GVF Abbiamo già accennato al fatto che i modelli parametrici, possano bloccarsi in minimi locali. Inoltre abbiamo detto che molte volte essi si presentano in varietà poste sul limite di una concavità. Per dimostrare ciò faremo uso del classico esempio dell’oggetto a forma di U usato da Chenyang Xu in [XP98]. Come si vede dalla figura [3.9b,c], le linee di campo generate dalla [3.40] ovvero dal gradiente di dΣ (P ) = min {d (P, x) | ∀x ∈ Σ} (3.53) sono orizzontali all’interno della concavità. In questo modo una qualsiasi superficie posta alla sua soglia non verrà mai spinta all’interno poiché le forze sono tutte ad essa tangenti. Abbiamo quindi bisogno di una trasformazione non lineare del campo di velocità che alteri la direzione di queste forze. 50 3.2. I MODELLI DEFORMABILI In [XP98] viene introdotto un campo di forze chiamato gradient vector flow (GVF), che risolve in parte il problema delle concavità. Esso è un campo irrotazionale, ovvero non può essere scritto come il gradiente di un potenziale, e quindi l’evoluzione del modello perde la sua formulazione variazionale. Questa perdita di ottimalità è compensata dai risultati che si ottengono in presenza di concavità. Definiamo dapprima un campo scalare fΣ : <3 → < direttamente derivato da Σ: X fΣ (P ) = ζ(kP − xk) (3.54) x∈Σ L’obbiettivo è quello di definire fΣ come un insieme di piccole colline centrate nei punti di Σ. Quindi ζ dovrà essere una qualsiasi funzione di classe C 1 con supporto piccolo intorno allo zero. Un coseno rialzato ad esempio x (3.55) ,α ζ (x) = r cos σ va benissimo, basta che si ponga α 6= 0. In questo modo modificando σ regolo l’estensione del supporto. Definizione 3.5 Definiamo GV F di un campo scalare fΣ , un campo di velocità F = GV F (fΣ ) che minimizza il seguente funzionale Z µ k∇F (p)k2 + k∇fΣ (p)k2 kF (p) − ∇fΣ (p)k2 dp (3.56) Φ (F ) = <n dove per k∇F (p)k si intende la norma del vettore formato da tutte le derivate prime di F . Dalla [3.56] osserviamo che nei punti in cui k∇fΣ (p)k è piccolo, l’energia Φ (F ) è dominata dal termine µ k∇F (p)k2 , ovvero vengono penalizzati i campi con grosse variazioni (∇F ). D’altro canto, dove k∇fΣ (p)k è elevato, è il secondo termine a dominare l’integrale (kF (p) − ∇fΣ (p)k), il quale è minimo quando F (p) = ∇fΣ (p). Si otterrà quindi, un campo di velocità molto simile al gradiente di fΣ in prossimità dei punti di Σ, che varierà in modo il più regolare possibile in tutte le altre zone. In questo modo si addolciscono le variazioni di ∇fΣ e nello momento le si propaga. Il parametro µ governa il trade-off tra primo e secondo termine, ovvero quanto regolare dovrà essere F . In particolare se µ tende a zero, GV F (fΣ ) tenderà a ∇fΣ . Al contrario, se µ tende a infinito allora GV F (fΣ ) tenderà ad essere costante al vettore media di ∇fΣ . Nel caso il GV F venga applicato agli active-contours, µ dovrà essere regolato in modo proporzionale al rumore presente nell’immagine. 51 CAPITOLO 3. IL PROBLEMA SILHOUETTE-STEREO FUSION Figura 3.10: GVF in presenza dell’oggetto a forma di U: a) Evoluzione dello snake relativo, b) Rappresentazione del campo di forze, c) Zoom del campo in prossimità della regione concava. Come mostrato nell’articolo [XP98], il fatto che [3.56] abbia come soluzione di eulero-lagrange un’equazione di diffusione, fa si che molte concavità possano essere esplorate dal modello deformabile. Infatti, come si vede dalla figura [3.10b,c], il campo in prossimità e all’interno della concavità ha anche una componente verticale oltre a quella orizzontale generata da [3.40]. Ciò fa si che il modello non si arresti in un minimo locale, ma anzi prosegua con una consistente velocità all’interno della concavità, vedi figura [3.10a]. Da notare che anche se introducendo il GV F il problema perde la sua formulazione variazionale, si può sempre parlare di problema di minimo su ξ. Infatti, in tal caso, ciò che è veramente cambiato non è il funzionale ξ ma il modo in cui si cerca il minimo. Infatti GV F spinge comunque la superficie a minimizzare ξ, solo che non lo fa lungo il suo gradiente. Nell’articolo [XP98], Chenyang Xu è molto fiducioso sulle potenzialità del suo GV F . In realtà non tutte le concavità sono esplorabili, o meglio dobbiamo fare una precisazioni sul concetto di concavità che il GV F permette di esplorare. Prendiamo l’esempio proposto in figura [3.11b], in questa situazione l’oggetto da approssimare ha una topologia differente da quella dello snake. Data la presenza di una concavità, lo snake penetra comunque al suo interno fino a che non incrocia se stesso. Ciò non accade nell’esempio in figura [3.11a]. In tal caso infatti, il campo di forze presenta due punti di equilibrio che impediscono allo snake di addentrarsi all’interno della concavità. Inoltre, la porzione di snake libera da questo equilibrio non riesce comunque a raggiungere le altre perché viene bloccata dalla sua rigidità. Il terzo caso invece, figura [3.11c], non è risolvibile nemmeno 52 3.2. I MODELLI DEFORMABILI Figura 3.11: GVF in presenza di tre oggetti con diversa topologia. I pallini neri indicano i punti di equilibrio del campo. abbassando al minimo la rigidità dello snake. 53 Capitolo 4 I dettagli implementativi La teoria sui modelli deformabili è ben lontana da una diretta realizzazione algoritmica. Quest’ultima deve affrontare diversi problemi dovuti da una parte all’impossibilità di integrare al calcolatore sistemi continui, dall’altra all’impossibilità di memorizzare un campo di forze definito su uno spazio continuo. Quest’ultimo è il caso del GV F , che non può, per ragioni di complessità temporale, essere calcolato di volta in volta. Descriverò quindi l’obbiettivo del mio lavoro, ovvero quello di realizzare un software semi-interattivo finalizzato alla fusione dei dati stereo e silhouette. Esso dovrà essere robusto, veloce e funzionare per qualsiasi tipo di superficie del dominio Π. Inoltre dovrà dare tutte le informazioni necessarie durante la fase di evoluzione comprese quelle visive, al fine di identificare ed eliminare possibili minimi locali. Il modello finale dovrà massimizzare gli indici di qualità definiti al capitolo 2: per far questo saranno messe a disposizione numerose funzioni di correzione ed elaborazione della mesh. In questo capitolo, verrà innanzitutto risolto il problema del GV F tramite integrazione numerica su una griglia multidimensionale e successivamente trattati i problemi relativi al calcolo delle forze di silhouette e interne. Per il calcolo delle prime in particolare, verranno utilizzati acceleratori hardware 3d al fine di velocizzare il processo. Inoltre verranno effettuate delle comparazioni tra le Fsilhouette da me definite e quelle proposte negli articoli [ES04] e [SN03]. Infine verranno proposti dei metodi per massimizzare la qualità della mesh. CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI 4.1 Il calcolo del Gradient Vector Flow La [3.56] è espressa nella forma Z Φ (F ) = g (F (x, y, z) , ∇F (x, y, z)) dxdydz (4.1) A quindi la relativa equazione di eulero-lagrange sarà 2 k∇fΣ k2 (F − ∇fΣ ) − 2µ 52 F = 0 (4.2) valida per ogni punto P ∈ A. Per calcolare il campo F che soddisfa la [4.2], ovvero che minimizza la [3.56] usiamo lo stesso algoritmo di discesa del gradiente descritto per i modelli deformabili. Ovvero GV F (fΣ ) coincide con un punto di equilibrio dell’equazione differenziale ( F (0) = ∇fΣ (4.3) 2 ∂F 2 (t) = β µ (5 F ) − k∇f k (F − ∇f ) Σ Σ ∂t La [4.3] è nota in letteratura come l’equazione di diffusione generalizzata. Il campo F (t) evolve nel tempo, da uno stato in t = 0 pari al gradiente originale ∇fΣ , propagandosi a velocità costante verso l’infinito. Ne deduciamo che un qualsiasi punto p risentirà del campo solo dopo un certo ∆t proporzionale alla distanza di p da Σ. Quindi dato che siamo interessati ai valori assunti dal GV F in un piccolo intorno di Σ, possiamo accontentarci di poche iterazioni di [4.3] o della sua versione discreta. Quest’ultima in particolare, presenta due tipi di discretizzazione: una spaziale e l’altra temporale. La prima dipenderà dalla risoluzione scelta per il modello, mentre la seconda dovrà essere regolata assieme al parametro β al fine di garantire la stabilità asintottica del sistema. L’implementazione numerica della [4.3] incontra diversi problemi. Primo fra tutti è la quantità di memoria necessaria ad immagazzinare fΣ e F . Preso ad esempio un modello, fotografato da diverse angolazioni con risoluzione 700x7001 , esso sarà contenuto in una bounding box indicativamente di dimensioni 7003 . Questa è la massima risoluzione spaziale con cui potranno essere descritti i punti delle corrispondenze (una risoluzione maggiore non avrebbe senso, perché l’errore di quantizzazione sarebbe maggiore). Supponiamo ora di voler modellare l’oggetto ad una risoluzione maggiore al fine di spianare gli spigoli dovuti agli errori di quantizzazione. Supponiamo che sia sufficiente raddoppiarla. Supponiamo inoltre, di mantenere questa risoluzione anche per il calcolo di fΣ , ∇fΣ e del suo 1 56 Intendiamo qui, la risoluzione del modello in se e non dell’intera immagine che lo contiene. 4.1. IL CALCOLO DEL GRADIENT VECTOR FLOW GV F . In tal caso, avremo bisogno di due vettori ed uno scalare2 per ogni punto appartenente alla bounding box dell’oggetto. Lavorando con i double a 64bit, lo spazio occupato da queste informazioni sarà di circa 150Gbytes che è una mole di dati intrattabile per un normale calcolatore. In [ES04], questo problema viene risolto utilizzando una multi-resolution grid. Lo spazio verrà quindi suddiviso in aree di diversa dimensione, in particolare quelle di maggior interesse, avranno una risoluzione superiore alle altre. In questo modo comprimeremo i dati, perdendo solamente informazioni che non sono strettamente necessarie ai nostri fini. Organizziamo in memoria questa struttura utilizzando un octree (vedi sezione successiva). In questo modo, le nostre funzioni fΣ , ∇fΣ , GV F (fΣ ) risultano campionate in modo disuniforme nello spazio. Le aree di suddivisione verranno chiamate voxel e corrisponderanno alle foglie dell’octree. Esse hanno forma cubica e sono centrate sul punto di campionamento corrispondente. Ora, ritornando al modello di dimensioni 7003 descritto precedentemente, supponiamo che i voxel occupati dalla superficie finale siano all’incirca 60.000. Essi coincidono con i punti di maggior interesse, ovvero i punti in cui la GV F dovrà essere calcolata con la massima precisione. Supponiamo che quest’ultima sia di 0, 68 = 700/210 , corrispondente alla risoluzione ottenuta usando un octree con dieci livelli. Il numero di foglie dell’albero sarà circa 400.000, il che corrisponde ad un numero di nodi totali pari a 800.000 e quindi ad una memoria complessiva di circa 70Mbytes. Quantità di gran lunga inferiore ai 150Gbytes necessari per la memorizzazione di una griglia regolare. Rimane quindi il problema di stimare la derivata prima e seconda di ognuna di esse lungo una qualsiasi direzione. Intuitivamente, l’idea ottimale sarebbe quella di interpolare i nostri dati e successivamente ricavare queste informazioni. Questo procedimento però, è pesante in termini di tempo di calcolo e quindi dobbiamo accontentarci di una sua approssimazione. Analizziamo inizialmente il caso monodimensionale. Il problema si traduce nel stimare le derivate prime e seconde di f nel punto x conoscendone i valori in x, x1 , x2 , dove x1 , x2 sono i punti di campionamento più vicini a x (vedi figura [4.1]). Seguendo il ragionamento precedente interpoliamo questi tre dati con una parabola ax2 + bx + c e successivamente deriviamola ottenendo: 2 Si tralasciano i dati necessari ad eseguire un algoritmo per il calcolo del GV F . 57 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI f x1 x x2 Figura 4.1: Calcolo della derivata di f in una griglia a multirisoluzione. ∂f 1 f (x + ∆) − f (x) f (x − δ) − f (x) (x) ' δ −∆ ∂x δ+∆ ∆ δ 2 ∂ f f (x + ∆) − f (x) f (x − δ) − f (x) 2 + (x) ' ∂x2 δ+∆ ∆ δ (4.4) (4.5) dove ∆ = x1 − x e δ = x2 − x. Nel caso di griglia regolare, esse si semplificano ad essere le approssimazioni centrali alle differenze finite delle derivate prime e seconde di f : f (x + ∆x) − f (x − ∆x) 2∆x f (x + ∆x) + f (x − ∆x) − 2f (x) fxx (x) ' ∆x2 fx (x) ' (4.6) (4.7) Come già osservato da [ES04], questa approssimazione impone che δ e ∆ siano piccoli e simili tra loro. In termini di octree ciò si traduce nel vincolo che i vicini di un nodo (voxel) devono differire in dimensioni dal nodo stesso di al massimo un livello. Solo in questo modo otteniamo una buona approssimazione del GV F . Nel caso multidimensionale invece, dobbiamo distinguere tre differenti situazioni riassunte in figura [4.2]. La prima [4.2a], sussiste quando sia il voxel di interesse che i suoi vicini hanno tutti la stessa dimensione. Basterà quindi comportarci come se fossimo in presenza di una griglia regolare. Nella seconda invece, il vicino B ha dimensione maggiore di quella del voxel A (figura [4.2b]). In tal caso è necessario interpolare f in un punto lungo la retta Γ passante per il centro di A e con direzione pari a quella di derivazione. In particolare interpoliamo nel punto ϑ di intersezione tra questa retta e l’iperpiano ortogonale ad essa passante per il centro del nodo vicino B. Per calcolarne il valore in questo punto utilizzeremo le informazioni provenienti dai suoi vicini C, D. A loro volta però C, D potrebbero avere dimensioni diverse da B, cosı̀ che il ragionamento si può iterare ricorsivamente rischiando di continuare per un bel po’. Per ovvie ragioni di tempo di calcolo quindi ci fermeremo alla prima interpolazione. Da notare che 58 4.1. IL CALCOLO DEL GRADIENT VECTOR FLOW C A A ϑ D B A B (a) (b) (c) Figura 4.2: Calcolo della derivata in una griglia multidimensionale. l’interpolazione nel piano può essere facilmente risolta con il metodo bi-lineare f (ϑ) = (f (c) − f (b)) dc + (f (d) − f (b)) dd + f (b) (4.8) dove dc , dd sono rispettivamente la distanza da b della proiezione di ϑ lungo la retta che congiunge b a c, d. Nel terzo caso infine, il voxel corrente A ha dimensione maggiore dei suoi vicini. Qui [ES04] suggerisce di utilizzare il valore di f interpolato nel centro del voxel B indicato in figura [4.2c]. Ovvero quel voxel delle stesse dimensioni di A che contiene tutti i suoi vicini ma non A stesso. In questo modo possiamo comportarci come se avessimo di fronte una griglia regolare. In termini di octree, ciò corrisponde ad utilizzare il nodo dello stesso livello nell’albero di A e ad esso spazialmente contiguo. Il valore di f in questo punto si trova con un’interpolazione tri-lineare, che data la particolarità del punto corrisponde ad una media dei suoi otto figli del nodo. Data la ricorsività dell’operazione, al fine di velocizzare il calcolo, sarà necessario realizzare una procedura di aggiornamento del valore di f che dalle foglie dell’octree si propaga verso la radice (tramite un algoritmo di depth-first traversal). Ritornando al problema del calcolo della GV F (fΣ ), la versione discreta della [4.3] è la seguente F t+1 = F t + β µ 52 F t − k∇fΣ k2 F t − ∇fΣ (4.9) Ad ogni passo di integrazione quindi, basterà calcolare il laplaciano del GV F corrente e successivamente aggiornalo tramite la [4.9]. Il gradiente della fΣ , sarà calcolato a priori ed esteso a tutti i nodi dell’octree al fine di velocizzare la procedura. 59 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI Figura 4.3: Errore nel calcolo del GVF utilizzando il metodo proposto da [ES04]. 4.1.1 Modifiche introdotte Il metodo proposto da [ES04] per risolvere il caso di figura [4.2c] è numericamente corretto, ma introduce degli errori che sono molto fastidiosi per la convergenza del modello deformabile. Infatti, durante la fase di sperimentazione dello snake si è presentato il caso rappresentato in figura [4.3]. Come si vede, il fatto che la derivata in A venga calcolata usando la media dei voxel contenuti in B fa si che sia quest’ultima a propagarsi verso l’esterno della figura. Ottenendo quindi un campo di forze che dall’interno della figura spinge verso l’esterno, quasi come fosse bucata. Ovviamente ciò è dovuto dal fatto che i voxel di B che spingono verso l’interno sono molto pochi rispetto a quelli che spingono verso l’esterno e quindi la media è quello che è. Per risolvere questo problema basta non più riferirsi al voxel grande, ma alla media di tutti i voxel aderenti ad A. La media però deve essere sempre preceduta da un’interpolazione di f nel piano ortogonale alla direzione di derivazione e passante per il centro del voxel più vicino a quello in considerazione (vedi figura [4.4]). In questo modo però la complessità del problema aumenta vistosamente, infatti trovare tutti i voxel aderenti ad A è molto più oneroso di cercare il voxel aderente e dalle stesse dimensioni di A (si veda la sezione sull’octree per un algoritmo efficiente). Data la discretizzazione del GV F , se la nostra superficie fosse soggetta solo a questa forza, tenderebbe a disporsi lungo le pareti dei voxel, ovvero dove ogni suo piccolo movimento corrisponderebbe alla generazione di una forza che annulla lo spostamento. Quindi la superficie finale seguirà il perimetro dei voxel in essa 60 4.1. IL CALCOLO DEL GRADIENT VECTOR FLOW A B Figura 4.4: Modifica introdotta per il calcolo della derivata. Viene interpolato f nel piano ortogonale alla direzione di derivazione e passante per il centro del voxel più vicino (linea tratteggiata). contenuti. L’azione delle forze interne attenua in parte questo effetto smussando gli spigoli. Questa forte discretizzazione può introdurre inoltre problemi di convergenza, infatti può accadere che un punto P rimanga interno ad un voxel grande perché spinto da esso in direzione opposta a quella generata dalle forze interne. Il modello si stabilizza quindi in un minimo locale determinato dallo schema di campionamento del GV F , assumendo in prossimità di P una forma ad elevata curvatura. Questo modello però non è minimo per il sistema originale e quindi è necessario utilizzare una versione interpolata del GV F in modo che, essendo essa definita continua su tutto <3 , vengano evitati questi spiacevoli problemi. Nella mia realizzazione uso un’interpolazione tri-lineare. 4.1.2 La struttura 2n -tree Un 2 n -tree è un albero dove ciascun nodo interno ha 2n figli. A ciascun nodo è associato un ipercubo di <n con il vincolo che i gli ipercubi associati ai figli di ogni nodo interno siano una equipartizione di quello associato al padre. In questo modo la radice dell’albero rappresenterà tutto lo spazio di interesse, essa si dividerà in 2n ipercubi di ugual dimensione nel modo descritto in figura [4.5]. Ognuno di questi potrà a sua volta essere diviso in 2n ipercubi oppure essere foglia dell’albero. Il fatto di poter arrestare la suddivisione in modo arbitrario rappresenta la caratteristica chiave dei 2n -tree ed il motivo per cui sono ampiamente utilizzati in computer grafica. In particolare se n uguale a due, vengono chiamati quadtree, mentre con n uguale a tre octree. Costruire algoritmi su un 2n -tree richiede la definizione di una numerazione dei nodi figlio. Prendiamo ad esempio il figlio i-esimo con i compreso tra 0 e 2n , 61 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI 6 2 7 3 4 0 5 1 Figura 4.5: Struttura e numerazione di un nodo interno dell’2n -tree (con n=3). esso corrisponde al cubo localizzato in una ben precisa posizione all’interno del cubo padre dipendente solo dal valore i. In particolare, una numerazione efficiente è la seguente: prendiamo la codifica binaria x0,...n−1 del numero i i = x0 + 2x1 + . . . + 2n−1 xn−1 (4.10) e assumiamo che il valore di xj valga zero se lungo la dimensione j-esima il cubo sarà a sinistra del centro del cubo padre3 , altrimenti valga uno (vedi figura [4.5]). In questo modo gli algoritmi di ricerca nell’2n -tree vengono semplificati. Prendiamo ad esempio la ricerca del più piccolo ipercubo che contiene un dato punto p: NodeFromPoint(p) { if (IsLeaf()) return this; unsigned int Figlio=0; for(int i=0;i<dim;i++) { if (x[i]>Center[i]) Figlio|=(1<<i); } return Child[Figlio]->NodeFromPoint(p); } Il funzionamento è ovvio: nel caso il nodo corrente non sia una foglia ovvero non sia il nodo che cerchiamo, itera ricorsivamente il processo nel figlio numero “Figlio” calcolato effettuando le comparazioni lungo tutte le direzioni 0, . . . dim − 1. 3 Ovvero se la coordinata j-esima del centro del cubo sarà minore di quella del centro del padre. 62 4.1. IL CALCOLO DEL GRADIENT VECTOR FLOW B {move_dir, move_dim} B Figura 4.6: A sinistra, il percorso effettuato durante la fase di ascesa per trovare il padre che contiene sia il nodo di partenza che il suo vicino (la freccia finale indica il vicino). A destra il percorso durante la fase di discesa. I movimenti sono opposti a quelli fatti nell’ascesa. La ricerca del vicino o dei vicini lungo una data direzione è un po’ più complicato. Innanzitutto sottolineiamo la differenza tra il concetto di direzione da quello di verso, chiamandole rispettivamente move dim ∈ {0, . . . dim − 1} e move dir ∈ {−1, 1}. L’algoritmo quindi si strutturerà in due parti: la prima, di ascesa fino al nodo che comprende sia il nodo di partenza che il suo vicino, la seconda invece, di discesa verso quest’ultimo. Ad ogni iterazione dell’ascesa, si controllerà se il figlio da cui si sale è posto lungo move dim a destra o a sinistra del centro dell’ipercubo del padre. Nel caso questa posizione sia opposta alla move dir desiderata allora, il padre conterrà anche il vicino del nodo di partenza (vedi figura [4.6]). Durante l’ascesa si dovrà tener traccia di tutti gli spostamenti lungo le dimensioni diverse da move dim. Infatti ogni salto di livello corrisponde ad un movimento in tutte le dim dimensioni. Questa informazione è necessaria nella fase di discesa dove, dal nodo appena trovato si scenderà scegliendo il figlio che è posto per quanto riguarda la dimensione move dim nella posizione move dir, mentre per le altre, in posizione opposta allo spostamento registrato durante la salita (figura [4.6]). La discesa terminerà sull’unico vicino lungo (move dim, move dir) di dimensione maggiore o uguale al nodo di partenza. L’algoritmo fa uso di uno stack per tener traccia degli spostamenti nell’ascesa ed è descritto: GetNeighbour(int move_dim,int move_dir) { int pos; OcTree_Node<dim> *current_node=this; stack.empty(); // Ascend 63 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI while(true) { if (current_node->Father==NULL) return NULL; pos=current_node->GetType(); if (move_dir==1) { if (Bit_Read(pos,move_dim)==0) { current_node=current_node->Father-> Child[Bit_Set(pos,move_dim,1)]; break; } } if (move_dir==0) { if (Bit_Read(pos,move_dim)==1) { current_node=current_node->Father-> Child[Bit_Set(pos,move_dim,0)]; break; } } stack.push(pos); current_node=current_node->Father; } // Descend while (!stack.isEmpty()) { pos=stack.pop(); if (move_dir==0) pos=Bit_Set(pos,move_dim,1); else pos=Bit_Set(pos,move_dim,0); if (current_node->IsLeaf()) return current_node; current_node=current_node->Child[pos]; } return current_node; } Come già visto precedentemente, i nostri calcoli necessitano di trovare tutti i vicini ad un nodo e non il vicino che li contiene tutti. Quindi nel caso in cui il nodo a cui siamo giunti dopo la fase di discesa sia partizionato, dovremo scendere lungo tutti i percorsi che hanno lungo move dim verso opposto a move dir, enumerando 64 4.1. IL CALCOLO DEL GRADIENT VECTOR FLOW I vicini {move_dir, move_dim} Figura 4.7: Continuazione della discesa al fine di enumerare tutti i vicini di qualunque dimensione. Si deve scendere lungo tutti i percorsi che hanno lungo move dim verso opposto a move dir. tutte le foglie a cui si giunge (vedi figura [4.7]). Quest’ultime saranno tutti e soli i vicini desiderati. L’algoritmo finale è quindi GetNeighbours(int move_dim,int move_dir) { Neighbours.clear(); // Cerco il vicino di dimensione maggiore o uguale OcTree_Node<dim> *SubTree=GetNeighbour(move_dim,move_dir); if (SubTree==NULL) return &Neighbours; // Inverto la direzione e continuo la discesa if (move_dir) move_dir=0; else move_dir=1; SubTree->RecGetNeighbours(move_dim,move_dir); return &Neighbours; } RecGetNeighbours(int move_dim,int move_dir) { if (IsLeaf()) Neighbours.append(this); // Esploro solo i figli che hanno direzione concorde a move_dir for(int i=0;i<(1<<dim);i++) { 65 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI if (Bit_Read(i,move_dim)==move_dir) Child[i]->RecGetNeighbours(move_dim,move_dir); } return; } Tutti gli algoritmi appena descritti hanno complessità O(h), ovvero lineare con il numero di livelli dell’albero. Dato che questo parametro è fissato a priori (nei nostri modelli sarà pari a dieci), lo slowdown dovuto all’uso di un 2n -tree al posto di una griglia omogenea è O(1), e praticamente molto basso. 4.2 Il calcolo delle forze di Silhouette Dalla [3.49], il calcolo della forza di silhouette applicata al vertice v della mesh, necessita di conoscere: • La distanza dj (v) tra Vj (v) e il bordo della proiezione Pj della superficie reale Λ; • Il punto N earestj (v) appartenente al bordo della proiezione Pj più vicino a Vj (v); • L’insieme Vj (M ); • La distanza dej (v) tra Vj (v) e il punto di intersezione tra il segmento che congiunge N earestj (v) a Vj (v) con Vj (M ); • Il punto Sj (v) ∈ <3 che giace nel piano passante per v e parallelo al piano retinale di Vj , la cui proiezione Vj (Sj (v)) = N earestj (v). Al solito Vj (v) è la proiezione di v nella vista Vj , e Vj (M ) è la proiezione dell’intera mesh. (vedi figura [4.8] e [4.9]). Precisiamo che a livello software, Pj viene memorizzata come una bitmap ad un bit dove ogni pixel (x, y) vale uno se e solo se (x, y) ∈ Pj . Quindi per ricavare ∂Pj basterà applicare un banale edge-detector come quello proposto da Canny in [Can86]. Una volta trovati tutti i punti appartenenti a ∂Pj , dobbiamo trovare un modo per calcolare il più velocemente possibile la distanza tra un qualsiasi punto 66 4.2. IL CALCOLO DELLE FORZE DI SILHOUETTE ∂Vj(M) Vj(v) Figura 4.8: Fsilhouette . ∂Pj dj(v) Nearestj(v) Rappresentazione delle informazioni necessarie al calcolo di Figura 4.9: Rappresentazione di Sj (v). 67 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI (x, y) e quest’ultimo insieme. Infatti, ad ogni passo di integrazione, dovrà essere nota questa distanza per ogni vertice v della mesh e per ogni vista Vj . Quindi la velocità complessiva dell’integratore dipende fortemente dall’efficienza di questo calcolo. L’idea è quella di creare una mappa delle distanze (distance-map) che ad ogni punto dello spazio immagine associ il punto di ∂Pj più vicino. Un’esplicita memorizzazione di queste informazioni porterebbe il nostro calcolo ad essere O (1) nel tempo, ma comporterebbe una grossa occupazione di memoria. Una soluzione intermedia tra efficienza e occupazione in memoria, si può trovare utilizzando i kd-tree [AL02], [MdBS99]. Quest’ultimi vengono fortemente utilizzati per risolvere problemi di nearest-neighbor perché nella fase di ricerca presentano una complessità temporale dell’ordine di O (log (n)) (con n il numero di punti dell’insieme). Come ormai noto, l’insieme Vj (M ) coincide con l’insieme ottenuto proiettando ogni punto della superficie M tramite Vj . Da notare che, a livello software M è una mesh quindi un insieme di vertici connessi da facce. In computer grafica esistono numerosi algoritmi chiamati “algoritmi di rendering”, che calcolano Vj (M ) nello spazio immagine (si veda [[TM99]]). Essi calcolano la proiezione Vj (f ) di ogni faccia f appartenente a M , unendo man mano i punti trovati. Il risultato sarà un’immagine a 1bit contenente tutti e soli i punti di Vj (M ) (ovviamente discretizzati nello spazio). Da notare che la proiezione Vj (f ) di una faccia coincide con il triangolo i cui vertici sono la proiezione dei vertici della faccia originale Vj (f ) = T riangle (Vj (f.v1 ) , Vj (f.v2 ) , Vj (f.v3 )) (4.11) il che semplifica notevolmente il procedimento. Nonostante ciò, le realizzazioni software sono molto onerose in termini di tempo di calcolo. Si deve considerare che ad ogni passo di integrazione sarà necessario effettuare un rendering di M , per ogni vista Vj . Dato che per i nostri modelli utilizzeremo all’incirca 30 viste, dovremo fare 30 renderizzazioni per passo. Dopo 10 passi, che rappresenta l’unita minima di evoluzione per il mio software, avremo effettuato 300 renderizzazioni. Anche questo quindi, risulta essere un collo di bottiglia per il nostro algoritmo. Risulta quindi fortemente consigliato l’uso di acceleratori 3d per la fase di rendering. Questo genere di hardware è ormai presente da anni in quasi tutti i personal computers. Esistono molte librerie per la programmazione di queste schede tra cui le più famose sono: Glide4 , DirectX e OpenGl (Open Graphics 4 Le Glide sono le librerie storiche della Voodoo1, il famoso chip-set creato dalla 3DFX nel 1996. Esse non sono altro che una versione di OpenGl modificata per una questione di brevetti. 68 4.2. IL CALCOLO DELLE FORZE DI SILHOUETTE Language5 ). Quest’ultime sono state inventate da Silicon Graphics per la programmazione dei suoi chip 3D, e successivamente sono diventate lo standard de facto per la programmazione dell’hardware 3D. Utilizzeremo questa libreria per effettuare le nostre renderizzazioni off-screen di Vj (M ). Una volta determinati Vj (M ) e N earestj (v), possiamo calcolare dej (v). Da notare che di Vj (M ) non abbiamo una forma analitica, bensı̀ una discretizzazione nello spazio immagine. Quindi non è possibile trasportare il problema come soluzione di un’equazione, a meno che non si trovi una parametrizzazione di Vj (M ) usando per esempio uno snake e successivamente lo si intersechi con il segmento che congiunge N earestj (v) a Vj (v). Questa procedura è troppo pesante. Dato che il segmento N earestj (v) ↔ Vj (v) è corto in termini di pixel, si potrebbe utilizzare una variante dell’algoritmo di Bresenham per le linee [Bre65]. Ovvero si opera come si dovesse tracciare una linea da N earestij (v) a Vj (v), solo che invece di disegnare un pixel, si controlla se esso è ancora interno a Vj (M ). In caso contrario, l’intersezione si ha esattamente nel pixel precedente. La complessità di questo algoritmo è proporzionale dalla lunghezza della proiezione del segmento lungo l’asse x. Il punto Sj (v) non è altro che l’anti-proiezione Vj−1 di N earestij (v) giacente su quel particolare piano (vedi figura [4.9]). Dato che sia v che Sj (v) giacciono sullo stesso piano retinale, allora la loro trasformazione secondo Vj avrà lo stesso valore in z Vj .T (v)z = Vj .T (Sj (v))z (4.12) Quindi dato che v è conosciuto, lo sarà anche Vj .T (Sj (v))z . Inoltre dato che N earestj (v) = P roject (Vj .T (Sj (v))), si ha che N earestj (v)x = N earestj (v)y = Vj .T (Sj (v))x Vj .T (Sj (v))z Vj .T (Sj (v))y Vj .T (Sj (v))z (4.13) (4.14) e quindi Vj .T (Sj (v))x = N earestj (v)x · Vj .T (Sj (v))z (4.15) Vj .T (Sj (v))y = N earestj (v)y · Vj .T (Sj (v))z (4.16) Vj .T (Sj (v))z = Vj .T (Sj (v))z (4.17) Dato che Vj .T è invertibile, Sj (v) è presto trovato effettuando una moltiplicazione con l’inversa della matrice Vj .T . 5 Per una completa documentazione riferirsi a [Ful97]. 69 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI Figura 4.10: Le linee nere indicano il luogo di punti in cui sono definite le forze di silhouette per [SN03]. La forza di silhouette Fsilhouette applicata al vertice v si calcolerà quindi: ( Sc (v) − v v∈ / Pc (4.18) Fsilhouette = S (v)−v c 0 v ∈ Pc d (v, ∂Pc ) − dec (v) h dec (v) kSc (v)−vk 4.2.1 Comparazione In [SN03] viene definita una forza di silhouette nel seguente modo 0 Fsilhouette (v) = m X f Vj (v) (4.19) j=1 dove ( f Vj (v) = Sj (v) − v sse (v ∈ Pj ∩ ∂Vj (M )) ∨ (v ∈ / Pj ) 0 altrimenti (4.20) Essa è diversa da zero in tutti e soli i punti che sono o esterni ad Pj o interni e appartenenti a ∂Vj (M ). Quest’ultimi in particolare corrispondono ai punti delle curve ottenute sezionando la superficie con i piani retinali delle Vj (vedi figura [4.10]). Il campo di forze generato è quindi fortemente discontinuo, basta infatti muoversi lungo le direzioni ortogonali a queste curve per riscontrare la 0 discontinuità. Nei punti in cui Fsilhouette è diverso da zero, vale come la somma dei contributi forniti dalle varie viste.Questo approccio presenta tre grossi svantaggi: 1. La forte discontinuità fa si che solo un piccolo gruppo di pixel isolati sia sottoposto a questa forza. Ne consegue che in molti casi, essa sarà insufficiente 70 4.2. IL CALCOLO DELLE FORZE DI SILHOUETTE a creare modifiche sostanziali al modello. Infatti anche se presente in v può essere facilmente contrastata dalle forze applicate ai vicini di v e dalle forze interne che propagano in v questa interazione. Si potrebbe pensare che per risolvere questo problema basti abbassare κinterna , questo però ci porta ad una superficie poco regolare. 2. Il fatto che [4.19] sia definita come somma di contributi, non dà garanzia che il sistema converga. Infatti, nel caso avessimo un sola f Vj diversa da zero, è ovvio che il vertice v tenderà a muoversi avvicinandosi al visual hull e quindi nella direzione che annulla f Vj . Però nel caso vi sia anche solo un’altro f Vu diverso da zero, v tenderà a muoversi lungo una direzione che è intermedia tra f Vj e f Vu , che in alcuni casi non porta vantaggi ne a Vu 0 in v cresce con il numero di f Vj a ne a Vj . Inoltre il modulo di Fsilhouette cui v è soggetto che non è noto a priori, quindi dovremo variare il passo di integrazione dinamicamente per evitare che il modello entri in oscillazione o diverga all’infinito. 0 3. Questa Fsilhouette non può derivare, data la sua discontinuità, da una formulazione variazionale. In [ES04] si propone una soluzione che risolve i primi due punti sopraelencati. Qui, la forza di silhouette viene definita 00 Fsilhouette (v) = α (v) · dvh (v) · n (v) (4.21) dove n (v) è la normale alla superficie nel punto v, dvh è la distanza con segno dal visual hull definita come la minima distanza da esso dvh (v) = min d (v, ∂Pj ) j (4.22) e α (v) ( α (v) = 1 1 (1+d(v,∂Vc (M )))p sse v ∈ / Pc sse v ∈ Pc (4.23) dove c = arg minj d (v, ∂Pj ) e d (v, ∂Pj ) è la distanza con segno da v a ∂Pj , ovvero è positiva quando v ∈ Pj , e negativa viceversa. 00 Fsilhouette è definita in tutta la superficie. In linea teorica essa non è continua dato che nei punti angolosi di dvh , α (v) può presentare discontinuità dovute al cambio di vista c. Numericamente però queste variazioni sono piccole, quindi non è un errore considerarla continua in prima approssimazione. 71 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI ∂Vj(M) ∂Pc ∂Pj ∂Vc(M) ? Figura 4.11: Sinistra: le Fsilhouette di [ES04] possono creare un vero pasticcio in alcune situazioni. Destra: la Fsilhouette dovrebbe portare il vertice in un punto distante dal bordo ∂Pj quanto ora dista da bordo ∂Vj (M ). Per quanto riguarda i punti sul bordo di ∂Vj (M ), essi vengono spinti lungo la direzione normale alla superficie con intensità e verso pari alla loro distanza dal visual hull. A differenza quindi della [4.19], la [4.21] non influisce sulla parametrizzazione della superficie ma solo sulle sue proprietà geometriche (la forza è infatti parallela alla normale). Nella [4.19] invece il modello viene tirato anche parallelamente alla superficie, azione che viene subito contrapposta dalle forze 00 elastiche. Inoltre a differenza della [4.19], Fsilhouette tiene conto del contributo di una sola vista Vj per volta. Ciò elimina il secondo problema della versione di Nobuhara. 00 Per i punti interni a Vj (M ), Fsilhouette verrà modulata in intensità in modo inversamente proporzionale alla distanza dal bordo tramite α (v). Questo fa si che i vertici possano staccarsi dal visual hull e penetrare nelle concavità contrastando solo una forza che diminuisce in intensità man mano che si spostano verso l’interno. Questa diminuzione è controllata dal parametro p. Valori elevati di p facilitano lo stacco, diminuendo però l’effetto smooth della forza. I principali problemi di questo approccio sono: 00 1. Fsilhouette spinge v sempre parallelamente alla normale della superficie, anche se essa ha direzione e verso assolutamente non concordi a quelli che sposterebbero v verso la silhouette. Il caso più sorprendente si ha quando 00 Fsilhouette spinge v in direzione opposta a quella della silhouette con modulo 72 4.3. LE FORZE INTERNE pari a d (v, ∂Pj ) (vedi figura [4.11]). Ciò è dovuto dal fatto che la mesh gira le spalle alla silhouette in un intorno di v. In tal caso il modello non convergerà mai, anzi divergerà in un pasticcio. 00 2. Fsilhouette è comunque proporzionale alla distanza da v a ∂Pj , anche se v non appartiene al bordo ∂Vj (M ). Sarebbe molto più logico che in tal caso 00 Fsilhouette tenda a portare v in un punto distante dal bordo ∂Pj quanto ora dista da bordo ∂Vj (M ) (vedi figura [4.11]). 3. Non ha ancora una formulazione variazionale (data la discontinuità). 4.2.2 Comparazione con la nuova Fsilhouette 00 Confrontiamo ora la Fsilhouette [4.21] con la nostra versione Fsilhouette [4.18], supponendo per semplicità che esista una sola vista Vj : Sc (v) − v kSc (v) − vk 00 Fsilhouette (v) = k (v) · n (v) Fsilhouette (v) = s (v) · (4.24) (4.25) dove abbiamo raccolto i termini scalari in s (v) e in k (v). Innanzitutto come già osservato nel punto 1 dei problemi relativi alla [4.21], le loro direzioni possono essere molto diverse tra loro. Fsilhouette spinge infatti nella stessa direzione della [4.19]. I coefficienti s (v), k (v) invece, si comportano in modo simile ad eccezione del fatto che s (v) corregge l’errore descritto nel punto 2 dei problemi relativi alla [4.21]. Possiamo analizzarli in funzione di d (v, ∂Pj ) e d (v, ∂Vj (M )) in figura [4.12]. 4.3 Le forze interne Abbiamo volutamente lasciato aperta la precedente discussione sulla scelta del tipo di forza interna da utilizzare nel nostro modello e rimarrà tale fino al prossimo capitolo. Vediamo intanto di trovare un modo per stimare tutte le forze interne introdotte. Fmembrane e Fthin plate corrispondono rispettivamente al laplaciano ∇2 (s) e al bilaplaciano −∇4 (s) della superficie. Dal capitolo 2 sappiamo che essi posso73 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI Figura 4.12: Grafico di s (v) in funzione di d (v, ∂Pj ) e d (v, ∂Vj (M )). k (v) è molto simile. e e no essere approssimati sotto strette condizioni6 con gli operatori umbrella ∆ e 2 . Queste condizioni non sono mai verificate nelle nostre mesh tutumbrella2 ∆ e (v) è molto tavia essi rimangono una buona approssimazione dei laplaciani. ∆ semplice da calcolare perché fa uso dei soli vertici vicini N1 (v) al vertice v. Basterà quindi calcolare a priori la listaN1 (v) per ogni v. Per quanto riguarda e 2 (v) invece, esso è definito come ∆ e ∆ e (v) , ovvero esattamente uguale all’o∆ e applicato ai ∆ e (v) appena calcolati anziché direttamente sui peratore umbrella ∆ vertici. Supponendo che il grado del grafo sia limitato, il tempo di calcolo è O (|vertici|). Per costruzione, Fmembrane tenderà, ad ogni iterazione, a spostare v in un punto in cui Fmembrane (v) sia nullo. In particolare, una caratteristica molto gradita del laplaciano è quella che questo annullamento viene effettuato in un singolo passo. Ovvero formalmente Fmembrane (v + Fmembrane (v)) = 0 (4.26) La dimostrazione è presto fatta X vi X vi X vi e e e (v)) = ∆ v + ∆ (v) = −(v+ ∆ −v− +v = 0 (4.27) m m m i∈N1 (v) i∈N1 (v) i∈N1 (v) Per quanto riguarda Fthin plate invece, una condizione simile alla [4.26] non può essere formulata. Anche se non sembrerebbe ciò porta dei grossi problemi all’evoluzione del modello deformabile. Infatti questa differenza con Fmembrane , 6 Ovvero, tutti i lati devono avere lunghezza unitaria e per ogni vertice v, tutti gli angoli formati da due lati tra loro adiacenti e incidenti a v devono essere uguali. 74 4.3. LE FORZE INTERNE Figura 4.13: Angoli necessari per il calcolo della FmeanCurvature . fa si che i vertici si comportino molto diversamente a seconda del loro grado e 2 (v) definita di connettività. [ES04] propone una versione normalizzata del ∆ “scaled biharmonic operator ” 1 b 2 (v) = e2 P ∆ (4.28) 1 ∆ (v) 1 + i∈N1 (v) m·mi che verifica la condizione b2 v + ∆ b 2 (v) = 0 ∆ (4.29) Nell’appendice B dell’articolo [MDB99], si propone un’approssimazione discreta alla FmeanCurvature : 1 X (cot αi − cot β i ) · (vi − v) (4.30) FmeanCurvature (v) = 4A i∈N1 (v) dove αi e β i sono gli angoli opposti al lato (vi , v) relativi alle due facce che hanno lato (vi , v) in comune (vedi figura [4.13]). A è la somma delle aree delle facce che hanno v come vertice in comune. Da definizione [3.42] FmeanCurvature è parallela alla normale della superficie, quindi la sua azione non modificherà la parametrizzazione del modello. Questo risultato è più che ovvio se si considera che il funzionale da cui deriva dipende solo dalle caratteristiche geometriche della varietà e non dalla sua particolare parametrizzazione. Il suo calcolo è molto più complesso rispetto a quello dei laplaciani. Infatti, dovremo avere a disposizione: • Per ogni vertice, la lista dei suoi vicini; • Per ogni vertice, la lista di tutti i triangoli che hanno quel vertice in comune; • Dato che ogni vicino vi di v determina un lato incidente a v, dovremo per esso indicare i vertici opposti al lato (vi , v) . 75 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI 4.4 L’evoluzione Dopo tutte le considerazioni fatte, l’evoluzione di ogni vertice v del nostro modello si esprime come: v t+1 = v t + β · (κinterna · Finterna (v) + Ftexture (v) + κsilhouette · Fsilhouette (v)) (4.31) Come già detto in precedenza, la scelta delle costanti κinterna e κsilhouette deve essere fatta in base agli errori εi , η j e ad una stima della curvatura totale o media di Λ7 . Nel caso pratico però esse saranno fissate arbitrariamente dall’utente del software. Quest’ultimo inizialmente, le fisserà ad un valore verosimile per il problema e successivamente, durante l’evoluzione del modello, le regolerà al fine di ottenere il risultato desiderato. Al fine di rendere il processo il più automatico possibile, questa regolazione potrà essere eseguita a evoluzione ultimata. O meglio, una volta raggiunto uno stato di equilibrio, ovvero un punto di minimo per la ξ, possiamo andare a modificare κinterna , κsilhouette con la conseguente modifica di ξ, e dei suoi punti di equilibrio. Questa destabilizzazione del sistema verrà presto eliminata con poche iterazioni. Il modello si stabilizzerà quindi, in un nuovo punto di equilibrio. Questa semi-interattività offerta dal software è inoltre necessaria in presenza di minimi locali. Infatti, anche se il GV F risolve il problema delle concavità, l’inserimento della forza di silhouette introduce un’altro problema. Può infatti succedere che quest’ultime tendano a mantenere al bordo punti che nel modello finale al bordo non devono essere. Questo perché la forza di texture è insufficiente per effettuare un gap. Una volta però che l’utente ha individuato il problema, può escludere temporaneamente le forze generate dalla vista V , oppure alzare κinterna in modo tale che le forze interne aiutino quelle di texture a contrastare quelle di silhouette. Il significato delle costanti κinterna , κsilhouette , elasticity, rigidity però dipendono fortemente dal modello, nel senso che fissate uguali per due modelli distinti otterremo risultati molto diversi tra loro. Ad esempio se per il primo modello la scelta κinterna = 1 portava ad un modello liscio, nel secondo la stessa scelta potrebbe portare ad un modello ruvido. Inoltre mentre per l’uno la forza di silhouette potrebbe risultare molto elevata, per l’altro potrebbe essere troppo piccola. Ciò è dovuto dal fatto che il loro significato dipende da molte caratteri7 Nel caso scegliessimo Emembrane , Ethin plate come energia interna avremo inoltre altre due costanti elasicity, rigidity da fissare. Il loro valore dovrà essere uguale alla stima valutata su Λ di questi parametri. 76 4.4. L’EVOLUZIONE stiche del modello come la sua dimensione tridimensionale, e la dimensione delle sue proiezioni nelle viste V j. In questo modo però, la scelta di queste costanti anche se approssimativa, risulta molto difficile per l’utente. E’ quindi necessario definirne delle versioni normalizzate, ovvero indipendenti dal modello: elasticity 0 max {kL (p)k , ∀p ∈ S} rigidity 0 rigidity = max {kL2 (p)k , ∀p ∈ S} elasticity = (4.32) (4.33) in questo modo κinterna potrà avere un valore comparabile con 1. Da notare che se si usa il funzionale di curvatura media: κinterna = κ0interna max {kFmeanCurvature (p)k , ∀p ∈ S} (4.34) Per quanto riguarda κsilhouette , κsilhouette = κ0silhouette RaggioM esh χ (4.35) con RaggioM esh il raggio medio della mesh e χ una costante fissata nel software a 10. In questo modo una forza che spinge un punto p in un’altro di distanza uguale al χ% del raggio medio della mesh avrà un’intensità effettiva pari a 1. Abbiamo già accennato al problema della scelta di β. Valori troppo elevati possono generano fronti d’onda che si propagano sulla superficie (vedi figura [3.6]), mentre valori troppo piccoli rallentano la convergenza del modello. In linea di principio quindi, come affermato in [MDB99], dovremo porre β ≤ min {|e| , ∀e lato della mesh}2 (4.36) Questo però crea una grossa limitazione quando si ha a che fare con mesh di grandi dimensioni particolarizzate qua e là da piccoli dettagli. Infatti in tal caso il modello evolverà con una velocità limite imposta da questi piccoli dettagli. In realtà il vincolo [4.36], deve essere strettamente rispettato solo nel caso si usino forze derivate dalla curvatura media. In caso contrario, esperimenti pratici dimostrano che β può essere tranquillamente fissato come β= |e| k (4.37) con k una costante da fissare a priori. In tal caso però la parametrizzazione della mesh dovrà essere sufficientemente regolare. Per mantenere questa regolarità sono necessari stadi di remeshing che analizzeremo successivamente. 77 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI Nel caso invece rispettassimo il vincolo [4.36], dovremo lo stesso eseguire degli stadi di remeshing al fine di non aver a che fare con β uguali o prossimi a zero. Come in [ES04], anche noi faremo in modo che solo le forze interne possano modificare la parametrizzazione della superficie, mentre quelle di texture e di silhouette si occupano del solo aspetto geometrico del modello. Per realizzare ciò è necessario proiettare queste ultime due forze lungo le normali alla superficie: Ftexture (v) = (GV F (v) · n (v)) n (v) 0 FSilhouette (v) = (FSilhouette (v) · n (v)) n (v) 4.5 (4.38) (4.39) Il modello iniziale Abbiamo già espresso le restrizioni sul valore del parametro β necessarie a garantire la convergenza del modello [3.34] o della sua versione discreta [4.31]. Quello che noi vogliamo però, è che questo modello converga in una superficie molto simile a quella reale Λ, o più formalmente nel minimo assoluto di ξ. Condizione necessaria a questo proponimento è che il modello di partenza s0 sia molto simile a Λ, in caso contrario infatti la superficie s potrebbe convergere in minimi locali ben distanti da Λ. s0 dovrà quindi avere innanzitutto la stessa topologia di Λ e possibilmente essere geometricamente vicino a Λ (col significato fornito dalla definizione di distanza tra superfici). Nel caso la prima condizione non fosse rispettata, sarà necessario durante l’evoluzione un cambio di topologia di s, al fine di allinearci con quella di Λ. E’ improponibile utilizzare come modello iniziale la bounding-box o la sfera che contiene tutto lo spazio in esame, perché: primo, esse hanno genus pari a 0 e quindi non vanno bene per Λ con genus > 0; secondo, esse sono molto distanti dal modello finale. Simili problemi si riscontrano scegliendo il relativo convex hull. Come in [ES04] e [SN03], la nostra scelta ricade sul bordo del visual hull s0 = ∂vh (Λ, {Vj }) (4.40) Esso infatti, riesce a rappresentare superfici con un numero arbitrario di buchi a patto che questi vengano catturati dalle viste. Quest’ultima condizione non è banale perché necessita che Λ sia fotografata in punti strategici. Inoltre non è detto che il visual hull riesca a catturare completamente la topologia dell’oggetto, infatti se essa è nascosta all’interno di una concavità come in figura [4.14] verrà creata una superficie con genus inferiore. 78 4.6. REMESHING Figura 4.14: Esempio di superficie il cui ∂vh ha un genus inferiore all’originale. Il visual-hull non riesce a rilevare la sua topologia. Ovviamente questa non è la scelta ottima in assoluto, ma è un tradeoff tra tempo necessario a computarla e risultato ottenuto. Il visual hull infatti può essere facilmente calcolato da un algoritmo di volume-carving con un discreto impiego di tempo. Quest’ultimo è sicuramente superiore a quello necessario per computare una bounding-box o un convex hull ma inferiore al tempo necessario alla convergenza del modello. Si potrebbe pensare di utilizzare tecniche come lo shadow-carving [SSP01] per rendere s0 geometricamente più prossima a Λ. Il modello proveniente dallo volume-carving non è sempre corretto, esso può presentare normali rovesciate, buchi, superfici aperte e facce ad area zero. Queste caratteristiche non sono ben tollerate dal nostro modello che anzi desidererebbe sempre avere a che fare con superfici i cui bordi siano ben definiti e la relativa parametrizzazione sia il più regolare possibile. Quest’ultima condizione viene messa in serio pericolo in presenza di facce ad area zero, infatti in tal caso il rango della matrice jacobiana è inferiore a due e quindi non è possibile calcolare in modo analitico la curvatura su questa specifica parametrizzazione. Risulta quindi necessario definire delle procedure di correzione della mesh che individuano ed eliminano questi problemi. 4.6 Remeshing Come già visto nel capitolo 2, quando si parla di mesh, il concetto di parametrizzazione si mescola con quello di campionamento della stessa. Abbiamo precedentemente detto che la soluzione ideale al nostro problema deve avere una parametrizzazione il più regolare possibile, ovvero molto simile ad una isometria. 79 CAPITOLO 4. I DETTAGLI IMPLEMENTATIVI Inoltre il passo di campionamento dove essere inversamente proporzionale al modulo della curvatura totale della superficie, o meglio, dove essa varia velocemente, ad esempio in presenza di spigoli, la mesh deve presentare un passo piccolo, mentre in zone quasi piatte il passo deve essere grande. In questo modo troviamo un tradeoff tra occupazione in memoria del modello e dettaglio dello stesso. Se invece utilizzassimo un passo uniforme, il modello verrebbe descritto male nelle zone a curvatura elevata e inutilmente bene nelle zone dove questa è bassa. Precedentemente abbiamo detto che le forze Fmembrane tendono a rendere la parametrizzazione il più simile possibile ad una isometria. In termini di mesh questo coincide con la tendenza ad uguagliare la lunghezza dei lati e quindi ad uniformare il campionamento. Come già spiegato, questo comportamento è necessario al fine di rendere utile l’azione dell’altra forza interna: Fthinplate . D’altra parte se non vi fosse Fmembrane , avremo molte difficoltà ad operare con la parametrizzazione proveniente dal volume-carving, in tale situazione infatti è prematuro tentare di rendere il campionamento proporzionale alla curvatura. Quindi è opportuno distinguere due fasi dell’evoluzione del modello: • La prima dove, oltre a tendere allo stato stabile, esso cercherà di uniformare la sua parametrizzazione e il suo campionamento; • La seconda invece, quando da un campionamento uniforme si andrà a sovracampionare nei punti dove la curvatura è elevata e viceversa sottocampionare dove essa è ridotta. A questo punto, sostituiremo al posto di Fmembrane e di Fthinplate , la forza FmeanCurvature che realizza una regolarizzazione precisa della superficie mantenendo inalterate le proprietà della sua parametrizzazione. In questo modo incrementiamo notevolmente l’indice di qualità Qplanarity mantenendo stabile Qequ al valore massimo. Da notare che comunque Fmembrane non è sufficiente per ottenere l’obbiettivo della prima fase, perché il modello iniziale solitamente è troppo irregolare. Sarà quindi necessario applicare di tanto in tanto durante l’evoluzione un remeshing della superficie. Una volta raggiunta una mesh accettabile, verrà effettuata una subdivision selettiva della superficie cosicché il modello sarà pronto per la seconda fase. Il processo di remeshing viene realizzato in due fasi: nella prima viene effettuata una decimazione della parametrizzazione tramite l’algoritmo proposto in [HHM93]; mentre nella seconda viene eseguita una subdivision selettiva che segue lo schema proposto in figura [4.15]. L’idea base è quella di dividere in quattro le facce con certe caratteristiche, ad esempio area o curvatura elevata. 80 4.6. REMESHING Figura 4.15: Schema di subdivision utilizzato: in nero, la mesh originale mentre in grigio le suddivisioni. Le prime tre faccie in alto a sinistra vengono suddivise completamente, mentre le altre vengono divise per compensare l’alterazione delle vicine. 81 Capitolo 5 Silhouette-Stereo-Shadow Fusion Continuiamo in questo capitolo, la descrizione del processo di fusione delle informazioni aggiungendo l’ultima tipologia che il nostro sistema utilizza: l’ombra che l’oggetto genera su se stesso. Nel primo paragrafo descriverò come questa informazione possa essere estratta dalle foto e successivamente definirò un problema di minimo per fondere assieme tutti questi dati. 5.1 Self-Shadow detection Riconoscere le ombre sulla superficie di un oggetto è un problema difficile e le tecniche presenti in letteratura sono ben lontane dall’essere perfette. Rilevare con precisione questa informazione infatti è impossibile nel caso generale. Infatti quello che osserviamo dalla camera è un’assenza di luce proveniente da una particolare direzione, ma da qui ad affermare che essa è dovuta da una zona d’ombra della sorgente luminosa è un passo troppo lungo per la gamba. L’assenza di luce potrebbe infatti essere dovuta ad una zona a bassa riflettanza dell’oggetto (zona di colore scuro) oppure non essere sufficientemente illuminata dalla sorgente perché troppo lontana da quest’ultima. Inoltre nel caso fosse ombra potrebbe non essere generata dall’oggetto stesso ma da un’altro oggetto presente nella scena1 . 1 Si parla infatti di self-shadow, ovvero di zone d’ombra che l’oggetto proietta su se stesso. In caso contrario gli algoritmi di shadow-carving comincerebbero a scavare in zone errate. CAPITOLO 5. SILHOUETTE-STEREO-SHADOW FUSION Per l’algoritmo di shadow-carving è necessario che la tecnica di detection sia conservativa ovvero che ogni punto rilevato come ombra sia sicuramente ombra. Non si richiede ovvero la condizione inversa, o meglio non è necessario rilevare tutte le zone d’ombra. Ovviamente più se ne rileva e migliore sarà il risultato finale. Una facile implementazione dello shadow-detection consiste dapprima nel fotografare l’oggetto illuminato da tutte le luci disponibili e successivamente solo da alcune in funzione della scena scelta. In tal caso le zone scure rilevate nelle prime fotografie verranno classificate come undetectable, ovvero non potranno essere rilevate come ombre nelle analisi successive. In questo modo però escludiamo dalla rilevazione non solo le zone a bassa riflettanza ma anche alcune zone d’ombra generate da quel particolare insieme di luci, inoltre data la natura passiva dell’approccio, le prime fotografie non sono quasi mai disponibili. 5.2 Shadow-Carving Abbiamo a disposizione un insieme di punti O discriminati come ombra da una fotografia, scattata da un certo punto di vista V , relativa alla scena dove è presente l’oggetto da digitalizzare. Di quest’ultima ci interessa avere un’informazione quantitativa e qualitativa delle luci in esso presenti. In particolare ipotizzeremo che quest’ultime siano sorgenti omnidirezionali o che comunque, se direzionali, il loro cono d’azione includa completamente l’oggetto. Più formalmente descriveremo la scena come un’insieme di punti <3 ciascuno dei quali indicherà la posizione di una sorgente. Possiamo quindi definire una terna ombra-luce-vista come (O, L, V ) con L ⊂ 3 < , V vista, O ⊂ <2 . Avendo a disposizione una fotografia I della scena L scattata da V , possiamo rilevare O utilizzando una tecnica di shadow-detection O = sd (I, L, V ) (5.1) Avendo invece a disposizione la descrizione matematica di M , Definizione 5.1 Data M sottovarietà chiusa di <3 , V vista e l ∈ <3 , l’ombra generata su M da una luce omnidirezionale posta in l e vista da V è l’insieme di tutti e soli i punti V (x) ∈ <2 tali che x ∈ M e x sia visibile da V ma non da l. Questo insieme verrà denotato con shadow (M, l, V ). 84 5.2. SHADOW-CARVING V Ombra l M Λ Figura 5.1: In grigio vengono evidenziati i punti di M che generano inconsistenza con l’informazione ombra osservata da V e generata da l. Il concetto di visibilità di un punto x ∈ M rispetto ad un’altro punto c è stato introdotto nel capitolo 2 e qui sotto ricopiato @λ ∈ [0, 1) | λ(x − c) + c ∈ M (5.2) Definiamo inoltre shadow (M, L, V ) = [ shadow (M, l, V ) (5.3) l∈L Formalizziamo quindi il concetto di “shadow-consistency” introdotto dell’articolo [SSP01]: Teorema 5.2 Data M sottovarietà chiusa di <3 e (O, L, V ) una terna ombraluce-vista, diremo che M è consistente rispetto a (O, L, V ) se e solo se O ⊆ shadow (M, L, V ) (5.4) Ovvero, non sono stati rilevati punti d’ombra2 che non sono teoricamente generati da M . Supponiamo ora di avere a disposizione un insieme Ω di terne ombra-luce-vista {(O1 , L1 , V1 ) , . . .} rilevate dalla superficie Λ, e una superficie M upper-bound3 di Λ. Se M non è consistente con la terna (Oj , Lj , Vj ) allora M è sicuramente diversa 2 Non è quindi necessario che O contenga tutti i punti d’ombra. In questo modo lo shadowdetection non deve essere necessariamente preciso, basta che mantenga la proprietà conservativa. 3 Ovvero una superficie chiusa il cui volume interno include quello della superficie Λ. 85 CAPITOLO 5. SILHOUETTE-STEREO-SHADOW FUSION da Λ, perché esistono delle zone d’ombra che Λ genera ma che non è possibile siano generate da M . La situazione è rappresentata in figura [5.1], in tal caso, possiamo eliminare il volume evidenziato perché causa di inconsistenza. Iterando il processo per ogni terna di Ω otteniamo una superficie consistente rispetto ogni (Oj , Lj , Vj ) ∈ Ω. L’algoritmo complessivo verrà chiamato “shadow-carving” e denotato Mcarved = sc (M, Ω) (5.5) Nell’articolo [SSP01] viene presentato il seguente teorema Teorema 5.3 Dato un insieme Ω di terne ombra-luce-vista rilevate dalla superficie Λ, e una superficie M upper-bound di Λ, sc (M, Ω) è una superficie upper-bound di Λ e consistente rispetto ogni terna (Oj , Lj , Vj ) ∈ Ω. 5.3 Silhouette-Stereo-Shadow Fusion Il problema si formula in modo del tutto analogo a silhouette-stereo fusion tranne per il fatto che, in questo caso la superficie risultante dovrà essere consistente per l’insieme di terne ombra-luce-vista rilevate. Definizione 5.4 Sia Π l’insieme di tutte le sottovarietà chiuse di <3 , Σ = {(xi , pi )} ⊂ <3 × [0, 1] una nuvola di punti, Ψ = {(Vj , Pj )} un insieme di coppie vista-proiezione e Ω = {(Oj , Lj , Vj )} un insieme di terne ombra-luce-vista, il problema silhouette-stereo-shadow fusion consiste nel trovare M ∈ Π tale che: n o ξ(M ) | ∀M ∈ X (5.6) M = arg min e X = {∀M ∈ Π | Vj (M ) = Pj , ∀j = 1, . . . m} dove e ξ : Π → < è un funzionale costo definito come Z e ξ (M ) = ξ (M ) + d (P, sc (Mss )) ds (5.7) (5.8) M dove Mss =silhouette-stereo-fusion(Σ, Ψ). In pratica, al funzionale costo da minimizzare viene aggiunto un addendo che penalizza le superfici distanti da sc (Mss ), ovvero dalla superficie elaborata dallo 86 5.3. SILHOUETTE-STEREO-SHADOW FUSION Silhouette Stereo SILHOUETTE-STEREO FUSION Mss sc(Mss) Shadows SHADOW-CARVING SILHOUETTE-STEREO-SHADOW FUSION M Figura 5.2: Schematizzazione della pipeline dell’algoritmo di fusione silhouettestereo-shadow. shadow-carving a partire dalla stima Mss di Λ ottenuta con le sole informazioni di tessitura e silhouette. Il processo di fusione si divide quindi in due fasi, vedi figura [5.2]. Nella prima, con le sole informazioni stereo e silhouette, si stima Mss come elemento che minimizza ξ. Dopodiché viene computato lo shadow-carving di Mss tramite le tecniche descritte nell’articolo [SSP02]. In particolare il calcolo della visibilità verrà effettuato tramite z-buffer generati da acceleratori grafici hardware, risparmiando quindi una notevole quantità di tempo. Il modello appena generato quindi farà parte dell’informazione in ingresso alla seconda fase dove si utilizzeranno assieme tutte le informazioni rilevate, cercando di minimizzare e ξ. In questo modo la superficie ricostruita: • nelle zone d’ombra, sarà incavata per essere consistente con le informazioni d’ombra. E’ verosimile che in tali zone non vi sia informazione di tessitura, in caso contrario però esse verranno fuse assieme a quelle d’ombra. Questo è il caso di oggetti veramente particolari dove sono presenti elementi chiari e texturizzati inseriti all’interno di concavità poco illuminate. • fuori dalle zone d’ombra, si comporterà come soggetta alle sole informazioni stereo e silhouette. • nelle zone di confine tra ombra e luce, la superficie connetterà in modo il più regolare possibile le concavità generate con il resto della superficie. Intuitivamente si potrebbe fermare il processo al calcolo di sc (Mss ), ovvero subito dopo aver applicato lo shadow-carving. In questo modo però si perdono 87 CAPITOLO 5. SILHOUETTE-STEREO-SHADOW FUSION l P l Figura 5.3: Errore generato dall’uso della [5.9]. Dato che la posizione di P non è fissata da nessuna informazione stereo o silhouette, la superficie minima potrebbe benissimo essere quella indicata in basso. i vantaggi acquisiti nell’uso delle tecniche basate sui deformable models, ovvero non è possibile ne controllare le qualità geometriche e non della superficie ricostruita, ne si possono mescolare le informazioni acquisite. Infatti in questo modo l’informazione d’ombra è definitiva, ovvero non può più influenzare le informazioni stereo e di silhouette. Risulta quindi necessaria la formulazione del problema silhouette-stereo-shadow fusion come problema di minimo. A qualcuno potrebbe venir la sfortunata idea di definire e ξ in questo modo Z e d (P, sc (M )) ds (5.9) ξ (M ) = ξ (M ) + M ovvero si penalizzano le superfici distanti dalla loro versione carvata. La [5.9] funziona fintanto che il bordo della superficie che genera l’ombra su se stessa è mantenuto tale da informazioni di silhouette o di tessitura. In caso contrario infatti, vedi figura [5.3] esso sicuramente perde la sua qualità e viene scavata una concavità ben più profonda della reale. Dinamicamente parlando, le forze di shadow spingono all’interno la porzione di superficie che dovrebbe essere ombra. Attraverso le forze interne questa regione trascina con se anche il bordo che genera l’ombra e quindi la sorgente luminosa continuerà a vedere la zona oscurata. Il processo continuerà a scavare finché non viene trovato un bordo la cui posizione è fissata da un’informazione stereo o silhouette. 88 Capitolo 6 Risultati In questo capitolo verranno presentate le metodologie e i risultati dei test effettuati su alcuni modelli reali e sintetici. Verificheremo l’effettivo raggiungimento degli obbiettivi preposti per il sistema silhouette-stereo-shadow fusion, in particolare la proprietà di tolleranza agli errori e di compensazione e correzione delle informazioni. Valuteremo inoltre la qualità delle mesh generate e l’errore di ricostruzione dell’oggetto. Infine confronteremo il nostro sistema con i metodi monomodali come lo stereo-based pipeline e lo shadow-carving. 6.1 Hardware e procedura I test sono stati effettuati sia su modelli reali che su modelli sintetici. Nel primo caso, il sistema di acquisizione è costituito da un piano girevole sul quale viene posto l’oggetto da analizzare. La macchina fotografica, posta di fronte, rimane ferma durante tutto il processo mentre un software si occupa di ruotare il piano e scattare le fotografie. La precisione del sistema di rotazione ci permette di effettuare a priori una calibrazione delle varie immagini, ottenendo cosı̀ una sessantina di foto munite ciascuna della relativa matrice di proiezione. Per quanto riguarda i modelli sintetici invece, le fotografie vengono generate da un software di rendering, nel nostro caso Discreet 3D Studio Max 6. Il modello viene ripreso da n “target camera” da 43mm e soggetto ad un numero m di “target CAPITOLO 6. RISULTATI spot light” che generano un’ombra di tipo “ray traced”. La renderizzazione viene supervisionata da uno script in MAXScript [Dis01], che genera anche le relative matrici di proiezione. 6.1.1 La rana La rana è un piccolo oggetto di dimensioni 10cm x 5cm x 5cm circa, la cui superficie presenta una forte tessitura e proprietà facilmente approssimabili a quelle lambertiane. La topologia inoltre è molto semplice, dato che presenta genus zero. Di essa si ha a disposizione 60 foto con risoluzione 1024x768, dove il modello viene descritto al massimo da 480x370 pixel. In figura [6.1] viene presentato il modello ottenuto tramite stereo-based pipeline. Esso presenta qua e là buchi in corrispondenza a zone prive di tessitura o non visibili dalle fotocamere. Inoltre l’errore di quantizzazione mediato dalle varie viste fa assumere agli occhi una forma appuntita e non sferica come l’originale. La qualità della mesh inoltre, è bassa infatti Qequ si distribuisce attorno al suo valor medio 0, 61 come in figura [6.1], mentre Qplanarity medio è pari a 0, 9881. Utilizzando l’algoritmo di silhouette-stereo fusion otteniamo il risultato presentato in figura [6.2]. La superficie in questo caso è una varietà chiusa campionata regolarmente con Qequ medio pari a 0, 85 e Qplanarity medio pari a 0, 9937. In figura [6.3] invece si può notare come l’informazione di silhouette permette di ricostruire le regioni non rilevate dal metodo stereo e di correggere quelle errate. 6.1.2 90 Il buddha 6.1. HARDWARE E PROCEDURA Figura 6.1: Modello della rana ricostruito tramite stereo-based pipeline e relativo istogramma delle frequenze di Qequ . 91 CAPITOLO 6. RISULTATI Figura 6.2: Modello della rana ricostruito tramite silhouette-stereo fusion e relativo istogramma delle frequenze di Qequ . 92 6.1. HARDWARE E PROCEDURA Figura 6.3: Comparazione delle silhouette relative al modello ricostruito tramite stereo-based pipeline (sinistra) e tramite silhouette-stereo fusion (destra). In nero vengono evidenziate le silhouette dell’oggetto originale mentre, in verde quelle della superficie ricostruita. 93 CAPITOLO 6. RISULTATI Figura 6.4: A sinistra: modello generato da una singola coppia stereo. A destra: risultato ottenuto tramite stereo-based pipeline. Oltre all’aspetto granuloso, si può notare la presenza di un “tubo” che trapassa la superficie, generato da un errore di matching. Quest’oggetto presenta una leggerissima tessitura e caratteristiche riflessive ben lontane dall’essere approssimabili a quelle lambertiane. La presenza di riflessioni speculari e la conseguente generazione di errori di matching comportano la formazione di aberrazioni sulla superficie del modello, rappresentate in figura [6.4]. Utilizzando la stereo-based pipeline, l’informazione di silhouette elimina i punti vistosamente errati, lasciando però inalterato il comportamento anomalo dei relativi vicini. La successiva unione di tutti i modelli generati fa sı̀ che vengano mediati tra loro vertici esatti e vertici soggetti ad un errore di matching, generando cosı̀ una superficie dall’aspetto granuloso come in figura [6.4]. In figura [6.5] è invece presentato il risultato ottenuto tramite l’algoritmo di silhouette-stereo fusion. In tal caso sono state utilizzate 20 silhouette e 12 immagini stereo (6 coppie di immagini distanziate a due a due di 6◦ ). Le proprietà del GVF fanno si che la superficie non venga influenzata dagli errori di matching, anzi le informazioni errate provenienti da una coppia stereo vengono eliminate e compensate da un’altra coppia. Inoltre, il fatto che l’informazione mancante possa essere ricostruita in base a delle ipotesi sulle proprietà geometriche della superficie ci permette di ricavare il modello da un minor numero di fotografie rispetto a quello desiderato dai metodi monomodali, evitando cosı̀ l’effetto granulare generato 94 6.1. HARDWARE E PROCEDURA Figura 6.5: A sinistra: Modello del buddha ottenuto tramite silhouette-stereo fusion. A destra: particolare della testa. dal rumore. L’informazione di silhouette inoltre ci permette di ricostruire dettagli più piccoli dell’errore di quantizzazione dello stereo, vedi figura [6.5]. 6.1.3 La venere di Milo In questo caso si parte da un modello sintetico, in particolare da una digitalizzazione laser di una ricostruzione in marmo della parte superiore della venere di Milo. L’oggetto viene ripreso da sessanta camere a risoluzione 600x700, poste come in figura [6.6]. Il processo shape-from-silhouette utilizza tutte le sessanta foto mentre l’algoritmo stereo viene applicato solo alle otto camere poste due a due nelle quattro direzioni cardinali. Il modello ottenuto tramite l’algoritmo di silhouette-stereo fusion è presentato in figura [6.7]. Sempre nella stessa figura possiamo osservare la distribuzione simil gaussiana di Qequ attorno alla sua media 0, 82. Per quanto riguarda Qplanarity esso è pari a 0, 9945. 95 CAPITOLO 6. RISULTATI Figura 6.6: Disposizione delle macchine fotografiche attorno al modello sintetico. Figura 6.7: Modello della venere di milo ottenuto tramite silhouette-stereo fusion con relativo istogramma Qequ e versione texturizzata. 96 6.1. HARDWARE E PROCEDURA Avendo ora a disposizione il modello originale, possiamo effettuare un’analisi sull’errore di ricostruzione valutando parametri come: ε= V olume ((R − S) ∪ (S − R)) V olume (S) (6.1) ovvero la percentuale di volume in più o in meno che l’oggetto ricostruito ha rispetto e in rapporto a quello originale1 ; e d (p, Λ) p∈M (6.2) ovvero la distanza tra le due superfici M e Λ, valutandone il valore massimo dmax , medio daverage e la relativa varianza dvariance . Il modello originale si estende per 120x200x260 unità occupando un volume complessivo pari a 1906320 unità3 . Le macchine fotografiche sono poste ad una distanza pari a 500 unità dal modello con FOV fissato a 35◦ . In tale situazione dmax risulta essere 9, 6 unità (3% sul diametro) e daverage = 0, 82 unità (0, 2% sul diametro) con varianza pari a 0, 62 unità. La differenza di volume è invece pari a 78200 unità3 ovvero ε = 4%. 6.1.4 Il cubo Anche se a prima vista può sembrare banale, questo modello rappresenta il tipico oggetto ricostruibile solo fondendo assieme informazioni di ombra, tessitura e silhouette. Le pareti esterne infatti, presentano una buona tessitura che compensa l’impossibilità dei metodi silhouette-based di descrivere in modo preciso la loro geometria, senza disporre di un numero spropositato di foto. Questi metodi infatti si comportano male in occasione di oggetti fortemente spigolosi perché le relative fotografie generano quasi sempre informazioni ridondanti. Utilizzando lo stereo invece, bastano otto immagini per ricostruire il ricostruibile, contro le sessanta necessarie per lo shape-from-silhouette. 1 Dove S è l’oggetto originale e R quello ricostruito, ovvero tali che ∂S = Λ e ∂R = M . 97 CAPITOLO 6. RISULTATI Figura 6.8: Disposizione delle luci attorno al modello sintetico. Le pareti della concavità invece sono prive di tessitura, quindi ne l’informazione stereo ne quella di silhouette2 possono descrivere questa zona. Abbiamo però a disposizione undici fotografie dell’oggetto ripreso da uno stesso punto di vista soggetto a diversa illuminazione. In particolare sono state disposte undici sorgenti luminose come in figura [6.8] e sono state accese una alla volta. Tramite l’algoritmo di self-shadow detection vengono estratte le ombre e passate all’algoritmo di silhouette-stereo-shadow fusion ottenendo il risultato in figura [6.9]. La stima della concavità anche se approssimativa data la natura dell’informazione utilizzata, è comunque soddisfacente visto che l’errore di ricostruzione vale ε = 5%. La dimensione del cubo è 40x40x40 unità e la camera dista 150 unità dallo stesso, in tal caso dmax risulta essere 2, 14 unità (3% sul diametro) e daverage = 0, 71 unità (1% sul diametro) con una varianza pari a 0, 36 unità. Come si può notare dalla figura [6.10], a differenza di un normale shadowcarving3 il modello finale risulta essere molto più regolare sia nel senso geometrico che parametrico, presentando un Qequ pari a 0, 83 e Qplanarity pari a 0, 9946. 2 Ovviamente, una concavità non può essere descritta dall’informazione di silhouette per i motivi già espressi nel capitolo 2. 3 Esso presenta Qequ pari a 0, 71 e Qplanarity pari a 0, 91. Inoltre, il fatto che l’istogramma del modello generato dallo shadow-carving presenti picchi solo in particolari valori è dovuto al metodo di costruzione della mesh a partire dall’informazione di volume (marching cubes). 98 6.1. HARDWARE E PROCEDURA Figura 6.9: Sinistra: Modello ottenuto tramite silhouette-stereo-shadow fusion. Destra: Comparazione con il modello originale. Figura 6.10: Comparazione della qualità della mesh generata dallo shadow-carving (sinistra) e dallo silhouette-stereo-shadow fusion (destra). 99 Capitolo 7 Conclusioni In questa tesi ho presentato un nuovo sistema di digitalizzazione 3D passiva che fonde assieme informazioni di tessitura, silhouette e di self-shadow. Come verificato nei vari test eseguiti, il sistema presenta ambedue le caratteristiche che contraddistinguono i metodi multimodali. Esso infatti, risulta essere ben tollerante agli errori presenti nelle diverse misurazioni e riesce a ricostruire un ampio range di oggetti quali quelli che presentano: • Superfici caratterizzate da buona tessitura, sufficiente illuminazione e riflettanza speculare non troppo elevata (si ricorda che metodi come stereo-based falliscono clamorosamente in presenza di una anche minima riflettanza speculare); • Superfici speculari, prive di tessitura o con tessitura troppo ripetitiva a patto che siano state fotografate di profilo (l’informazione viene fornita dalle silhouette); • Concavità caratterizzate o da buona tessitura e sufficiente illuminazione o da alta riflettanza e assenza di illuminazione (nel primo caso si usa l’informazione di tessitura, mentre nel secondo quella d’ombra). Rimane comunque impossibile, con questo metodo ricostruire regioni riflettenti, trasparenti o che comunque non rientrino nei casi precedenti. L’approccio deformable models al problema di minimo formulato viene giustificato dai risultati ottenuti per quanto riguarda la qualità della mesh generata. CAPITOLO 7. CONCLUSIONI Quest’ultima infatti risulta essere una varietà chiusa regolare e con parametrizzazione regolare, a differenza dei metodi stereo-based dove ne l’ipotesi di varietà, ne la condizione di chiusura risultano essere in generale verificate. La regolarità geometrica e parametrica è inoltre notevolmente superiore a quella ottenibile dai metodi shape-from-silhouette e shadow-carving. L’errore di ricostruzione riscontrato è inoltre eccellente dato che, ad esempio una superficie ricostruita da foto 1024x768 scattate a 50cm dall’oggetto presenta un errore medio pari a 0,8mm. Quest’ultimo può essere notevolmente ridotto con l’utilizzo di fotocamere digitali ad alta risoluzione. Dato che la tecnologia alla base di questi strumenti è in rapida evoluzione non è da escludere che da qui a poco questi sistemi possano essere posti in diretta concorrenza con i loro colleghi attivi, non solo per praticità d’uso e versatilità ma anche per precisione. Riassumo qui i principali contributi forniti da questa tesi: • Formalizzazione del problema silhouette-stereo fusion inizialmente proposto nell’articolo [ES04] – Definizione di una forza di silhouette di origine variazionale: Essa, a differenza di quella presente nell’articolo [ES04], oltre ad essere coerente con la formulazione del problema e fornire un indice per valutare il livello di convergenza raggiunto, risolve alcuni fastidiosi problemi di evoluzione che si verificano quando le silhouette originali sono molto distanti da quelle della superficie stimata. – Definizione di una seconda fase di evoluzione durante la quale la superficie, raggiunta una buona qualità parametrica evolve solo geometricamente minimizzando un funzionale che penalizza la curvatura media κds. Si elimina quindi il vincolo presente in [ES04] che impone alla mesh un campionamento costante. In questo modo, e grazie al subdivision selettivo, possiamo ottenere superfici geometricamente regolari che presentano campionamenti proporzionali alla curvatura locale. – Modifiche al metodo di calcolo del GV F al fine di velocizzare la procedura e mantenere le sue caratteristiche qualitative. Viene inoltre utilizzata una sua versione interpolata al fine di evitare minimi locali evidenziati nel capitolo 4. • Definizione di un nuovo problema denotato silhouette-stereo-shadow fusion che rappresenta il cuore del nostro digitalizzatore. La fusione di questi tre tipi di informazione non era mai stata affrontata in letteratura e fornisce risultati ben superiori rispetto a quelli offerti dai metodi preesistenti sia per 102 quanto riguarda il range di oggetti ricostruibili e la robustezza agli errori, che per la qualità della mesh generata. 103 Bibliografia [AL02] A. Atramentov and S. M. LaValle. Efficient nearest neighbor searching for motion planning. ICRA, pages 632–637, 2002. [Bre65] J. Bresenham. Algorithm for computer control of a digital plotter. IBM Systems Journal, 4:25–30, 1965. [Can86] J. Canny. Computational approach to edge detection. PAMI, 8:679– 698, 1986. [Coh91] L. D. Cohen. On active contour models and balloons. CVGIP: Image Understand, 53:211–218, 1991. [CP00] R. Cipolla and P.Giblin. Visual Motion of Curves and Surfaces. Cambridge university press, 2000. [DD98] M. Daum and G. Dudek. On 3-d surface reconstruction using shape from shadows. Proc. of Computer Society Conference on Computer Vision and Pattern Recognition, pages 461–468, 1998. [Die97] R. Diestel. Graph Theory. Springer, 1997. [Dis01] Discreet. 3DStudio Max4 MAXScript Reference. Autodesk Inc., 2001. [ES04] C. Hernández Esteban and F. Schmitt. Silhouette and stereo fusion for 3d object modeling. Computer Vision and Image Understanding, 96:367–392, 2004. BIBLIOGRAFIA [FB99] P. J. Frey and H. Borouchaki. Surface mesh quality evaluation. International journal for numerical methods in engineering, 45:101–118, 1999. [FL95] P. Fua and Y. Leclerc. Object-centered surface reconstruction: Combining multi-image stereo and shading. International Journal of Computer Vision, 16:35–56, 1995. [Fox87] Charles Fox. An Introduction to the Calculus of Variations. Dover Publications, 1987. [Ful97] J. Fuller. OpenGL Programming Guide, Second Edition. AddisonWesley Publishing Company, 1997. [HHM93] T. Duchamp H. Hoppe, T. DeRose and J. McDonald. optimization. SIGGRAPH, pages 19–26, 1993. Mesh [HK88] M. Hatzitheodour and M. Kender. An optimal algorithm for the derivation of shape from shadows. Proc. of Computer Society Conference on Computer Vision and Pattern Recognition, pages 486–491, 1988. [Hor90] B. K. P. Horn. Height and gradient from shading. International Journal of Computer Vision, 5(1):37–75, 1990. [KNK00] S. M. Seitz K. N. Kutulakos. A theory of shape by space carving. International Journal of Computer Vision, 38(3):199–218, 2000. [Lau94] A. Laurentini. The visual hull concept for silhouette based image understanding. IEEE PAMI, 16(2):150–162, 1994. [LL93] F. Leymarie and M. D. Levine. Tracking deformable objects in the plane using an active contour model. IEEE Trans. Pattern Anal. Machine Intell., 15:617–634, 1993. [MDB99] P. Schroder M. Desbrun, M. Meyer and A. H. Barr. Implicit fairing of irregular meshes using diffusion and curvature flow. International Conference on Computer Graphics and Interactive Techniques, pages 317–324, 1999. [MdBS99] M. Overmars M. de Berg, M. Van Kreveld and O. Shwarzkopf. Computational Geometry. Springer, 1999. 106 BIBLIOGRAFIA [MKT87] A. Witkin M. Kass and D. Terzopoulos. Snakes: Active contour models. International Journal of Computer Vision, 1:321–331, 1987. [MT95] T. McInerney and D. Terzopoulos. A dynamic finite element surface model for segmentation and tracking in multidimensional medical images with application to cardiac 4d image analysis. Comput. Med. Imag. Graph., 19:69–83, 1995. [OF03] S. Osher and R. Fedkiw. Level Set Methods and Dynamic Implicit Surfaces, volume 153 of Applied Mathematical Sciences. Springer, 2003. [Pot87] M. Potmesil. Generating octree models of 3d objects from their silhouettes in a sequence of images. Computer Vision, Graphics, and Image Processing, 40:1–29, 1987. [RA83] T. Ratiu R. Abraham, J. E. Marsden. Manifolds, Tensor Analysis, Ad Applications. Addison-Wesley publishing company, 1983. [RDY95] K. Kaneda R. Durikovic and H. Yamashita. Dynamic contour: A texture approach and contour operations. Visual Computing, 11:277– 289, 1995. [SD00] S. Seitz and C. Dyer. Photorealistic scene reconstruction by voxel coloring. International Journal of Computer Vision, 38(3):197–216, 2000. [Sim04] Emanuele Simioni. Ricostruzione di superfici 3d da immagini e sue applicazioni, 2004. [SN03] T. Matsuyama S. Nobuhara. Dynamic 3d shape from multi-viewpoint images using deformable mesh model. Proc. of 3rd International Symposium on Image and Signal Processing and Analysis, pages 192–197, 2003. [SSP01] F. Bernardini S. Savarese, H. E. Rushmeier and P. Perona. Shadow carving. ICCV, pages 190–197, 2001. [SSP02] F. Bernardini S. Savarese, H. E. Rushmeier and P. Perona. Implementation of a shadow carving system for shape capture. 3DPVT, pages 12–23, 2002. 107 BIBLIOGRAFIA [Tau95] Gabriel Taubin. A signal processing approach to fair surface design. SIGGRAPH Conference Proceedings, pages 351–358, 1995. [TF88] D. Terzopoulos and K. Fleischer. Computing, 4:306–331, 1988. [TM99] E. Haines T. Moller. Real-Time Rendering. AK Peters, 1999. [TS92] D. Terzopoulos and R. Szeliski. Tracking with kalman snakes. In A. Blake and A. Yuille, editors, Active Vision, pages 3–20. Eds. Cambridge, MA: MIT Press, 1992. [VCD93] T. Coll V. Caselles, F. Catte and F. Dibos. A geometric model for active contours. Numer. Math., 66:1–31, 1993. [VCS95] R. Kimmel V. Caselles and G. Sapiro. Geodesic active contours. Proc. 5th Int. Conf. Computer Vision, pages 694–699, 1995. [XHP03] C. Xu X. Han and J. L. Prince. A topology preserving level set method for geometric deformable models. IEEE Transactions on PAMI, 25:755–768, 2003. [XP98] Xu and Prince. Snakes, shapes, and gradient vector flow. IEEE Transactions on Image Processing, pages 359–369, 1998. Deformable models. Visual [YMK99] K. Fujimura Y. Matsumoto and T. Kitamura. Shape-fromsilhouette/stereo and its application to 3-d digitizer. Proceedings of Discrete Geometry for Computing Imagery, pages 177–190, 1999. [Zis00] 108 A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge university press, 2000.