Sei sulla pagina 1di 29

Parâmetros da câmera

Parte dos desafios da Visão Computacional depende da associação de pixles da


imagem com coordenadas 3D de pontos da cena.

Essa associação depende do conhecimento de um conjunto de parâmetros


intrínsecos e extrínsecos.
Os parâmetros Extrínsecos definem a localização e orientação da câmera com
respeito a um sistema de coordenadas conhecido do mundo;
Os parâmetros Intrínsecos definem a transformação de um ponto no sistema
de coordenadas da câmera para coordenadas de pixel numa imagem.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 147 / 216
Parâmetros da câmera: Extrínsecos

� �
r11 r12 r13
Matriz de rotação R = r21 r22 r23 ;
r31 r32 r33
Vetor de translação T = [Tx , Ty , Tz ].

R e T , chamados parâmetros extrínsecos, são usados para estabelecer a relação

Pc = R(Pw − T )

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 148 / 216
Parâmetros da câmera: Intrínsecos
Os parâmetros intrínsecos são:
A distância focal f;
O tamanho do pixel, em milímetros, sx e sy
O centro da imagem (ox , oy )

As coordenadas, em pixels pim = [xim , yim ], são obtidas das coordenadas Pc = [Xc , Yc , Zc ] no
sistema de referência da câmera fazendo

f Xc f Yc
xim = ox − e yim = oy −
sx Zc sy Zc

Na forma matricial, os parâmetros intrínsecos definem a matriz Mint , dada por

 −f

sx
0 ox
Mint =  0 −f
sy
oy .
0 0 1

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 149 / 216
Parâmetros da câmera
Plugando os parâmetros extrínsecos e intrínsecos, obtemos uma versão
linear para as equações de projeção perspectiva

f Xc Xc
De xim = ox − , obtemos −(xim − ox ).sx = f
sx Zc Zc

f Yc Yc
De yim = oy − , obtemos −(yim − oy ).sy = f
sy Zc Zc

Fazendo Xc = R1T (Pw − T ), Yc = R2T (Pw − T ) e Zc = R3T (Pw − T ), temos

R1T (Pw − T )
−(xim − ox ).sx = f T
R3 (Pw − T )

R2T (Pw − T )
−(yim − oy ).sy = f T
R3 (Pw − T )

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 150 / 216
Parâmetros da câmera

RT1 (Pw − T) RT2 (Pw − T)


De −(xim − ox ).sx = f e −(yim − oy ).sy = f
RT3 (Pw − T) RT3 (Pw − T)

� �  −f

r11 r12 r13 −R1T T sx
0 ox
E tomando Mext = r21 r22 r23 −R2T T e Mint =  0 −f
sy
oy .
r31 r32 r33 −R3T T 0 0 1

Podemos escrever  
  R1T (Pw − T )
� � Xw −f + ox R3T (Pw − T )
x1  sx 
 Yw = T .
x2 = Mint × Mext R (P − T )
Zw  −f 2 w + oy R3 (Pw − T ) 
T
x3 sy
1
R3T (Pw − T )

x1 x2
Donde, finalmente, xim = e yim =
x3 x3

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 151 / 216
Calibração de câmeras

O
� algorítmo de Calibração
� Direta usa um conjunto n de pontos
(Xw
i , Y w
i , Z w
i ), i = 1..n conhecidos em coordenadas do mundo, e sua
respectivas coordenadas na imagen {(xi , yi ), i = 1..n} para estimar os
parâmetros extrínsecos e intrínsecos.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 152 / 216
Calibração de câmeras

Vimos que a associação de cada (X w , Y w , Z w ) com sua imagem (x, y ) passa


pelas coordenadas da câmera (X c , Y c , Z c ).

(X w , Y w , Z w ) ⇒ (X c , Y c , Z c ) ⇒ (x, y)

Os parâmetros extrínsecos (R, T) associam cada (X w , Y w , Z w ) com


respectivos (X c , Y c , Z c ).
 c   w      
X X r11 r12 r13 Xw Tx
 Y c  = R  Y w  + T =  r21 r22 r23   Yw  +  Ty .
Zc Zw r31 r32 r33 Zw Tz

Em componentes, temos
 c
 X = r11 X w + r12 Y w + r13 Z w + Tx
Y c = r21 X w + r22 Y w + r23 Z w + Ty
 c
Z = r31 X w + r32 Y w + r33 Z w + Tz

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 153 / 216
Calibração de câmeras

Os parâmetros intrínsecos (f , ox , oy , sx , sy ) associam os pontos em


