Upload
internet
View
106
Download
2
Embed Size (px)
Citation preview
Carlos [email protected]
SumárioDescrição e ObjetivoO Método de TsaiImplementaçãoResultados obtidosMelhoramentos
Descrição e ObjetivoCaptura de video stream a partir de uma webcam
ou leitura de um arquivo AVIProcessamento frame a frame, realizando a
calibração de câmera utilizando o Método de TsaiUtilizar as matrizes calculadas pelo algoritmo
para configurar a API do OpenGLRealizar a inserção de animações virtuais na cena
real considerando efeitos como a oclusãoOutput da imagem final processada contendo o
background capturado e os objetos virtuais inseridos
X c
Y c
Z c p’
c
c
c
c
Z
Y
X
P
'
'
y
xp
c
c
c
c
ZY
ZX
f
y'
x'
c
c
yyim
c
c
xxim
Z
Y
s
foy
Z
X
s
fox
)(
)(
yimy
ximx
oys
oxs
y
xp
c
c
c
c
ZY
ZX
f
c
c
yyim
c
c
xxim
Z
Y
s
foy
Z
X
s
fox
zwww
ywww
yyim
zwww
xwww
xxim
TZrYrXr
TZrYrXrfoy
TZrYrXr
TZrYrXrfox
333231
232221
333231
131211
cameraz
y
x
w
w
w
c
c
c
T
T
T
Z
Y
X
rrr
rrr
rrr
Z
Y
X
333231
332221
131211
Passo 1: ),( xx oo conhecidos
Distorção radial insignificante
Assuma
zwww
ywww
yi
zwww
xwww
xi
TZrYrXr
TZrYrXrfy
TZrYrXr
TZrYrXrfx
iii
iii
iii
iii
333231
232221
333231
131211
yimiximi oyyoxx
zwww
ywww
yi
zwww
xwww
xi
TZrYrXr
TZrYrXrfy
TZrYrXr
TZrYrXrfx
iii
iii
iii
iii
333231
232221
333231
131211
ywww
i
yz
www
xwww
i
xz
www
TZrYrXry
fTZrYrXr
TZrYrXrx
fTZrYrXr
iiiiii
iiiiii
232221333231
131211333231
ywww
i
yz
www
xwww
i
xz
www
TZrYrXry
fTZrYrXr
TZrYrXrx
fTZrYrXr
iiiiii
iiiiii
232221333231
131211333231
xwww
xiywww
yi TZrYrXrfyTZrYrXrfx iiiiii 131211232221
xiw
iw
iw
iyiw
iw
iw
i TyrZyrYyrXyTxrZxrYxrXx iiiiii 131211232221
x
yy
xy
x
s
s
f
s
s
f
f
f
xiw
iw
iw
iyiw
iw
iw
i TyrZyrYyrXyTxrZxrYxrXx iiiiii 131211232221
87654321 vyvZyvYyvXyvxvZxvYxvXx iw
iw
iw
iiw
iw
iw
i iiiiii
087654321 vyvZyvYyvXyvxvZxvYxvXx iw
iw
iw
iiw
iw
iw
i iiiiii
xy TvTv
rvrv
rvrv
rvrv
84
137233
126222
115211
11, yx
22 , yx
33 , yx
NN yx ,
www ZYX111
,,
www ZYX222
,,
www ZYX333
,,
www
NNNZYX ,,
0
0
0
0
0
0
0
0
8
7
6
5
4
3
2
1
2222222222222
111111111111
2
1
v
v
v
v
v
v
v
v
yZyYyXyxZxYxXx
yZyYyXyxZxYxXx
yZyYyXyxZxYxXx
NwNN
wNN
wNNN
wNN
wNN
wNN
wwwwww
wwwwwwi
0Av 7)( Arank
Compute v by SVD decomposition of A=UDVT (The solution vector is the column of V corresponding to null (or smallest) singular value) in D.
Fator de escala
Txy TrrrTrrrγv
trivialnãosolução umav
131211232221
, Seja
2
232
222
2122
322
21
223
222
221 ,1 Como
rrrvvv
rrr
Sinal de
0131211 xww
iw
i TZrYrXrx ii
zwww
xwww
xi TZrYrXr
TZrYrXrfx
iii
iii
333231
131211
0333231 zwwwc
i TZrYrXrZ iiiComo:
Temos
Caso isto não seja verdade troque o sinal de v
2
232
222
21222
726
25
223
222
221 have we,1 Since
rrrvvv
rrr
27
26
25
1vvv
332221
131211
23
22
21
13
12
11
33
32
31
det
rrr
rrr
r
r
r
r
r
r
r
r
r kji
333231
332221
131211
rrr
rrr
rrr
Reortogonalize:
TT UIVRUDVR
wwwii iii
ZYXyx ,, and ,pair ingcorrespondeach For
bf
TA
x
Z
Solve
xwww
xzwww
i TZrYrXrfTZrYrXrx iiiiii 131211333231
wwwixx
wwwzi iiiiii ZrYrXrxfTZrYrXrTx 333231131211
xwN
wN
wNN
xwww
xwww
TZrYrXrx
TZrYrXrx
TZrYrXrx
131211
2132122112
1131121111
A
wN
wN
wNN
www
www
ZrYrXrx
ZrYrXrx
ZrYrXrx
333231
2332322312
1331321311
b
bAx bxUDV T bUVDx T1
bAx bAAxA TT bAAAx TT 1
Computing Image Center yx oo ,
vv11vv22
vv33
0wiZ
zwww
ywww
yi
zwww
xwww
xi
TZrYrXr
TZrYrXrfy
TZrYrXr
TZrYrXrfx
iii
iii
iii
iii
333231
232221
333231
131211
zww
yww
yi
zww
xww
xi
TYrXr
TYrXrfy
TYrXr
TYrXrfx
ii
ii
ii
ii
3231
2221
3231
1211
=0
yww
i
yz
ww
xww
i
xz
ww
TYrXry
fTYrXr
TYrXrx
fTYrXr
iiii
iiii
22213231
12113231
xww
xiyww
yi TYrXrfyTYrXrfx iiii 12112221
xiw
iw
iyiw
iw
i TyrYyrXyTxrYxrXx iiii 12112221
xiw
iw
iyiw
iw
i TyrYyrXyTxrYxrXx iiii 12112221
1
0654321 vyvYyvXyvxvYxvXx iw
iw
iiw
iw
i iiii
xy TvTv
rvrv
rvrv
63
125222
114211
0v0Av
3
6
222
121
512
411
vT
vT
vr
vr
vr
vr
y
x
?
?
23
13
r
r
Tc rrr 131211ˆ i
Tc rrr 232221ˆ j
3
6
222
121
512
411
vT
vT
vr
vr
vr
vr
y
x
051422
54214 vvvvvvvv
023132
2514
223
222
21
213
225
24
rrvvvv
rvv
rvv
5142
254215421
2 42
1vvvvvvvvvvvv
01211 xw
iw
i TYrXrx i
zww
xww
xi TYrXr
TYrXrfx
ii
ii
3231
1211
0ciZ
Logo
Caso isto não seja verdade troque o sinal de
2
3
6
222
121
512
411
vT
vT
vr
vr
vr
vr
y
x
escolha um sinal
3
6
222
121
512
411
vT
vT
vr
vr
vr
vr
y
x
212
21113 1 rrr
222
22123 1 rrr
221221112313 rrrrrr
escolha um sinal
escolha um sinal
corrija a escolha
23
22
21
13
12
11
33
32
31
r
r
r
r
r
r
r
r
r
?
?
?
?
23
13
zT
f
r
r
wwwii iii
ZYXyx ,, and ,pair ingcorrespondeach For
bf
TA
x
Z
Solve
xww
xzww
i TYrXrfTYrXrx iiii 12113231
wwixx
wwzi iiii YrXrxfTYrXrTx 32311211
ImplementaçãoFoi utilizada a biblioteca OpenCVUtilizamos também a implementação do método de
Tsai 2D disponível na página do cursoUtilizamos a biblioteca de interface da Microsoft,
MFCFoi implementada a integração do OpenGL com
MFC utilizando a extensão WGL do OpenGLImplementamos uma classe chamada ObjLoader
que tem a finalidade de fazer a carga de modelos .obj exportados pelo 3ds Max
Implementação (cont.)A aplicação tem flags na Interface para
indicar se o modelo a ser carregado é um dos modelos Agros/Orthos fornecidos no trabalho ou outro modelo pré-definido pelo programador e se possuem objeto ou não (a animação se comporta de maneira diferente em cada caso, já que os tabuleiros são diferentes) – links para os AVI na página
A cada frame capturado este é primeiramente convertido para grayscale
Implementação (cont.)Após isso essa imagem em tons de cinza é passada
para o método TsaiCalibrateNeste método a função cvFindChessboardCorners
é utilizada para calcular os cantos do tabuleiroApós isso a função cvFindCornerSubPix é utilizada
para refinar a posição dos pontos encontradosEm seguida são feitas várias chamadas e cálculos
aos métodos definidos no método de Tsai da página
Ao final da calibração as matrizes de modelview e projection são obtidas também pelo método
Implementação (cont.)Enquanto isso, numa outra thread, o OpenGL
fica processando a animação e, a cada frame do OpenGL processado, ele consulta a classe de calibração para obter as novas matrizes de modelview e projection calculadas
As matrizes são carregadas para o OpenGL, o modelo é desenhado somente no Z-buffer (para tratar oclusão) e a animação (os dois carrinhos) são desenhados utilizando o modelo carregado pela classe ObjLoader
Resultados Obtidos
MelhoramentosMelhorar as variações do processo de
inserção dos gráficos utilizando filtros de Kalman
Implementar a detecção automática de novos objetos inseridos na cena dinamicamente
Utilizar processos de segmentação para descobrir o modelo ao invés de utilizar um modelo fixo