11/09/07 visão computacional e realidade aumentada césar palomo – cpalomo @ inf. puc-rio. br 1...
TRANSCRIPT
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
1
Visão Computacional e Realidade AumentadaProf Marcelo Gattass
2007-s02
Trabalho 2 – Calibração de câmera e adição de objetos
virtuais a cena realCésar Palomo
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
2
Objetivos
Calibração de câmera A partir de vídeo de um tabuleiro de xadrez Parâmetros intrínsecos e extrínsecos obtidos
Adição de marcadores e objetos virtuais Matrizes Projection e ModelView do OpenGL
obtidas através da calibração da câmera Adição de objetos virtuais via OpenGL
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
3
Calibração – Identificação de cantos Feita por modelo 2D de um tabuleiro de xadrez Identificação de cantos internos do tabuleiro
uso do OpenCV: cvFindChessboardCorners() Exemplo de cantos encontrados e desenhados
pelo OpenCV:
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
4
Calibração – Parâmetros da câmera Extrínsecos ou externos
Localização e orientação da câmera Intrínsecos ou internos Calibração: estimativa destes parâmetros Notação:
Z
Yfy
Z
Xfx ,
xc
yc
zcp’
Z
Y
X
P
y'
x'
Z
Yfy
Z
Xfx ,
'
'
y
xp
ZYZ
Xf
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
5
Calibração – Parâmetros instrínsecos - 1
Eixo óptico: pode não coincidir com centro óptico da câmera
xim
yim
x’
y’
01 3 4
1
2
0
3
2
sx
sy
p'
ooy
ox5
ximx
oxs
x
'yim
y
oys
y
'
)(
)(
yimy
ximx
oys
oxs
y
xp
Simplificação do método usado: assume que eixo óptico passa pelo centro óptico da câmera
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
6
Calibração – Parâmetros instrínsecos - 2
Distância focal f:
Z
Y
X
osf
osf
w
y
x
yy
xx
h
h
100
0
0
wyw
x
y
x
h
h
im
im
)(
)(
yimy
ximx
oys
oxs
y
xp
ZYZ
Xf
Assumindo sx = sy (pixel quadrado):
Z
Y
X
of
of
w
y
x
y
x
h
h
100
0
0
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
7
Calibração – Parâmetros instrínsecos - 3
Outras simplificações do método utilizado:
Ignora distorção radial
Ignora cisalhamento
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
8
Calibração – Parâmetros extrínsecos - 1
xcyc
zc
ywxw
zw
Pw
Pc t
Rotação e translação Inferidas pela relação entre
coordenadas do mundo e da câmera
w
w
w
cwcwcw
cwcwcw
cwcwcw
c
c
c
cw
Z
Y
X
Z
Y
X
kkkjki
jkjjji
ikijii
P
tPP wc
1w
w
w
z
y
x
cwcwcw
cwcwcw
cwcwcw
c
c
c
cZ
Y
X
t
t
t
Z
Y
X
kkkjki
jkjjji
ikijii
P
wc PtRP
c
c
c
yy
xx
h
h
Z
Y
X
of
of
w
y
x
100
0
0
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
9
Calibração – Parâmetros extrínsecos - 2
Translação –Tx, Ty, Tz (3 g.l.)
Rotação (3 g.l. - a priori)
333231
332221
131211
rrr
rrr
rrr
w
w
w
k
j
i
1
0
wwwwww
wwwwww
kkjjii
jkkiji
As restrições complicam ao minimar o erro na derivação dos parâmetros
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
10
Calibração – Tsai 2D - 1 Utilizou-se Tsai 2D para calibração Assume:
Centro óptico conhecido Distorção radial insignificante
yimiximi oyyoxx
zww
yww
yi
zww
xww
xi
TYrXr
TYrXrfy
TYrXr
TYrXrfx
ii
ii
ii
ii
3231
2221
3231
1211
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
11
Calibração – Tsai 2D - 2
x
yy
xy
x
s
s
f
s
s
f
f
f
Álgebra para simplificação:
yww
i
yz
ww
xww
i
xz
ww
TYrXry
fTYrXr
TYrXrx
fTYrXr
iiii
iiii
22213231
12113231
xwwxiy
wwyi TYrXrfyTYrXrfx iiii 12112221
Assumindo pixel quadrado:
1
xiw
iw
iyiw
iw
i TyrYyrXyTxrYxrXx iiii 12112221
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
12
Calibração – Tsai 2D - 3 Substituição de variáveis
0654321 vyvYyvXyvxvYxvXx iw
iw
iiw
iw
i iiii
xy TvTv
rvrv
rvrv
63
125222
114211
Resolve sistema usando SVD (Single Value Decomposition)
0v0Av
3
6
222
121
512
411
vT
vT
vr
vr
vr
vr
y
x
?
?
23
13
r
r
Por estarmosno 2D
...
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
13
Calibração – Implementação Utilizou-se Tsai 2D com base nas bibliotecas do “Juiz Virtual”
criadas na Tese de Doutorado de Flávio Szenberg [1]: tsaiCalibration2D() e tsaiCalibration2D_Tr()
Coordenadas do mundo Tabuleiro conhecido: assumiu-se que casas são
quadradas
Coordenadas da câmera (ou do olho) Cantos identificados através do OpenCV, como
anteriormente descrito
Assumiu-se: Centro óptico conhecido: centro da tela (WIDTH / 2,
HEIGHT / 2)
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
14
Matrizes OpenGL – 1 Matriz de projeção perspectiva do OpenGL:
0100
2)(00
02
0
002
nf
fn
nf
nfbt
bt
bt
nlr
lr
lr
n
P
Transformando para o Viewport:
xn
yn
zn
111
-1-1-1
2
10
nw
xwxx
2
10
nw
yhyy
2
1max
nw
zzz
xw
yw
w
h
0
y0
x0
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
15
Matrizes OpenGL – 2 Obtemos então:
1000
100
010
001
1000
0
0
0
0100
2)(00
02
0
002
100022
00
20
20
200
2
maxmaxz
y
x
exexex
eyeyex
ezeyex
eye
eye
eye
zzz
yyy
xxx
nf
fn
nf
nfbt
bt
bt
nlr
lr
lr
n
zz
hh
ww
cM tPRPtRP wwcwc
1w
w
w
z
y
x
cwcwcw
cwcwcw
cwcwcw
Z
Y
X
t
t
t
kkkjki
jkjjji
ikijii
100
0
0
yy
xx
osf
osf
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
16
Matrizes OpenGL – 3 Utilizando os valores de nearplane, farplane e distância
focal:
0100
*2)(00
02
0
02
0
0100
*2)(00
02
0
02
0
0100
*2)(00
002
0
0002
100022
00
20
20
200
2
maxmax
nfar
nfar
nfar
nfar
h
s
f
w
s
f
nfar
nfar
nfar
nfar
h
s
f
w
s
f
nfar
nfar
nfar
nfarhs
fws
f
zz
hh
ww
y
x
y
x
y
x
Uso das funções das bibliotecas de Flávio Szenberg[1]: tsaiOGLProjectionMatrix() e tsaiOGLModelViewMatrix()
Matriz ModelView obtida a partir de R e T da calibração:
1000
]2[]8[]7[]6[
]1[]5[]4[]3[
]0[]2[]1[]0[
TRRR
TRRR
TRRR
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
17
Adição de marcadores e objetos virtuais
Carregamento das matrizes do OpenGL glLoadMatrixf()
Adição de marcadores e objetos virtuais Marcadores para os cantos do tabuleiro Eixos x em vermelho, y em verde e z em azul Objetos virtuais em cima do tabuleiro
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
18
Implementação C++ OpenGL e GLUT OpenCV Bibliotecas de Flávio Szenberg para Tsai2D
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
19
Trabalhos futuros Melhoria da iluminação para integrar melhor objetos
virtuais à cena Melhoria na performance
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
20
Referências [1] Szenberg, Flávio “Acompanhamento de cenas com calibração
automática de câmeras”, http://www.tecgraf.puc-rio.br/~szenberg/doutorado/
Enunciado do trabalho: http://www.tecgraf.puc-rio.br/~mgattass/ra/t1Calibra.html
OpenCV: http://www.cs.iit.edu/%7Eagam/cs512/lect-notes/opencv-intro/opencv-intro.html
Slides da disciplina: http://www.tecgraf.puc-rio.br/~mgattass/ra/ppt/
11/09/07 Visão Computacional e Realidade AumentadaCésar Palomo – cpalomo @ inf . puc-rio . br
21
?César Palomo
cpalomo @ inf . puc-rio . br
Perguntas