+ All Categories
Home > Documents > Laboratorio VISGRAF´ - IMPA · 2. Uma maneira eficiente de poligonizar uma superfície a partir...

Laboratorio VISGRAF´ - IMPA · 2. Uma maneira eficiente de poligonizar uma superfície a partir...

Date post: 26-Jan-2019
Category:
Upload: phamkiet
View: 218 times
Download: 0 times
Share this document with a friend
24
Laborat ´ orio VISGRAF Instituto de Matem ´ atica Pura e Aplicada Adaptive Polygonization Methods for RGB-D Images Hallison Paz Luiz Velho (orientador) Technical Report TR-16-05 Relat ´ orio T ´ ecnico July - 2016 - Julho The contents of this report are the sole responsibility of the authors. O conte ´ udo do presente relat ´ orio ´ e de ´ unica responsabilidade dos autores.
Transcript

Laboratorio VISGRAFInstituto de Matematica Pura e Aplicada

Adaptive Polygonization Methods for RGB-D Images

Hallison PazLuiz Velho (orientador)

Technical Report TR-16-05 Relatorio Tecnico

July - 2016 - Julho

The contents of this report are the sole responsibility of the authors.O conteudo do presente relatorio e de unica responsabilidade dos autores.

1 INTRODUÇÃO

Este relatório tem por finalidade documentar o curso de leitura Métodos de ProcessamentoGeométrico para Reconstrução Adaptativa. Neste curso, foram estudadas técnicas de simplificação demalhas poligonais, reconstrução de superfícies implícitas e subdivisão adaptativa do espaço com o objetivode realizar experimentos de reconstrução adaptativa de superfícies implícitas a partir de dados de imagensRGB-D. Nos experimentos, utilizou-se um método de poligonização de superfícies em grade dual com umaoctree como apresentado em [5].

A principal aplicação de interesse neste trabalho é a reconstrução de superfícies a partir deimagens RGB-D. Temos em vista um cenário em que seja possível capturar imagens RGB-D a partirde dispositivos móveis com sensores de profundidade integrados, tais como o Structure Sensor [7] e aplataforma Google Project Tango [8]. Uma imagem RGB-D geralmente é composta por uma imagem coma informação de radiância codificada nos canais RGB e um mapa de profundidade, ambos registrados.Eventualmente, no mapa de profundidade, alguns valores podem estar faltando, devido ao ruído deaquisição ou à dificuldade do método em estimar o valor para aquele pixel.

Embora os aparelhos de interesse não sejam projetados para capturar dados com a mesmaprecisão e resolução que um scanner 3D de laboratório, a quantidade de dados obtida por esses dispositivosainda pode ser considerada razoavelmente grande, principalmente se quisermos operar sob as limitaçõesda própria plataforma móvel de captura. Nesta etapa de aquisição, temos apenas informações de baixonível sobre o que foi capturado, sem quaisquer informações sobre a geometria da cena. Por conta disso,regiões planares e com poucos detalhes são representadas com a mesma densidade que regiões com maisdetalhes, de forma que muitos pixels não adicionam informações para a compreensão da geometria dacena. Por conseguinte, lidar com os dados diretamente da forma como foram amostrados requer um maiorconsumo de memória e de esforço computacional sem acrescentar informações relevantes que compensemeste custo. Tendo em vista este problema, iniciaremos o estudo a partir da simplificação de malhas.

2 SIMPLIFICAÇÃO DE MALHAS

Uma forma bastante geral de descrever o problema de simplificação de malhas é dada umamalha poligonal M , que represente a aproximação de alguma superfície, obter uma nova malha poligonalM

0 que possua menos polígonos do que M e seja uma aproximação da mesma superfície. Dependendo danecessidade da aplicação, pode-se especificar quantos polígonos deseja-se que a malha simplificada possuaao final do processo ou pode-se especificar uma tolerância máxima de erro aceitável para a simplificação,de forma que a malha simplificada M

0 possua uma quantidade de polígonos tal que não seja mais possívelremover alguma estrutura sem cometer um erro superior à tolerância.

Em trabalhos que lidam com dados adquiridos por um scanner 3D de alta precisão, a etapade simplificação pode ser algo obrigatório, uma vez que a imensa quantidade de dados adquiridos podegerar arquivos com dimensões intratáveis na memória principal do computador e, consequentemente,impossibilitar a realização de várias operações como, por exemplo, a visualização do modelo. Esta éuma das razões pela qual o problema de simplificação de malhas foi bastante explorado, apresentandoatualmente diversas abordagens de soluções tanto para operações in-core quanto para out-of-core. Asabordagens mais comuns podem ser enquadradas em métodos de clusterização de vértices, métodos dedecimação de vértices ou métodos de contração de arestas.

O estudo de técnicas de simplificação desempenha dois papéis importantes neste trabalho.O primeiro é a realização da simplificação propriamente dita, como uma etapa de pré-processamentoda malha poligonal densa, obtida a partir da imagem RGB-D, antes que a utilizemos como base paraa reconstrução. O segundo papel é o de prover uma métrica para podermos medir o quão próximo um

