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.