REALIDADE AUMENTADA


Flavia Medeiros dos Anjos



Abaixáveis:
. Executável
. Fonte
. Exemplo de Entrada (ken vista 2)
. Exemplo de Saída Completa(ken vista 2)
--
. Fotos (as fotos devem ser renomeadas conforme o exemplo disponível acima)
. Nuvens de Pontos


O objetivo deste trabalho é criar um scanner 3D a partir de máquinas fotográficas digitais e um projetor de slides. A técnica utilizada é conhecida como Luz Estruturada e consiste em  projetar um padrão de cores sobre o objeto a ser reconstruido para resolver o problema de correspondência existente na reconstrução 3D a partir de fotos.

O processo é feito da seguinte forma:
1) Calibração.
2) Fotos.
3) Determinar as transições.
4) Reconstrução da nuvem de pontos.


1) Calibração

Um projetor e duas máquinas fotograficas são montados apontando para o objeto. Com o projetor desligado várias fotos de um padrão 2-D conhecido são batidas.
Fazendo-se uma correlação do pixels na imagem com as coordenadas dos vertices do modelo podemos obter a posição e transformações da câmera com os méodos de TSAI ou SZANG.

Apartir deste momento não se mexe mais nas câmeras ou no projetor.

Correlação:
 

coordenada no modelo -120
 -80
-120
80
-120
-80
120
-80
-40
-80
-40
-20
-40
-20
120
-20
40
-80
40
-20
-120
80
120
80
120
-20
120
80
pixel na imagem esquerda 1213
 443
1054
1560
1276
402
2938
650
1814
509
1761
889
1808
945
2876
1103
2403
601
2343
1000
1102
1614
2760
1834
2914
1152
2815
1787
pixel na imgem direita 631
502
648
1356
664
462
1784
488
996
494
999
795
1031
837
1785
887
1389
504
1391
837
682
1395
1768
1525
1816
915
1812
1485

 


2) Fotos.
O objeto é fotografado quatro vezes por duas câmeras cada vez. Para cada par de fotos o objeto recebe uma projeção de um padrão de cores.

Os padrões podem ser escolhidos dentre um dos esquemas abaixo:

Estes esquemas são montados de forma que a identificação da transição é única. Uma transição qualquer que vá da cor c1_esq para c1_dir na imagem p1 e de c2_esq e c2_dir na imagem p2 só ocorre uma vez para qualquer combinação de c1_esq, c1_dir, c2_esq e c2_dir.
As imagens n1 e n2 são as inversas das imagens p1 e p2 respectivamente, elas são utilizadas apenas para facilitar a identificação das cores projetadas na imagem final.

Exemplo:

  


3) Detectando as transições

Para detectar as transição passamos por 4 passos:

a) Discretização

Precisamos identificar, em cada pixel, qual foi a cor projetada com o padrão positivo. O processo é uma vez para cada para negativo/positivo  (n1/p1 ou n2/p2).
Tiramos a diferença entre a imagem positiva e a negativa, depois marcamos os pixels com 0, 128 ou 255 para os casos em q a diferença é menor, igual ou maior que zero respectivamente.

 

b) Validação

O segundo passo é chamado de validação das cores. Para um pixel manter sua cor após a discretixação esta precisa pertencer ao conjunto de cores do esquema em questão e, também, o pixel precisa pertencer a uma sequencia de pelo menos n pixels consecutivos com a mesma cor. Onde n é previamente estipulado e representa o tamanho mínimo que uma faixa deve ter para ser aceita.

c) Identificação dos candidatos

Ainda antes de acharmos as transições cada imagem validada é processada de modo a gerar canditatos a transição. Neste processo cada par de pixels consecutivos cujas cores sejam diferentes e válidas gera um candidato na posição do primeiro pixel.
Também cada sequencia de pixels de cor inválida (cinza), que tenha tamanho inferior a um limite estipulado (tamanho máximo de trransicao) tem o pixel do meio marcado como um candidato a transicao.
 


d) Identificação das transições

Percorrendo as duas imagens de canditados simultaneamente indentifica-se uma transição sempre que existe dois candidatos próximos. O limite de proximidade é definido como uma distancia máxima em pixels.
As primeiras cores válidas encontradas antes e depois de cada candidato são passadas para o decodificador que retorna o índice da transição. Essas transições, são guardadas em um conjunto de listas. Cada valor de transição possui uma lista com as coordenadas de todos os pixels que possuem tal transição. No caso dos códigos 3-2 e 4-2, que tem poucas transições, podemos visualizar as transições gerando uma imagem que tem acesso, apenas os pixels das transições, a tonalidade do canal azul indica o índice das transições.


4) Reconstrução (Nuvem de Pontos)

Para reconstruir o modelo percorre-se uma das tabelas (esquerda ou direita). Para cada pixel marcado na tabela obtem-se a equação da reta epipolar na outra imagem imagem. Como a outra tabela está organizada por transições percorre-se a transição correspondente calculando para cada pixel a distancia desta à reta. o pixel mais próximo a reta é escolhido. Caso a distância do pixel escolohido à reta seja inferior a uma distância máxima estipulada então ele é aceito e usado para a trangulação é feita com ele.
No processo de Triangulação utilizamos as informações da câmera para calcular a reta 3D que se projeta no pixel em questão. Fazendo isso para as duas imagens o ponto 3D é o ponto de encontro das duas retas. Como existem várias imprecisões de medida é comum que as retas não se interseptem. Neste caso calculamos a menor distância entre as duas retas e tiramos o ponto médio.
Tanto para a reta epipolar quanto para a triangulação é preciso ter as informações de posição das câmeras obtidas na calibração.