determinado ponto se encontra de uma superfície que desejemos representar. Esta métrica irá nos orientarna etapa de geração de vértices para poligonização da superfície.

2.1 Simplificação de Superfícies usando Quádricas como Métricas de Erro

O trabalho [1] apresentou um método iterativo de simplificação por contração de paresde vértices, uma generalização da contração de arestas, que utiliza uma métrica baseada em quádricaspara medir o erro cometido ao realizar uma simplificação na malha. Uma contração de par de vértices,representada em [1] por (v1, v2) ! v é uma operação que move o vértice v1 para uma nova posição v,conecta todas as arestas incidentes no vértice v2 ao vértice v1 e exclui o vértice v2. Quaisquer arestas oufaces que tenham sido degeneradas no processo são removidas da representação da malha. Por operarsobre quaisquer pares de vértices da malha, quando o par (v1, v2) não é uma aresta, o algoritmo tambémconsidera casos em que a topologia do modelo não é preservada.

Por hipótese, uma boa aproximação da malha original é obtida se os vértices não se afastaremmuito de suas posições iniciais. Com base nisso, pode-se limitar os pares de vértices válidos para acontração estabelecendo-se um limiar de distância entre eles. Caso o par não seja uma aresta e a distâncianão seja inferior a este limiar, ele não pode ser considerado válido. Desta forma, caso seja necessáriorealizar contrações apenas sobre as arestas da malha original, é possível especificar uma tolerância nulapara a distância entre os vértices do par.

Em cada iteração, o algoritmo efetua a contração do par de vértices cujo erro cometido sejao menor dentre todos os pares de vértices válidos. Após a operação, atualiza-se os valores de erro se fornecessário. A forma de calcular este erro é uma das contribuições de [1]. Para cada vértice, associa-se umconjunto de planos e define-se o erro do vértice como a soma dos quadrados das distâncias do vértice aestes planos. O erro em cada vértice é inicializado tomando-se os planos base dos triângulos que contém

o vértice. Seja v =hv

x

v

y

v

z

1iT

, um vértice em coordenadas homogêneas, o erro em v é definido

a partir da forma quadrática 4(v) = v

T

Qv, em que Q é uma matriz 4x4. Seja p =ha b c d

iT

oplano definido pela equação ax+ by + cz + d = 1 em que a

2 + b

2 + c

2 = 1, temos:

4(v) =X

(pT v)2

4(v) = (vT p)(pT v) =X

v

T (ppT )v (1)

Para cada plano p, a matrix pp

T define a quádrica fundamental de erro deste plano, referidacomo K

p

:

(ppT ) =

2

66664

a

2ab ac ad

ab b

2bc bd

ac bc c

2cd

ad bd cd d

2

3

77775= K

p

A matriz K

p

pode ser usada para calcular o quadrado da distância de qualquer ponto doespaço ao plano p. O erro no vértice v, então, é dado pela soma das quádricas fundamentais de todos osplanos em consideração. A contribuição de cada plano é sintetizada em uma única matriz Q 4x4.

4(v) = v

T (X

K

p

)v = v

T

Qv (2)

Após efetuar a contração (v1, v2) ! v, a nova matriz Q que aproxima o erro em v é dada

2

pela soma Q1 + Q2 em que Q1 é a quádrica correspondente a v1 e Q2, a correspondente a v2. Sequiséssemos considerar mais vértices, poderíamos simplesmente somar as quádricas de cada vértice eobter uma nova quádrica que levasse em consideração a distância a todos estes planos. Esta é umacaracterísitca muito interessante que torna esta métrica bastante prática de ser utilizada. Existe, é claro,uma certa redundância no caso em que os vértices estão contidos em alguns triângulos em comum, pois osplanos que contém estes triângulos são considerados mais de uma vez. No entanto, a praticidade obtidapor manter esta operação simples e o fato de que cada plano pode ser considerado no máximo 3 vezescompensam o custo por essa incorreção. Se considerarmos o fato de que dados adquiridos do mundo realsempre estão sujeitos a diversas formas de ruídos, parece razoável aceitar um certo grau de imprecisãopelo benefício.

3

3 RECONSTRUÇÃO DE SUPERFÍCIES IMPLÍCITAS

Vários métodos de reconstrução de superfícies implícitas se apoiam em uma estratégia desubdivisão sistemática do espaço em células, geralmente com a geometria de um cubo ou de um simplexo.Com esta estrutura, é possível amostrar os valores da função implícita nos vértices de cada célula eprocurar por aquelas arestas em que um dos vértices possui valor superior ao nível da superfície quedesejamos reconstruir enquanto o outro vértice possui valor inferior. Uma prática comum é adequar afunção implícita de modo que a superfície de nível 0 seja a superfície de interesse; assim, classificamosos vértices em positivos e negativos. Convencionando que vértices positivos se encontram no interior dasuperfície enquanto os negativos, no exterior, podemos concluir que as arestas cujos vértices possuemsinal diferente, que chamaremos de arestas bipolares, são aquelas arestas que cruzam a superfície.

