ENGLISH VERSION: http://arc-team-open-research.blogspot.com.br/2016/12/comparing-7-photogrammetry-systems.html
Quando explico às pessoas que a fotogrametria é um processo de digitalização 3D a partir de fotografias, sempre recebo um olhar de desconfiança, pois a priori parece algo fantástico demais para ser verdade. Imagine só, fazer várias fotos de um objeto, enviá-las a um algoritmo e ele devolver um modelo 3D já texturizado. Uau!
Depois de apresentar o modelo, a segunda pergunta dos interessados sempre orbita em torno da precisão. Qual a acurácia de uma digitalização 3D por fotografia? A reposta é: submilimétrica. E outra vez sou surpreendido por um olhar de desconfiança. Felizmente, a nossa equipe escreveu um artigo científico sobre um experimento que demonstrou um desvio médio de 0.78 mm, isso mesmo, menos de um milímetro em relação a digitalizações efetuadas com um scanner a laser de ponta.
Assim como o mercado de scanners a laser, na fotogrametria temos inúmeras opções de softwares para proceder com as digitalizações. Existem desde soluções proprietárias e fechadas, até abertas e livres. E justamente, frente a essa sorte de programas e soluções é que vem a terceira pergunta, até então não respondida, ao menos oficialmente:
Qual programa de fotogrametria é o melhor?
Esse inquirimento é mais difícil de responder, até por que depende muito da situação. Mas pensando nisso e em face de um monte de abordagens que tomei ao longo do tempo, decidi responder da forma que julguei mais ampla e justa.
O crânio do Senhor de Sipán
Em julho de 2016 viajei até Lambayeque, no Peru, onde fiquei frente a frente com o crânio do Senhor de Sipán. Ao analisá-lo percebi que seria possível reconstruir a sua face utilizando a técnica de reconstrução facial forense. O crânio, no entanto, estava quebrado e deformado, por conta dos anos de pressão ao qual sofrera em sua tumba, encontrada completa em 1987, um dos maiores feitos da arqueologia protagonizados pelo Dr. Walter Alva.
Para reconstruir um crânio tirei 120 fotos com um smartphone Asus Zenphone 2 e com essas fotos procedi com os trabalhos de reconstrução. Paralelamente a esse processo, o fotógrafo profissional Raúl Martin, do Departamento de Marketing da Universidade Inca Garcilaso de la Vega (patrocinadora de minha viagem) tomou 96 fotos com uma câmera Canon EOS 60D. Dessas todas, selecionei 46 imagens para proceder com o experimento.
Um dia depois do levantamento fotográfico, o Ministério da Cultura do Peru enviou especialistas em digitalização a laser para escanearem o crânio do Senhor de Sipán, portando um equipamento Leica ScanStation C10 . A nuvem de pontos final foi enviada 15 dias depois, ou seja, quando recebi os dados do scanner a laser, todos os modelos levantados por fotogrametria estavam prontos.
Tivemos que esperar esse tempo, posto que o modelo levantado pelo equipamento trata-se do padrão ouro, ou seja, todas as malhas levantadas por fotogrametria seriam comparadas, uma a uma, com ele.
As nuvens de pontos resultantes do escaneamento eram arquivos .LAS e .E57… e nunca ouvira falar deles. Tive de pesquisar bastante para descobrir como abrí-los no Linux, utilizando software livre. A solução foi fazê-lo no CloudCompare, que oferece a possibilidade de importar arquivos .E57. Depois exportei o modelo como .PLY para poder abrir no MeshLah e reconstruir a malha 3D através do algoritmo Poisson.
Como você observou acima, também foram digitalizadas a mandíbula e a superfície da mesa onde as peças se encontravam. A parte relacionada ao crânio foi isolada e limpa, para que o experimento fosse efetuado. Não tratarei desses detalhes aqui, posto que o escopo é outro. Já escrevi outros materiais explanando acerca de como apagar partes desimportantes de uma nuvem de pontos/malha.
Para a digitalização via fotogrametria, os sistemas escolhidos foram:
1) OpenMVG (open Multiple View Geometry library) + OpenMVS (open Multi-View Stereo reconstruction library): A nuvem esparsa de pontos é calculada no OpenMVG e a nuvem densa de pontos no OpenMVS.
Prós: Software livre, por ser acessado via linha de comando permite a criação de script, converte a nuvem densa de pontos em uma malha 3D e gera textura a partir das fotos. Roda em Windows, Linux e Mac.
Contras: Precisa ser compilado para gerar um executável ao sistema operacional escolhido. O CCD da câmera precisa estar setado no sistema. O arquivo Bundler (posição das câmeras no espaço) apresenta problemas de alinhamento.
2) OpenMVG + PMVS (Patch-based Multi-view Stereo Software): A nuvem esparsa de pontos é calculada no OpenMVG e posteriormente o PMVS calcula a nuvem densa de pontos.
Prós: Software de código aberto, por ser acessado via linha de comando permite a criação de script. Roda em Windows, Linux e Mac.
Contras: Não gera textura, apenas vertex color, depende do MeshLab para converter a nuvem de pontos em uma malha. Precisa ser compilado para gerar um executável ao sistema operacional escolhido. O CCD da câmera precisa estar setado no sistema. O arquivo Bundler (posição das câmeras no espaço) apresenta problemas de alinhamento.
3) MVE (Multi-View Environment): Um sistema completo de fotogrametria.
Prós: Software de código aberto, por ser acessado via linha de comando permite a criação de script, converte a nuvem densa de pontos em uma malha 3D e gera textura a partir das fotos. Não é necessário configurar os parâmetros da câmera. Roda em Windows, Linux e Mac.
Contras: Precisa ser compilado para gerar um executável ao sistema operacional escolhido.
4) Photoscan da Agisoft ®: Um sistema completo e offline de fotogrametria.
Prós: Interface gráfica. Possibilidade de selecionar a área onde calcular a nuvem densa de pontos. Exporta em vários formatos. Roda em Windows, Linux e Mac.
Contras: A versão completa (com redimensionamento semiautomático) do software custa US$ 3499!
5) Recap 360 da Autodesk ®: Um sistema completo e online de fotogrametria.
Prós: Por ser online roda em qualquer sistema operacional que ofereça um navegador com suporte a WebGL. Como os cálculos da digitalização são feitos na nuvem, o sistema fica livre desse processamento.
Contras: Não oferece acesso às etapas de criação do modelo (nuvem esparsa e nuvem densa de pontos).
6) 123D Catch da Autodesk ®: Um sistema completo e online de fotogrametria.
Prós: Por ser online roda em qualquer sistema operacional que ofereça um navegador com suporte a WebGL. Como os cálculos da digitalização são feitos na nuvem, o sistema fica livre desse processamento.
Contras: Não oferece acesso às etapas de criação do modelo (nuvem esparsa e nuvem densa de pontos).
7) PPT-GUI (Python Photogrammetry Toolbox with graphical user interface): A nuvem esparsa de pontos é gerada pelo Bundler e posteriormente o PMVS gera a nuvem densa.
Prós: É software de código aberto. Conta com interface gráfica. O arquivo Bundler oferece a possibilidade de ver onde as câmeras se encontram no espaço, já com as imagens posicionadas em cada uma delas (Blender 3D importer).
Contras: Tempo elevado de processamento da nuvem esparsa, forçando ao usuário diminuir o tamanho das imagens a serem calculadas. Não tem versão para Mac. Não gera textura, apenas vertex color, depende do MeshLab para converter a nuvem de pontos em uma malha. O CCD da câmera precisa estar setado no sistema.
* Roda no Linux sob Wine (PlayOnLinux).
Acima temos uma tabela concentrando aspectos importantes de cada um dos sistemas. De modo geral, ao menos aparentemente não há um sistema que se destaque muito mais do que os outros.
Geração de nuvem esparsa + geração de nuvem densa + malha 3D + textura, desconsiderado tempo para upload de fotos e download da malha 3D (nos casos do Recap 360 e do 123D Catch).
Todas a malhas foram importadas ao Blender e alinhadas a digitalização a laser.
Acima vemos todas as malhas lado a lado desdo. Perceba que algumas superfícies são tão densas que notamos apenas as arestas, como no caso do escaneamento 3D e do OpenMVG+PMVS. Inicialmente, uma informação muito importante… a textura nas malhas digitalizadas tendem a nos enganar em relação a qualidade do escaneamento, em face disso, nesse experimento eu decidi ignorar os resultados com textura e focar na superfície 3D. Assim sendo, exportei todos os modelos originais no formato .STL, que é sabido, não tem informações de textura.
Olhando bem de perto veremos que em se falando de superfície, um resultado mais denso no final fica bem compatível com um resultado menos denso de subdivisões na malha. O objetivo final da digitalização, ao menos nos meus trabalhos, é obter uma malha que seja coerente com o objeto original. Se essa malha for mais simplificada, desde que esteja em harmonia com o aspecto volumétrico real, é melhor ainda, pois, quando menos faces tem uma malha 3D, mais rápido será o processamento dela na edição.
Se nos atentarmos para os tamanhos dos arquivos (.STL exportados sem textura), que é um bom parâmetro de comparação, veremos que a malha criada no OpenMVG+OpenMVS, já limpa, tem 38.4 MB e a do Recap 360 apenas 5.1 MB!
Depois de anos trabalhando com fotogrametria, percebi que o melhor a fazer quando nos deparamos com uma malha muito densa é simplicá-la, para podermos manipulá-la tranquilamente em tempo real. É difícil saber se isso acontece de fato, pois trata-se de uma solução proprietária e fechada, mas suponho que tanto o Recap 360 quanto o 123D Catch geram malhas complexas, mas ao final do processo a simplificam consideravelmente, para que rodem em qualquer hardware moderno (PC e smartphones) preferivelmente com suporte a WebGL (3D interativo no browser de internet).
Já, já voltaremos a discutir essa situação envolvendo a simplificação de malhas, vamos agora à comparação delas.
Como funciona a comparação de malhas 3D
Uma vez que todos os crânios foram limpos e alinhados ao padrão ouro (laser scan) é chegado o momento de comparar as malhas no CloudCompare. Mas como funciona essa tecnologia de comparação de malhas 3D?
Para ilustrar isso, criei alguns elementos didáticos. Vamos a ele.
Esse elemento didático trata-se de dois planes com superfícies de espessura 0 (isso é possível em modelagem digital 3D) formando um X.
Temos então o objeto A e o objeto B. Na porção final dos dois lados os extremos dos planes estão distanciados em milímetros. Onde há uma intersecção o distanciamento é, evidentemente, zero mm.
Ao compararmos as duas malhas no CloudCompare elas são pigmentadas com um espectro de cor que vai do azul até o vermelho. A imagem acima mostra os dois planes já pigmentados, mas devemos lembrar que são dois elementos distintos e a comparação é feita em dois momentos, um em relação ao outro.
Agora temos uma ideia mais clara de como funciona. Basicamente o que acontece é o seguinte, nós definimos um limite de distância, nesse caso 5mm. O que está “para fora” tente a ser pigmentado de vermelho, o que está “para dentro” tende a ser pigmentado de azul e o que está na intersecção, ou seja, na mesma linha, tende a ser pigmentado de verde.
Agora vou explicar a abordagem tomada nesse experimento. Veja que acima temos um elemento com a região central que tende a zero e as extremidades que estão setadas em +2 e -2mm. Na imagem não aparece, mas o elemento que utilizamos para comparar é um simples plano posicionado ao centro da cena, bem na região da base dos sinos em 3D, seja aos que “estão virados para cima” quando os que “estão virados para baixo”.
Como eu havia citado anteriormente nós é que definimos o limite de comparação. Inicialmente estava setado em +2 e -2mm. E se porventura, alterarmos esse limite para +1 e -1mm? Veja que isso foi feito na imagem acima, e a parte que está fora dos limites.
Para que essas partes fora do limite não atrapalhem na visualização, podemos apagá-las.
Resultando assim em uma malha que compreende apenas a parte de interesse da estrutura.
Para quem entende um pouco mais de modelagem 3D digital, é evidente que a comparação é feita a nível dos vértices e não das faces. Por conta disso é que temos um serrilhado nas extremidades apagadas.
Comparandos os crânios
A comparação feita foi a da FOTOGRAMETRIA vs. DIGITALIZAÇÃO A LASER com limites de +1 e -1 mm. Tudo o que se encontrava fora desse espectro foi apagado.
OpenMVG+PMVS
123D Catch
Ao colocar lado a lado todas as comparações, vemos que há uma forte tendência a zero, ou seja, os sete sistemas de fotogrametria são efetivamente compatíveis com a digitalização a laser!
Voltemos agora a discutir a questão dos tamanhos de arquivos. Uma coisa que sempre me incomodou nas comparações envolvendo resultados de fotogrametria foi a contabilização das subdivisões geradas pelos algoritmos que reconstroem as malhas. Como comentei acima, isso não faz muito sentido, posto que, no caso do crânio podemos simplificar a superfície e mesmo assim ela mantém as informações necessárias aos trabalho de levantamento antropológico e reconstrução facial forense.
Em face disso, decidi nivelar todos os arquivos, deixando-os compatíveis em tamanho e subdivisões. Para isso, tomei como base o menor aquivo que é o gerado pelo 123D Catch e utilizei o filtro Quadratic Edge Collapse Detection do MeshLab setado no valor de 25000. Isso resultou em 7 STLs com 1.3 MB cada.
Com esse nivelamento temos agora uma comparação visual JUSTA entre os sistemas de fotogrametria.
Acima podemos visualizar as etapas de trabalho. No campo “Original” estão perfilados os crânios inicialmente alinhados. Depois em “Compared” observamos os crânios apenas com as áreas de interesse mantidas e por fim, em “Decimated” temos os crânios nivelados em tamanho. Para um leitor desavisado até parece se tratar de uma mesma imagem colocada lado a lado.
Quando visualizamos as comparações em “solid” percebemos melhor o quão compatíveis todas elas são. Agora, vamos às conclusões.
Conclusão
A conclusão mais óbvia é que, no geral, com exceção do MVE que apresentou menos definição na malha, todos os sistemas de fotogrametria tiveram resultados visuais muito similares.
Isso significa que o MVE é inferior aos outros?
Não, muito pelo contrário. O MVE é um sistema muito robusto e prático. Em outra oportunidade apresentarei o seu uso em um caso de confecção de prótese com qualidade milimétrica. Além dessa caso ele também foi usado em outros projetos de confecção de próteses, um campo que pede muita precisão e ele foi bem sucedido. O caso até foi publicado no site oficial da Universidade Darmstadt, instituição que o desenvolve.
Qual é o melhor sistema de todo?
É muito difícil responder essa pergunta, pois depente muito do estilo de usuário.
Qual é o melhor sistema para usuários iniciantes?
Sem dúvida alguma é o Recap 360 da Autodesk ®. Trata-se de uma plataforma online que pode ser acessada de qualquer sistema operacional que tenha um navegador da internet com suporte a WebGL. Já fiz testes diretamente pelo meu smartphone e também funcionou. Nos cursos que ministro envolvendo fotogrametria, tenho utlizado essa solução cada vez mais, pois os alunos tendem a compreender o processo de modo muito mais rápido do que outras opções.
Qual é o melhor sistema para profissionais de modelagem e animação?
Eu indicaria o Photoscan da Agisoft ®. Ele conta com uma interface gráfica que possibilita dentre outras coisas criar uma máscara na região de interesse da fotogrametria, bem como permite limitar a área de cálculo reduzindo drasticamente o tempo de processamento da máquina. Além disso, exporta nos mais variados formatos, oferecendo a possibilidade de mostrar onde as câmeras estavam no momento que fotografaram a cena.
Qual é o sistema que você mais aprecia?
Bem, pessoalmente eu aprecio todos em determinadas situações. O meu predileto hoje em dia é a solução mista OpenMVG+OpenMVS. Ambos são de código aberto e podem ser acessados via linha de comando, permitindo-me controlar uma série de propriedades, adequando a digitalização à necessidade presente, seja ela reconstruir uma face, um crânio ou qualquer outra peça. Apesar de eu gostar bastante dessa solução ela apresenta alguns problemas, como por exemplo o desalinhamento das câmeras em relação aos modelos quando a cena de nuvem esparsa é importada ao Blender. Para resolver isso eu utlizo o PPT-GUI, que gera a nuvem esparsa a partir do Bundler e o match, ou seja, o alinhamento das câmeras em relação a nuvem é perfeito. Outro problema da dupla OpenMVG+OpenMVS é que eventualmente não gera uma nuvem densa completa, mesmo que a esparsa apresente todas as câmeras alinhadas. Para resolver isso utlizo o PMVS que, apesar de gerar uma malha menos densa que o OpenMVS, acaba sendo muito robusto e funcionado em quase todos os casos. Outro problema das opções de código aberto é a necessidade de compilar os programas. Tudo funciona muito bem nos meus computadores, mas quando tenho que repassar as soluções aos alunos ou interessados isso se converte em uma grande dor de cabeça. Para o usuário final o que importa é ter um software em que em um lado entrem imagens e de outro saia um modelo em 3D e isso é oferecido pelas soluções proprietário de modo objetivo. Além disso, as licenças dos modelos resultantes são mais claras nessas aplicações, eu me sinto mais seguro no campo de modelagem profissional, utilizando modelos gerados no Photoscan, por exemplo. Tecnicamente, você paga a licença e pode gerar modelos à vontade, utilizando-os em seus trabalhos. O que parece mais ou menos o mesmo caso com as soluções da Autodesk ®.
Agradecimentos
À Universidade Inca Garsilazo de la Vega por coordenar e patrocinar o projeto de reconstrução facial do Senhor de Sipán, responsável por me levar até Lima e Lambayeque no Peru. Muito obrigrado ao Dr. Eduardo Ugaz Burga e ao Msc. Santiago Gonzáles por toda a força e apoio. Agradeço ao Dr. Walter Alva pela confiança em abrir as portas do museu Tumbas Reales de Sipán para que pudessemos fotografar o crânio da figura histórica que leva o seu nome. Esse agradecimento se estende ao corpo técnico do museu: Edgar Bracamonte Levano, Cesar Carrasco Benites, Rosendo Dominguez Ruíz, Julio Gutierrez Chapoñan, Jhonny Aldana Gonzáles, Armando Gil Castillo. Agradeço ao Dr. Everton da Rosa pelo apoio às pesquisas, não apenas adquirindo uma licença do Photoscan para o mesmo fosse usado nos experimentos, mas absorvendo a tecnologia da fotogrametria em seus planejamentos de cirurgia ortognática. Ao Dr. Paulo Miamoto por apresentar brilhantemente os resultados dessa pesquisa durante o XIII Congresso Brasileiro de Odontologia Legal e o II Congresso Nacional de Antropologia Forense na Bahia. Ao Dr. Rodrigo Salazar por me aceitar em seu grupo de pesquisas relacionadas a reconstrução facial de vítimas de câncer, o que fez com que eu abrisse os olhos para muitas possibilidades relacionadas a fotogrametria no tratamento de humanos. Aos integrantes do grupo Animal Avengers, Roberto Fecchio, Rodrigo Rabello, Sergio Camargo e Matheus Rabello, por permitirem soluções baseada em fotogrametria em suas pesquisas. Ao Dr. Marcos Paulo Salles Machado (IML RJ) e aos integrantes do IGP-RS (SEPAI) Rosane Baldasso, Maiquel Santos e o Coordenador Cleber Müller, por adotarem o uso da fotogrametria na Perícia Oficial. A todos vocês o meu muito obrigado!
Cícero, em fevereiro desse ano eu já havia falado com o desenvolvedor do OpenMVG sobre o problema do CCD, e ele disse que o software pode, como os outros, usar auto-detecção, mas consegue melhor qualidade se você incluir qual o CCD usado. https://github.com/openMVG/openMVG/issues/477#issuecomment-188705776
Olá, bom dia!
Faltou incluir outro software no seu teste, o Pix4D (www.pix4d.com).
Eles fornecem um trial de 30 dias para a versão PRO e você pode “alugar” a licença por mês, conforme o uso.
O software tem uma veia mais voltada para o mapeamento com drones, mas faz modelos 3D também.
Uso diariamente na empresa!
Bom dia Cicero,
Antes de tudo parabéns pela ecxelente matéria sobre fotogrametria.
Em qual destes softwares é possivel gerar um mapa de bitmap com o arquivo do escaner 3D?