Visione Artificiale
a.a. 2007-2008
Geometria 3D, modello e calibrazione di una telecamera,
stereo vision
http://imagelab.ing.unimo.it
Ing. Roberto Vezzani
Dipartimento di Ingegneria dell’Informazione
Università di Modena e Reggio Emilia, Italia
Calibrazione della telecamera: a cosa serve?
 Obiettivo: poter calcolare misure o relazioni spaziali a partire dalle immagini
acquisite da una macchina fotografica o da una telecamera.
?
http://imagelab.ing.unimo.it
Applicazioni (con una telecamera):
 Misurare le dimensioni reali
(lunghezza, larghezza, …) di oggetto o
di particolari meccanici mediante una
telecamera installata su una catena di
montaggio
Diametro
20mm
 Misurare con una telecamera installata
nei pressi si una autostrada la velocità
delle automobili che vi transitano
134 Km/h
 Ricostruire la traiettoria seguita da una
persona che si sta muovendo all’interno
di una stanza
http://imagelab.ing.unimo.it
Applicazioni (con due telecamere):
 Ricostruzioni 3D
 Distanza degli oggetti dalla telecamera (Robot mobili – calcolo del tempo di collisione)
http://imagelab.ing.unimo.it
RICHIAMI DI GEOMETRIA
http://imagelab.ing.unimo.it
Coordinate 3D – Traslazione
 Sia dato un sistema di riferimento tridimensionale ed un punto P1 di un oggetto, le cui coordinate rispetto
al sistema di riferimento sono (X1,Y1,Z1).
 Una traslazione dx,dy,dz porta il punto P1 in un punto P2 di coordinate
 X 2  X 1  dx

 Y2  Y1  dy
 Z  Z  dz
1
 2
 Purtroppo non esiste una matrice T tale per cui P2=T · P1
 Coordinate Omogenee:


P1 = [ X1 Y1 Z1 1]T
P2 = [ X2 Y2 Z2 1]T
 In coordinate omogenee esiste una matrice di trasformazione T che rappresenta la traslazione:
 X 2  1
 Y  0
 2 
 Z 2  0
  
 1  0
http://imagelab.ing.unimo.it
0 0 dx   X 1 
 X1 



Y 
1 0 dy   Y1 

T  1 
 Z1 
0 1 dz   Z1 
  
 
0 0 1 1
1
Scala
 Analogamente possiamo definire la matrice che rappresenta una variazione di scala di un oggetto
 X 2  Sx
Y   0
 2 
 Z2   0
  
 1  0
0
Sy
0
0
0
Sz
0
0
0  X 1 
 X1 
Y 
0   Y1 

 S  1 
 Z1 
0   Z1 
  
 
1  1 
1
 Matrici di trasformazione inverse: per ogni trasformazione definita mediante una matrice T è possibile
ottenere la trasformazione inversa invertendo la matrice stessa: T-1
 Traslazione:
 Scala:
1
0

1
T 
0

0
 1 Sx
0

1
S 
0

 0
http://imagelab.ing.unimo.it
0 0 dx 
1 0 dy 
0 1 dz 

0 0 1 
0
0
1
0
Sy
0
1
0
0
Sz
0
0 
0

1 
Rotazione
 Consideriamo ora una rotazione di un punto attorno all’asse Z. Il punto P1= (X1,Y1,Z1) viene portato in P2:
 X 2  X 1 cos   Y1 sin 

 Y2  X 1 sin   Y1 cos 
Z Z
1
 2
cos 
 sin 
R ( )  
 0

 0
 La matrice di trasformazione corrispondente è:
Z
 sin 
cos 
0
0
0
0
1
0
0
0

0

1
 Analogamente si possono ottenere le matrici di rotazione lungo gli altri due assi
0
1
0 cos 
R ( )  
0 sin 

0
0
X
http://imagelab.ing.unimo.it
0
 sin 
cos 
0
0
0

0

1
 cos 
 0
R ( )  
  sin 

 0
Y
0 sin 
1
0
0 cos 
0
0
0
0

0

1
Trasformazioni composte
 E’ possibile ottenere trasformazioni composte mediante il prodotto di
trasformazioni elementari
 Tc = T4 · T3 · T2 · T 1
 ATTENZIONE all’ordine delle trasformazioni
 Vengono applicate a partire da quella più a destra
 P2 = Tc · P1 = T4 · T3 · T2 · T1· P1 = T4 ·( T3 ·( T2 ·( T1· P1)))
 Matematicamente, infatti, si può dimostrare facilmente in quanto il prodotto tra
