DesignOpen source

Computação Gráfica 3D com Software Livre Aplicada às Ciências da Saúde

Hoje eu vou compartilhar com vocês um conteúdo extremamente rico produzido pelo meu grande amigo Cícero Moraes, um dos maiores referências mundiais em reconstrução facial utilizando softwares 3D de código aberto, como o Blender. Confira agora a história que o Cícero tem pra te contar:

Sempre gostei de aprender coisas novas e também de compartilhar os conhecimentos adquiridos. Desde 1996 quando fiz meu primeiro curso envolvendo informática (operador de microcomputador) eu sabia que a computação gráfica iria revolucionar com as suas inúmeras possibilidades.

No final dos anos da década de 1990 não haviam muitas possibilidades didáticas. A internet não era tão ampla como agora, ainda mais na cidade em que eu vivo, então sites como o Youtube e outros que ajudam na compreensão de qualquer tema estavam fora de cogitação. Era necessário aprender pelos manuais, estes escritos em inglês, um idioma que eu não compreendia e claro, a outra opção era por tentativa e erro.

Neste cenário, os programas que se destacavam eram os mais acessíveis e fáceis. Me lembro que conheci um tal de Floorplan Plus 3D, que cabia em um disquete e permitia que modelássemos uma casa em 2D e ao mesmo tempo ela era convertida em uma cena tridimensional. Era fantástico, mas as pessoas queriam mais, não bastava um 3D com aspecto de desenho, a clientela desejava sombras, brilhos e reflexões.

Diante disso estendi os estudos e cheguei até o Corel Dream 3D. Com ele eu pude criar cenas com sombra e textura, o que causou grande espanto na época e me proporcionou os primeiros ganhos com computação gráfica 3D.

Depois disto estudei o 3D Studio Max e outras ferramentas, mas conforme o tempo ia passando, mais claro ficava o fato de que eu não poderia participar de tudo aquilo, ao menos da forma que eu desejava.

No início dos anos 2000 tomei conhecimento do Linux e fiquei maravilhado. A minha primeira experiência não foi das melhores, posto que mal consegui mexer no sistema, mas não desisti e em 2005 passei a usar apenas ele nos meus computadores.

Sou muito grato a área de arquitetura, afinal foi o meu ganha pão durante muitos anos. No entanto eu queria mais desafios, passei para a área de publicidade e finalmente em 2011, depois de um episódio traumático onde reagi a um assalto e tomei um tiro de raspão na cabeça, decidi me dedicar ao campo de reconstrução facial forense, este me abriu muitas portas em projetos ligados a arqueologia e pavimentou a estrada rumo às ciências da saúde.

Em 2014 conheci o Dr. Everton da Rosa, um cirurgião bucomaxilo que me procurou para aprender a trabalhar com o Blender e utilizá-lo no planejamento de cirurgias ortognáticas, procedimentos que corrigem deformações faciais em adultos.

Essa parceria foi evoluindo e conforme postavamos os nossos progressos, muitos colegas do Dr. Everton começaram a pedir por cursos. Assim o fizemos e criamos o primeiro Curso Prático de Computação Gráfica Aplicada às Ciências da Saúde.

Os problemas

Tudo correu muito bem com o curso, mas percebemos que o pessoal da área da saúde sofria um pouco para absorver o conteúdo. Não que lhes faltasse capacidade, pelo contrário, o problema estava muito mais atrelado a falta de tempo. Todo mundo que já estudou computação gráfica, sabe que dedicação e convivência com os programas são necessários para o seu domínio.

O que vemos, ao menos no Brasil, é um quadro onde os especialistas da área da saúde precisam trabalhar em vários empregos e também cuidar dos seus consultórios. Sobra pouco tempo para se dedicarem a uma ferramenta nova e diga-se de passagem, o mercado de tecnologia muda muito rapidamente e é impossível acompanhar todas as possibilidades que ele apresenta.

Para resolver essa questão comecei a criar uma série de arquivos pré configurados para o curso. Isso eu fazia desde 2001, quando comecei a ministrar cursos de informática. Mas apenas fornecer esses arquivos não resolvia o problema da absorção de conhecimento.

