Pergunta

Eu estou tentando descobrir o que algoritmos existem para fazer reconstrução da superfície a partir de dados de alcance 3D. À primeira vista, parece que o Ball giro algoritmo ( BPA ) e Poisson reconstrução da superfície são os métodos mais tradicionais?

  • O que o estabelecido, o algoritmo mais robusto no campo diferente do BPA e Poisson algoritmo de reconstrução da superfície?
  • As publicações de pesquisa recomendada?
  • Existe código fonte disponível?
Foi útil?

Solução

Eu têm vindo a enfrentar este dilema há alguns meses, e fez uma pesquisa exaustiva.

Algoritmos

Principalmente, existem 2 categorias de algoritmos:. Geometria computacional e superfícies implícitas

Computação Geometria

Eles se encaixam a malha sobre os pontos existentes.

Provavelmente o algoritmo mais famoso deste grupo é powercrust , porque é teoricamente bem estabelecida -. garante estanque malha

Ball Pivoting é patenteada pela IBM. Além disso, ele não é adequado para pointclouds com densidade variável ponto.

funções implícitas

funções se encaixa implícitos na pointcloud, em seguida, usa uma marcha-cube-como algoritmo para extrair a-ponto zero da função em uma malha.

Métodos nesta categoria diferem principalmente pelas diferentes funções implícitas utilizadas.

Poisson , Hoppe, e MPU são os mais famosos algoritmos nesta categoria. Se você é novo para o tópico, eu recomendo ler a tese de Hoppe, é muito explicativo.

Os algoritmos nesta categoria geralmente podem ser implementadas de modo que eles são capazes de processar entradas enormes de forma muito eficiente, e pode-se dimensionar a sua qualidade <-> velocidade trade-off. Eles não são perturbados pelo ruído, variando de ponto-densidade, buracos. A desvantagem deles é que eles exigem consistentemente orientada normais de superfície nos pontos de entrada.

Implementações

Você vai encontrar pequeno número de implementações livres. No entanto, depende se você estiver indo para integrá-lo em software livre (neste caso de licença GPL é aceitável para você) ou em um software comercial (neste caso, você precisa de uma licença mais liberal). Este último é muito raro.

Uma delas é em VTK . Eu suspeito que ele seja difícil de integrar (nenhuma documentação está disponível gratuitamente), tem uma arquitetura estranha, sobre-complicada, e não é projetado para aplicações de alto desempenho. Também tem algumas limitações para os pointclouds de entrada permitidos.

Dê uma olhada este implementação Poisson, e depois disso share sua experiência sobre isso comigo, por favor.

Além disso: aqui alguns algoritmos de alto desempenho, com reconstrução da superfície entre eles.

CGAL é uma biblioteca 3D famoso, mas é livre somente para projetos livres. MeshLab é uma aplicação famoso com GPL.

Além disso (Adicionado agosto 2013): A biblioteca PCL tem um módulo dedicada à reconstrução da superfície e está em desenvolvimento ativo (e faz parte do Verão do Google de Código). O módulo de superfície contém um número de diferentes algoritmos de reconstrução. PCL também tem a capacidade de estimar normais de superfície, no caso de você não tê-los fornecido com o seu dados de ponto, esta funcionalidade pode ser encontrado nas características módulo . PCL é liberado sob os termos da licença BSD e é um software de código aberto, é livre para uso comercial e pesquisa.

Outras dicas

Se você quiser fazer algumas experiências diretas com vários algoritmos de reconstrução de superfície que você deve tentar MeshLab , o sistema de processamento de malha, que é open source e contém implementações de muitos dos algoritmos de reconstrução de superfície anteriormente citados, como:

  • Poisson Superfície Recon
  • um par de MLS com base abordagem,
  • a implementação de giro bola
  • uma variante da abordagem baseada em volume Curless
  • técnicas baseadas Delaunay (formas alfa e Voronoi filtragem)
  • ferramentas para normais de conjuntos de pontos dispersos de computação
  • e muitas outras ferramentas para comparar / medição / limpeza / simplificando as malhas resultantes.

As fontes são protegidos pela GPL, para que você não poderia usá-los em um projeto de código fechado comercial, mas é muito importante para obter a sensação de direito sobre as propriedades dos vários algoritmos de reconstrução de superfície (como sensíveis ao ruído que são, a velocidade, a robustez a outliers, como eles preservar detalhes finos etc etc) antes de começar a implementar um deles.

Você pode começar a olhar para alguns trabalhos recentes no campo - atualmente algo como rápido de pouca memória streaming de reconstrução MLS de superfícies por Gianmauro Cuccuru, Enrico Gobbetti, Fabio Marton, Renato Pajarola e Ruggero Pintus amostrados pontos. Suas citações pode você ir através da literatura muito rapidamente.

Apesar de não ser uma representação de malha, um ex-colega me recomendou este link ao código-fonte de um método Placa Spline Fina:

Fazer a ligação

Qualquer um tentou fazê-lo?

Não tenho certeza se é exatamente certo para o seu caso, uma vez que parece estranho que você omitiu, mas marcha cubos é comumente citados em casos como estes.

Aqui no GitHub, é uma fonte aberta Biblioteca de processamento de malha em C ++ por Dr. Hugues Hoppe , em que o programa de reconstrução de superfície Recon é uma boa opção para o seu problema ...

Há ferramenta 3D Delaunay por Ferramentas geométricas . Esta ferramenta é usada DirecX e OpenGL. Infelizmente, você pode precisar comprar um livro para ver o código exemplo real da biblioteca. Você ainda ler o código e descobrir.

Matlab também introduziu uma ferramenta de reconstrução da superfície usando Delaunay, Triangulação de Delaunay classe .

Como tive esse problema também, eu desenvolver e implementar o meu próprio algoritmo crosta ponto nuvem. As fontes, bem como a documentação podem ser encontradas no github.com: https://github.com/ricebean -net / PointCloudCrust . O algoritmo é implementado em Java.

Talvez, isso pode ajudá-lo. Você pode encontrar também um script python curta na página que ilustra como usar a biblioteca. Divirta-se!

Você pode estar interessado em Alpha Shapes .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top