Segmentação Automática dos Dentes com o MeshSegNet e o OrtogOnBlender ===================================================================== | **Cicero Moraes** | *3D Designer, Arc-Team Brazil, Sinop-MT* | | **Issam Dakir** | *Cirurgião Dentista, Marrocos* | | DOI: https://doi.org/10.6084/m9.figshare.14850105 .. only:: html ISBN: **978-65-00-29233-6** .. figure:: images/SegmentaDentes_1.jpg :align: center O presente capítulo tem por objetivo apresentar o sistema de segmentação automática dos dentes, baseado em ferramentas de código aberto. .. attention:: Este material utiliza a seguinte licença Creative Commons: **Atribuição 4.0 Internacional (CC BY 4.0)**. ---------- Introdução ---------- O OrtogOnBlender foi desenvolvido originalmente para o estudo de planejamento de cirurgias ortognáticas, mas com o passar do tempo e o acúmulo de conhecimento por parte dos usuários, houve uma série de adaptações da ferramenta para outros fins como a rinoplastia, a reconstrução facial forense, a confecção de próteses faciais, as cirurgias de reconstruções faciais e a ortodontia. Por contar com uma base de usuários majoritariamente composta por cirurgiões dentistas, uma das demandas mais solicitadas são as de segmentação dos dentes para estudos de *setups* e afins. É sabido que a atividade de segmentação pode consumir um tempo considerável quando efetuada manualmente, dada a complexidade estrutural de uma arcada. Foi justamente por isso, que estudos acerca de segmentação automática, ao menos parcial foram iniciadas no grupo de usuários e desenvolvedores. Como quase todas as ferramentas presentes no OrtogOnBlender, a solução em segmentação deveria ser de código aberto e multiplataforma. Depois de muita pesquisa e estudos, descobriu-se a suíte `MeshSegNet `_ :cite:`Lian2020` :cite:`Lian2019` que se adequava a todos os parâmetros pretendidos. O funcionamento dos comandos utiliza inteligência artificial que reconhece cada estrutura de dente presente no modelo 3D, baseado em dezenas de digitalizações tridimensionais que alimentaram o aprendizado do algoritmo. Os autores estudaram o passo-a-passo disponível na documentação oficial e adequaram as ferramentas para que rodassem no Linux, no Windows e no Mac OS X. Em seguida foi desenvolvida uma interface gráfica disponível na aba OthersOnBlender para facilitar o acesso por parte dos usuários. A adptação da ferramenta a situações tão distintas contou com o auxílio do desenvolvedor (@Tai-Hsien) do MeshSegNet que orientou e ajustou pequenos trechos do código, permitindo que o mesmo se fizesse funcional de modo multiplataforma. ------------------------ Como Funciona - Conceito ------------------------ O script funciona da seguinte forma, o modelo proveniente de uma digitalização intraoral é importado ao Blender. Uma vez selecionado, seja a arcada superior ou inferior, o modelo é exportado como STL, utilizando uma programação em Python. .. figure:: images/SegmentaDentes_2.png :align: center Funcionamento básico da integração do MeshSegNet com o Blender Em seguida a malha passar por uma análise em passos no MeshSegNet, onde os dentes são segmentados e o resultado da computação é um arquivo VTK pigmentado com cores diferentes para cada dente segmentado. A estrutura do arquivo VTK é muito ampla e rica em definições e o Blender conta com poucos scripts que lêem esse formato. Nenhum deles importava a malha com pigmentação, de modo que um importador foi desenvolvido e adicionado ao OrtogOnBlender em linguagem Python, para que a arcada segmentada pudesse ser importada novamente ao Blender (Fig. 1). -------------------------- Como Funciona - Na Prática -------------------------- .. warning:: O segmentador dos dentes **não funciona na versão 2.80 do Blender**. O usuário que desejar testá-lo terá que fazê-lo na versão 2.91. .. figure:: images/SegmentaDente_importa.png :align: center Digitalização intraoral importada Inicialmente é necessário importar o modelo (Fig. 2) utilizando o comando **File** -> **Import** e selecionando o formado desejado. Parte considerável dos usuários trabalha majoritariamente com os formatos STL e PLY. .. figure:: images/SegmentaDente_UI.png :align: center Interface do segmentador dos dentes A interface do comando é muito simples, basta selecionar a arcada desejada e clicar sobre o botão que indica a estrutura. Neste caso, como se trata da parte superior, basta clicar em Maxilla (Fig. 3). .. figure:: images/SegmentaDente_gera.png :align: center Saída dos comandos no terminal O processo de segmentação poderá ser acompanhado no terminal com as saídas de comandos (Fig. 4). Se tudo der certo será impressa no terminal uma mensagem com o tempo total do processo em segundos, minutos e algumas informações acerca do computador utilizado, como a memória RAM, o modelo do processador e o sistema operacional. .. figure:: images/SegmentaDente_gerado.png :align: center Modelo segmentado Pouco tempo depois o processo é finalizado resultando em um modelo pigmentado (Fig. 5). .. figure:: images/SegmentaDente_vertices.png :align: center Vertex Groups A segmentação resultante separou as estruturas reconhecidas em **Vertex Groups** nomeados segundo a ordem de geração, não compatíveis com os números dos dentes (Fig. 6). .. figure:: images/SegmentaDente_seleciona.png :align: center Seleção por Vertex Groups Caso o usuário deseje selecionar um grupo específico basta entrar em **Edit Mode**, clicar sobre o nome do **Vertex Group** e em seguida clicar em **Select** (Fig. 7). ------------------- Teste de Desempenho ------------------- Para avaliar o funcionamento da ferramentas em sistemas operacionais diferentes, foram efetuados testes de desempenho. Estes foram rodados em um mesmo notebook contendo três sistemais operacionais diferentes (Windows, Linux e Mac OS X). Uma descrição detalhada da abordagem tomada para o teste no mesmo computador pode ser lida no capítulo **Fotogrametria 3D - Desempenho nos Sistemas Operacionais: Windows, Linux e Mac OS X** :cite:`OOBFOTOGRAM2020`. Basicamente trata-se de um notebook contendo um processador i7-8565U com 20 GB de RAM. Duas malhas correspondentes as arcada superior e inferior foram selecionadas. Executaram-se 5 testes em cada uma das malhas e o tempo em segundos foi armazenado em uma planilha, de modo a gerar uma média de tempo em cada sistema operacional. .. list-table:: Tempo de Segmentação em Segundos :widths: 25 25 25 25 :header-rows: 1 :align: center * - Arch - Windows - Mac OS X - Linux * - Upper #1 - 54 - 63 - 75 * - Upper #2 - 45 - 51 - 74 * - Upper #3 - 47 - 51 - 74 * - Upper #4 - 44 - 50 - 74 * - Upper #5 - 43 - 51 - 73 * - Lower #1 - 50 - 51 - 77 * - Lower #2 - 43 - 51 - 74 * - Lower #3 - 43 - 51 - 74 * - Lower #4 - 44 - 72 - 74 * - Lower #5 - 40 - 51 - 75 * - **Average** - **45** - **52** - **74** O único sistema que não apresentou grande variação nos tempos foi o Linux. No Windows e no Mac OS X alguns dos valores foram bem diferentes da média, mas isso não influenciou significativamente o resultado final. .. figure:: images/SegmentaDentes_Graf.png :align: center Desempenho final em cada sistema operacional O Windows apresentou o melhor desempenho (45 segundos), seguido bem de perto pelo Mac OS X (52 segundos). O Linux foi claramente mais lento dos que os demais (74 segundos) (Fig. 8). --------- Conclusão --------- A ferramenta de segmentação dos dentes não tem como objetivo separar as estruturas com acurácia total, mas tornar o processo mais simples e rápido para o usuário. É possível que essa solução forneça uma espécie de "pré-segmentação", resultando em um corte prévio das regiões desejadas e deste modo, oferecendo ao usuário a possibilidade de ajustar as linhas, retirando partes desnecessárias ou complementando com novos cortes. Os autores buscaram integrar o MeshSegNet ao OrtogOnBlender e fazê-lo funcional nos três sistemas operacionais mais populares do mercado de computadores. A etapa mostrou-se bem sucedida e o próximo é buscar a adequação da ferramenta frente às necessidades dos usuários.