matrici, non è commutativo.
In genere A · B ≠ B · A
http://imagelab.ing.unimo.it
Visione monoculare
(Singola telecamera)
Modello Pinhole della telecamera
Il concetto si basa sulla riflessione/emissione di luce da parte
dell’oggetto che passa attraverso un forellino di un’ipotetica “camera
oscura” e si proietta sul piano immagine.
http://imagelab.ing.unimo.it
Angolo di Acquisizione e Zoom
A parità di sensore di acquisizione (ad es. CCD), diminuendo la
lunghezza focale sul sensore viene proiettato un angolo più ampio
della scena osservata
http://imagelab.ing.unimo.it
Modello Pinhole della telecamera
•
•
E’ il modello di telecamera più diffuso
Costituito da
•
•
•
•
•
piano immagine (o retina) 
punto O detto centro ottico (o centro di proiezione)
Punto o detto centro immagine
Oo: distanza focale
Asse Z: detto anche asse ottico
x
Trasforma prospetticamente
un punto P=(X,Y,Z) nello
spazio 3-D in un punto
p=(x,y) sul piano in cui si
forma l’immagine
•
http://imagelab.ing.unimo.it
Y
y
X
o
p
f
P
O
Z
Varianti del modello
Piano immagine reale
http://imagelab.ing.unimo.it
Piano immagine virtuale
Proiezione Prospettica Planare
Le equazioni che definiscono la trasformazione prospettica si ottengono
sfruttando la similitudine di triangoli:
YC
y f
ZC
XC
x f
ZC
L’equazione è non lineare e non mantiene né le distanze fra i punti né gli
angoli tra le linee
http://imagelab.ing.unimo.it
Problema: posso calcolare l’altezza della barra?
Dall’immagine
Da specifiche tecniche
della telecamera
Da informazioni note a priori
Non posso calcolare l’altezza reale della barra. Devo misurare la distanza focale
in pixel mediante la CALIBRAZIONE della telecamera.
http://imagelab.ing.unimo.it
Calibrazione: metodo “manuale”
 Posso calcolare la distanza focale in pixel. Tale distanza è anche data dalla distanza
focale in mm divisa per la dimensione in mm di un pixel.
 Problema: visto che i pixel non sono quadrati le distanze focali calcolate lungo l’asse
x e lungo l’asse y possono essere differenti.
 Data la discretizzazione dell’immagine, è meglio calcolare più misure di distanze
focali e valutare la distanza effettiva con metodi statistici (es. media).
 La scacchiera è particolarmente comoda nelle tecniche automatiche di calibrazione.
http://imagelab.ing.unimo.it
Matrice di proiezione prospettica
 Note la/e distanza/e focale/i della telecamera, preso un punto PC nello spazio di cui conosco
le coordinate (XC,YC,ZC) rispetto al sistema di riferimento della telecamera, posso
determinare in quale pixel p dell’immagine mi verrà visualizzato.
 Per comodità vorrei trovare una matrice M tale che p= M · PC
 Per fare ciò devo utilizzare le coordinate omogenee.
 x  fx
 y   0
  
 1   0
Che in forma compatta diventa:
0
fy
0
0
0
1
X 
0  
Y


0
Z 
0   
1
~
~
p  M  PC
M è detta matrice di proiezione prospettica o MPP.
http://imagelab.ing.unimo.it
Sistema di riferimento del mondo
L’obiettivo finale è stabilire un legame tra le coordinate di PW nel sistema di
riferimento (Ow, Xw, Yw, Zw), chiamato riferimento del mondo, e quelle di p in un
sistema definito sul piano immagine. Come passaggio intermedio sfruttiamo il
sistema di riferimento della telecamera (Oc, Xc, Yc, Zc).
Pc  R( Pw  T )
 r11 r12
R  r21 r22
 r31 r32
r13   R1T 
 T

r23    R2 
r33   R3T 
T  (Ow  Oc )
R e T sono chiamati parametri estrinseci della telecamera. Una volta ottenuti i punti nel
sistema di riferimento della telecamera bisogna trasformare le coordinate in coordinate
immagine, utilizzando il modello pinhole.
http://imagelab.ing.unimo.it
Coordinate immagine
Per passare più agevolmente dalle coordinate nel sistema di riferimento della
telecamera alle coordinate immagini, scriviamo:
x  ( xim  ox )sx
y  ( yim  o y ) s y
dove (ox, oy) sono le coordinate del punto principale o in pixel e (sx, sy) sono
le dim. del pixel lungo x e lungo y. Le nuove coordinate (xim, yim) sono dette
coordinate normalizzate o coordinate immagine.
Per passare dalle coordinate della telecamera alle coordinate immagine
bisogna conoscere i parametri intrinseci della telecamera: f,ox, oy, sx e sy.
Per sostituzione si ottengono le equazioni:
R1T ( Pw  T )
 ( xim  ox ) s x  f T