Esta estratégia é uma forma bastante intuitiva de se obter uma estimativa grosseira dalocalização da superfície implícita. Para obtermos uma aproximação poligonal para esta superfície, preci-samos determinar sua estrutura geométrica e topológica, calculando a posição de vértices e a forma comoestão associados em polígonos. Os procedimentos executados nesta etapa de poligonização diferenciamos métodos atualmente existentes, que podem operar conforme uma grade primal - coincidente com agrade de amostragem - ou uma grade dual.

3.1 Grade Primal e Grade Dual

Os métodos que calculam vértices sobre as arestas da grade são classificados como métodosprimais. Um exemplo de método primal com diversas variantes propostas é o Marching Cubes [12]. Estealgoritmo opera em um grade regular de cubos e propõe que a estrutura topológica da aproximaçãopoligonal de uma superfície implícita seja determinada por uma tabela, explorando o limite das possíveisformas que podemos classificar os vértices de uma célula. Explorando as simetrias e rotações das células,o método propõe uma tabela com 15 possibilidades (figura 1) ao invés das 256 configurações possíveis. Aposição dos vértices pode ser determinada por interpolação dos valores nos extremos da aresta bipolar.

Figura 1: Possíveis configurações de poligonização para uma célula[12]

4

Os métodos duais, por sua vez, são aqueles que calculam posições para os vértices dentrodas células e ligam vértices de células que compartilham arestas bipolares, formando uma grade dualà grade de amostragem. Métodos duais possuem maior flexibilidade na alocação dos vértices, umavez que eles podem se mover para qualquer ponto dentro da célula, ao invés de estarem restritos àsarestas da célula como na grade primal. Nos métodos primais, geralmente não temos conhecimentosobre o comportamento da superfície no interior da célula e, portanto, estruturas como quinas podem sersuavizadas como ilustrado na figura 2 (método Marching Cubes). Uma forma de obter uma aproximaçãomelhor da superfície neste caso seria aumentar o refinamento da grade de amostragem.

(a) Célula marcada com dados de Her-mite

(b) Reconstrução com Dual Contouring

(c) Reconstrução com Marching Cubes

Figura 2: Reconstrução de quinas

Um dos métodos duais mais antigos é o Surface Nets [21]. Por apresentar melhores resultadosquanto à qualidade da malha gerada e por utilizar a métrica de matrizes quádricas apresentada no trabalhode simplificação de superfícies, escolhemos o método Dual Contouring of Hermite Data [5] como basepara este trabalho.

3.2 Dual Contouring de Dados de Hermite

Este método apresenta uma solução de reconstrução de superfícies implícitas em uma gradede amostragem não uniforme cujos vértices estejam classificados como interiores ou exteriores à superfície.A posição dos vértices no interior das células é calculada a partir de dados de Hermite da função implícita(valor da função e sua derivada de primeira ordem), representados pelos pontos de interseção entrea superfície e as arestas da grade e o vetores normais à superfície nestes pontos. Destacamos duas

5

contribuições deste método que são bastante relevantes para os experimentos deste trabalho:1. Uma maneira de calcular a posição dos vértices no interior da célula utilizando dados de

Hermite a partir da otimização de Quadratic Error Functions (QEF), funções quadráticas similares àsapresentadas em [1].

2. Uma maneira eficiente de poligonizar uma superfície a partir de uma estrutura espacialadaptativa, uma octree, evitando buracos na malha gerada.

Em uma abordagem de segmentação espacial uniforme, há muitas células que não cruzam asuperfície, mas precisam ser alocadas em memória e processadas. A superfície, neste caso, é reconstruídacom uma malha uniforme, utilizando-se a mesma quantidade de polígonos para regiões mais planas epara regiões mais detalhadas. O uso de uma estrutura espacial adaptativa como uma octree permiteque a alocação de memória do algoritmo seja muito mais eficiente e que a malha reconstruída seja maisadaptada à geometria da superfície.

No entanto, quando uma estrutura de dados adaptativa é utilizada, as regiões da gradede amostragem onde há contato entre células de níveis de detalhes diferentes podem gerar buracos nasmalhas. É necessário tratar esses casos com particular atenção para gerar os polígonos e integrá-losadequadamente à malha em construção. O trabalho de Dual Contouring de Dados de Hermite propõe umamaneira de tratar a poligonização de superfícies em uma octree notando que apenas as arestas bipolaresque não contém propriamente nenhuma outra aresta são as responsáveis por gerar polígonos. Estasarestas são chamadas de arestas mínimas pelos autores. Os detalhes quanto à ordem de processamentodas células e associação dos vértices podem ser encontrados em [5] e [6].

