Qual o melhor software gratuito para fotogrametria, COLMAP ou Meshroom?

Se você chegou agora na fotogrametria, que é a técnica de construir modelos 3D a partir de fotos – e que você pode entender melhor nesse outro artigo aqui; deve estar procurando por um bom software para começar na técnica. Por outro lado, se você já tem uma certa prática, pode estar procurando uma alternativa para um software pago, como o 3DS Zephyr ou o Agisoft ou, ainda, pode estar tentando sanar alguma deficiência que o seu software favorito tenha apresentado. Ou, pode ainda, estar só dando uma olhada em outras opções.

Existe uma série de softwares gratuitos para fotogrametria, que vou comentar no final do artigo. Porém, a maioria deles é difícil de usar e acabaram não se popularizando. Nos últimos anos, no entanto, dois softwares livres têm se destacado no mercado, fazendo frente, inclusive, aos concorrentes pagos. Eles são o COLMAP e o Meshroom.

O COLMAP já é um software bem conceituado na área, tendo sido usado para projetos grandes, como uma maquete do centro de Roma. Sem sombra de dúvidas é muito robusto e que já mostrou o que é capaz. A alternativa mais à altura do COLMAP é o Meshroom. Ele é mantido por um grupo de pesquisadores franceses, e a sua maior inovação é a interface gráfica, que é muito mais intuitiva do que a do concorrente. Feitas as apresentações, vamos dar uma olhada em cada um deles.

COLMAP

O COLMAP é um dos softwares de fotogrametria mais conhecidos do mercado, e pode ser encontrado no site oficial. Aliás, aqui começa uma tradição que costuma ser uma barreira muito comum no software livre, que são os sites completamente desorganizados e praticamente impossíveis de entender por pessoas comuns. O primeiro desafio para usar o COLMAP é achar onde fazer o download do aplicativo.

Existem muitas versões do COLMAP e para os diversos sistemas operacionais: Windows, Linux e Mac. Nesse artigo, vou focar na versão para Windows. Depois, existem duas versões, que são a release e a pre-release. Essa última é uma versão mais atual, e também mais experimental, mas que é a recomendada pelo site do COLMAP. Dentro da pre-release, existem mais duas versões: uma para placas da Nvidia, compatível com CUDA, e outra para placas não-CUDA. (CUDA é uma tecnologia de processamento paralelo patenteado pela Nvidia e que tem se tornado o padrão da indústria. O concorrente é o OpenCL, que é a tecnologia usada pelas GPUs da Intel e da AMD).

Para facilitar a sua vida, a última versão disponível na data de publicação desse artigo é a 0.37. Se você tem uma placa da Nvidia, pode baixar a versão CUDA clicando aqui. Já a versão não-CUDA está disponível aqui. Depois de baixar o arquivo correspondente, você vai descobrir que ele não tem um instalador, o que também uma tradição no mundo dos softwares livres de fotogrametria. Para usá-lo, basta descompactar o arquivo em algum lugar. Eu coloquei em C:\COLMAP mesmo. Para executar o COLMAP, vá na pasta que você descompactou os arquivos e dê um clique duplo em COLMAP.bat. Abaixo está a interface do COLMAP, que parece da época do Windows XP.

COLMAP na prática

Para testar o COLMAP, usei os mesmos arquivos do tutorial de Meshroom, que você encontra aqui. A minha primeira impressão é que o software parece que veio dos anos 80, e que é preciso ler todo o manual para entender minimamente o que está acontecendo. Tive que dar uma olhada na documentação para fazer o primeiro modelo, enquanto o Meshroom foi tudo de primeira. O primeiro modelo também não ficou bom, e tive que dar uma boa olhada em tudo até descobrir que precisava usar o Delaunay para gerar o meshing.

Quando consegui gerar um bom meshing, a texturização também não ficou legal. Além disso, não dá pra ver o meshing dentro do próprio COLMAP, o que me obrigou a importar o modelo no Blender só para visualizar o resultado final. Outra desvantagem é que ele não tem nenhuma opção do tipo Bounding Box, que é uma caixa que limita o tamanho do modelo para criar um meshing mais detalhado de uma região menor. No exemplo da coluna, o ideal seria possível fazer o meshing só da coluna, excluindo todo o resto do ambiente.

Na prática, achei muito complicado e o resultado foi inferior. Talvez dê pra melhorar fuçando mais, mas é uma coisa que, como veremos, não compensa.

Meshroom

O Meshroom é outro software livre de fotogrametria que é extremamente bem conceituado. Inclusive, ele é indicado no curso de fotogrametria da pós-graduação da Universidade de Bohn, pelo Professor Cyrill Stachniss, que é um dos maiores especialistas do mundo no assunto. Esse curso está disponível no Youtube, é só clicar aqui. Porém, é preciso ter uma formação de álgebra linear e conhecimento de cálculo computacional para acompanhar o curso.

Voltando ao Meshroom, ele conta com versões para Linux e Windows, mas não tem suporte para Mac. A versão oficial requer uma placa de vídeo da Nvidia com suporte a CUDA e você pode baixar no site oficial. Existe uma versão não-oficial para outras GPUs, que é o Meshroom CL e que você encontra para baixar aqui.

