Sistemas Gráficos 3D

Visualização de erros em um framework para registro e reconstrução de superfícies

Thales Vieira


Código fonte
Executável
Apresentação de 03/07/2007

Resumo

Este trabalho apresenta uma aplicação voltada para a visualização de erros de alinhamento entre scans e reconstrução, na reconstrução, baseada em pontos, com estratificação. São apresentadas cinco medidas de erro envolvendo iterações de realinhamento entre scans e reconstrução. Essas medidas são atribuídas a pontos que não têm informação de conectividade associada, inviabilizando a visualização por triângulos. Além disso, regiões de sobreposição nos scans geram ambiguidades que são parcialmente resolvidas nesta aplicação através de operações de estratificação, numa tentativa de se criar reamostragens qualificadas para a visualização por pontos. Os erros são atribuídos a pontos da reconstrução, que tem suas cores associadas à magnitude do erro.

 

 

1 - Introdução

O problema de registro de superfícies consiste em determinar as transformações espaciais que otimizam os alinhamentos em um conjunto de malhas que representam um mesmo objeto.

A partir de uma nuvem de pontos desorganizada, é possível estimar uma malha que aproxime uma superfície que passa sobre esses pontos, ou bem próximos deles. Este procedimento chama-se reconstrução de superfícies. A nuvem de pontos desorganizada dada como entrada pode ser, por exemplo, os pontos de um conjunto de scans alinhados previamente.

Usando estes dois procedimentos, foi desenvolvida anteriormente uma aplicação para utilizar reconstruções como referências para realinhar os scans, minimizando o erro de alinhamento. A Figura 1 ilustra o framework. O algoritmo básico segue abaixo:

  1. Dado um conjunto de scans, obter automaticamente o alinhamento entre os scans com sobreposição.
  2. Reconstruir uma superfície a partir dos pontos dos scans alinhados.
  3. Enquanto o alinhamento não for suficientemente consistente com a reconstrução:
    1. Realinhe os scans com a reconstrução;
    2. Obtenha uma nova reconstrução com os pontos dos scans realinhados.



Figura 1: Framework básico.

2 - Objetivos

O objetivo deste projeto é desenvolver uma aplicação para visualizar erros de alinhamento, entre scans e reconstrução, na reconstrução, baseada em pontos, com estratificação. O uso de pontos se justifica porque os pontos selecionados para visualização não provêm necessariamente de uma malha de triângulos. Logo, não há informação de conectividade associada. A estratificação é uma maneira de se realizar reamostragem de pontos. Neste trabalho, essa reamostragem tem o objetivo de eliminar pontos redundantes para visualização. A Figura 2 dá uma visão geral do sistema.


Figura 2: Diagrama do sistema.

3 - Estrutura de Dados

O sistema usa para armazenar as malhas dos scans e das reconstruções estruturas Half-Edge. Além disso, são necessárias mais duas estruturas especiais para calcular os erros.

A primeira estrutura armazena, para cada ponto estratificado de um scan em uma iteração i, seu ponto correspondente r_i na reconstrução i, determinado de acordo com o ponto mais próximo dado pela distância euclidiana. Além disso, é armazenado seu ponto correspondente do scan na iteração anterior e posterior.

A segunda estrutura armazena, para cada ponto estratificado de uma reconstrução em uma iteração i, seu ponto correspondente q_i entre os scans, de acordo com a menor distância euclidiana entre todos os pontos de todos os scans naquela iteração.

4 - Medidas de erro

  1. Distância entre ponto do scan e seu ponto correspondente na reconstrução (Figura 3a);
  2. Distância entre ponto do scan e o ponto de um dos scans mais distante ao ponto da reconstrução correspondente (Figura 3b) ;
  3. Distância entre pontos correspondentes do scan entre duas iterações (Figura 3c);
  4. Distância entre pontos correspondentes da reconstrução entre duas iterações (Figura 3d) ;
  5. Diferença entre as distâncias entre ponto do scan e seu ponto correspondente na reconstrução em duas iterações (Figura 3e).

Figura 3a

Figura 3b

Figura 3c

Figura 3d

Figura 3e

Figura 3: Cálculo dos erros.

 

5 - Estratificação

Estratificação dos scans: Considerando-se cada scan como uma range image, divide-se cada scan em n² retângulos na projeção ortogonal do plano da range image. Inicialmente, determinam-se os eixos principais de cada scan através dos autovetores da matriz de covariância. Em seguida, aplica-se a matriz de mudança de base de acordo com os eixos principais para projetar ortogonalmente o scan. Agora que o scan está alinhado com o eixo xy, traçam-se raios paralelos ao eixo z dentro de cada retângulo, com uma pequena perturbação aleatória em relação ao seu centro. A intersecção desses raios com a malha será um dos pontos da nova amostragem (Figura 4). A Figura 5 exibe um exemplo de estratificação.




Figura 4: Processo de estratificação


Figura 5: Exemplo de estratificação

Pontos de diferentes scans podem ser correspondentes a um mesmo ponto da reconstrução, ou a pontos numa vizinhança muito pequena. Para eliminar pontos redundantes, é realizada uma estratificação na reconstrução, que consiste em substituir pontos muito próximos por um único ponto, que pode ser, por exemplo, o centróide desses pontos. A Figura 6 exibe um exemplo.


Figura 6: Exemplo de estratificação na reconstrução.


6 - Visualização

Dado um conjunto de pontos com normais P={(p_1, n_1), (p_2, n_2), ... , (p_n,n_n), podemos aproximar a visualização de uma superfície S que passa pelos pontos de P através de discos com centro em p_i e normal n_i. O problema que surge é estimar o raio que otimiza esta visualização, deixando a menor quantidade possível de buracos e minimizando as sobreposições de discos.

Neste trabalho, o raio dos discos é dado em função do threshold d utilizado para realizar a estratificação da reconstrução, que garante que quaisquer dois pontos tenham uma distância mínima dada por d. Valores entre 0.8d e 0.9d apresentaram bons resultados.

O threshold d é dado em função do tamanho dos retângulos utilizados na estratificação dos scans, com o objetivo de remover redundâncias. Valores entre 0.5 e 0.7 vezes o tamanho dos retângulos apresentaram bons resultados.

Para visualizar o erro na reconstrução, são atribuídas cores aos pontos de acordo com o erro atribuído. Uma iluminação difusa é aplicada para melhor visualizar o modelo.

7 - Visualização

Seguem abaixo alguns resultados:


Figura 7: Evolução do erro da distância entre pontos correspondentes do scan entre duas iterações.

 

Figura 8: Evolução do erro da diferença entre as distâncias entre ponto do scan e seu ponto correspondente na reconstrução em duas iterações.

 

Última atualização: 04/07/2007