A menor restrição sobre os vértices de uma grade dual e a informação do vetor normal àsuperfície possibilitam que características de detalhes finos da superfície como, por exemplo, quinas eoutras saliências geométricas da cena sejam preservadas mesmo em uma grade menos refinada. A posiçãodo vértice no interior da célula é obtida pela otimização - minimização - da função de erro quadráticocalculada a partir das normais e dos pontos de interseção nas arestas.

Por não precisar dos valores da função implícita nos vértices da grade de amostragem, masapenas a classificação destes vértices em interiores ou exteriores à superfície, este método é bastantefavorável aos nossos experimentos, pois não dispomos de uma maneira direta de amostrar valores dafunção. Como iremos operar com malhas poligonais como dados de entrada, seria necessário propor ummodelo de função implícita tal como o modelo de função de distância com sinal tal como em [11, 15] e,então, estimar os valores da função indiretamente com uma técnica de traçados de raios, por exemplo.

6

4 EXPERIMENTOS DE RECONSTRUÇÃO

Nosso objetivo é partir de uma malha poligonal de triângulos e construir uma octree comdados de Hermite calculados a partir desta malha. Com essa estrutura, podemos executar o algoritmodescrito em [5] para extrair uma nova malha poligonal como aproximação da superfície original.

Em um primeiro momento, este processo pode parecer redundante, visto que já possuíamosuma malha inicial para a superfície de interesse. No entanto, o experimento visa validar um método parao cálculo da octree a partir da malha disponível, pois nosso interesse é em como atualizar esta estruturacom dados de outras câmeras de modo que seja possível extrair uma malha poligonal que represente umasuperfície como resultado da fusão das informações de vários pontos de vista.

4.1 Metodologia

Inicialmente, é necessário delimitar o espaço que será segmentado em nossa grade de amos-tragem. Optamos por calcular um volume cúbico com centro coincidente ao centro da malha e arestascom comprimento igual à maior dimensão da superfície medida nas direções dos eixos coordenados. Issofoi feito de modo a simplificar a divisão do espaço em cubos, tratando todas as direções alinhadas comos eixos da mesma forma. A figura 3 ilustra esse procedimento em duas dimensões.

Figura 3: Cálculo do volume de trabalho

Após isso, divide-se o espaço sistematicamente e recursivamente em oito células utilizando-sedois planos ortogonais que passam pelo centro da célula atual (figura 4). Estas operações são efetuadas emprofundidade até um número máximo de subdivisões dado como parâmetro de entrada para o algoritmo.

Figura 4: Octree [20]

7

Em cada etapa, separamos os triângulos cujos três vértices se encontram no interior da célulae os triângulos cujos três vértices se encontram do mesmo lado em relação aos planos que contém as facesda célula. Esses triângulos com certeza não podem cruzar as arestas da célula. Os demais triângulos têmo potencial de cruzar alguma aresta. Ao descermos um nível na árvore, precisamos reclassificar apenasos triângulos que têm o potencial de cruzar alguma aresta da célula pai ou que se encontram no interiordela. Se, em algum momento, a lista de potenciais interseções e a lista de triângulos interiores foremvazias, podemos podar este ramo da octree e garantir que a superfície não passa por aquela região. Sechegarmos até o último nível da subdivisão, calculamos para cada uma das 8 células folhas se há realmenteinterseção entre ela e a superfície, testando cada aresta da célula contra todos os triângulos da sua lista depossíveis interseções (teste de interseção entre um segmento e um triângulo). Desta forma, aproveitamosa estrutura da própria octree para diminuir a quantidade de testes de interseção que precisamos realizar.

Se houver interseção entre a superfície e alguma aresta, armazenamos o ponto exato deinterseção, a normal do triângulo intersectado naquele ponto e classificamos os vértices da aresta comointerior (positivo) ou exterior (negativo) à superfície de acordo com o sinal do produto escalar entre ovetor normal à face e o vetor V

e

�V

i

, em que V

e

é um dos vértices da aresta (escolha livre) e V

i

é o pontode interseção. Seguindo o método de reconstrução apresentado em [5], podemos simplificar a octree aomáximo, colapsando as folhas que satifizerem a um determinado parâmetro de tolerância de erro em suascélulas pais. Realizamos experimentos com e sem essa etapa de simplificação.

Finalmente, procede-se à geração de polígonos também seguindo a implementação descritaem [5]. Tomamos as implementações encontradas em [17] e [18] como base, adequando-as ao nosso pipe-line. Os experimentos foram conduzidos em malhas de superfícies que representam um objeto completoe também em malhas obtidas a partir de uma triangulação densa de uma nuvem de pontos codificadaem uma imagem RGB-D. Como uma etapa de pré-processamento, as malhas obtidas a partir de imagensRGB-D foram simplificadas com uso do software Meshlab [19] por meio do algoritmo [1].

