Carlos Oliveira
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 Processamento frame a frame, realizando a calibração de câmera utilizando o Método de Tsai Utilizar as matrizes calculadas pelo algoritmo para configurar a API do OpenGL Realizar a inserção de animações virtuais na cena real considerando efeitos como a oclusão Output da imagem final processada contendo o background capturado e os objetos virtuais inseridos
Método de Tsai (compativel com notação do OpenGL) X c Y c Z c p’ y' x'
Câmera para imagem
Concatenando
Os passos do Método de Tsai Passo 1:conhecidos Distorção radial insignificante Assuma
Método de Tsai
Correspondência
Sistema Ax=0 Compute v by SVD decomposition of A=UDV T (The solution vector is the column of V corresponding to null (or smallest) singular value) in D.
Estimativa dos parâmetros da câmera Fator de escala
Sinal do fator de escala Sinal de Como: Temos Caso isto não seja verdade troque o sinal de v
Estimativa do fator
Última linha da matriz de rotação Reortogonalize:
Cáculo de f x f y e T z
Ponto de fuga
Cálculo do centro ótico pelos pontos de fuga
Passo 2 do Tsai Computing Image Center v1v1v1v1 v2v2v2v2 v3v3v3v3
Pontos de fuga do padrão 3D
Tsai 2D
Método de Tsai plano =0
Método de Tsai plano
Método de Tsai
Sinal de Logo Caso isto não seja verdade troque o sinal de escolha um sinal
Fator de escala escolha um sinal corrija a escolha
Cáculo de f x f y e T z
Implementação Foi utilizada a biblioteca OpenCV Utilizamos também a implementação do método de Tsai 2D disponível na página do curso Utilizamos a biblioteca de interface da Microsoft, MFC Foi implementada a integração do OpenGL com MFC utilizando a extensão WGL do OpenGL Implementamos 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 TsaiCalibrate Neste método a função cvFindChessboardCorners é utilizada para calcular os cantos do tabuleiro Após isso a função cvFindCornerSubPix é utilizada para refinar a posição dos pontos encontrados Em 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
Melhoramentos Melhorar 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