R3 ( Pw  T )
http://imagelab.ing.unimo.it
R2T ( Pw  T )
 ( yim  o y ) s y  f T
R3 ( Pw  T )
Forma matriciale
Definendo:
M int
 f

sx

 0

 0

c
 f
0
sy
ox 

oy 

1 

Possiamo esprimere Pw in
coordinate omogenee:
M ext
 r11 r12

  r21 r22
r
 31 r32
r13
r23
r33
 R1T T 

T
 R2 T 
 R3T T 
 Xw 
 
 x1 
 
 Yw 
 x2   M int M ext  
Zw
x 


 3
 1 
 
Per passare dalle coordinate omogenee alle coordinate immagine:
x1
xim 
x3
http://imagelab.ing.unimo.it
yim 
x2
x3
Metodo di calibrazione generale
Un metodo pratico per la calibrazione è quello di usare un pattern noto e
misurabile, come una scacchiera.
X c  r11 X w  r12Yw  r13Z w  Tx
Xc 
Xw
 Y   R Y   T
 c
 w
 Z c 
 Z w 
Yc  r21 X w  r22Yw  r23Z w  Ty
Z c  r31 X w  r32Yw  r33Z w  Tz
f X
x 
o
s Z
c
im
x
c
f Y
y 
o
s Z
c
x
im
y
y
f, sx e sy non sono
indipendenti
c
Dalla calibrazione possiamo determinare:
•
R (matrice 3x3 di rotazione, 3 gradi di libertà), T (vettore 3x1 di traslazione)
• fx=f/sx (focale
espressa in nr. di pixel orizzontale)
•
=sx/sy (aspect ratio)
•
(ox,oy) (coordinate del centro immagine)
http://imagelab.ing.unimo.it
Autocalibrazione
 Nel caso più generale si possono voler calcolare 11 parametri, 5 intrinseci e 6 estrinseci
 Posso utilizzare il toolbox Matlab di Zhengyou Zhang, che necessita in ingresso di 3 o più
viste differenti di una scacchiera a celle quadrate di dimensione nota.
http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/links.html
http://imagelab.ing.unimo.it
Deviazioni dal modello pin-hole
http://imagelab.ing.unimo.it
Modello a lenti sottili
Ipotesi del modello:
1. i raggi paralleli all'asse ottico incidenti sulla lente
vengono rifratti in modo da passare per un punto
dell'asse ottico chiamato fuoco F.
2. i raggi che passano per il centro C della lente sono
inalterati.
Per mettere a fuoco oggetti a
distanze diverse, le lenti
dell'occhio cambiano forma
(focale), mentre le lenti delle
telecamere traslano nella
direzione Z.
A. Fusiello. Visione Computazionale: appunti delle lezioni, 2005.
http://profs.sci.univr.it/~fusiello/teaching/visione/appunti.pdf
http://imagelab.ing.unimo.it
Distorsioni delle lenti
Immagine originale distorta
http://imagelab.ing.unimo.it
Distorsione rimossa
Esempi di distorsioni
Distorsione radiale
Distorsione
tangenziale asse
x
http://imagelab.ing.unimo.it
Distorsione
tangenziale asse
y
Correzione distorsione lenti - Modello plumb-bob
Modello plumb-bob [D.C.Brown, 1971]
 Distorsioni radiali
 Distorsioni tangenziali
k1 , k2
p1 , p2
 x  x0  x0 (k1r 2  k2 r 4 )  (2 p1 x0 y0  p2 (r 2  2 x02 ))

2
4
2
2
y

y

y
(
k
r

k
r
)

(
2
p
x
y

p
(
r

2
y
0
0
1
2
2 0 0
1
0 ))

http://imagelab.ing.unimo.it
Rimozione prospettica e omografie
Rimozione prospettica e omografia
 Un punto dello spazio 3D viene sempre
proiettato su uno ed un solo punto del piano
immagine. Ovvero, dato un punto nello spazio e
conoscendo i parametri intrinseci ed estrinseci
della telecamera, posso determinare se il punto
è inquadrato e dove compare nell’immagine
I
A (XA,YA,ZA)
x
y
O
C
X
Z
A’(x A,yA)
Y
 Un punto dell’immagine, invece, può