Para testar a implementação da etapa de poligonização de maneira independente ao nossométodo de obtenção dos dados por interseção com a grade de amostragem, foram feitos experimentoscom funções implícitas de objetos definidos analiticamente como a esfera e o toro. Nestes testes, erapossível determinar diretamente os valores da função implícita nos vértices da grade e, então, classificá-los adequadamente com mais facilidade.

8

5 FALHAS NA MALHA

Ao passar da abordagem em que os dados de interesse da grade de amostragem são calculadosa partir da função implícita, definida analiticamente para a superfície de interesse, para uma abordagemem que esses dados devem ser calculados a partir das interseções entre as células da grade de amostrageme a superfície, observou-se falhas na malha como exemplificadas na figura 5.

(a) Malha da vaca (b) Malha do urso

Figura 5: Falhas na malha poligonal

Para compreender a causa dessas falhas, é necessário entender como o processo de atribui-ção de valores à grade de amostragem por interseção com um modelo difere daquele por avaliação deuma função definida analiticamente. Além disso, é necessário saber qual a contribuição de cada dadoarmazenado para o processo de poligonização. Desconsideraremos quaisquer simplificações no momento,portanto todas as células possuem o mesmo tamanho e estão no nível mais profundo da octree.

No processo de computação analítica, conseguimos determinar diretamente se um vértice estáno interior ou no exterior da superfície. Com esta informação, verificamos quais arestas são “bipolares”e, então, calculamos o ponto de interseção entre a superfície e a aresta, além da normal à superfície nesteponto. Por outro lado, quando não dispomos de um função analítica, mas sim de um modelo poligonal,não temos como determinar diretamente se um vértice está no interior ou no exterior da superfície. Porconta disso, primeiramente verificamos quais arestas têm interseção com a superfície, calculamos o pontode interseção e a normal à superfície neste ponto e, então, concluimos qual vértice está no interior e qualestá no exterior (baseado no produto interno com a normal do poligono intersectado).

Temos, portanto, 3 dados: classificação dos vértices em interior/exterior, ponto de interseçãoentre a aresta e a malha e vetor normal à superfície neste ponto de interseção. O ponto de interseção ea normal à superfície constituem os dados de Hermite e são usados somente para calcular uma posiçãopara o vértice no interior da célula; erros nestes dados, portanto, não ocasionam problemas de topologiana malha, como o que estamos interessados.

A classificação interior/exterior, por sua vez, é o atributo relevante para determinar a topo-logia da malha, pois o algoritmo gera polígonos ligando os vértices interiores a células que compartilhamarestas bipolares. Com os experimentos, pôde-se observar que os casos de falha na malha, de fato, ocorrempróximo a células com vértices mal classificados. As figuras 6 e 7 ilustram essa observação, os pontos emverde representam vértices da grade de amostragem que foram classificados como exteriores, enquanto os

9

pontos em rosa representam aqueles que foram classificados como interiores. A solução do problema dasfalhas, portanto, consiste em identificar as causas dos erro de classificação e determinar de uma maneirarobusta a correta classificação de cada vértice da grade de amostragem.

Figura 6: Erros de classificação: interior como exterior

Figura 7: Erros de classificação: exterior como interior

Há duas razões principais para os erros de classificação observados. A primeira delas é quetodos os vértices haviam sido inicializados com o valor “exterior”, antes de calcularmos as interseções.No entanto, alguns vértices podem não receber classificação alguma durante os cálculos, por não estaremcontidos em nenhuma aresta que intersecta a superfície. Estes vértices não classificados permaneciamcom a classificação “exterior”, que por vezes era inadequada à sua situação real. A solução deste problemafoi inicializar os vértices com um valor “desconhecido” e, depois de analisar todas as arestas da célula,se houver vértices com valor “desconhecido”, ele recebe o mesmo valor de seus vizinhos (pois não háinterseção entre ele e seu vizinhos).

A segunda causa dos erros de classificação é a ocorrência de múltiplas interseções em umamesma aresta. No caso de múltiplas interseções, os vértices eram classificados como se apenas a últimainterseção tivesse ocorrido. Os casos com número par de interseções, geralmente são os casos em os doisextremos da aresta estão na mesma região em relação à superfície. A exceção ocorre apenas em casospatológicos como o da figura 8, em que a interseção ocorre na aresta comum a dois triângulos. Na figura,os pontos em azul claro representam interseções de arestas verticais (entrando no plano de observação)que cruzam exatamente a aresta comum aos dois triângulos. Este caso é excepcional, pois se houvesseprecisão ilimitada nos cálculos, seria extremamente improvável de ocorrer. Repare, no entanto, que ele

10

não gera falhas na malha, pois as duas interseções identificadas, que deveriam ser uma só, geram a mesmaclassificação. Para solucioná-lo, foi incluída uma comparação entre os pontos de interseção calculadospara identificar se eles são o mesmo ponto (baseado em um limiar de distância).

(a) Vista exterior (b) Vista interior

Figura 8: Dupla interseção (mesmo ponto em mais de 1 triângulo)