coordenadas da câmera (X c , Y c , Z c ) com pontos da imagem (x, y)


 f Xc

 x =− + ox
 sx Zc

 f Yc

 y =− + oy
sy Zc

f f
Escrevendo fx = e fy = e assumindo (ox , oy ) = (0, 0), temos
sx sy

 Xc

 x = −fx
 Zc

 y = −fy Yc


Zc
Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 154 / 216
Calibração de câmeras

 c  X
 X = r11 X w + r12 Y w + r13 Z w + Tx  x = −fx Zcc
De Y c = r21 X w + r22 Y w + r23 Z w + Ty e
 c 
Z = r31 X w + r32 Y w + r33 Z w + Tz y = −fy YZcc

escrevemos a coordenada (x, y), da imagem, diretamente de (X w , Y w , Z w ),


sem usar (X c , Y c , Z c )


 r11 X w + r12 Y w + r13 Z w + Tx

 x = −fx
 r31 X w + r32 Y w + r33 Z w + Tz

 r X w
+ r Y w
+ r Z w
+ Ty

 y = −fy 21 22 23
r31 X w + r32 Y w + r33 Z w + Tz

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 155 / 216
Calibração de câmeras
 w + r Yw + r Zw + T
 r11 X 12 13 x

 x = −f x w w w
r31 X + r32 Y + r33 Z + Tz
De

 r21 X w + r22 Y w + r23 Z w + Ty
 y = −fy
w
r31 X w
+ r32 Y w
+ r33 Z + Tz

multiplicamos a primeira equação por y e a segunda por x, obtendo

 w + r Yw + r Zw + T
 r11 X 12 13 x

 xy = −y .fx . w w w
r31 X + r32 Y + r33 Z + Tz

 r21 X w + r22 Y w + r23 Z w + Ty
 xy = −x.fy .
w
r31 X w
+ r32 Y w
+ r33 Z + Tz

E, portanto, temos a equação

x.fy .(r21 X w + r22 Y w + r23 Z w + Ty ) = y .fx (r11 X w + r12 Y w + r13 Z w + Tx )

ou
fx
x.(r21 X w + r22 Y w + r23 Z w + Ty ) = y . (r11 X w + r12 Y w + r13 Z w + Tx )
fy

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 156 / 216
Calibração de câmeras
De
fx
x.(r21 X w + r22 Y w + r23 Z w + Ty ) = y. (r11 X w + r12 Y w + r13 Z w + Tx )
fy
fx
e fazendo α = , temos
fy

x.(r21 X w + r22 Y w + r23 Z w + Ty ) = y.α(r11 X w + r12 Y w + r13 Z w + Tx )


 

 a = r21 e = αr11  
 
b = r22 f = αr12
Finalmente, tomamos , e temos

 c = r23 g = αr13  
 
d = Ty h = αTx

xX w a + xY w b + xZ w c + xd = yX w e + yY w f + yZ w g + yh

⇒ xX w a + xY w b + xZ w c + xd − yX w e − yY w f − yZ w g − y h = 0

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 157 / 216
Calibração de câmeras
A equação

xX w a + xY w b + xZ w c + xd − yX w e − yY w f − yZ w g − yh = 0

deve ser satisfeita para os n pares de pontos {(Xiw , Yiw , Ziw ), i = 1..n} e {(xi , yi ), i = 1..n}
previamente estabelecidos. Então
 x Xwa + x Ywb + x Zwc + x d − y Xwe − y Ywf − y Zwg − y h = 0
1 1 1 1 1 1 1 1

 x2 X1w a + x2 Y1w b + x2 Z1w c + x2 d − y2 X1w e − y2 Y1w f − y2 Z1w g − y2 h = 0
2 2 2 2 2 2
.. .. .. .. .. .. .. .. ..

 . . . . . . . . .
xn Xnw a + xn Ynw b + xn Znw c + xn d − yn Xnw e − yn Ynw f − yn Znw g − yn h = 0

 x Xw x Yw x Zw x − y1 X1w − y1 Y1w − y1 Z1w − y1


 a   0 
1 1 1 1 1 1 1
  b   
 x2 X2w x2 Y2w x2 Z2w x2 − y2 X2w − y2 Y2w − y2 Z2w − y2   c   0 
  d   
  = 
 . .. .. .. .. .. .. ..  e   . 
 .. . . . . . . .  f   .. 
    
g
xn Xnw xn Ynw xn Znw xn − yn Xnw − yn Ynw − yn Znw − yn h 0

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 158 / 216
Calibração de câmeras
 x Xw x Yw x Zw x − y1 X1w − y1 Y1w − y1 Z1w − y1
 a   0 
