Capitolo 1
Introduzione
In questo lavoro di tesi viene esposto un algoritmo per il rendering di viste virtuali a partire da sole 2
immagini 'non calibrate'. Il rendering constiste nel passare da una scena 3D ad immagini 2D della
scena campionando la funzione plenoptica o PF(Appendice A), che viene in qualche modo
approssimata con il sensore della fotocamera in qualche punto dello spazio. Tuttavia con la View
Synthesis è possibile anche il rendering inverso: partendo dalle immagini della scena ricavare la
scena e poi renderizzarla, ma in genere non è necessario ricostruire la scena per ricavare le viste
virtuali; questa tecnica è nota come Image Based Rendering. Si cerca quindi di fare un
ricampionamento delle viste di partenza secondo una certa funzione di warping.
E' impossibile campionare la PF in ogni punto dello spazio poiché servirebbe un sensore sferico in
ogni punto della scena[1]. Siccome si fa un campionamento sparso della PF, essendo le immagini di
partenza solo 2, il problema del calcolo del parallasse tra pixel corrispondenti viene risolto tramite le
2 mappe di disparità sulle due immagini rettificate ricavate attraverso un algoritmo locale che
elabora due mappe di disparità a partire dalle corrispondenze tra aree di colore omogeneo(segmenti)
nelle due immagini e, all'interno di ogni segmento, con una metrica SSD, trova le corrispondenze tra
i pixel che giacciono sulla corrispondente linea epipolare dell'immagine rettificata.
Sintetizzare una vista virtuale significa quindi generare un set di raggi luminosi virtuali che
coloreranno il pixel della nuova immagine. La vista virtuale è costruita a meno di un numero
numerabile di occlusioni presenti nella scena a seconda della sua complessità geometrica e
fotometrica; infatti superfici non visibili in entrambe le immagini di partenza non possono essere
codificate nelle mappe di disparità e quindi non possono essere visualizzate nell'immagine virtuale.
Invece superfici che sono visibili su una immagine ma non nell'altra sono codificate solo in una
depth-map e quindi visibili nella vista virtuale, queste le chiamo occlusioni parziali. Per risolvere le
occlusioni sono necessarie delle mappe di disparità a più livelli che sezionano la scena in più strati,
oppure usare più viste della stessa[2].
L' IBR offre numerosi vantaggi rispetto ai metodi di rendering usati in Computer Graphics, come il
maggiore fotorealismo ed inoltre la complessità del rendering non dipende dal numero dei poligoni
1
Introduzione Capitolo 1
della scena[2].
1.1 View Synthesis
La View Synthesis consiste nel sintetizzare nuove viste a partire da un certo numero di immagini e
dall'informazione sulla profondità, generalmente codificata in una immagine in scala di grigio detta
depth-map. Questo è un problema non semplice da risolvere dato che comprende molte
problematiche come ad esempio il rendering della vista finale, l'estrazione delle depth associate alle
viste, calibrazione ecc. che approfondiremo in seguito.
Nel caso in cui le immagini di partenza sono non calibrate, cioè non si conoscono i parametri della
telecamera, sia intrinseci che estrinseci, la view syntesis è detta non calibrata.
1.2 Applicazioni della view synthesis non calibrata
Questa tecnica apre nuovi orizzonti alla tecnologia 3D poiché offre maggiore flessibilità e semplicità
di utilizzo anche per utenti finali poco esperti dato che la calibrazione non richiede quasi nessun
sforzo in termini di costo di setup e apparati. Inoltre estendendo propriamente questa tecnica è
possibile adattarla a nuovi scenari come il free-view point Tv, cinema, 3DTV ecc.
Infine interessanti sono le applicazioni in realtà virtuale e aumentata (ambienti di simulazione,
ambienti interattivi ecc.), ma anche in computer graphics per una pipe di rendering image-based e
non scene o model-based.
1.2.1 Free Viewpoint TV
Nei video 3D, effetti come il time-slice in cui il tempo si ferma idealmente e si ruota la scena o lo
slow motion in cui si cambia il punto di vista rallentando il tempo, diventerebbero attivabili a
discrezione dell’utente senza la necessità che la scena sia stata ripresa da una moltitudine di camere.
Tali funzionalità confluiscono nell’applicazione denominata Free Viewpoint Video o FTV che sta
riscuotendo notevole attenzione negli ultimi anni anche dai comitati di standardizzazione come
MPEG, in quanto vista come applicazione chiave per la televisione 3D del futuro.
Con queste tecniche, tuttavia, non è possibile ricostruire viste al di fuori dello spazio
tridimensionale costituito dall’intersezione dei coni delle viste delle camere che si hanno a
disposizione senza introdurre artefatti di ricostruzione dovuti alla presenza di zone occluse,
in quanto non viene ricostruita l’intera geometria della scena. Di conseguenza, per poter
2
Introduzione Capitolo 1
ruotare l’immagine di 360 gradi in piena libertà è comunque necessario disporre di un numero
di viste sufficienti, in relazione alla complessità della scena, a coprire l’intero volume attorno al
quale si vuole muovere la camera virtuale, in modo da avere a disposizione i dati necessari per
ricostruire le zone inizialmente nascoste o occluse, inoltre compaiono anche problemi di
illuminazione; infatti l'illuminazione della scene deve presentare una certa uniformità in ogni vista
dato che nella maggior parte dei casi si effettua una interpolazione quasi lineare tra le viste.
1.2.2 Multiview Video Coding
Il comitato MPEG ha recentemente esteso lo standard H.264/MPEG4-AVC, standard de
facto per la compressione di contenuti sigle-view ad alta risoluzione, in modo da codificare
anche video con viste multiple in un unico stream video sfruttando le dipendenze sia temporali sulla
telecamera singola che spaziali sulle camere vicine.
Il nuovo standard prende il nome di Multiview Video Coding (H.264/MVC) e sebbene sia stato
finalizzato da un paio di anni, non è ancora utilizzato per il broadcasting di contenuti video
multiview, sia perchè i contenuti di questo tipo sono ancora limitati, sia perchè la complessità di
codifica è ancora piuttosto alta soprattutto per i dispaly autostereoscopici che necessitano la
trasmissione di molte viste. Tuttavia, la Blue-Ray Disk Association lo ha scelto per la distribuzione di
contenti stereo su BDlu-ray.
Grazie a questo standard le mappe di profondità possono essere codificate insieme alle
viste di partenza per poi essere impiegate in diverse applicazioni, quali:
view synthesis prediction: in questo caso si codificano le viste intermedie utilizzando
solamente le differenze dalla vista originale e la vista ricostruita, a partire da 2 viste
note e una mappa di profondità.
2D plus depth: è un metodo di codifica di contenuti 3D introdotto da Philips. E' possibile
sintetizzare una depth map anche da una sola immagine su un video con metodi di motion
estimation. Le mappe di profondità sono codificate insieme al video per fare in modo che, in fase di
decodifica, vengano ricostruite le viste mancanti. Il costo di codifica di una depth map è stimabile
intorno al 20% sul carico complessivo. Quindi questa codifica introduce un overhead trascurabile sul
numero complessivo di viste dato che su M viste ne sono effettivamente trasmesse solo un
sottoinsieme[3].
3
Introduzione Capitolo 1
1.2.3 Stereoscopia
L'effetto di tridimensionalità è dato dalla percezione del parallasse. Il paralasse che esibisce un
punto della scena è la differenza tra le ascisse del punto proiettato sullo schermo dai due occhi
dell'osservatore, attraverso una trasformazione prospettica. Quando il parallasse è positivo allora il
punto è percepito avanti allo schermo e gli occhi sono leggermente incrociati, quando il parallasse è
negativo è il punto è percepito dietro lo schermo e quando nullo il punto è percepito sullo
schermo(vedi Figura 1).
Parallasse positivo Parallasse divergente Parallasse negativo
Parallasse nullo
Figura 1 Tipi di percezione del parallasse di un punto sui due occhi[4].
Per una corretta visualizzazione dell'immagine stereoscopica il parallasse deve essere compreso in
un range non troppo grande che si misura con l'angolo di parallasse cioè l'angolo al vertice del
triangolo formato dai due occhi e il punto dello spazio. Questo angolo deve essere non più grande di
1.5° in valore assoluto per un effetto senza disturbi agli occhi[4].
4
Introduzione Capitolo 1
Figura 2 Parallasse massimo[4].
La view synthesis non calibrata permette di stimare delle nuove viste a partire da un certo numero di
viste iniziali, quindi è possibile generare dei contenuti 3D stereoscopici predicendo nuove viste
virtuali centrate nei due occhi dell'osservatore facendo attenzione alla superficie con parallasse nullo,
cioè al piano dello schermo attuando un algoritmo di Shift-Sensor[5]. Ma non è possibile riprodurre
effetti ottici come la riflessione,rifrazione e trasparenza, se non con tecniche di computer graphics,e
risolvere le occlusioni dato che le depth sono estratte da contenuti 2D(2D plus depth); inoltre le
depth essendo delle immagini in bianco e nero codificano al più 256 livelli di profondità che
potrebbero risultare pochi[6].
Un altro punto debole è la coerenza tra le due immagini destra e sinistra dal punto di vista
dell'illuminazione della scena.
Per facilitare l'estrazione di viste intermedie nella codifica si usano delle camere dette plenottiche
che facilitano la fase di matching nell'estrazione della depth, dato che usano un set di lenti vicino al
sensore e la messa a fuoco è postecipata a dopo l'acquisizione[7].
Infine sarebbe possibile portare al 3D i vecchi filmati in 2D anche se la qualità finale sarebbe non
ottima dato che la depth verrebbe estratta da una sola immagine, ma migliorabile con tecniche di
motion detection[6].
Per i display autostereoscopici con un gran numero di viste né l' MVC, né il video plus depth(V+D)
sono applicabili su ogni singola vista dato l'altissimo trasmission-rate necessario; di conseguenza
sono trasmessi solo pochi V+D e i DIBR(depth image based rendering), lato receiver, generano i
video intermedi a partire dai video e depth trasmessi[3].
Figura 3 3DTV [3]
5
Introduzione Capitolo 1
Pos: punto di vista, R: occhio destro, L: occhio sinistro, V: view/immagine, D: depth.
1.3 Descrizione di un sistema video 3D
Per motivi di compatibilità con i set-top box delle televisioni attuali la trasmissione del video 3D
avviene sempre nel formato MPEG2, mentre per la codifica delle depth si possono usare i nuovi
standard quali AVC o MPEG4. La codifica delle depth dipende anche dalla complessità della scena
in relazione al movimento esibito dagli oggetti rappresentati e dalla 'smothness' della scena. Per
questo il bitrate da considerare può variare in un range più o meno ampio. Ad esempio su una scena
abbastanza smooth con un movimento della camera lento si verifica che, a parità di rapporto segnale
rumore è preferibile l' AVC per motivo di efficienza dato che su normali video 2D trasmessi
tipicamente a 3Mbit/s l'informazione di depth associata usa circa il 20% di questo valore[5].
Lato mittente si creano e codificano i contenuti 3D insieme ai metadati ad essi associati .
Successivamente i contenuti così formati sono trasmessi attraverso una DVB(Digital video
broadcast) network che può essere via cavo(DVB-C),satellite(DVB-S) o terrestre(DVB-T).Lato
ricevente c'è un normale DVB-decoder e un 3D-TV broadcast decoder in modo da garantire la
compatibilità all'indietro con la 2D-TV.
Figura 4 Generazione e trasmissione di contenuti 3D[5].
La riproduzione di video 3D può essere aggiustata a una grande varietà di display e proiettori.
Siccome le immagini richeste sinistra e destra sono generate lato ricevente, la profondità percepita
6
Introduzione Capitolo 1
può essere adattata alle particolari condizioni e necessità dell'utente. I parametri direttamente
modificabili dall'utente finale sono la distanza interassiale tra le due camere, la lunghezza focale e la
distanza di convergenza(individua il piano con parallasse nullo), attraverso questi è possibile
diminuire o aumentare l'effetto 3D, 'spostare' la scena rappresentata e modificare la dimensione
degli oggetti.
Tabella 1 Effetti su diversi parametri di setup della camera[5]
1.4 Principali problemi della View Synthesis non calibrata
1.4.1 Calibrazione
Il problema della calibrazione delle camere consiste nell'estrazione dei parametri intrinseci:
lungezza focale,centro del piano immagine, distorsione della lente, skew tra gli assi del sensore, e i
parametri estrinseci che codificano la posa della camera nello spazio della scena attraverso una
matrice di rotazione e un vettore di traslazione.
In letteratura questo problema è risolto in vari modi quando si osserva un oggetto di calibrazione del
quale si conosce la geometria 3D con ottima precisione; l'oggetto è generalmente composto da 2 o 3
piani ortogonali. Generalmente si risolve un problema detto direct linear trasformation(DLT) nel
quale sono note alcune corrispondenze pixel-punto della scena e il problema viene risolto a meno di
un fattore moltiplicativo. Questo metodo comporta evidenti svantaggi quali il costo di setup
elaborato e apparato di calibrazione costoso.
Un'altra tecnica è la self calibration nella quale la scena è rigida e la camera mobile; il cono di
proiezione della telecamera impone due vincoli sui parametri intrinseci della telecamera[1], quindi se
si usano 3 immagini della stessa telecamera possiamo recuperare sia i parametri interni che esterni
della telecamera e quindi ricostruire la struttra 3D sfruttando una similarità(6 vincoli).
7
Introduzione Capitolo 1
Altre tecniche sono la calibrazione da rotazioni pure e vanishing points for orthogonal direction che
permettono di ricavare tali parametri tenendo costante il parallasse tra le varie viste, oppure si
conoscono due vanishing-point e si cerca il terzo sulla sfera di calibrazione definito dai due punti[8].
Oggi sono principalmente usati per i desktop vision systems o DVS tecniche a metà tra le due
spiegate; si osserva un patter planare da due o un punto di vista stampato su una superficie, la
superficie e la camera possono muoversi di un moto non conosciuto e si ricavano i parametri
conoscendo l'omografia tra le due viste del pattern. I vantaggi di queste tecniche sono l'accuratezza
e la flessibilità, ma il costo principale resta quello di setup[9].
Nel nostro caso operando in un ambiente non strutturato i parametri di calibrazione della telecamera
sono stimati a partire da corrispondenze SIFT(Appendice C) sulle immagini di partenza, risolvendo
un problema di minimo sull'errore di riproiezione dei pixel da un piano all'altro. Utilizzando la
geometria epipolare si costruiscono quindi delle camere virtuali e attraverso queste si interpola il
moto non calibrato tra le due immagini generando delle viste virtuali.
1.4.2 Rettifica delle immagini
Rettificare un'immagine consiste nel ruotare il piano immagine attorno ad un punto mantenendo il
cono di proiezione fermo ottenendo un'immagine finale distorta; quindi le rettifiche possibili sono
infinite. Rettificare due piani immagine significa portarli sullo stesso piano applicando due rettifiche
in genere diverse ai due piani; anche in questo caso ci sono infinite rettifiche possibili. In questa fase
si cerca la rettifica che minimizza un determinato errore di riproiezione.
In letteratura sono stati proposti vari metodi di rettifica e diversi errori di riproiezione. Tutti si
basano sulla risoluzione di un problema inverso di minimo che consiste nella stima dei parametri
della telecamera in modo diretto o indiretto; si differenziano in base alle ipotesi e informazioni di
partenza.
La rettifica è necessaria per la fase di estrazione delle mappe di disparità poiché in due immagini
rettificate, come vedremo, le linee epipolari sono parallele, cioè dato un pixel in una immagine, il
corrispondente pixel nell'altra, si trova sulla corrispondente linea epipolare, per questo la complessità
di ricerca di pixel corrispondenti passa da quadratica a lineare.
In questa fase quindi si introducono l'errore di interpolazione sui valori dei pixel poiché da un piano
immagine si arriva ad un altro piano immagine di dimensioni diverse e l'immagine viene distorta;
poi c' é l'errore di riproiezione che si misura in pixel ed esprime quanto la riproiezione di un pixel da
un piano immagine all'altro dista dalla sua corrispondente linea epipolare.
8
Introduzione Capitolo 1
1.4.3 Interpolazione di nuove viste o Warping
Il warping è la tecnica usata per estrapolare ed interpolare il colore dei pixel nei punti del piano
immagine non descritti dal modello usato e più in generale è la fase finale nella quale viene generata
l'immagine virtuale. Importante per il risultato finale è il metodo di interpolazione usato in questa
fase dato che le cooridinate sul piano immagine della camera virtuale non sono necessariamente
intere, ma floating point, e alcuni pixel potrebbero cadere fuori da tale piano immagine. Il warping
ha l'obiettivo di conservare la coerenza locale e globale del colore nella scena dell'immagine. Infatti
il problema del metodo di interpolazione usato è strettamente legato al contenuto dell' immagine, ad
esempio in un'immagine con uno sfondo e primo piano di colore uniforme anche un'interpolazione
non lineare, come la funzione floor, porterebbe ad un risultato accettabile. In caso di immagini con
scene molto complesse bisogna badare bene al metodo di interpolazione usato. Ad esempio per
immagini con una certa quantità di rumore cioè localmente sfocate potrebbe essere utile
un'interpolazione area-based , mentre per immagini con contorni netti si potrebbe usare un'
interpolazione bilineare o quadratica tra i pixel vicini, ma anche un'interpolazione di tipo nearest
neighbor nella quale il pixel prende il colore del pixel più vicino nel quadrato di pixel che lo
contiene. Bisogna tenere in considerazione che il numero di occlusioni parziali dipende dal metodo
di interpolazione usato in questa fase.
Per fare un corretto warping bisogna localizzare le zone occluse in entrambe le immagini e quindi
evitare di riempire queste zone durane questa fase dato che manca l'informazione necessaria per
riempirle. Le oclusioni totali sono presenti dove la variazione della profondità di pixel adiacenti è
molto alta cioè dove ci sono discontinuità sui valori di depth. Quindi sarebbe utile individuare i
contorni di sfondo e di primo piano in modo da etichettare aree con alta variazione di deth[3].
Questo tipo di warping potremmo definirlo dinamico poiché varia in relazione all'area e posizione
delle zone occluse.
Ricordiamo che il warping dipende anche dalle condizioni di luce presenti nella scena, tuttavia
ipotizziamo che le viste di partenza sono fotogrammaticamente calibrate. Infatti per trasportare
correttamente le ombre e le luci nelle immagini, sarebbe necessario sfruttare le informazioni sul
colore dei pixel corrispondenti tra le immagini di partenza, anche nelle zone parzialmente occluse,
poiché in queste zone c'è almeno la depth di un' immagine che non contiene il pixel corrispondente a
quel punto della scena. Si potrebbe stimare un modello di illuminazione a partire da questa
informazione che migliorerebbe all'aumentare del numero di immagini usate in partenza. Ad
9
Introduzione Capitolo 1
esempio nel caso di 2 immagini per ogni pixel dell'immagine virtuale, almeno non parzialmente
occluso, ci sono 2 colori possibili per tale pixel: uno che deriva dalla coppia depth-immagine destra
e l'altro depth-immagine sinistra. Dalle due sintesi virtuali in coordinate floating point si potrebbe
stimare la sintesi finale cercando di sovrapporle in qualche modo attuando un'interpolazione sul
colore che conservi la coerenza sia locale che globale. Successivamente si interpolano le coordinate
finali in modo da ottenere le coordinate intere tenendo in cosiderazione le occlusioni. Oppure si
potrebbe fare prima l'interpolazione sulle coordinate e poi sul colore ottenendo un risultato diverso.
In stereoscopia per rendere le due viste coerenti ai due occhi si devono usare degli algoritmi di color
mapping a priori sulle immagini di partenza e a posteriori sulle viste sintetizzate.
Per migliorare il risultato del wapping si applicano dei filtri per smussare i bordi e riempire i buchi
piccoli[3].
1.4.4 Mappe di profondità
Le mappe di profondità sono particolari immagini in scala di grigi che rappresentano una scena,
visualizzando la profondità degli oggetti anzichè il loro colore. Nel caso stereo, in cui si hanno
quindi due immagini della stessa scena, la profondità viene ricavata calcolando la disparità
di ogni pixel, ossia la differenza tra la posizione orizzontale del pixel nelle due immagini.
E' quindi necessario disporre di algoritmi per la ricerca delle corrispondenze all’interno di
un’immagine in modo da poter individuare in quale posizione compare un determinato pixel
nelle due immagini. La disparità dei pixel è inversamente proporzionale alla profondità tra i
pixel in base alla formula :
z=
f⋅b
d
dove f è la distanza focale della camera, b è la distanza tra le due camere che hanno
acquisito la scena e d è la disparità del pixel. La formula esprime che i punti più lontani dalla
camera della scena esibiscono una disparità più piccola cioè si spostano di meno dei punti più vicini
alla camera.
Maggiore è la disparità, più vicini al centro di proiezione saranno gli oggetti; con il diminuire della
disparità gli oggetti diventeranno mano a mano più distanti dal centro di proiezione.
10