Mve: Visão para ponto denso

Criado em 22 abr. 2016  ·  8Comentários  ·  Fonte: simonfuhrmann/mve

Outro esquema de filtragem de pontos denso é o baseado em visão, que está usando a visão de cada ponto para sua câmera relacionada e mostra um excelente resultado também. Mas não vi essa informação na nuvem de pontos de saída do mve. Isso será considerado e o novo esquema poderá ser fundido?

PS: mais informações usadas implicam em mais potencial para melhores resultados~

ref:
https://github.com/cdcseacave/openMVS

Vu HH, Labatut P, ​​Pons JP, et ai. Estéreo multiview denso de alta precisão e visibilidade consistente [J]. Análise de padrões e inteligência de máquina, transações IEEE em, 2012, 34(5): 889-901.

https://www.acute3d.com/

Comentários muito úteis

Tanto quanto sei, as diferenças entre as abordagens são graves.

1) A malha de superfície é construída a partir da nuvem de pontos semi-esparsa, enquanto o MVE (FSSR) a constrói nos pontos ultradensos
2) O MVS real é feito na própria malha com otimização, enquanto no MVE é feito usando mapas de profundidade

O primeiro passo requer tetraedralização em uma otimização global, como mencionou Pierre. A própria tetraedralização é muito desagradável, nem mesmo falando em incluir otimização para determinar a conectividade. Para mim, parece que as abordagens são tão diferentes que nem quero pensar em me casar com elas.

E bem, mesmo o código-fonte aberto pode ser feio. Na verdade, é o único código que pode ser feio porque você não pode ver o código fonte próximo. ;-)

Todos 8 comentários

O trabalho referenciado usa uma técnica de reconstrução fundamentalmente diferente da MVE. Estou ciente deste trabalho. As informações de linha de visão são usadas principalmente para otimização de superfície, mas o MVE não realiza nenhuma otimização global em nenhum estágio do pipeline (exceto BA, é claro). Duvido que esta técnica seja ou possa ser integrada ao MVE. Pelo menos não sei como.

Que eu saiba, ambas as técnicas incluem quatro etapas:

1 geração de nuvem de pontos densa fundindo mapa de profundidade em cada visualização
2 reconstrução de superfície/malha (nuvem de pontos -> faces triangulares)
3 otimização de superfície/malha (global ou local)
4 texturização

A principal diferença entre as duas técnicas é a reconstrução de superfície, fssr para mve, seleção de face (triangulação delaunay + st cut) para seu trabalho. A linha de visão desempenha um papel importante para a reconstrução da superfície não apenas para a otimização da superfície em seu trabalho. O resultado das tendências fssr é suave, enquanto o método baseado na seleção de face pode manter a borda afiada.

Na minha opinião, a visão de linha deve opcionalmente ser exportada após a primeira etapa, então a nova etapa de reconstrução da superfície poderia ser desenvolvida, por último fazer a mesma texturização.

https://github.com/cdcseacave/openMVS/wiki/Modules

Uma dificuldade adicional é que não há uma biblioteca de tetraedralização de Delaunay licenciada permissiva.
http://doc.cgal.org/latest/Triangulation_3/index.html#Chapter_3D_Triangulations => GPL
http://wias-berlin.de/software/tetgen/ => AGPL
Observe que o MVE usa uma licença permissiva.

cgal é o que o openmvs usou, o openmvs está tentando implementar o esquema de seleção de face, mas o código deles é muito feio~

Eu nunca diria que um código-fonte aberto é feio, isso não é muito gentil com os autores
Colocar algo como código aberto e deixá-lo utilizável por qualquer pessoa é uma coisa legal.
PS: Você deve observar que não há outra implementação de código aberto de "linha de visão" por aí.
O OpenMVS implementa o corte grah da triangulação de tetraedros delaunay de maneira genérica (permite usar vários algoritmos de corte de gráfico) e com e sem visibilidade de superfície fraca.

Tanto quanto sei, as diferenças entre as abordagens são graves.

1) A malha de superfície é construída a partir da nuvem de pontos semi-esparsa, enquanto o MVE (FSSR) a constrói nos pontos ultradensos
2) O MVS real é feito na própria malha com otimização, enquanto no MVE é feito usando mapas de profundidade

O primeiro passo requer tetraedralização em uma otimização global, como mencionou Pierre. A própria tetraedralização é muito desagradável, nem mesmo falando em incluir otimização para determinar a conectividade. Para mim, parece que as abordagens são tão diferentes que nem quero pensar em me casar com elas.

E bem, mesmo o código-fonte aberto pode ser feio. Na verdade, é o único código que pode ser feio porque você não pode ver o código fonte próximo. ;-)

Sim, minha culpa, o código aberto deve ser respeitado. Só porque eu passei algum tempo estudando e achei um pouco difícil de entender e bugado, o que não é tão elegante quanto o MVE, obrigado de qualquer maneira ~

Eu tenho jogado bastante com Theia e OpenMVS. @daleydeng Eu concordaria que existem alguns bugs no OpenMVS que bloqueiam completamente o processo de reconstrução e exigem depuração.

Descobri que o OpenMVS produz modelos muito bons ao pular o processo de densificação e ir direto para reconstruir a entrada esparsa e depois refiná-la. Eu realmente gostaria de obter a implementação CUDA do Refine funcionando, mas tive problemas de vinculação que ainda não pude gastar tempo resolvendo. Esse processo é bastante rápido, pois a nuvem esparsa contém significativamente menos pontos e geralmente resulta em uma malha final que também possui uma contagem de polígonos tolerável.

Executar o Densify+Reconstruct+Refine leva MUITO mais tempo e produz uma malha muito grande. No entanto, a qualidade é melhor ao preencher áreas que a esparsa não cobriu.

A texturização também é muito boa, e aprecio que o OpenMVS ofereça um pacote completo e seja de código aberto.

Estou interessante agora em MVE e ansioso para aprender mais.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

HelliceSaouli picture HelliceSaouli  ·  14Comentários

GustavoCamargoRL picture GustavoCamargoRL  ·  13Comentários

HelliceSaouli picture HelliceSaouli  ·  12Comentários

MaxDidIt picture MaxDidIt  ·  30Comentários

Jus80687 picture Jus80687  ·  11Comentários