1 1 1 1 1 1 1
  b   
 x2 X2w x2 Y2w x2 Z2w x2 − y2 X2w − y2 Y2w − y2 Z2w − y2   c   0 
  d   
  = 
 . .. .. .. .. .. .. ..  e   . 
 .. . . . . . . .  f   .. 
    
g
xn Xnw xn Ynw xn Znw xn − yn Xnw − yn Ynw − yn Znw − yn h 0

O sistema será escrito como Av = 0, onde o vetor de incógnitas

v = (a, b, c, d, e, f, g, h)

será usado para se obter os parâmetros extrínsecos e intrínsecos.

A matriz A tem posto 7. Então, se n ≥ 7, o sistema homogêneo Av = 0 tem solução não trivial.

Fazendo a decomposição em valores singulares, A = UDVt , teremos que v será o autovetor de V


associado ao menor do autovalores de A.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 159 / 216
Calibração de câmeras
 x Xw x Yw x Zw x − y1 X1w − y1 Y1w − y1 Z1w − y1
 a   0 
1 1 1 1 1 1 1
  b   
 x2 X2w x2 Y2w x2 Z2w x2 − y2 X2w − y2 Y2w − y2 Z2w − y2   c   0 
  d   
  = 
 . .. .. .. .. .. .. ..  e   . 
 .. . . . . . . .  f   .. 
    
g
xn Xnw xn Ynw xn Znw xn − yn Xnw − yn Ynw − yn Znw − yn h 0

Para construir o sistema Av = 0, acima, a partir de n pares de pontos {(Xiw , Yiw , Ziw ), i = 1..n} e
{(xi , yi ), i = 1..n}, é importante observar:

O número de pontos deve ser n ≥ 7;


Devido a ruído na aquisição dos pontos, A pode não ter autovalor nulo;
O menor autovalor deve ser considerado na solução;
O vetor v solução existe a menos de um fator de escala γ.

Então obtemos uma solução v = γv = γ(r21 , r22 , r23 , Ty , αr11 , αr12 , αr13 , αTx )

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 160 / 216
Calibração de câmeras
De v = (γr21 , γr22 , γr23 , γTy , γαr11 , γαr12 , γαr13 , γαTx ), temos