A figura 9 ilustra o caso de dupla interseção que gera falhas. Na figura, os pontos emvermelho representam as interseções que ocorreram em uma única aresta.

(a) Malha original (b) Malha reconstruída

(c) Malha original (d) Malha reconstruída

Figura 9: Dupla interseção (pontos diferentes)

11

Na figura 9, observa-se que ambos os vértices deveriam ser classificados como exteriores àsuperfície, pois a aresta intersecta uma face para entrar e intersecta outra para sair. A abordagem devaloração usando uma função analítica simplesmente não identificaria essas interseções. Para solucionaro problema de multiplas interseções, resolvemos aplicar uma regra geral em que desconsideramos asinterseções nos casos em que ocorre um número par de interseções na aresta e consideramos a ocorrênciade uma única interseção no caso em que calcula-se um número ímpar de interseções.

A análise de paridade, contudo, não é suficiente para classificar corretamente os vértices,prinicipalmente nos casos de um número par de interseções. A dificuldade está em distinguir os casosem que ambos os vértices estão no interior da superfície do caso em que ambos estão no exterior. Foinecessário uma análise mais acurada da situação local de cada caso. Assim sendo, para cada caso demúltiplas interseções, escolhemos um dos vértices, v

c

, da aresta e identificamos qual o ponto de interseção,p

n

mais próximo deste vértice. Em seguida, classificamos este vértice em interior ou exterior baseado nosinal do produto interno entre o vetor v

c

� p

n

e a normal do triângulo que contém p

n

. Caso o númerode interseções seja par, atribuímos a mesma classificação ao outro extremo da aresta; caso seja ímpar,atribuímos a classificação oposta. A adoção de todos estes passos solucionou o problema (figura 10).

Figura 10: Malha sem falhas

O único caso em que ainda foram observadas falhas na malha foram nas regiões em que amalha original, localmente, não é uma variedade. Este casos serão considerados casos excepcionais. Afigura 11 ilustra um caso de auto-interseção observado na malha original da vaca, que resultou em umaclassificação incorreta dos vértices próximos a esta região, originando uma falha na reconstrução (figura12).

12

(a) Exterior (b) Interior

Figura 11: Auto-interseção malha da vaca

dssdsd

(a) (b)

Figura 12: Falha devido à auto-interseção

13

6 RESULTADOS

Após as correções das falhas observadas nas malhas, foram executados novos testes com asmesmas malhas e malhas formadas a partir de imagens RGB-D. Para obter uma malha poligonal de umaimagem RGB-D, primeiramente transportamos os pixels do espaço da imagem para o espaço da câmera,obtendo uma nuvem de pontos ordenada, e depois ligamos os pixels adjacentes em triângulos, desde quea diferença na coordenada de profundidade deles não seja muito grande. Para que essa operação tenharesultados razoáveis, é necessário que conheçamos os parâmetros da câmera e especifiquemos um limiarde distância adequado à cena. Optamos por trabalhar com os dados sintéticos disponíveis em [16] paraevitar problemas de ruído e falta de dados nas imagens neste momento.

6.1 Malhas de Objetos

A figura 13 apresenta o resultado da reconstrução da malha de uma vaca, uma superfície sembordo. Foram realizados testes com e sem a simplificação da octree antes da poligonização. O parâmetrode simplificação foi testado empiricamente de modo que o resultado ainda fosse visualmente compatívelcom a malha original.

No caso sem simplificação, todos os polígonos são gerados a partir da ligação entre vérticescalculados dentro de células no mesmo nível de profundidade. Devido ao nível de refinamento da grade deamostragem, a reconstrução sem simplificação gera uma malha significativamene mais densa que a malhaoriginal. Mesmo neste caso em que a subdivisão espacial é praticamente homogênea, ainda é vantajosoutilizar uma octree ao invés de uma estrutura de dados mais simples, pois podemos eliminar dos cálculosas regiões onde não há qualquer interseção com a superfície. Além disso, é muito mais eficiente determinara existência de interseções entre a malha e a grade de amostragem com uma estrutura de dados que levaem consideração a posição relativa dos vértices no espaço.

A figura 14 apresenta o resultado do mesmo experimento com a malha de um manequin queaproxima um rosto humano. Tanto na figura 13 quanto na figura 14, a malha reconstruída representa umageometria visualmente muito próxima da malha original. Podemos ver algumas regiões com diferençasmais evidentes como as orelhas, nariz e olhos. Nos dois casos, as orelhas reconstruídas apresentam umcomportamento menos suave, com variações muito bruscas. Uma hipótese quanto à origem deste problemaé o uso de normais das faces intersectadas no cálculo da função quadrática de erro. Talvez um cálculomais aproximado, utilizando as normais interpoladas para o ponto de interseção gere melhores resultados.No caso dos olhos, uma região de detalhes mais finos, a resolução da grade de amostragem pode não serfina o suficiente para capturar as informações necessárias para uma reconstução mais acurada destasregiões. Na malha do manequin (figura 14), é possível perceber uma degradação da geometria próximoao bordo da superfície após a simplificação.

