inserção de imagens virtuais em cenas reais

36
Carlos Oliveira [email protected]

Upload: reed-dale

Post on 30-Dec-2015

24 views

Category:

Documents


0 download

DESCRIPTION

Inserção de Imagens Virtuais em Cenas Reais. Carlos Oliveira [email protected]. Sumário. Descrição e Objetivo O Método de Tsai Implementação Resultados obtidos Melhoramentos. Descrição e Objetivo. Captura de video stream a partir de uma webcam ou leitura de um arquivo AVI - PowerPoint PPT Presentation

TRANSCRIPT

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