Vou explanar melhor. Imagine que um especialista pretenda fazer um planejamento de cirurgia facial. Ele vai precisar primeiramente, converter uma tomografia computadorizada em uma superfície 3D correspondente a anatomia desejada, por exemplo, pele e ossos.

A maioria das tomografias digitais são arquivos DICOM, uma sequência de imagens em escala de cinza que contém fatias de áreas determinadas do corpo. Neste caso, o especialista recebe a tomo (tomografia) da cabeça do seu paciente. Essa tomo nada mais é do que uma matriz tridimensional composta por uma série de imagens “empilhadas” conhecida como voxel data. Grosso modo, as partes mais duras como os ossos são claras, as partes mais vazias ou menos duras tendem a ser mais escuras. Então, escolhendo uma área de interesse, levando em conta essa intensidade, é possível filtrar uma parte específica da anatomia.

A primeira coisa que o especialista precisará fazer é abrir essa tomo em um software de visualização e reconstrução 3D. Em seguida ele seleciona a área de interesse, segmenta esta área e finalmente gera o 3D dela. Depois ele precisa exportar este arquivo e importar dentro do Blender para proceder com as osteotomias, que nada mais são do que cortes nos ossos.

Até aí tudo bem, difícil mas não impossível. O problema é que estamos falando de malhas 3D orgânicas advindas de reconstrução tomográfica… elas são pesadíssimas e os cálculos de corte que são efetuados através de booleanas não funcionam com as ferramentas nativas do Blender, que foram projetadas para gráficos menos complexos.

Como resolver isso? Simples, buscando uma alternativa externa. Neste caso através do programa standalone de cálculos booleanos chamado Cork. Trata-se de um programa acessado por linha de comando que procede com booleanas complexas e realmente dá conta do recado. O problema mora justamente na parte da linha de comando, ensinar isto a profissionais da saúde que nunca haviam trabalhado com 3D é desgastante tanto para eles quando para o professor.

Você, caro leitor, está compreendendo o tamanho do problema? Pois é, nós não apenas compreendemos ele, mas o vivemos na pele.

Uma atividade que era para ser rápida, como importar uma tomo e começar a trabalhar com ela se convertia em uma atividade sem fim e olha que isto não se tratava nem do começo do procedimento total, que ainda envolvia a movimentação destas partes e a gravação da dinâmica para o estudo da abordagem cirúrgica, bem como a criação de guias que auxiliariam os profissionais a saberem exatamente onde deveriam cortar nos ossos.

O primeiro addon a gente nunca esquece

Eu sempre gostei de programação. Nunca havia me envolvido seriamente com ela, mas não deixava de ler acerca desta tecnologia, familiarizando-me com os conceitos abordados.

Um belo dia, depois do nosso primeiro curso de 3D voltado às ciências da saúde, resolvi tentar empilhar os comandos mais utilizados em um canto da interface do Blender. Após anos e anos ministrando cursos eu sabia muito bem das dificuldades do alunos e o objetivo era colocar em um espaço quase tudo o que eles precisavam.

Assisti a uma série de vídeo tutoriais, li bastante sobre o assunto e fui montando aos trancos e barrancos essa pequena interface. Os dias foram passando e percebi que poderia estender as capacidades do nosso humilde addon. Mais do que simplesmentes empilhar botões, comecei a agrupar funções em um único botão.

Por exemplo, a maioria dos profissionais de saúde pretender imprimir o resultado dos seus trabalhos para estudá-los melhor. Muita gente acha que basta pegar qualquer volume 3D e enviá-lo para uma impressora e esta o materializará diretamente, mas as coisas não funcionam assim. O arquivo precisa passar por um tratamento que basicamente limpa qualquer incongruência da superfície a “fecha todos os buracos” para então sim, seguir para a impressão.

No Blender é possível limpar uma malha por via de um modificador chamado Remesh. Com ele a superfície é convertida em uma série de planos de 4 lados, as partes que estão separadas podem ser apagadas e o objeto fica pronto para ser impresso.