As maiores vantagens do Meshroom, a meu ver, são a interface que é muito bem organizada e a quantidade de parâmetros que você pode mexer. Para saber todos os detalhes e saber como usar o Meshroom, você pode seguir esse tutorial que eu criei com todos os detalhes que você precisa saber para conseguir criar modelos 3D. A imagem abaixo é um modelo que criei com o Meshroom, que você pode ler mais nesse artigo aqui.

Meshroom na prática

Na prática, o grande ponto forte do Meshroom é que basta importar as fotos no software e clicar em Start para obter um bom modelo no final. Ele já vem redondinho de fábrica. Fora isso, por usar a lógica de pipeline, ele é muito intuitivo e em 15 minutos você já parece um profissional. Outro ponto positivo da interface é a possibilidade de visualizar o modelo texturizado final dentro do próprio Meshroom, ao contrário do COLMAP. Além disso, ele possui o Bounding Box, que permite já criar o modelo somente da região que interessa, como foi o caso do modelo acima.

De maneira geral, o Meshroom foi melhor em tudo e com muita facilidade para usar. É um software mais moderno, sem sombra de dúvidas. Já o MeshroomCL, que a opção para quem não tem uma GPU Nvidia, funciona muito bem, apesar de ser mais simples. Na verdade, o pipeline do MeshroomCL é até mais fácil de usar que a da versão normal. A desvantagem é que ela não tem o Bounding Box e os parâmetros são bem menos customizáveis, além da performance ser pior (as GPUs da Nvidia realmente não tem concorrência pra essas coisas). Aliás, não tenho certeza de onde li, mas o MeshroomCL é para ser uma implementação do COLMAP na interface do Meshroom, o que praticamente enterra o COLMAP.

Comparativo

Baseado na miha experiência nos dois softwares, criei uma tabela com um comparativo contendo alguns aspectos que considero mais importantes na hora do “vamos ver”.

COLMAPMeshroomQuem ganha?
DownloadConfuso, difícil de entender as versões e achar os links no site.Nenhuma maravilha, mas melhor que o do COLMAP.Meshroom
InstalaçãoSem instalador, basta descompactar e instalar.Sem instalador, basta descompactar e instalar.Empate
DocumentaçãoOs tutoriais do site são bem explicativosOs tutoriais não são lá aquelas coisas, mas dá pra entender.COLMAP
InterfaceEstilo antigo, confuso. O fluxo de trabalho não é nada claro. Não permite visualizar o meshing.Muito intuitivo e moderno, basta seguir o fluxo. Permite visualizar uma infinidade de coisas, inclusive as feições do SIFT.Meshroom
ParâmetrosBastante customizável, mas os parâmetros ficam espalhados em diálogos pela interface.Bastante customizável (até demais). Todos os parâmetros ficam organizados dentro dos módulos do pipeline.Meshroom
ModeloO modelo não sai pronto, especialmente o meshing. Os arquivos não são fáceis de encontrar sem ver a documentação.O modelo sai praticamente pronto. Os arquivos não são fáceis de encontrar sem ver a documentação e as pastas são nomeadas com um monte de números, que deixa a coisa ainda mais confusa.Meshroom
PerformanceLento. Usa mais a GPU mas é menos eficiente.Não tem o mesmo nível de performance que os pagos, mas é bem mais rápido que o COLMAP.Meshroom
HardwareTem versão oficial sem precisar de CUDA.A versão oficial precisa de CUDA. Existe uma versão não oficial para OpenCL.COLMAP

E, assim, o placar fica 5 a 1 para o Meshroom. Na verdade, nas minhas tentativas de usar o COLMAP, achei que ele não entrega um modelo final com a mesma qualidade que o Meshroom. Então, mesmo que tivesse perdido em outras coisas, teria escolhido o Meshroom de qualquer modo. Além disso, uma grande vantagem é a interface do Meshroom que, convenhamos, facilita até o entendimento de como funciona o algoritmo todo. O pipeline dá uma boa indicação visual de cada uma das etapas, deixa claro o que está sendo executado, em que ordem, etc.

Regard3D

Para não dizer que não falei de uma terceira opção, vai uma menção ao Regard3D, que é mais uma opção de código aberto. Pode ser baixado no site oficial, mas a última versão é de 2019, então ele já está bem desatualizado. Por outro lado, a instalação é bem simples e, ao contrário dos demais dessa lista, ele possui um instalador. A interface é relativamente fácil de usar, e dá pra descobrir como funciona em menos de 5 minutos. Ele não faz requerimento de GPU, mas todo o processamento é baseado na CPU. Então, ele pode ser uma boa opção para quem não tem uma GPU com CUDA.

Uma limitação é que o único algoritmo de reconhecimento de feições é o AKAZE, que não é lá aquelas coisas. Os outros, ao contrário, costumam ser baseado em SIFT, apesar de o Meshroom ter as duas opções mais algumas outras. Só que tenho que ser honesto, tentei montar um modelo e não consegui. Mas fica aí a sugestão.

Outras opções

Alguns outros softwares que você pode tentar são o MicMac, Multi-View Environment, OpenMVG e VisualSFM. No entanto, ou eles são especificamente feitos para pesquisa ou implementação em robótica, ou seja, não são amigáveis para o usuário comum, ou estão defasados demais – ou as duas coisas. Mas, como conhecimento nunca é demais, não faz mal saber que eles existem.

Fábio Ardito

Pelo mundo atrás de treta.

Deixe um comentário