6.2 Malhas a partir de Imagens RGB-D

Os resultados observados nas malhas obtidas a partir de imagens RGB-D não foram tão bonsquanto os anteriores. Este tipo de malha apresenta duas dificuldades inerentes ao método de aquisição.A primeira é que as superfícies sempre têm bordo, pois existe uma limitação intrísica na aquisição devidoao campo de visão da câmera. Por se tratar de uma cena completa ao invés de um único objeto, questõesde visibilidade como oclusões, por exemplo, podem gerar malhas com várias componentes conexas, o queaumenta a quantidade de polígonos no bordo da superfície. A segunda dificuldade é que a noção deinterior e exterior dessas superfícies não é tão bem definida.

A figura 15 apresenta o resultado da reconstrução de uma região da cena onde há umacadeira. Podemos observar que a malha original apresenta discontinuidades em torno da cadeira nas

14

transições entre a cadeira e a parede de fundo, entre a cadeira e o chão e entre o “corpo” da cadeira e osapoios de braço. Há, ainda, algumas descontinuidades em detalhes nas extremidades da cena. Todos essespontos de descontinuidade apresentaram falhas na reconstrução, mesmo sem simplificação. No entanto,é possível ver que nas regiões centrais de cada um dos elementos da cena, os resultados são visualmentesatisfatórios.

A figura 16 apresenta um exemplo mais complexo. Neste exemplo, há diversas discontinui-dades bem sutis dentro da malha como, por exemplo, no entorno do quadro, entre os dois assentos do sofáe entre as almofadas e o sofá. Essas discontinuidades contribuíram para a degradação do resultado emregiões que esperaríamos um bom resultado, pois aparentam estar no centro e não no bordo da malha.

A observação dos resultados da figura 16 nos levou a questionar o limiar adotado paraa triangulação da malha original. Se optarmos por aceitar juntar regiões com uma maior diferençade profundidade, podemos unir áreas que nos parecem coerente que estejam conectadas, tais como asalmofadas e o sofá. Realizamos, então, novos testes com uma malha mais conectada (figura 17) e, defato, o resultado obtido foi visualmente mais próximo da malha original.

Em todos os casos, podemos observar uma severa degradação das regiões reconstruídas pró-ximo às bordas, principalmente quando realizamos a simplificação da octree. Este problema foi visto emmenor grau na reconstrução simplificada da figura 14 e provavelmente foram agravados pelas peculiarida-des das malhas de imagens RGB-D que foram apresentadas no início desta seção. Há, ainda, problemastopológicos de inversão de orientação de faces após a simplificação. Esses problemas podem ser causadospor uma falha na classificação de vértices da grade de amostragem e/ou por problemas na amostragemdas normais à superfície. Em todo caso, é algo que deve ser investigado.

15

(a) Original lateral (b) Original frontal

(c) Sem simplificação (lateral) (d) Sem simplificação (frontal)

(e) Com Simplificação (lateral) (f) Com simplificação (frontal)

Figura 13: Malha da Vaca reconstruída

16

(a) Original (frontal) (b) Original Posterior

(c) Sem simplificação (frontal) (d) Sem simplificação (posterior)

(e) Com simplificação (frontal) (f) Com simplificação (posterior)

Figura 14: Malha do manequin reconstruída

17

(a) Original

(b) Reconstruído sem simplificação

(c) Reconstruído com simplificação

Figura 15: Região da cena com a cadeira

18

(a) Original

(b) Reconstruído sem simplificação

(c) Reconstruído com simplificação

Figura 16: Região da cena com sofá

19

(a) Original

(b) Reconstruído sem simplificação

(c) Reconstruído com simplificação

Figura 17: Região da cena com sofá (malha mais conectada)

20

7 CONCLUSÃO

O método implementado apresentou um resultado muito bom quando aplicado em malhas desuperfícies fechadas e apresentou resultados razoáveis quando aplicado a malhas provenientes de imagensRGB-D. Uma dificuldade inerente à abordagem escolhida é determinar de maneira robusta a classificaçãode cada vértice da grade de amostragem em relação à superfície que desejamos reconstruir. Erros nestaetapa podem gerar falhas na malha, visto que o método de poligonização em que nos apoiamos dependeda correta identificação de arestas bipolares. É necessário inevestigar um pouco mais o comportamentodo método próximo às regiões de borda da superfície.

Há bastante espaço para melhorias e otimizações. Por exemplo, ao detectarmos uma inter-seção entre a grade de amostragem e a malha, devemos armazenar o vetor normal à superfície naqueleponto. O vetor armazenado atualmente é o vetor normal ao polígono intersectado, no entanto seria pos-sível realizar um procedimento de interpolação de normais para se determinar um vetor mais acuradopara aquela localização.