O que fiz no addon foi criar um botão que atribui ao objeto selecionado o comando Remesh já com todas as configurações necessárias para permitir uma boa impressão.

Agora, vamos imaginar a solução para o problema proposto mais acima, quando discutimos as dificuldades de se importar uma tomo e se proceder com as osteotomias. Além de podermos agrupar uma série de comandos em um botão, também podemos criar sequências de comandos que inclusive, chamam programas externos.

Isso é possível por que o Python, que é a linguagem de scripts do Blender, conta com uma série de bibliotecas para os mais diversos fins. Um deles é a possibilidade de executar aplicativos externos já com os argumentos necessários, como se fosse diretamente pela linha de comando, ou seja, podemos criar um botão que “faz coisas que o Blender não faz” como importar arquivos DICOM diretamente em 3D e também proceder com cortes complexos utilizando um algoritmo robusto de boolean!

Foi justamente o que fizemos no addon OrtogOnBlender.

O OrtogOnBlender

O OrtogOnBlender funciona como uma lista composta com a sequência de passos a ser seguida pelo especialista. Ele está em constante evolução e por conta disto, decidimos focar a documentação em arquivos editáveis e centralizados, de modo que o usuário sempre terá ao seu alcance informações atualizadas acerca do addon.

NCQZKIumjiAyrooQOZukC3oLVb3nTzVLym82q6uBJ2paXu6Ml LPpnhOzwd6n RT3UFKB8nWn3LOoPhnAx1uhX

Para baixá-lo, acesse esse link: https://github.com/cogitas3d/OrtogOnBlender

Para instalar no Windows, há um passo a passo que também pode ser seguido pelos usuários do Linux: https://goo.gl/hZvakD

Abaixo, segue uma descrição inédita acerca das seções do addon.

Importa Tomo

Como abordado acima, antes de iniciarmos o planejamento cirúrgico é necessários reconstruirmos as peças de interesse a partir de uma tomografia computadorizada.

Há tempos atrás essa tarefa era composta de muitas etapas, o que se mostrava bastante cansativo para aqueles que estavam iniciando com os estudos. Depois de muita pesquisas e testes, encontramos o Dicom2Mesh, uma aplicação que reconstrói um STL (formato de arquivo 3D) a partir de uma sequência de arquivos DICOM. Parece mágica! Mas claro, é pura tecnologia. Com uma linha de comando você informa onde está o diretório dos arquivos DICOM, qual a área de interesse desejada e qual será o arquivo de saída.

Importa Tomo

ꔷ Reconstrução da Tomografia

   ꖴ O que fizemos foi criar uma sequência de comandos que geram o 3D a partir do Dicom2Mesh, importam para o Blender e ainda parenteiam a pele ao ossos, assim, quando o usuário move o crânio a pele o acompanha, ainda que esta seja um objeto independente.

ꔷ Referências Gráficas

  ꖴ Trata-se de um conjunto de linhas que, apesar de parecer simples para um usuário contumaz de programas de modelagem 3D, é complicado de se configurar por parte de um iniciante, ao passo que se torna indispensável para o mesmo no tocante a alinhar o crânio a um plano conhecido.

Importa Tomo 3D/Moldes

Há casos em que o usuário do addon ou prefere reconstruir a malha em um programa externo como o Slicer 3D a afins, ou já conta com esta malha reconstruída. Ele pode então importar o arquivo que quase sempre se trata de um STL.

VFJ vWOnYr8rNmly 4ilM96n7dimvXbvRRBFm8UNLwSs6BBiW 9xsqtFh0Nfq0eYWwT12CS3lR OaGQx6yfTNCChnXCLYKJEJECsPy1BfbKQ64tTeasQ2tWvLAbt5zLyyoxVeJ Q

Mais do que isso, esta seção também serve para importar moldes das arcadas superior e inferior. No planejamento de Ortognática isto muitas vezes é necessário, posto que os dentes reconstruídos através da tomografia podem apresentar distorções causadas por restaurações ou aparelhos dentários.

Zoom Cena

Uma das primeiras coisas que um usuário de programas de modelagem 3D aprendem é justamente as ferramentas de zoom a visualização de cena.

