Comparando 7 Sistemas de Fotogrametria 3D. Qual se Saiu Melhor? =============================================================== .. figure:: images/Compara_7.jpg :align: center O mesmo crânio digitalizado com sistemas distintos de fotogrametria. Introdução ---------- Quando explicamos às pessoas que a fotogrametria é um processo de digitalização 3D a partir de fotografias, sempre recebemos 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 apresentarmos 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 somos surpreendidos por um olhar de desconfiança. Felizmente, a nossa equipe `apresentou um pôster `_ 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 3D de ponta :cite:`DiasPEM2013`. Assim como o mercado de scanners 3D, 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?* Essa pergunta é mais difícil de responder, até porque depende muito da situação. Mas, pensando nisso e em face de uma série de abordagens que tomamos ao longo do tempo, decidimos responder da forma que julgamos mais ampla e justa possível, foi assim que surgiu esse material. .. important:: Esse texto fora escrito antes da implementação do *add-on* OrtogOnBlender e serviu como base para a escolha dos sistemas de fotogrametria fornecidos por ele. Julgamos importante a colocação do mesmo na obra, para que o leitor compreenda os caminhos percorridos para o desenvolvimento da ferramenta, ao passo que se inteirasse do processo de fotogrametria como um todo. O Crânio do Senhor de Sipán --------------------------- Em julho de 2016 um dos autores viajou até Lambayeque, no Peru, onde ficou frente a frente com o crânio do Senhor de Sipán, um importante rei de uma antiga civilização peruana. Ao analisá-lo percebeu que seria possível `reconstruir a sua face `_ utilizando a técnica de reconstrução facial forense :cite:`Cti2017`. O crânio, no entanto, estava quebrado e deformado (Fig. 2) por conta dos anos de pressão ao qual sofrera em sua tumba encontrada completa em 1987, um dos maiores feitos da arqueologia do séc. XX, protagonizado pelo Dr. Walter Alva :cite:`LuisChero2009`. .. figure:: images/006.jpg :align: center Algumas das 46 fotos tiradas com uma Canon EOS 60D. O fotógrafo profissional Raúl Martin, do Departamento de Marketing da Universidade Inca Garcilaso de la Vega tomou 96 fotos com uma câmera Canon EOS 60D. Dessas todas, selecionamos 46 imagens para proceder com o experimento. .. figure:: images/015.jpg :align: center Especialista do Ministério da Cultura do Peru iniciando o processo de digitalização do crânio (ao centro), sob a observação do autor Cicero Moraes. 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 recebemos os dados do scanner a laser todos os modelos levantados por fotogrametria estavam prontos. .. figure:: images/Sipan1.png :align: center Nuvem de pontos completa importada no MeshLab depois da conversão efetuada no CloudCompare .. figure:: images/3D_scanner.jpg :align: center Malha 3D reconstruída a partir de uma nuvem de pontos. Vertex Color (acima) e superfície com apenas uma cor (abaixo). As nuvens de pontos resultantes do escaneamento eram arquivos .LAS e .E57. O software CloudCompare oferece a possibilidade de importar arquivos .E57.Uma vez aberto foi exportado como .PLY, importado no MeshLah (Fig. 4) e então reconstruída a malha 3D através do algoritmo Poisson (Fig. 5). Como apresentado na imagem (Fig. 4) 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 trataremos desses detalhes aqui, posto que o escopo é outro. Sistemas de Digitalização 3D Escolhidos --------------------------------------- OpenMVG + OpenMVS (VGVS) ~~~~~~~~~~~~~~~~~~~~~~~~ `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. .. important:: Quando este documento foi escrito, em 2016 o OrtogOnBlender não existia e, logo, não oferecia as versões compiladas para cada sistema operacional. Na verdade, o fato de se tratar de um programa disponível em código fonte se mostrou um alemento a favor, posto que permite criar executáveis para o Linux, Windows e Mac OS X. OpenMVG + PMVS (PM) ~~~~~~~~~~~~~~~~~~~~~ **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. MVE (MVE) ~~~~~~~~~ `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. * **Contra**: Precisa ser compilado para gerar um executável ao sistema operacional escolhido. Photoscan (PHO) ~~~~~~~~~~~~~~~ `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. * **Contra**: A versão completa (com redimensionamento semiautomático) do software custa US$ 3499! .. important:: O software Photoscan passou a ser chamado de Metashape. Recap 360 (360) ~~~~~~~~~~~~~~~ `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. * **Contra**: Não oferece acesso às etapas de criação do modelo (nuvem esparsa e nuvem densa de pontos). .. important:: O Recap 360 online foi descontinuado, a versão atual chamada de Recap passou a ser paga (com versão *trial* disponível) e offline. 123D Catch (123) ~~~~~~~~~~~~~~~~ `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. * **Contra**: Não oferece acesso às etapas de criação do modelo (nuvem esparsa e nuvem densa de pontos). .. important:: O 123D Catch foi descontinuado, no site da Autodesk® são oferecidas soluções alternativas para o software. PPT-GUI (PPT) ~~~~~~~~~~~~~ **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. Descritivo do Computador ~~~~~~~~~~~~~~~~~~~~~~~~ * CPU: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz; * RAM: 11.70 GB Physical Memory 0B Virtual Memory; * OS: Xubuntu 16.04 (x86_64); * GPU: NVIDIA Corporation GF116 [GeForce GTS 450 Rev. 2]; .. list-table:: Tabela de Resultados :header-rows: 1 * - - **VSVG** - **PM** - **PHO** - **MVE** - **360** - **123** - **PPT** * - **Nuvem esparsa** - SIM - SIM - SIM - NÃO - NÃO - NÃO - SIM * - **MeshLab Blender** - SIM - SIM - SIM - SIM - SIM - SIM - SIM * - **Nuvem densa** - SIM - SIM - SIM - SIM - --- - --- - NÃO * - **Nuvem densa** - ÓT. - BOA - ÓT. - ÓT. - --- - --- - BOA * - **Vertex Color** - SIM - SIM - SIM - SIM - NÃO - NÃO - SIM * - **Text. imagem** - SIM - NÃO - SIM - SIM - SIM - SIM - SIM* * - **Text. auto.** - SIM - NÃO - SIM - SIM - SIM - SIM - NÃO * - **Qual. text.** - ÓT. - --- - ÓT. - BOA - ÓT. - ÓT. - ÓT.* * - **CCD auto.** - NÃO - NÃO - SIM - SIM - SIM - SIM - NÃO * - **Tempo** - MÉD. - MÉD. - LEN. - RÁP. - RÁP. - RÁP. - LEN. * - **Sistemas** - L-W-M - L-W-M - L-W-M - L-W-M - Online - L-W-M - L-W * - **Malha 3D** - ÓT. - ÓT. - ÓT. - REG. - ÓT. - ÓT. - ÓT.* \* Indiretamente, com o MeshLab. \** Rodando com o Wine. Na **Tabela de Resultados** vemos concentrandos 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. .. list-table:: Tabela de Tempo de Processamento :header-rows: 1 * - - **VSVG** - **PM** - **PHO** - **MVE** - **360** - **123** - **PPT** * - **Tempo proc.** - 1h 02m - 28m - 1h 44m - 1h 11m - 30m* - 15m* - 40m \* Processamento remoto. 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). .. figure:: images/Alinhamento.png :align: center Alinhamento baseado em pontos compatíveis .. figure:: images/Alinhamento2.png :align: center Crânios alinhados Todas a malhas foram importadas ao Blender e alinhadas a digitalização a laser (Fig. 6 e 7). .. figure:: images/TODOS_TEX_SOL_WIR.jpg :align: center Tabela visual de fotogrametrias. Na imagem da tabela visual de reconstruções (Fig. 8) temos uma panorama de todas as malhas lado a lado. 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 tende a nos enganar em relação a qualidade do escaneamento, em face disso, nesse experimento decidimos ignorar os resultados com textura e focar na superfície 3D. Assim sendo, exportamos todos os modelos originais no formato .STL, que é sabido, não tem informações de textura. .. figure:: images/mvs_recap.jpg :align: center Comparação entre dois sistemas de fotogrametria. Olhando bem de perto veremos que em se falando de superfície, um resultado mais denso no final fica consideravelmente compatível com um resultado menos denso de subdivisões na malha (Fig. 9). O objetivo final da digitalização, ao menos nos nossos 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, quanto menos faces tem uma malha 3D, mais rápido será o processamento na edição. .. list-table:: Tabela de Tamanho dos Arquivos Gerados :header-rows: 1 * - - **VSVG** - **PM** - **PHO** - **MVE** - **360** - **123** - **PPT** * - **Bruto (MB)** - 82.2 - 97.9 - 84.5 - 13.1 - 8.2 - 4.2 - 39.5 * - **Limpo (MB)** - 38.4 - 57.3 - 15.1 - 4.1 - 5.1 - 2.2 - 13.6 Se nos atentarmos para os dados na **Tabela de Tamanho dos Arquivos Gerados** (.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, percebemos 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. Supomos que tanto o Recap 360 quanto o 123D Catch geram malhas complexas e 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). Em breve voltaremos a discutir essa situação envolvendo a simplificação de malhas, vamos agora às comparações. .. _Como_Funciona_comparacao_malhas: Como Funciona a Comparação de Malhas 3D --------------------------------------- Uma vez que todos os crânios foram limpos e alinhados ao arquivo gerado no scanner a laser é chegado o momento de comparar as malhas no `CloudCompare `_. Mas como funciona essa tecnologia de comparação de malhas 3D? Para ilustrar, criamos alguns elementos didáticos. .. figure:: images/DidaticoComp.png :align: center Modelo didático de comparação de malhas. Esse elemento didático (Fig. 10) trata-se de dois *planes* com superfícies de espessura 0 (isso é possível em modelagem digital 3D) formando um X. .. figure:: images/Didatico2.png :align: center Modelo didático de comparação de malhas - informação esquemática. Temos então o objeto A e o objeto B (Fig. 11). Nas porções finais dos dois lados os extremos dos planes estão distanciados em milímetros. Onde há uma intersecção o distanciamento é, evidentemente, zero mm. .. figure:: images/Didatico3.png :align: center Modelo didático de comparação de malhas - mapa de cor. Ao compararmos as duas malhas no CloudCompare elas são pigmentadas com um espectro de cor que vai do azul até o vermelho (Fig. 12). .. figure:: images/Didatico4.png :align: center Modelo didático de comparação de malhas - elementos individuais. São dois elementos distintos e a comparação é feita em dois momentos, um em relação ao outro (Fig. 13). 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” tende 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. .. figure:: images/Compara4.png :align: center Exemplo de comparação - completo. Agora vamos explanar a abordagem tomada neste experimento. Temos um elemento com a região central que tende a zero e as extremidades que estão setadas em +2 e -2mm (Fig. 14). Na imagem não é visível, 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, tanto os que “estão virados para cima” quanto os que “estão virados para baixo”. .. figure:: images/Compara5.png :align: center Exemplo de comparação - distância reduzida. Como haviamos 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 (Fig. 15) e a parte que está fora dos limites está pigmentada de cinza. .. figure:: images/Compara6.png :align: center Exemplo de comparação - limite apagado. Para que essas partes fora do limite não atrapalhem na visualização, podemos apagá-las (Fig. 16). .. figure:: images/Compara7.png :align: center Exemplo de comparação - limite apagado. Resultando assim em uma malha que compreende apenas a parte de interesse da estrutura (Fig. 17). 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. .. figure:: images/OpsnMVG_OpenMVS_vs_Laser.png :align: center OpenMVG+OpenMVS vs. Escaneamento a Laser. OpenMVG+OpenMVS (Fig. 18). .. figure:: images/OpenMVG_PMVS_vs_Laser.png :align: center OpenMVG+PMVS vs. Escaneamento a Laser. OpenMVG+PMVS (Fig. 19). .. figure:: images/Photoscan_vs_Laser.png :align: center Photoscan vs. Escaneamento a Laser. Photoscan (Fig. 20). .. figure:: images/MVE_vs_Laser.png :align: center MVE vs. Escaneamento a Laser. MVE (Fig. 21). .. figure:: images/Recap360_vs_Laser.png :align: center Recap 360 vs. Escaneamento a Laser. Recap 360 (Fig. 22). .. figure:: images/123D_vs_Laser.png :align: center 123D Catch vs. Escaneamento a Laser. 123D Catch (Fig. 23). .. figure:: images/PPT_gui_VS_Laser.png :align: center PPT-GUI vs. Escaneamento a Laser. PPT-GUI (Fig. 24). .. figure:: images/Tabela_3.png :align: center Comparação dos levantamentos. Ao colocarmos lado a lado todas as comparações (Fig. 25), 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! .. list-table:: Tabela Completa de Tamanho dos Arquivos :header-rows: 1 * - - **VSVG** - **PM** - **PHO** - **MVE** - **360** - **123** - **PPT** * - **Bruto (MB)** - 82.2 - 97.9 - 84.5 - 13.1 - 8.2 - 4.2 - 39.5 * - **Limpo (MB)** - 38.4 - 57.3 - 15.1 - 4.1 - 5.1 - 2.2 - 13.6 * - **Excl +1 -1mm (MB)** - 33.4 - 51.8 - 9.4 - 3.2 - 4.0 - 1.4 - 11.9 * - **Simplificado (MB)** - 1.3 - 1.3 - 1.3 - 1.3 - 1.3 - 1.3 - 1.3 Voltemos agora a discutir a questão dos tamanhos dos arquivos. Uma coisa que sempre nos incomodou nas comparações envolvendo resultados de fotogrametria foi a contabilização das subdivisões geradas pelos algoritmos que reconstroem as malhas. Como abordado 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 ou reconstrução facial forense. Em face disso, decidimos nivelar todos os arquivos, deixando-os compatíveis em tamanho e subdivisões. Tomamos como base o menor aquivo que foi o gerado pelo 123D Catch e utilizamos o filtro **Quadratic Edge Collapse Detection** do MeshLab setado no valor de 25000. Isso resultou em 7 STLs com 1.3 MB cada (Tabela Completa de Tamanho dos Arquivos). Com esse nivelamento temos agora uma comparação visual justa entre os sistemas de fotogrametria. .. figure:: images/COM_WIRE_TODOS.jpg :align: center Tabela visual comparativa entre todos os modelos - *wireframe*. Na tabela visual comparativa (Fig. 26) podemos visualizar as etapas de trabalho. No campo **Original** estão perfilados os crânios inicialmente alinhados, 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. .. figure:: images/COM_WIRE_SOLID_TODOS.jpg :align: center Tabela visual comparativa entre todos os modelos - *solid*. Quando visualizamos as comparações em *solid* percebemos melhor o quão compatíveis todas elas são (Fig. 27). 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. O MVE é um sistema muito robusto e prático. Nossa equipe inclusive chegou a utilizá-lo na confeção de `prótese veterinária `_, um trabalho que exige muita precisão e o mesmo fora bem sucedido. :cite:`G1MT2016` *Qual é o melhor sistema de todos?* É muito difícil responder essa pergunta, posto que 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. *Qual é o melhor sistema para profissionais de modelagem e animação?* Neste quesito indicamos 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, também 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 a nossa equipe mais apreciou?* Apreciamos todos em determinadas situações. O nosso predileto atualmente é a solução mista OpenMVG+OpenMVS. Ambos são de código aberto e podem ser acessados via linha de comando, permitindo-nos 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. 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 levar um dos autores até Lima e Lambayeque, no Peru. Agradecemos ao Dr. Eduardo Ugaz Burga e ao Msc. Santiago Gonzáles por toda a força e apoio. Agradecemos 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 e Armando Gil Castillo. A todos vocês o nosso muito obrigado! .. .. bibliography:: references_compara_7.bib