2 + r 2 + r 2 = 1, temos que
Sabendo que r21 22 23
� �
v 21 + v 22 + v 23 = 2 + r 2 + r 2 ) = |γ|
γ 2 (r21 22 23

2 + r 2 + r 2 = 1, então
Da mesma forma, r11 12 13
� �
v 25 + v 26 + v 27 = 2 + r 2 + r 2 ) = |γ|α
γ 2 α2 (r11 12 13

Então, temos
� 1 � 1
(r21 , r22 , r23 ) = γ
(v 1 , v 2 , v 3 ) Tx = v
γ 4
e
1 1
(r11 , r12 , r13 ) = (v , v 6 , v 7 )
γα 5
Ty = v
αγ 8

� �
r11 r12 r13
De (r31 , r32 , r32 ) = (r11 , r12 , r13 )∧ (r21 , r22 , r23 ), temos R = r21 r22 r23
r31 r32 r33

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 161 / 216
Calibração de câmeras

� �
r11 r12 r13
Devido a possível ruído, R = r21 r22 r23 obtido pode não ser ortonormal.
r31 r32 r33

Para garantir a ortonormalidade, fazemos a decomposição em valores singulares R = UDV t , e


substituindo D pela identidade I, reconstruímos R = UIV t .

Como conhecemos |γ|, não sabemos o sinal de γ. Pra isso, observemos que x na
imagem e X c deve ter sinal contrário, ou seja x.X c < 0

Então, se x.X c = x.(r11 X w + r12 Y w + r13 Z w + Tx ) > 0, deve-se trocar os sinais de (Tx , Ty )
e das linhas R1 e R2 de R.

Falta conhecer Tz e fx para que a calibração esteja concluída!

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 162 / 216
Calibração de câmeras
Xic
Para obter Tz e fx , observamos que, de xi = −fx ⇒ xi Zic = −fx Xic , obtemos para todo
Zic
i = 1 . . . n, que

xi (r31 Xiw + r32 Yiw + r33 Ziw + Tz ) = −fx (r11 Xiw + r 12Yiw + r13 Ziw + Tx )

xi Tz + fx (r11 Xiw + r 12Yiw + r13 Ziw + Tx ) = −xi r31 Xiw − xi r32 Yiw − xi r33 Ziw


mi = r11 Xiw + r 12Yiw + r13 Ziw + Tx
Chamando
pi = −xi r31 Xiw − xi r32 Yiw − xi r33 Ziw

 x T +f m =p  x m   p 
 1 z x 1 1 1 1 � � 1
 x2 Tz + fx m2 = p2 x2 m2  Tz p2 
temos o sistema
 
= . 
.. .. .. ⇒  .
. ..  .

 . . . . . fx .
xn Tz + fx mn = pn xn mn pn

A solução desse sistema, por mínimos quadrados, leva aos valores de Tz e fx .

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 163 / 216
Calibração de câmeras

fx fx
Finalmente, de α = , temos fy = .
fy α
Com o centro da imagem (ox , oy ) conhecidos, temos todas as informações
para recuperar Mext e Mint
   
r11 r12 r13 −R1T T
−f
sx 0 ox
 
Mext =  r21 r22 r23 −R2T T  e Mint =  0 −f
sy o y .
r31 r32 r33 −R3T T 0 0 1

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 164 / 216
Visão estéreo
Usando duas ou mais câmeras de perspectiva, pode-se obter imagens da mesma
cena de diferentes pontos de vista.

A visão estéreo é o processo de inferir informação tridimensional e profundidade em


uma cena a partir de duas ou mais imagens.

A experiência humana de percepção de distâncias e profundidade é o exemplo mais


imediato de visão estéreo. Cada olho captura uma imagem distinta e, a sobreposição
de pontos correspondentes nessas imagens é processada no cérebro.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 165 / 216
Visão estéreo

O deslocamento necessário para sobrepor pontos correspondentes será


inversamente proporcional à profundidade do ponto.
T T − (xE − xD ) T T −d T
= ⇒ = ⇒ Z = f.
Z Z −f Z Z −f d
Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 166 / 216
Visão estéreo

O deslocamento d entre pontos correspondentes é chamado disparidade.

A relação das disparidades para todos os pontos da imagem é chamado


mapa de disparidade.

Enquanto que, para o cérebro humano, parece relativamente simples


processar as duas imagens e inferir o mapa de disparidade, do ponto de
vista computacional é um trabalho complexo.

O problema de reconstrução 3D tenta obter um modelo tridimensional da


cena a partir do mapa de disparidades e conhecimento da geometria do
sistema.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 167 / 216
Visão estéreo
Do ponto de vista computacional, a visão estéreo deve resolver dois problemas:
Correspondência: A que ponto, visto pela câmera da esquerda, corresponde cada ponto
visto pela câmera da direita?

Reconstrução: Dado um conjunto de pontos correspondentes, como obter a estrutura


tridimensional da cena?

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 168 / 216
Visão estéreo
O problema de Correspondência:

Ao buscar correspondência, deve-se estabelecer que tipo de elementos


buscar.

Pode-se buscar por pixels correspondentes, mas haveria muita redundância.

Pode-se buscar por elementos conhecidos nas imagens, mas isso requer
conhecimento prévio.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 169 / 216
Visão estéreo
A estratégia mais conveniente para correspondência é definir janelas de
busca de tamanho N × N pixels.

Essa estratégia, chamada correlação, usa uma janela de tamanho fixo na


imagem da esquerda e busca pela janela da direita que maximiza algum
critério de similaridade.
Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 170 / 216
Visão estéreo
Idealmente, a busca não deve percorrer toda a imagem da direita, mas se
restringir a uma linha nessa imagem.

Essa restrição é possível usando a chamada restrição epipolar, que


veremos em seguida.

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 171 / 216
Visão estéreo

Dadas uma janela esquerda L e uma janela direita R para serem comparadas, alguma métrica
deve ser adotada:

d(L, R) = |li − ri |
d(L, R) = max |li − ri |

d(L, R) = (li − ri )2

d(L, R) = − li .ri

Entre os possíveis correspondentes da direita, será escolhido aquele que minimiza o valor de
d(L, R).

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 172 / 216
Visão estéreo

Dadas imagens E e D, o algoritmo básico para computar disparidades tem os passos:

Para cada pixel E(i,j)


� Define uma janela L
� Para cada pixel D(i,k)
� Define uma janela R
� Calcula d(L,R)
� Obtem k que minimize d(L,R)
� Faça Disp(i, j) = |j − k |

Retorna Disp

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 173 / 216
Visão estéreo
Um código Matlab simples para cálculo da disparidade.

» Disp=disparidade(’left.png’,’right.png’,3);
Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 174 / 216
Visão estéreo

» Disp=disparidade(’left.png’,’right.png’,3);

Professor: Antônio Wilson Vieira VISÃO COMPUTACIONAL - Unimontes Março, 2019 175 / 216

Potrebbero piacerti anche