fOu 1bFDIqhBl66UoFc6eVgnmAibNw3ETelw7ZljLRsrh4zEyGeFPfmL19CBGS47IQKINgM0LwO0fuANqi0DUpD5c6hW DpIQKTkgUoKwKuvq mGyxM ZaNQ1C9zNfnsA V

No entanto, nem sempre os sistemas operacionais permitem o uso do mouse ou teclas de atalho como deveriam. Soma-se isso ao fato de alguns teclados não contarem com o teclado numérico lateral, que é essencial para os comandos de zoom e visualização.

A interface do Blender permite que movamos as seções para cima e para baixo, isso possibilita ao usuário manter as ferramentas de visualização sempre próximas a etapa de trabalho atual.

Cria Fotogrametria

Trata-se de outro destaque do OrtogOnBlender. Basta setar o diretório onde se encontram as fotografias da face e clicar no algoritmo desejado que a digitalização por fotogrametria acontece automaticamente.

O addon então importa o arquivo resultante e ainda centraliza o zoom na peça escaneada.

ꔷ Iniciar Fotogrametria

   ꖴ Ao clicar neste botão os cálculos de fotogrametria são feitos por uma solução conjunta entre o OpenMVG e o OpenMVS.

ꔷSMVS+ Meshlab

   ꖴ Ao clicar neste botão os cálculos de fotogrametria são feitos por uma solução conjunta entre o MVE/SMVS e o Meshlab.

Por que oferecer estas duas opções e não apenas uma?

Por que nem sempre uma ferramenta funciona em todas as situações. Oferecer duas opções permite ao usuário um número maior de chance de sucesso. Por exemplo, para digitalizar faces o SMVS oferece melhores resultados na maioria das vezes. Quando falamos em digitalização de objetos como moldes e crânios, o OpenMVG+OpenMVS tem se saído melhor.

Para ilustrar melhor seguem dois experimentos envolvendo as ferramentas fornecidas pelo addon comparadas a aplicações fechadas.

ꔷ Protocolo Geral para Digitalização de Faces Voltado ao Planejamento de Cirurgia Ortognática e Rinoplastia – Comparação entre Ferramentas

https://docs.google.com/document/d/1POKo944jEG6s6QzqDHJcUVVjPuB83fibC8Y3_-wN35w/edit?usp=sharing (MORAES e DA ROSA, 2018)

ꔷ Poderia a fotogrametria aberta ser uma alternativa para a Ortodontia 3D?

https://docs.google.com/document/d/1r6PA74dkLy5BTsHPAXe0SEScVpW4zSSMXjC9DLBIIpk/edit?usp=sharing (MORAES e OLIMPO, 2018)

Alinha Faces

As ferramentas de fotogrametria livre fornecem excelentes resultados, no entanto elas são deficientes no quesito alinhamento e redimensionamento. Pensando justamente em como resolver o problema é que essa seção foi criada.

zubD0HEJzRK1nDAPETFr F0gvWWCABiv ttvQu3

ꔷ Alinhamento e Redimensionamento

 ꔷ É dividido em três passos. O usuário entra em modo de edição e seleciona três pontos da face. Os dois primeiros são de uma medida conhecida, como a distância entre os limites dos olhos, por exemplo.

 ꔷ Alinha com a câmera: Ao clicar no botão o triângulo criado pelos três pontos é alinhado com a câmera, então sabemos que esse objeto é o parâmetro de alinhamento.

ꔷ Medida Real: Aqui o usuário coloca a medida real da distância em mm.

ꔷ  Alinha e redimensiona: Sabendo o parâmetro de alinhamento e o de escala, o objeto é finalmente alinhado em relação a origem global (0,0,0) e redimensionado para a escala real.

ꔷ Alinha por Pontos

ꔷ Aqui o usuário alinha a face escaneada por fotogrametria com a face reconstruída da tomografia computadorizada.

Por que alinhar uma estrutura que já existe? Simples, a estrutura advinda da tomografia não contém textura. Já o modelo digitalizado por fotogrametria contém a textura da face do paciente. Mesmo que se trate do mesmo rosto, a ausência de textura causa estranheza posto que faltam informações acerca da estrutura facial do paciente. É como comparar um rosto real com uma estátua monocromática. Em outros programas o usuário pode projetar uma foto na tomografia, mas isso implica em possíveis problemas, o principal deles é que uma foto frontal não contém informações da laterais e algumas regiões podem “escorrer” causando estranheza também. Além do mais, a fotogrametria é tão simples e a textura fica tão boa, que torna a projeção de imagens algo desnecessário.

Importar Fotogrametria

O addon oferece a opção do usuário importar uma fotogrametria, ou mesmo digitalização efetuada em software externo.

ajG xJF4hf2gYcBimmx6TuahvjLgfY vuAw Xp2IsX4Qw3zb WwHZbRimOZLmor0akZ XHqMquElaq5I4wt6OHiLePJuYsns veYhlo9eFb6CMQ1Kle82imgV1cCkyXDVohs4Ric

Além disso, depois de gerada ou importada a digitalização, é necessário selecionar a região de interesse. A forma mais fácil é criar um círculo lateral que servirá de parâmetro para um corte.

O addon não apenas secciona a malha facial, como automaticamente apaga os excessos e o círculo criado.

Importar Cefalometria

R1tAdF lNDJ2D91N0USz4y3L cu81g4sAmaCGz82zGy8

No planejamento de cirurgia ortognática não há um consenso sobre o melhor método de alinhamento da cabeça. Em face disto, colocamos à disposição do usuário a possibilidade deste importar uma imagem da cefalometria digital, de modo que a utilize como parâmetro de alinhamento.

Osteotomia

Esta seção contém as ferramentas de osteotomias ou cortes nos ossos. É através destes cortes que os especialistas poderão reconfigurar a face do paciente de modo a solucionar problemas respiratórios e estruturais.

WhbeDbfIq65RjHsZaM0LIOkkbTp c3cJUTRLQYBx dob66YXFjq4J8ITerv 2zDc9h5HTQO7ziPw B8jQObTVh0op17TSv3lZRSMQVochwyRIUu2QtvY 5ayUto14O2abTBOS4dQ

A primeira parte agrupa uma série de botões que criam planos de cortes pré-definidos. O usuário também poderá proceder com os cálculos booleanos e ainda separar as osteotomias automaticamente.

A segunda parte é composta pelas ferramentas de configuração das osteotomias. O usuário não apenas nomeia e pigmenta cada uma delas, mas já as atrela a dinâmica do mole.

Dinâmica do Mole

Esta é uma das menores seções, mas que curiosamente contém o maior trecho de código.

QjIgEbuHTUOqofAlMvdZocM59TK9Ka

Isto se explica por que botão “Configura Dinâmica Mole” agrupa uma sequência complexa de comandos que criam áreas de influência e deformação na face tomando como referência o volume das osteotomias.

É fascinante atestar que anos de estudo puderam se resumir em apenas um clique.

Criação do Splint

A referência que o cirurgião tem para fazer os cortes e fixar as osteotomias no mundo real são os chamados splints. Eles funcionam como guias cirúrgicos tendo como parâmetro de encaixe a ponta dos dentes.

oi6vtPz7CIM0Eok5wFrxlXTnU9Yevnos9dyvS2th2jA1g Anp3Ij0DtkEHVvqoLsES7hF5D17UcDOVRJVNE uVQmw2SAj1EM1aacDJWISbB6v FhQw9sJX6qenilnc6Tkgm2bw5f

O OrtogOnBlender permite que o especialista controle o tempo e os deslocamento das osteotomias. Ao trabalhar estes conceitos o especialista pode criar um splint baseado tanto na movimentação da maxila quando da mandíbula.

Os desafios na implementação do OrtogOnBlender

Apesar de todo o trabalho dedicado ao addon ele apresenta uma série de desafios e pontos que precisam ser melhorados.

ꔷ Instalação

