Trabalho 3: Reconstrução de malhas a partir de
fotos estéreo de câmeras calibradas
O propósito deste trabalho é apresentar as
técnicas utilizadas para fazer a reconstrução tridimensional de objetos a
partir de imagens digitais, a serem utilizadas em experimentos relacionados com
Visão Computacional.
A reconstrução será feita através do uso de
projeção de luz estruturada sobre os objetos a serem reconstruídos e da tomada
de fotografias desses objetos com câmeras fotográficas de alta resolução. Para
isso foram utilizados um projetor duas câmeras digitais, de forma que se
pudesse realizar reconstruções com calibração apenas das câmeras.
Seu objetivo final é conseguir recuperar uma
informação de triângulos a partir do processamento de imagens de um objeto
conhecido. Este processo consiste em quatro etapas: aquisição das fotos,
calibração da câmera, processamento das imagens e geração da malha. A seguir,
cada item será analisado em detalhes.
1. Aquisição das Fotos
Para reconstruir o modelo por completo, é
necessário obter fotos de diferentes pontos de vista, a fim de recuperar-se
informação de toda a superfície do objeto. Além disso, é necessário obter fotos
de um padrão para cada nova posição da câmera, de modo que esta possa ser calibrada
na etapa seguinte.
As primeiras tentativas consistiram em obter
fotografias de um objeto real em um ambiente controlado. Estas são algumas das
fotos obtidas:

Infelizmente não foi possível obter boa qualidade
de imagem. As fotos apresentam elevado nível de ruído e algumas estão fora de
foco. Por conta disso, os processamentos seguintes foram seriamente
prejudicados. Por exemplo, a calibração de câmera era incapaz de identificar a
maioria dos pontos do padrão utilizado.
Portanto, utilizou-se a alternativa de analisar
um modelo sintético. Um modelo foi gerado na aplicação de modelagem 3DStudioMax
e foram renderizadas imagens artificiais em diferentes pontos de vista. A
vantagem é uma maior precisão na projeção do padrão de cores no modelo,
evitando ruídos e perda de qualidade da imagem. Estes são alguns exemplos:

2. Calibração da Câmera
No modelo real, tentou-se utilizar o processo
de calibração de câmera baseado no algoritmo de Zhang [3], implementado na
biblioteca OpenCV [1]. Contudo, este mostrou-se incapaz de detectar
corretamente a maioria dos pontos do padrão em xadrez utilizado. Tentou-se
utilizar o algoritmo de Tsai [2], mas apesar de um resultado melhor ainda não
foi o suficiente para obter uma calibração razoável.
Utilizando um modelo sintético, não se faz
necessário o processo de calibração de câmera. Isto porque sabe-se de antemão a
posição da câmera para cada ponto de vista gerado no software de renderização.
3. Processamento das Imagens
A terceira etapa do processo consiste em
extrair as informações necessárias de cada imagem do objeto. São necessários
três processamentos:
a. Identificar faixas do padrão
b. Classificar transições
c. Associar os dados dos padrões
Para o primeiro processamento, a estratégia
adotada foi elaborar um filtro que efetua uma redução no espaço de cores das
imagens para o espaço de cores utilizado pelo padrão escolhido:


Padrões de projeção (3,2)-BCSL
Após esta filtragem, as imagens resultantes são
as seguintes:


Estas imagens servem como dados de entrada para
a etapa de identificação de transições. Por causa da classificação efetuada, a
busca por transições consistem em um processamento simples em busca de valores
de cores diferentes em pixels vizinhos. Após esta etapa, identificam-se as
linhas de transição de faixas. Para isso, é necessário utilizar uma função que,
dado duas cores vizinhas positivas e negativas, é capaz de retornar um identificador
único para cada transição de faixas. Com isso, pode-se identificar sem
ambigüidades cada uma das faixas horizontais e verticas. O resultado é uma
imagem horizontal e uma vertical contendo nos valores dos pixels o id de
classificação, como ilustrado a seguir:


De posse destas duas imagens, é possível
efetuar uma referência cruzada de forma a associar a informação recuperada por
cada uma das câmeras com os padrões vertical e horizontal utilizados. Esta
etapa elimina todos os pontos do objeto que não possuem o mesmo identificador
em ambas as imagens classificadas. O resultado final é um conjunto de pontos no
espaço da imagem que representam amostras na superfície do objeto sendo
reconstruído.

Nuvem de pontos do modelo do cavalo, para um
dos pontos de vista utilizados.
4. Geração da malha
Dados os pontos resultantes do processo
anterior, pode-se reconstruir suas posições no espaço, caso se conheça os
parâmetros da câmera correspondentes. No caso do modelo sintético, os parâmetros
foram fornecidos juntamente com as imagens geradas. Para obter informação de
profundidade de um dado ponto, utiliza-se a informação em estéreo gerada a
partir das duas câmeras.
Foram disponibilizadas duas opções para efetuar
o processo de correspondência: geometria epipolar ou triangulação.

O objetivo é determinar o ponto P no espaço onde
dois raios se encontram. Este cálculo é feito através da obtenção de uma matriz
de transformação geral que leva do espaço da câmera para o espaço da imagem. A
matriz essencial contém os parâmetros extrínsicos da câmera, como posição e
rotação:

De posse desta, pode-se obter a matriz
fundamental que efetua a transformação desejada, para assim considerar os
parâmetros intrínsicos da câmera:


A outra opção para efetuar a correspondência
entre as duas imagens é através de um processo de triangulação, onde procura-se
determinar explicitamente a intereseção entre dois raios no espaço. Este foi o
método utilizado neste trabalho.

A solução do sistema linear acima resulta no cálculo
da interseção dos raios em questão. Dada uma certa tolerância, um ponto de
interseção P no espaço pode ser obtido ao final deste processo. Este ponto se
encontra na superfície do objeto.
Ao final deste processo, obtém-se uma nuvem de
pontos no espaço para cada ponto de vista. A etapa seguinte consiste em alinhar
estas nuvens de pontos de forma a recuperar os pontos verdadeiros do objeto e
eliminar informações repetidas. De posse da nuvem de pontos final, pode-se
efetuar um processo de triangulação para recuperar a malha do objeto. Por
questões de tempo, estas duas últimas etapas não puderam ser efetuadas neste
trabalho.
Um dos
algoritmos mais utilizados no processo de registro de superfícies é o ICP (Iterative
Closest Point), desenvolvido por [4]. Através de um processo iterativo, o
algoritmo original ICP cria pares
de pontos correspondentes nas 2 malhas, usando
como critério a proximidade dos pontos, e encontra uma transformação que
minimiza o erro de alinhamento entre as 2 malhas. Essa transformação pode ser
calculada minimizando-se a função de erro dada por:

onde N
é a quantidade de pares, e R e t representam a matriz de
rotação e o vetor de
translação.
A transformação encontrada é aplicada as pontos da malha mB e o processo
é repetido
até que as transformações encontradas sejam desprezíveis.
Porém,
devido a problemas de mínimo local, uma das exigências do ICP é que
as malhas
tenham uma estimativa inicial do alinhamento, e que apenas a região
de
sobreposição seja levada em conta. Isso descarta a possibilidade de alinhamento
automático usando apenas o ICP.
Um trabalho futuro é implementar a técnica de
ICP utilizando como entrada um alinhamento manual efetuado pelo usuário.
5. Resultados
O trabalho é capaz de recuperar uma nuvem de
pontos em 3D para cada ponto de vista gerado, conforme ilustram as figuras a
seguir:

0 graus 30
graus
Esta são imagens com todos os pontos adquiridos
para cada posição da câmera, de 0 graus até 150 graus.



Pontos vermelhos indicam falhas no cálculo de z
devido à tolerância na resolução do sistema linear. Pontos azuis indicam a
informação recuperada para um dos pontos de vista, identificado pelo usuário.
Referências
[1]- Manual do Opencv, visitado em 10/08/2007 http://www.cs.unc.edu/Research/stc/FAQs/OpenCV/OpenCVReferenceManual.pdf
[2] - Tsai, R. Y. (1987), ‘A versatile camera calibration technique for high-accuracy 3d machine vision metrology using off-the-shelf tv cameras and lenses’, Ieee Journal Of Robotics And Automation RA-3(4), 323–344.
[3] - Zhang, Z. (1998), A flexible new technique for camera calibration, Technical report, Microsoft Corporation.
[4] - Besl, P. J. & Mckay, N.
D. (1992), ‘A method for registration of 3-d shapes’, IEEE
Transactions on Pattern Analysis and Machine Intelligence 14(2), 239–256.