corrispondere ad uno qualunque dei punti della
retta che passa dal centro ottico e dal punto
stesso.
I
x
y
A (X A,Y A,ZA)
C
O
X
A’(x A,y A)
Z
Y
http://imagelab.ing.unimo.it
Rimozione prospettica
I
 Se ho almeno un vincolo
sulle coordinate del mondo
reale di un punto P, posso
determinare con esattezza la
sua posizione a partire dalle
coordinate immagine.
x
y
C
O
P(XP,Y P,ZP=c)
(parete; Z=c)
I
x
y
C
O
P(X P,Y P=0,ZP)
Omografia orizzontale
(pavimento; Y=0)
http://imagelab.ing.unimo.it
Omografia orizzontale – Rettificazione dell’immagine
 Ipotesi: i punti dell’immagine fanno tutti parte del piano Y=0 (pavimento / strada)
http://imagelab.ing.unimo.it
Matrice di trasformazione omografica
 L’omografia (o collineazione) è formalmente definita come una “trasformazione lineare non singolare del
piano proiettivo in se stesso”
 Praticamente: preso un piano e due differenti proiezioni bidimensionali dello stesso, la trasformazione
omografica lega le coordinate dei punti nei due sistemi di riferimento.
 x1 ' 
 x1 
  x2 '  H 3 x 3  x2 
 1 
 1 
 h1 h2 h3 
H 3 x 3   h4 h5 h6 


 h7 h8 1 
 La matrice di omografia è definita a meno di un fattore di scala (8 gradi di libertà)
 Può essere determinata dalla corrispondenza di 4 punti
http://imagelab.ing.unimo.it
Trasformazioni 2D - Trasformazione Euclidea
 Trasformazioni euclidee: vengono algebricamente rappresentate mediante una matrice sparsa non
singolare 3x3 avente tre gradi di libertà (una rotazione e due traslazioni). Preservano le lunghezze e le
aree, gli angoli.
 r1,1
E   r2,1

 0
r1,2
r2,2
0
tx 
ty 

1 
cos 
R
 sin 
http://imagelab.ing.unimo.it
 sin  
cos  
Trasformazioni 2D - Trasformazione di Similitudine
 Trasformazioni di similitudine: vengono algebricamente rappresentate mediante una matrice sparsa
non singolare 3x3 avente 4 gradi di libertà (una rotazione, una scala e due traslazioni). Preservano i
rapporti tra le lunghezze e le aree, gli angoli.
 sr1,1
S   sr2,1

 0
sr1,2
sr2,2
0
http://imagelab.ing.unimo.it
tx 
ty 

1 
Trasformazioni 2D - Trasformazione Affine
 Trasformazioni affini: vengono algebricamente rappresentate mediante una matrice sparsa non
singolare 3x3 avente 6 gradi di libertà. Preservano il parallelismo, i rapporti tra lunghezze di linee
parallele, le combinazioni lineari di vettori e le linee all’infinito.
 a1,1
A   a2,1

 0
a1,2
a2,2
0
http://imagelab.ing.unimo.it
tx 
ty 

1 
Trasformazioni 2D - Trasformazione Proiettiva
 Trasformazioni proiettive o omografiche: vengono algebricamente rappresentate mediante una
matrice sparsa non singolare 3x3 avente 8 gradi di libertà. Preservano la collinearità e la cross-ratio.
 h1,1 h1,2

H   h2,1 h2,2
 h3,1 h3,2
http://imagelab.ing.unimo.it
h1,3 

h2,3 
1 
Visione stereoscopica
(Due telecamere)
La visione stereoscopica
 Con la visione stereoscopica è possibile ottenere la posizione di un punto nello spazio tridimensionale a
partire dalle coordinate immagine acquisite da due telecamere distinte.
 Non ho più bisogno di vincoli aggiuntivi sulle coordinate (cfr: omografia nel caso monoculare)
 Il problema principale da affrontare nel campo della visione stereoscopica è la risoluzione delle
corrispondenze: per ogni punto di interesse individuato su di una immagine devo trovare il punto
corrispondente sull’altra immagine
http://imagelab.ing.unimo.it
Visione stereoscopica – caso semplificato
  f v
 z  y


 f  v'
 z