– Problema: Mesmo com todas as facilidades presentes, é um árduo trabalho para um usuário iniciantes instalar o OrtogOnBlender. As implementações completas estão disponíveis para o Linux e o Windows já compiladas, no entanto ainda não portadas para o MacOSX forçando os usuários deste sistema a compilarem uma série de aplicativos através do Homebrew.

– Solução: O interessado no uso do OrtogOnBlender poderá baixar ou adquirir o Linux 3DCS, uma distribuição instalada diretamente em um pendrive bootável.

ꔷ Dinâmica do mole atrelada aos bones

– Problema: A movimentação das osteotomias são feitas através de bones. Isso pode ser um desafio para usuários iniciantes.

– Solução: Já estamos implementando um sistema baseado na movimentação direta das osteotomias. Veja o funcionamento prévio aqui: https://youtu.be/rFCZL0xeOI4

ꔷ Alinhamento automático das osteotomias e captura de pontos conhecidos

– Desafio: Alguns aplicativos de planejamento de cirurgia ortognática oferecem a possibilidade de alinhar automaticamente as osteotomias, bem como capturam uma série de pontos (colocados pelo usuários), informando qual foi o deslocamento destes objetos.

– Solução: Ainda que o Blender ofereça os dados de movimentação e rotação de um objeto, estamos implementando um sistema que captura estes dados em pontos específicos. Esta implementação também funcionará para alinhar ou pré-alinhar algumas peças se assim for necessário. Veja o funcionamento prévio no seguinte link: https://youtu.be/an5XXhqu8Xw

Linux 3DCS, uma solução simples e robusta

Como abordado logo acima, um dos grandes problemas relacionados a instalação do OrtogOnBlender mora na necessidade de configurar outros addons e instalar ou mesmo compilar uma série de aplicativos.

Instalar o que está disponível é uma tarefa aceitável até para um usuário iniciantes, mas pedir para este usuário compilar um programa já é um pouco demais. Então, como podemos resolver a vida daqueles que gostariam apenas de testar o addon, sem ter que perder uma tarde inteira configurando-o? Muito simples.

Uso o Blender desde 2005, com já comentei aqui. Uma das grandes vantagens deste sistema é a sua flexibilidade. Isso implica dizer que podemos adaptá-lo a muitas e inusitadas situações. É possível, por exemplo, instalar o Linux em um pendrive como se esse fosse um HD e isso abre as portas para muitas possibilidades.

O projeto Linux 3DCS nasceu da necessidade dos nossos alunos terem em suas mãos um sistema completo e a disposição, baseado em software livre, sem que para isso tivessem que baixar uma série de programas.

Começamos o projeto como um teste e agora estamos distribuindo aos novos alunos, pendrives com o sistema instalado. Basta configurar a BIOS rapidamente que eles podem começar a usufruir de um workflow totalmente configurado, com todos os programas necessários e contentes pelo fato de não terem que investir o seu precioso tempo na configuração de tudo aquilo.

Mas, e os usuários que não são nossos alunos e que desejarem usar o Linux 3DCS? Bem, eles podem:

ꔷ Baixar uma imagem disponível para download e clonar em um pendrive;

ꔷ Baixar a imagem e rodar em uma máquina virtual;

ꔷ Pedir para a nossa equipe gravar um pendrive e pagar pelo serviço;

ꔷ Fazer um dos nossos cursos presenciais 🙂

Para aqueles que se interessaram neste projeto, o link para mais informações e download está aqui: https://github.com/cogitas3d/Linux3DCS

Conclusão

Ainda estamos engatinhando nesta onda de desenvolvimento de software e distro Linux, as nossas alternativas não são aquelas padronizadas pelo mercado ou menos pela comunidade, mas acima de tudo, estamos entregando duas coisas:

1) Projetos que são abertos e disponíveis para download;

2) Documentação necessária para a instalação e compreensão das ferramentas envolvidas.

Esperamos manter essa animação e o foco necessário para resolvermos os problemas um a um e poder fornecer ferramentas que sejam úteis para a sociedade e que realmente façam a diferença.

Grato pela leitura.

Cicero Moraes 3D Designer

http://fb.me/ciceromoraes3d
Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!