.. _VoxelSlicer: Reconstrução de Voxel Data no OrtogOnBlender ============================================ .. figure:: images/Voxel_capa.jpg :align: center * **Cicero Moraes** *3D Designer, Arc-Team Brazil, Sinop-MT* * **Marcos Graf** *Cirurgião-Dentista, Bombinhas-SC* * **Rodrigo Dornelles** *Cirurgião Plástico, Núcleo de Plástica Avançada - NPA, São Paulo-SP* * **Everton da Rosa** *Cirurgião BMF, Hospital de Base, Brasília-DF* ======= ====== **DOI** https://doi.org/10.6084/m9.figshare.13670134 ======= ====== ==== O presente capítulo tem por objetivo apresentar a reconstrução de tomografias por voxel data a partir de arquivos DICOM via *add-on* OrtogOnBlender. .. important:: Este material utiliza a seguinte licença Creative Commons: **Atribuição 4.0 Internacional (CC BY 4.0)**. ---------- Introdução ---------- Os arquivos DICOM fornecem ao usuário a possibilidade de visualizar estruturas internas com uma ampla gama de níveis permitindo em muitos casos, como na saúde humana, segmentar ou definir tecidos específicos a serem reconstruídos em 3D, como por exemplo, ossos, vias aéreas e tecido mole em geral. O uso do formato DICOM no OrtogOnBlender se dá majoritariamente na reconstrução de malhas 3D que passarão por osteotomia (*boolean*) e simulação de deformação de tecido mole (rig). O problema da reconstrução de malhas 3D mora justamente na limitação da região de interesse a ser reconstruída. Muitos usuários não compreendem como uma tomografia que lhes é apresentada com detalhes de vasos sanguíneos, raízes de dentes bem definidas e até cabelos não resultem em uma malha igualmente limpa e bem definida quando efetuado o processo de reconstrução. .. figure:: images/Voxel_compara.jpg :align: center Comparação entre uma reconstrução de malha 3D (à esquerda) e o voxel (à direita). Ao se comparar as reconstruções (Fig. 1) é possível, em um primeiro momento, atestar que a reconstrução de uma malha 3D (à esquerda) resulta em um modelo simplificado com a estrutura geral do tecido de interesse (mole, ossos e dentes) ao passo que o voxel (à direita) conta com um grande detalhamento dos tecidos, permitindo ao usuário visualizar detalhes dos músculos e da massa encefálica, por exemplo. Grosso modo, comparar uma malha 3D a um voxel é como comparar uma impressão 3D monocromática a um holograma. A primeira é uma representação simplificada e sólida do original, o segundo tem mais detalhes, mas não é sólido, apesar de tridimensional. O fato é que cada abordagem oferece vantagens e o usuário pode explorá-las da melhor forma possível. A exemplo do que já acontece com o crânio composto, onde uma digitalização de arcada em alta resolução substitui a estrutura em mais baixa resolução advinda da tomografia, o usuário pode complementar o planejamento com os dados do voxel data em uma mesma cena ampliando as potencialidades do mesmo. Com o voxel é possível identificar detalhes de uma estrutura que podem não ser reconstruídas em uma malha 3D, como um vaso ou uma variação de densidade de tecido. Ao ter todo o conjunto de dados disponíveis o planejamento pode ser elevado a outro patamar de confiabilidade. ------------------------------- Como Funciona - Aspectos Gerais ------------------------------- O Blender 3D não oferece suporte nativo ao formato de arquivo DICOM, mas graças a flexibilidade no desenvolvimento, o OrtogOnBlender resolveu a limitação e passou a oferecer suporte tanto a visualização, quanto a reconstrução por malha 3D e voxel data :cite:`MoraesVoxel2020`. .. figure:: images/Voxel_explica.jpg :align: center Voxel Data importado pelo OrtogOnBlender. O funcionamento segue um princípio bem simples (Fig. 2), as fatias de um arquivo DICOM são convertidas em imagens (A), utilizando os dados contidos em cada um dos arquivos originais o algoritmo extrai a localização de cada uma das fatias posicionando-as no espaço tridimenisional, além de tratar as cores aplicando transparência (B). Por ser uma imagem cada fatia tem a espessura 0 (zero), mas pela sobreposição das várias camadas cria-se a ideia de volume (C), resultando na região de interesse (D). .. important:: O número de fatias é bastante elevado, geralmente na casa das centenas. No exemplo acima descrito foram utilizadas apenas algumas fatias (A, B), ocultando-se outras que se encontravam entre as mesma para evitar poluição visual. .. figure:: images/Voxel_axial.jpg :align: center Fatias axiais. Inicialmente a ferramenta de voxel fornecida pelo OrtogOnBlender permitia apenas a reconstrução das fatias do plano axial (Fig 3). Se o volume for visto pelo topo é possível visualizar a estrutura da peça (Top), o problema é que, por serem imagens sem espessura nada se vê se observado pela frente e pela direita (Front e Right). Para o exemplo aqui presente, foi necessário ativar o *wireframe* para que as fatias fossem visualizadas pela frente e lateral, caso contrário nada se veria na cena. No entanto, mesmo se tratando de um volume formado por planos sem espessura, ao se orbitar a peça ainda que levemente, é possível visualizar a estrutura tomografada (Ortho). .. figure:: images/Voxel_full.jpg :align: center Fatias completas nos planos axial, coronal e sagital. Para evitar a falta de informação em qualquer um dos planos de visualização foi implementado no algoritmo do OrtogOnBlender a geração dos demais planos, ou seja, o coronal e o sagital (Fig. 4). Se observados isoladamente cada um dos planos apresenta as mesmas falhas em pontos diferentes, mas quando todos eles são agrupados no mesmo espaço a peça reconstruída é visualizada completamente (FULL). .. figure:: images/Voxel_planos.jpg :align: center Exemplo de renderização nos planos. Diferentemente do Slicer :cite:`SLICER2021` e outros softwares de visualização de arquivos DICOM, que criam pequenos cubos efetivamente volumétricos para a formação do voxel, o OrtogOnBlender gera o modelo pela intersecção das fatias. O resultado é suficientemente bom, de modo que a intersecção das fatias só é vista com o uso de um zoom de alto valor (Fig. 5). .. figure:: images/Voxel_mode.jpg :align: center Modos de visualização do voxel. Até a presente versão (2021-01-28) o usuário tem à sua disposição quatro configurações de visualização (Fig. 6): * **Default**: com todos os tecidos visíveis; * **Bone**: com apenas os ossos visíveis; * **Muscle**: com os ossos e os músculos visíveis * **Skin**: com pele mais densa e clara. .. important:: Os modos de visualização costumam funcionar muito bem em tomografias médicas (CT-Scan) e geralmente funcionam também em tomografias cone beam (CBCT), mas é possível que em alguns casos a apresentação não seja bem sucedida, principalmente nas tomografias cone beam, sendo necessária uma edição manual do *shader* :cite:`BLENDERMAT2021`. Mais estudos serão necessários para a adequação do algoritmo ao modelo do tomógrafo. .. figure:: images/Voxel_AO.jpg :align: center Voxel Data com e sem Ambient Occlusion (AO). Há ainda a opção de ativar o **Ambient Occlusion** (AO) :cite:`BLENDERAO2021` para evidenciar a profundidade na visualização da malha (Fig. 7). Apesar de melhorar a questão da profundidade, nem sempre o AO é a melhor opção, seja pela confusão que pode causar em modelos com transperência, seja pela lentidão que pode ocorrer em alguns computadores com GPUs menos potentes. .. figure:: images/Voxel_plus_Voxel.jpg :align: center Composição de voxel data com voxel data. Por se tratar de um conjunto de planos com *shaders* próprios, é possível fazer composição de voxel data com voxel data utilizando configurações de material diferentes, cruzando com segmentação por cálculo booleano (Fig. 8). .. figure:: images/Voxel_boolean.jpg :align: center Osteotomia efetuada por *boolean*. É permitido ao usuário explorar as vantagens do voxel e da malha 3D (mesh) em uma mesma cena, um exemplo possível é isolar peças anatômicas como uma mandíbula (Fig. 9) e proceder com a osteotomia digital da mesma. A mandíbula do voxel data conta com mais dados estruturais do que a reconstruída em malha 3D, o que pode ser particularmente útil para identificar regiões críticas como aquelas compostas por densidades diferentes ou mesmo a identificação de vasos e outras partes. No caso da imagem de exemplo a malha em questão está oculta e serviu apenas para proceder com a booleana de intersecção. .. figure:: images/Voxel_compose.jpg :align: center Exemplos de composição com o voxel data. Outrossim, composições de voxel e malha são possíveis e podem gerar modelos úteis e didáticos, seja a junção da malha reconstruída com o voxel (Fig. 10, A) ou o voxel com fotogrametria (B, C) ou ainda uma junção da malha reconstruída a partir da tomografia com o voxel e uma fotogrametria (D). Se for bem estruturado o modelo final oferece ao usuário uma ampla gama de informações extraindo o melhor de cada abordagem. A fotogrametria, ou seja, a digitalização de uma face em 3D a partir de fotografias é outro exemplo de abordagem com a vantagem da texturização ou coloração da estrutura, ainda que não conte com elementos internos como a tomografia. No entanto, é uma abordagem que vem a somar no planejamento ao passo que fornece um rosto mais compatível com a realidade, posto que as tomografias usadas no meio médico ainda não fornecem a textura (coloração) da pele, seja por reconstrução de malha ou por voxel data. ------------------------ Como Funciona na Prática ------------------------ .. figure:: images/Voxel_gui.png :align: center Interface do VOXEL-FULL SLICER. #. Na seção **CT-Scan Reconstruction** do OrtogOnBlender o usuário selecionará a opção **VOXEL_FULL SLICER!** (Fig. 11); #. Em **CT-Scan Preparing** é necessário clicar no ícone do diretório e escolher a pasta onde se encontram os arquivos DICOM. Em seguida clicar em **Accept**; #. Ao clicar em **Organize** o OrtogOnBlender vai varrer o diretório e os subdiretórios listando todos os arquivos DICOMs disponíveis; #. No terminal serão apresentados os estudos relacionados a tomografia em questão com os dados do nome do paciente, número de fatias e o nome do arquivo .txt relacionado ao grupo de fatias; #. O sistema escolherá o estudo com o maior número de fatias, mas essa escolha automática pode ser alterada, caso o usuário julgue necessário; #. Assim que o estudo for selecionado, basta clicar em **Import DICOM Slices** e a importação se fará, inicialmente com as fatias axiais e posteriormente com as fatias coronais e sagitais. Nesse ínterim a interface do Blender ficará inacessível (tratava), até que o processo seja finalizado. .. warning:: O usuário pode desabilitar a opção **Decrease to 300!** e assim reconstruir o volume com a matriz nas dimensões originais, no entanto, isso pode aumentar consideravelmente o tempo da reconstrução, bem como gerar travamento em computadores com GPUs menos pontentes. .. important:: O sistema de organização é o mesmo apresentado no capítulo **Sistema de Reconstrução de Tomografia Computadorizada Baseado no Slicer 3D e no DicomToMesh**, especificamente em :ref:`Como_Funciona`. Em caso de dúvida é recomendado que o leitor consulte o capítulo citado. Parte das ferramentas da seção **View/Shader/Material** foram abordadas no tópico anterior. O **Ambient Occlusion** vem desabilitado por padrão de modo a evitar lentidão em computadores com GPUs mais lentas. O **Use Scene World** permite clarear o voxel data quando observado pela parte inferior. A ferramenta vem desabilitada por padrão, posto que ao ser acionado o *background* do 3D View passa a ser cinza-claro, o que pode causar desconforto visual para alguns usuários. Logo abaixo estão as opções de *shaders* para visualizar os ossos (Bone), músculos (Muscle), pele (Skin) e retornar ao padrão (Default). Caso o usuário opte por ver apenas uma fina fatia em cada plano, o *add-on* oferece a possibilidade de fazê-lo ao clicar no botão **Prepare Planes!**. ------------------- Testes e Resultados ------------------- Os autores selecionaram aleatoriamente 30 tomografias computadorizadas, de modo a testar uma amostra heterogênea e apresentar uma média geral do tempo necessário para a reconstrução em três sistemas operacionais diferentes. A configuração do notebook e dos sistemas operacionais utilizados estão presentes no capítulo intitulado **Fotogrametria 3D - Desempenho nos Sistemas Operacionais: Windows, Linux e Mac OS X**, mais precisamente na :ref:`Descicao_Tecnica`. Em linhas gerais trata-se de um notebook com processador i7 de 1.80 GHz, 20 GB de memória RAM com armazenamento SSD SATA de 480 GB. Para simular uma situação que é de praxe para a maioria dos usuários, os arquivos DICOM foram gravados em um HD externo e acessados via USB. O teste foi feito em duas etapa, primeiramente levantou-se o tempo da organização dos arquivos e posteriormente o tempo da reconstrução dos mesmos em um objeto 3D. O fator final é uma junção dos dois valores. .. figure:: images/Voxel_grafico_512x300.png :align: center Comparação em relação ao método padrão anterior (10 tomografias). Em um primeiro momento foram utilizadas apenas 10 tomografias para a comparação de abordagens diferentes na reconstrução de voxel data. As 10 tomografias separadas foram testadas na primeira ferramenta desenvolvida para a visualização pixels tomográficos, a **VOXEL-FULL**. Esse sistema utiliza a organização baseada em cópia de arquivos, o que já colocava a ferramenta em desvantagem, posto que em média essa etapa levou **101 segundos** frente a média de **36 segundos** necessária pelo outro sistema (VOXEL-FULL SLICER) baseado em varredura de diretórios (Fig. 12). .. warning:: Se tratam de dois sistemas distindos, o mais antigo nomeado de **VOXEL-FULL** e o mais novo nomeado de **VOXEL-FULL SLICER**. Os nomes parecidos podem eventualmente gerar confusão. Na segunda parte do teste a ferramenta VOXEL-FULL levou em média **882 segundos** para reconstruir a tomografia. Isso acontece porque a mesma utiliza a tomografia em suas dimensões originais e isso pode ser problemático em matrizes maiores de 512x512x512, gerando modelos que rodem muito lentamente em computadores com GPUs de baixo poder de processamento. Inicialmente o sistema **VOXEL-FULL SLICER** havia sido programado para reduzir a tomografia, caso a matriz fosse maior do que 512x512x512. No entanto, mesmo após a redução, a órbita na visualização apresentava lentidão em muitos casos. Em face a essas dificuldades foram efetuados vários testes até que uma nova matriz, com resolução suficientemente satisfatória foi escolhida. O novo valor padronizado foi o de 300x300x300. Em linhas gerais a redução da matriz não apenas repercutiu em uma melhor visualização em tempo real, como tornou o processo muito mais rápido. Comparando as matrizes, a de 512 levou em média 586 segundos para ser reconstruída ao passo que a de 300 levou 247. Ao final o processo todo, envolvendo organização + reconstrução resultou em: **612 segundos** vs. **282 segundos**. Ao se comparar os processos do VOXEL-FULL versus o VOXEL-FULL SLICER (300) chegou-se a **882 segundos** do primeiro, frente a **282 segundos**, ou seja, o sistema baseado no Slicer é **3,13 vezes mais rápido** que o anterior. .. figure:: images/Voxel_bug_plano.jpg :align: center Reconstrução de voxel data com erro de rotação de eixo. É importante deixar registrado que um dos motivos para a criação da ferramenta baseada no Slicer, além do tempo, eram problemas relacionados a reconstrução dos planos axial, sagital e coronal em rotações incompatíveis com a real posição dos mesmos (Fig. 13). .. figure:: images/Voxel_erro.png :align: center Planilha de testes com reconstruções problemáticas em vermelho. Das 10 tomografias escolhidas para os testes iniciais, o sistema anterior (VOXEL-FULL) apresentou problema de rotação em 7 deles (Fig. 14, células em vermelho), ao passo o novo sistema (VOXEL-FULL SLICER) reconstruiu todos os volumes sem apresentar o mesmo erro. Definido o valor padrão da matriz e feita a comparação com a abordagem utilizada anteriormente, os testes se voltaram ao desempenho nos sistemas operacionais Linux, Windows e Mac OS X, agora utilizando as 30 tomografias. .. figure:: images/Voxel_grafico_todos.png :align: center Comparação entre sistemas operaiconais diferentes (30 tomografias). Resultado organização dos arquivos (Fig. 15): * 1º Mac OS X: 29 segundos. * 2º Linux: 44 segundos. * 3º Windows: 56 segundos. Resultados da reconstrução 3D: * 1º Linux: 310 segundos. * 2º Windows 422 segundos. * 3º Mac OS X: 565 segundos. Resultado final, juntando as etapas: * **1º Linux: 354 segundos (5m54s).** * **2º Windows 478 segundos (7m58s).** * **3º Mac OS X: 593 segundos (9m53s).** --------- Conclusão --------- A nova ferramenta se mostrou funcional em 100% das reconstruções efetuadas, além de ser 3 vezes mais rápida que a abordagem utilizada anteriormente. No entanto, ainda que o processo tenha se mostrado mais célere que a opção anterior, o mesmo ainda é lento se compararmos com o tempo que os editores de DICOM como o Slicer levam para renderizar um modelo baseado em voxel data. A grande vantagem dessa metodologia é que ela oferece ao usuário um objeto de cena que pode ser explorado de maneiras diversas e muitas vezes bem mais flexível do que aquelas oferecidas pelos editores do mercado, vide o exemplo da composição de voxel data, bem como a junção de várias abordagens em uma só cena (voxel+mesh+fotogrametria). -------------- Agradecimentos -------------- Agradecimentos ao Dr. Richard Gravalos e ao Dr. Davi Sandes Sobral, por cederem as suas tomografias ao estudo aqui apresentado. .. bibliography:: voxelslicer_references.bib :cited: