Pipeline de Reconstrução 3D

Visão Geral

Este trabalho apresenta um novo pipeline de reconstrução 3D, desenvolvido para a preservação digital de patrimônios naturais e culturais [Vrubel et al. 2009]. Esta aplicação requer resultados de alta qualidade, de forma que as restrições de tempo e espaço são menos importantes que a precisão alcançada. Além dos modelos 3D de alta precisão gerados, nosso trabalho permite uma visão geral do processo de reconstrução, que vai desde a aquisição de imagens de profundidade até a geração de texturas. O pipeline de reconstrução 3D é composto de vários passos, ilustrados na figura abaixo, e descritos nas seções seguintes.

3D Reconstruction Pipeline


Aquisição

A etapa inicial no processo de digitalização 3D de um objeto é o estudo de suas características, como por exemplo, forma e textura. Para gerar um modelo 3D é necessário obter imagens de diferentes vistas (regiões visíveis sob uma dada perspectiva) do objeto, de forma que todas as superfícies visíveis sejam registradas pelo sistema de aquisição de imagens. Nesta etapa de aquisição de imagens utilizam-se câmeras digitais e sensores de profundidade (scanners) que possibilitam a obtenção da informação 3D das superfícies visíveis dos objetos.

No processo de aquisição são obtidas diversas vistas do objeto, como mostra a figura abaixo. Durante a aquisição é importante manter uma área de sobreposição, para auxiliar o processo de alinhamento entre as vistas.

Vista de um objeto Vista de um objeto Vista de um objeto

As figuras abaixo mostram um exemplo do processo de aquisição de uma vista do objeto. O sistema é composto de um scanner de profundidade laser, acoplado a um tripé. O scanner está conectado a um computador que contém o software de controle do scanner. As imagens adquiridas são armazenadas e utilizadas no processo posterior de reconstrução 3D do objeto.

Exemplo do processo de aquisição de uma vista Exemplo do processo de aquisição de uma vista Exemplo do processo de aquisição de uma vista


O sistema de aquisição utilizado no IMAGO é um equipamento composto basicamente de um sensor laser e uma câmera CCD. O equipamento obtém a posição tridimensional de cada ponto amostrado na superfície do objeto através de um sistema de varredura, gerando imagens de profundidade (range images). No vídeo abaixo é possível assistir ao processo de varredura do objeto.


Registro

O objetivo neste estágio é encontrar uma matriz de transformação 4 X 4 para cada vista capturada, a fim de encontrar o alinhamento entre elas em um sistema de coordenadas em comum. No nosso pipeline, nós utilizamos um alinhamento ICP entre pares [Rusinkiewicz and Levoy 2001], seguido por uma etapa de registro global, onde é utilizado o algoritmo de Pulli [Pulli 1999]. Para cada par de vistas vizinhas com sobreposição suficiente, nós encontramos a matriz de transformação que alinha a segunda vista à primeira, utilizando uma versão modificada do algoritmo ICP, apresentado a seguir. Atualmente, as vistas são pré-alinhadas manualmente; no entanto, técnicas de alinhamento automático podem ser utilizadas para melhorar esta tarefa.

Nossa contribuição nesta fase é um novo algoritmo ICP de duas fases. Nós precisamos de um algoritmo com boas propriedades de convergência (para obter o alinhamento correto), e que possua máxima precisão. Para isso, a primeira fase utiliza uma variante do ICP que possui a métrica de erro baseada na distância ponto-a-plano, uma abordagem de ponto compatível mais próximo na geração de pares, amostragem conforme as direções dos vetores normais com seleção randômica de pontos em ambas as vistas, e rejeição dos pontos mais distantes. Essas características levam a uma excelente convergência, porém com precisão limitada.

Quando a primeira fase converge, é iniciada a segunda fase do algoritmo ICP. Nela, são utilizadas todos os pontos de ambas as vistas, adicionando uma distância máxima no teste de compatibilidade dos pares. Essa distância é relacionada ao erro do scanner, e geralmente é muito pequena (e.g. em torno de 0.7mm). Durante a minimização do erro, também é utilizada nesta fase a métrica de erro de ponto-a-plano. Essa versão do ICP tem convergência limitada, mas apresenta excelente precisão. Como a primeira fase alcançou um alinhamento quase ótimo, esta fase apenas melhora a precisão do resultado.


Integração das Malhas

Após o registro, nós temos várias malhas parciais sobrepostas, uma para cada vista capturada. O próximo estágio do pipeline de reconstrução deve integrá-las com o objetivo de construir uma única malha de triângulos para o objeto. Há várias abordagens para a integração de malhas, e neste trabalho, foi escolhida a volumétrica.

Nós desenvolvemos um novo algoritmo que combina elementos do VRIP [Curless and Levoy 1996] e da Superfície de Consenso [Wheeler et al. 1998]. Nosso algoritmo é baseado em duas fases. Na primeira, nós utilizamos uma versão modificada do VRIP, em conjunto com o método de space carving, para gerar a representação volumétrica inicial. Nossa modificação do VRIP consiste em uma nova curva de pesos, que dá valores mais altos para voxels que estão fora do objeto do que para voxels que estão dentro.

Isso atenua os artefatos que o VRIP gera em curvas e superfícies finas, ao custo de um pequeno erro no posicionamento das superfícies na primeira fase. Nosso método de space carving leva em consideração apenas dados sobre o objeto, e opcionalmente, sobre os planos de suporte detectados no estágio de aquisição, tendo como objetivo principal a eliminação de outliers. O resultado volumétrico desta fase funciona como uma base consensual para a segunda fase do algoritmo.

A segunda fase constrói a representação volumétrica definitiva, integrando apenas as medidas em consenso com o resultado obtido na primeira fase. O consenso é testado em cada voxel candidato, entre a normal no ponto mais próximo da superfície de cada vista e o gradiente do resultado volumétrico da primeira fase. O space carving efetuado na primeira fase é também utilizado na remoção de outliers, que aqui são dos dados incorretos na região externa ao objeto. Devemos observar que utilizamos distâncias sinalizadas baseadas na linha de visão na primeira fase (VRIP) para fins de performance, e distância euclidiana na segunda fase (Consenso) para precisão e correção durante o preenchimento de buracos, efetuado a seguir. O nosso algortimo elimina os artefatos gerados pelo VRIP próximos a quinas e superfícies finas, e gera bons resultados próximo a regiões oclusas.


Preenchimento de Buracos

O processo de aquisição geralmente é incompleto. Recessos profundos e oclusões não permitem a captura de algumas partes do objeto. Isso requer métodos para completar o dado capturado, e permitir a geração de modelos sem buracos, necessários em várias aplicações, como visualização pelo usuário e criação de réplicas.

No nosso pipeline foi escolhido o algoritmo de difusão criado por [Davis et al. 2002], pois ele consegue lidar satisfatoriamente com topologias complexas. Além disso, é uma técnica volumétrica que funciona bem com o nosso estágio de integração da malha. A idéia do algoritmo é difundir os valores em voxels observados em voxels sem informação, similar à operação de borramento 3D. Informações obtidas através do space carving, apesar de não necessárias, geralmente ajudam o algoritmo a produzir uma reconstrução mais confiável.


Geração da Malha

Nós utilizamos o algoritmo Marching Cubes [Lorensen and Cline 1987] para gerar a malha de triângulos a partir da representação volumétrica dos estágios anteriores. Nós utilizamos o método de desambiguação de Chernyaev [Lewiner et al. 2003] para garantir a geração de topologias manifold.

A única desvantagem desta abordagem é que ela gera triângulos muito finos (a.k.a. lascas) em algumas partes do modelo gerado. Uma técnica de simplificação de meshes, como [Hoppe 1999], pode eliminar esses triângulos, resultando em uma malha mais homogênea, e útil para os próximos estágios do pipeline.


Parametrização da Textura

A geração da malha conclui a parte geométrica do problema de reconstrução. No entanto, nós ainda precisamos calcular as propriedades da superfície (i.e. coloração e especularidade). Essas propriedades são usualmente representadas por texturas. Assim, nós devemos ser capazes de aplicar texturas ao modelo gerado.

Nós utilizamos uma abordagem simples de atlas de textura. Nela, o modelo é segmentado em regiões quase planares, iniciadas a partir de um triângulo semente, que crescem enquanto as normais das faces vizinhas estão dentro de um limiar (geralmente de 30 graus, para prevenir a geração de regiões muito pequenas) em relação à normal média da região. Cada região é então planificada; isso é feito através do cálculo do eixo principal dos vértices em questão [Wu 1992]. O eixo mais próximo da normal média da região é utilizado como a normal do plano, e os outros dois eixos definem as direções u e v no espaço de textura. O resultado é uma projeção 2D (em milímetros) de cada região. Depois que todas as regiões são planificadas, o atlas de textura é gerado, através do posicionamento de todas as regiões em um mesmo espaço de parametrização (ver figura abaixo). Como nós sabemos o tamanho de cada região em milímetros, é fácil definir o tamanho da imagem em pixels necessário para conseguir a resolução desejada em pixels por milímetro.

 

Exemplo de parametrização de textura Exemplo de parametrização de textura

Exemplo de uma textura gerada automaticamente para o objeto.


Cálculo das Propriedades da Superfície

Nossa implementação utiliza uma abordagem baseada na cor dos vértices, que gera cor e iluminação por vértice do modelo. Para gerar as cores dos vértices, nós calculamos uma soma ponderada das cores em todas as vistas que observam cada vértice. O peso adotado é o ângulo entre a linha de visão do scanner e a normal do vértice. Esse peso foi escolhido pois os dados observados em ângulo são menos confiáveis que os dados que estão de frente para o scanner. Apesar de simples, nosso método gera bons resultados.


Geração de Textura

A geração de texturas combina os resultados dos dois estágios anteriores do pipeline: a parametrização da textura e as propriedades da superfície. Nosso objetivo é representar as informações da superfície em uma ou mais imagens (i.e. texturas), que serão utilizadas na renderização do modelo reconstruído.

Como nós geramos a parametrização e a cor dos vértices, o método de geração de textura é simples. Nós renderizamos o modelo utilizando as coordenadas de textura (u; v; 0.0) como as coordenadas (x;y;z) dos vértices, e utilizando as cores dos vértices calculada. A placa de vídeo interpola a cor em cada face utilizando o método de sombreamento de Gouraud [Foley et al. 1996]. Nós utilizamos uma matriz de projeção ortogonal, e um render target do tamanho da textura desejada. A mesma técnica pode ser utilizada para gerar outras texturas, como o normal map (representando cada normal do vértice como uma tripla RGB), ou um mapa de especulares (representando a cor do especular de cada vértice e seu expoente como uma tupla RGBA).


Simplificação da Malha

Após a geração das texturas, um estágio opcional consiste em reduzir o número de triângulos no modelo, a fim de melhorar sua performance de renderização e custos de armazenamento, e ao mesmo tempo preservar sua qualidade e precisão. Quando se trata de preservação digital esse passo não é essencial, já que nós queremos resultados precisos. No entanto, o algoritmo Marching Cubes utilizado no trabalho pode gerar muito mais triângulos do que o necessário para representar o modelo com precisão, principalmente em regiões planares. Assim, um algoritmo de simplificação da malha pode melhorar a performance e manter uma alta precisão. Outro fato importante é que pode-se gerar um normal map para o modelo, ajudando assim a preservar sua precisão visual, mesmo com modelos de baixa poligonagem.

Há diferentes abordagens para a simplificação de malhas. A técnica desenvolvida por Garland and Heckbert [Garland and Heckbert 1997], melhorada por Hoppe [Hoppe 1996] é rápida, e gera resultados precisos em reduções moderadas do número de polígonos, que é o objetivo na preservação digital. A utilização de uma representação em malhas progressivas (progressive meshes) permite a geração de diferentes níveis de detalhe para cada objeto. Neste trabalho, optamos por efetuar a simplificação de malhas após a geração de textura pois assim é possível gerar normal maps de máxima qualidade, e as texturas podem guiar a simplificação da malha, minimizando assim a distorção da textura.


Resultados

Nosso pipeline foi utilizado na reconstrução de diversos objetos, desde obras de arte a fósseis de animais primitivos. Os objetos foram escolhidos a fim de testar os limites do pipeline, e possuem topologias complexas e materiais não cooperativos opticamente. Nossos resultados são exibidos no nosso Museu Virtual 3D.


Referências

• A. Vrubel, O. R. P. Bellon, L. Silva: A 3D Reconstruction Pipeline for Digital Preservation, To appear in Proc. IEEE Conference on Computer Vision and Pattern Recognition, 2009.

• S. Rusinkiewicz e M. Levoy. Efficient variants of the ICP algorithm. In Proc. 3DIM, páginas 145–152, 2001.

• K. Pulli. Multiview registration for large data sets. In Proc. 3DIM, páginas 160–168, 1999.

• B. Curless e M. Levoy. A volumetric method for building complex models from range images. In Proc. SIGGRAPH, páginas 303–312, 1996.

• M. D. Wheeler, Y. Sato, e K. Ikeuchi. Consensus surfaces for modeling 3D objects from multiple range images. In Proc. ICCV, páginas 917–924, 1998.

• J. Davis, S. R. Marschner, M. Garr, e M. Levoy. Filling holes in complex surfaces using volumetric diffusion. Proc. 3DPVT, páginas 428–438, 2002.

• W. E. Lorensen e H. E. Cline. Marching cubes: A high resolution 3D surface construction algorithm. In Proc. SIGGRAPH, páginas 163–169, 1987.

• T. Lewiner, H. Lopes, A.W. Vieira, e G. Tavares. Efficient implementation of marching cubes' cases with topological guarantees. Journal of Graphics Tools, 8(2):1–15, 2003.

• H. Hoppe. New quadric metric for simplifying meshes with appearance attributes. In Proc. IEEE Visualization, páginas 59–66, 1999.

• X. Wu. A linear-time simple bounding volume algorithm. Graphics Gems III, páginas 301–306, 1992.

• J. D. Foley, A. van Dam, S. K. Feiner, e J. F. Hughes. Computer Graphics (2nd ed. in C): Principles and Practice. Addison-Wesley Publishing, 1996.

• M. Garland e P. Heckbert. Simplification using quadric error metrics. In Proc. SIGGRAPH, volume 31, páginas 209–216, 1997.