b y
d  v v'
b f
z
d
http://imagelab.ing.unimo.it
Visione stereoscopica: calcolo delle corrispondenze
Il problema di associazione dei punti viene fatto cercando per ciascun punto Pl
dell’immagine di sinistra nel suo intorno corrispondente nell’immagine di destra
il punto che massimizza (minimizza) una certa funzione (metrica di affinità)
Possibili metriche C(u,v), con u e v luminosità del punto nell’immagine di
sinistra e di destra, sono:
1)
C (u , v)  uv
(funzione di correlazione)
2)
C (u, v)  (u  v) 2
(somma dei quadrati delle differenze (SSD))
3)
C (u , v) 
(u  u )(v  v ) (funzione di correl. normalizzata)
Nu Nv
u    I (i, l ) v    I (i, l ) N 
W
W
i  W j  W
W
l
http://imagelab.ing.unimo.it
W
i  W j  W
r
u
  I (i, j ) N 
W
W
i  W j  W
2
l
v
W
W
  I (i, j )
i  W j  W
2
r
Corrispondenze di features
 Esistono tecniche più efficaci per il calcolo delle corrispondenze.
 Il problema principale è dovuto al fatto che gli oggetti sono catturati da punti di vista
differenti e con dispositivi diversi. Lo stesso oggetto risulta avere di norma forma e
colore diverso.
 Si ricorre ad algoritmi di estrazione di features forti e a descrittori “invarianti”
 Esempio: SIFT (Scale Invariant Feature Transform)
 I descrittori SIFT sono invarianti a
 Rotazioni
 Cambianti di scala
 Leggeri cambiamenti di luminosità
 (http://www.cs.ubc.ca/~lowe/keypoints/)
http://imagelab.ing.unimo.it
Luci strutturate
 Per facilitare il calcolo delle corrispondenze si possono utilizzare luci
strutturare che creano pattern visuali sugli oggetti.
http://imagelab.ing.unimo.it
Geometria epipolare
 Ipotesi:
 due telecamere di cui sono noti i parametri intrinseci
 è nota la posizione di una telecamera rispetto l’altra
 Problema:
 Dato un punto P su di una immagine, dove devo cercare il punto
corrispondente nella seconda immagine?
 Soluzione:
 La geometria epipolare ci assicura che il punto può essere cercato su di una
retta, detta retta epipolare.
http://profs.sci.univr.it/~fusiello/teaching/visione/EpipolarApplet/index.html
http://imagelab.ing.unimo.it
Geometria epipolare
Nel caso più generale possibile si parla di geometria epipolare. Siano:

Pl=[Xl , Yl , Zl] e Pr=[Xr , Yr , Zr] coordinate di P nei due sistemi-telecamera

pl=[xl , yl , zl] e pr=[xr , yr , zr] coordinate di P sui piani immagine l e r
 el
e er sono detti epipoli

(Ol, P, Or) è detto piano epipolare

le intersezioni di tale piano con l e r sono dette linee epipolari
http://imagelab.ing.unimo.it
Matrice Fondamentale F
 La geometria epipolare non dipende dalla struttura della scena, ma solamente dalle matrici di proiezione
delle due telecamere e dalla posizione reciproca delle stesse
 Tale relazione può essere condensata in una matrice particolare, detta matrice fondamentale F, che
presenta le seguenti caratteristiche:

F  R33
 Una retta epipolare sull’immagine è descritta dall’equazione ax+by+c=0.
 Rappresentando i coefficienti dell’i-esima retta in forma matriciale:
li=[ai bi ci]T

La matrice fondamentale F mette in relazione ogni punto pi di una immagine con la corrispondente
retta epipolare sull’altra immagine:
l 'i  F  pi
 Dato che il punto p’i corrispondente a pi giace sulla retta epipolare l’i:
p 'i  l 'i  0 
 p 'iT  F  pi  0
http://imagelab.ing.unimo.it
Matrice Essenziale E
 Analoga relazione può essere ottenuta tra le coordinate di punti reali espresse nei sistemi di riferimento
delle due telecamere. La matrice che rappresenta tale relazione è detta Matrice Essenziale e dipende
solo dalla posizione reciproca delle due telecamere (ma non dai parametri intrinseci delle telecamere)
( Pri )T EPl i  0
i  1,..., n
 La matrice essenziale, come la matrice fondamentale ha 7 gradi di libertà e può quindi essere
determinata tramite un sistema lineare di n equazioni, con n  7:
 Posso calcolare la matrice essenziale se conosco le corrispondenze di almeno 7 punti (non in
configurazione degenerante)
 Con la matrice essenziale posso usare la geometria epipolare SENZA conoscere i parametri intrinseci
ed estrinseci delle telecamere

F M 'T EM 1
http://imagelab.ing.unimo.it
M e M’ sono le MPP
Scarica

va_Geometria3D_2008