Com as técnicas estudadas, espera-se que seja possível a construção de um pipeline parao escaneamento de objetos reais contemplando a aquisição a partir de sensores de captura RGB-D, asimplificação da malha inicial, construção da octree, aquisição de novos dados, atualização da octree egeração do modelo por poligonização com essa estrutura atualizada. Como passos futuros nesta direção,devemos realizar testes para verificar a influência da atualização dos dados da octree sobre o resultadoda reconstrução. Esperamos que quádricas computadas sobre vértices que não faziam parte de um frameanalisado anteriormente possam contribuir para a fusão de novos dados ao modelo, enquanto quádricascomputadas sobre regiões que já possuíam dados de outros frames possam ser refinadas por meio desuavização de ruídos. Para isso, é necessário fazer o registro dos dados de cada frame no mesmo espaçode trabalho, em relação a uma determinada câmera e alocar novas células espacias sobre demanda.

21

Referências

[1] Garland, M., & Heckbert, P. S. (1997). Surface simplification using quadric error metrics. Proceedingsof the 24th Annual Conference on Computer Graphics and Interactive Techniques - SIGGRAPH ’97,209–216.

[2] Garland, M., & Shaffer, E. (2002). A multiphase approach to efficient surface simplification. IEEEVisualization, 2002. VIS 2002., 117–124.

[3] Velho, L. (2001). Mesh simplification using four-face clusters. Proceedings - International Conferenceon Shape Modeling and Applications, SMI 2001, 200–208.

[4] Schaefer, S., & Warren, J. (2003). Adaptive vertex clustering using octrees. Geometric Design andComputing. http://doi.org/10.1.1.4.5127

[5] Ju, T., Losasso, F., Schaefer, S., & Warren, J. (2002). Dual contouring of hermite data. ACMTransactions on Graphics, 21(3), 339–346.

[6] Schaefer, S., & Warren, J. (2002). Dual Contouring:“ The Secret Sauce.” Citeseer, 5. Retrieved fromhttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.2631

[7] Structure Sensor Documentation. [internet] Disponível em: <http://structure.io/developers>.Acesso em 15 de janeiro de 2016.

[8] Project Tango. [internet] Disponível em: <https://developers.google.com/project-tango/developer-overview> . Acesso em 15 de janeiro de 2016.

[9] Pawar, Navpreet Kaur; Macey, Jon . Surface Reconstruction from Point Clouds. MasterThesis: Bournemouth University, 2013.

[10] Shahram Izadi, David Kim, Otmar Hilliges, David Molyneaux, Richard Newcombe, Pushmeet Kohli,Jamie Shotton, Steve Hodges, Dustin Freeman, Andrew Davison, and Andrew Fitzgibbon, Kinect-

Fusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera,ACM Symposium on User Interface Software and Technology, October 2011.

[11] Richard A. Newcombe, Shahram Izadi, Otmar Hilliges, David Molyneaux, David Kim, Andrew J.Davison, Pushmeet Kohli, Jamie Shotton, Steve Hodges, and Andrew Fitzgibbon, KinectFusion:

Real-Time Dense Surface Mapping and Tracking, in IEEE ISMAR, IEEE, October 2011.

[12] Lorensen, W. E.; Cline, Harvey E. (1987). "Marching cubes: A high resolution 3d surface

construction algorithm". ACM Computer Graphics 21 (4): 163–169.

[13] VELHO, Luiz Carlos.; GOMES, Jonas de Miranda.; FIGUEIREDO, Luiz Henrique de. Implicit

objects in computer graphics. New York: Springer, 2002. (Capítulo 10)

[14] Wenger, Rephael. Isosurfaces: Geometry, Topology & Algorithms. A.K. Peters/CRC Press,2013. (Capítulos 2 e 8)

[15] B. Curless and M. Levoy. A volumetric method for building complex models from range

images. ACM Trans. Graph., 1996.

[16] Sungjoon Choi and Qian-Yi Zhou and Vladlen Koltun. Robust Reconstruction of Indoor Sce-

nes. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.

22

[17] Dual Contouring Implementation in C++ by Tao Ju. [internet] Disponível em:<https://github.com/aewallin/dualcontouring>. Acesso em 5 de julho de 2016.

[18] Dual Contouring Implementation by Nicholas Gildea. [internet]<https://github.com/nickgildea/DualContouringSample> . Acesso em 5 de julho de 2016.

[19] MeshLab. [Internet] Disponível em: <http://meshlab.sourceforge.net/> . Acessado em 5 de julhode 2016.

[20] Wikipedia’s Octree Image. [Internet] <https://en.wikipedia.org/wiki/Octree> . Acessado em 6 dejulho de 2016.

[21] Gibson, S. F. F. (1998a). Constrained elastic surface nets: Generating smooth surfaces from binarysegmented data. In Proceedings of the First International Conference on Medical Image Computingand Computer-Assisted Intervention, MICCAI 1998, pages 888–898, Berlin. Springer-Verlag.

23


Recommended