Reconstrução de Tomografias com o VTK Python, o SimpleITK e o Multiprocessing

Cicero Moraes
3D Designer, Arc-Team Brazil, Sinop-MT

Issam Dakir
Cirurgião Dentista, Marrocos

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

ISBN: 978-65-00-29233-6

_images/VTK_comp.jpg

O presente capítulo tem por objetivo apresentar a conversão de arquivos DICOM em malhas 3D através do uso dos módulos VTK, SimpleITK e Multiprocessing, todos presentes no Python 3, a linguagem de programação predominante no OrtogOnBlender.

Atenção

Este material utiliza a seguinte licença Creative Commons: Atribuição 4.0 Internacional (CC BY 4.0).

Apresentação

A reconstrução de tomografias em malhas 3D é uma etapa essencial no planejamento cirúrgico digital. Há muito que o OrtogOnBlender (OOB) oferece essa opção aos usuários, permitindo que todo o processo seja feito dentro da interface do Blender. Uma das grandes dificuldades encontradas no processo é oferecer uma ferramenta que reconstrua as malhas sem apresentar erros, algo bastante desafiador dada a heterogeneidade de biblioteca e tomógrafos utilizados para a geração dos arquivos DICOM. Com a evolução do OOB os usuários foram apresentados a várias abordagens diferentes, que compreendem desde a reconstrução manual (MANUAL, CUSTOM e BDENTAL) até as automáticas ou semi-automáticas (SLICER, AUTOMATIC, DEFAULT, etc.). No entanto, mesmo diante de tantas opções o OOB carecia de um processo que fosse efetivamente rápido. Para contemplar essa demanda foi inserido no desenvolvimento dos reconstrutores uma série de ferramentas que diminuíram significativamente o tempo do processamento.

São elas o VTK, o SimpleITK e o Multiprocessing. Todos os módulos estão disponíveis nos repositórios pip do Python e no caso do Multiprocessing, já se encontra presente nativamente na instalação do mesmo.

Atenção

O objetivo deste capítulo não é discorrer acerca dos aspectos técnicos da programação, mas o uso prático dos módulos na reconstrução das malhas tridimensionais e seu impacto no fator tempo.

Como Funciona

_images/VTK_gui_0.png

Interface da ferramenta VTK ITK.

O conjunto de ferramentas 3D Object to CT-Scan se encontra disponível na aba Ortog ao lado direito da 3D View (fig.1).

Aviso

A ferramenta não está disponível no Blender 2.80, utilize o Blender 2.91 para rodá-la.

_images/VTK_gui_1.png

Organização do DICOM.

Assim que o usuário expandir o CT-Scan Reconstruction é necessário clicar no menu Select e selecionar a opção VTK ITK (fig. 2).

O funcionamento da ferramenta é muito semelhante a opção SLICER, inicialmente é necessário indicar a localização do diretório DICOM e em seguida clicar em Organize para que seja feita a listagem de grupos de fatias.

_images/VTK_gui_2.png

Visualização do voxel data.

Caso o usuário decida testar os valores do threshold há a possibilidade de pré visualizar a malha através do Voxel Preview. Assim que os grupos forem listados, basta clicar no botão Voxel Preview que os slices da tomografia serão importados à cena. O controle do valor é feito na barra Threshold clicando e arrastando o mouse ou clicando e preenchendo com um valor. Para aplicar e renderizar o voxel com valores atualizados é necessário clicar em Apply Thresold! (fig. 3).

A opção Use Scene World pode ser utilizada caso o voxel seja observado pela parte inferior, posto que a cena ficará escurecida. Ao ativar a opção a iluminação será a mesma em todas as direções, mas o background se tornará branco, o que pode causar maior sensibilidade visual a alguns usuários e esse é o motivo de estar desabilitada por padrão.

_images/VTK_gui_3.png

Valor padrão ou não reconhecimento do tomógrafo.

Por padrão o valor do campo Tomograph é NO INFO!!! e NONE nos campos Bone Factor, Soft Factor e Teeth Factor (fig. 4). Mas se mesmo depois do usuário clicar em Organize, os valores permaneceremos os mesmos, isso significa que o tomógrafo não foi reconhecido pelo OOB e será necessário o preenchimento manual dos campos.

_images/VTK_gui_4.png

Tomógrafo reconhecido.

Quando o tomógrafo é reconhecido automaticamente o valor do primeiro campo é alterado para YES, AUTOMATIC! e os fatores ao threshold de cada tecido (fig. 5).

Uma vez que tudo está definido o usuário poderá clicar em Convert DICOM to 3D e aguardar até que as malhas sejam reconstruídas.

Tempo de Reconstrução em Sistemas Operacionais Diferentes

Os autores selecionaram aleatoriamente 10 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 [A22], mais precisamente na Descrição Técnica.

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.

Os autores optaram por comparar o tempo da ferramenta VTK ITK com a SLICER, ambas presentes no seletor de reconstrução de tomografias do OOB.

Resultados

_images/VTK_graf_1.png

Comparação de tempo entre sistemas operacionais.

O sistema que apresentou o melhor desempenho foi o Windows (fig. 6) onde, em média, uma reconstrução levou pouco mais de um minuto para ser feita (62 segundos). O Linux teve um desempenho 26% inferior, com 78 segundos e em seguida o Mac com um desempenho 35% inferior ao Windows ao levar 84 segundos em média para gerar os modelos.

Quando comparados com o modo SLICER, a diferença dentro dos sistemas foi ainda maior. No Windows a reconstrução do VTK ITK foi 4,84 vezes mais rápida que a do SLICER (62 vs 300), no Linux a diferença foi de 3,09 vezes (78 vs 241) e no Mac foi de praticamente 2 vezes (84 vs 167).

O modo SLICER passou por algumas melhorias desde que parte dos autores publicaram um estudo de comparação intitulado Sistema de Reconstrução de Tomografia Computadorizada Baseado no Slicer 3D e no DicomToMesh [A27]. Naquela feita os resultados do desempenho eram mais favoráveis ao Linux em relação ao Mac OS X, no entanto, provavelmente por conta das alterações e adaptações do código desde aquela versão, a ferramenta passou a funcionar de modo mais rápido no Mac (167 vs 241).

O elemento preponderante no desempenho do VTK ITK em relação ao SLICER é o módulo Multiprocessing do Python, que permite a reconstrução paralela de três malhas ao mesmo tempo, cada uma em uma thread diferente do processador. Quando a comparação foi feita, o SLICER procedia com uma reconstrução por vez e essa processada em apenas uma thread, o que que explica parte da lentidão.

_images/VTK_comp.jpg

Comparação entre as malhas - VTK ITK (à esquerda) e SLICER + DicomToMesh (à direita).

Outro aspecto que torna o SLICER mais lento em relação ao VTK ITK é a qualidade superior da malha gerada pelo primeiro, mérito da ferramenta DicomToMesh e da configuração do seu reconstrutor (fig. 7).

Um fato notório a ser pontuado é que a malha gerada no modo SLICER, além de contar com uma qualidade superior, tem ainda pouco mais da metade do tamanho gerado no VTK ITK, a média dos arquivos foi de 113 MB (VTK ITK) vs 64 MB (SLICER).

Em face da robustez, da familiaridade dos usuários e dos resultados animadores promovidos pelo uso do Multiprocessing, o desenvolvedor (e um dos autores do estudo) optou por ajustar o código e inserir o processamento paralelo também na ferramenta SLICER. Em seguida as 10 tomografias foram reconstruídas nos três sistemas operacionais abordados e uma nova comparação foi efetuada.

_images/VTK_graf_2.png

Comparação de tempo entre sistemas operacionais.

Grosso modo, o tempo da reconstrução se mostrou muito compatível com o VTK ITK no Linux e no Mac, mas isso não se refletiu no Windows (fig. 8 SLICER Multi.). Cabe ao usuário do último sistema citado, optar pela ferramenta que melhor se adequar aos seus propósitos, seja a qualidade ou a rapidez e no caso dos outros dois, a pouca diferença torna o SLICER a melhor escolha.

Aviso

Para que o VTK IVK e o SLICER (multi) funcionem no Windows, é necessário que os usuários do sistema façam a instalação do Python e de bibliotecas complementares. Para tal, basta acessar o passo-a-passo disponível na documentação oficial do OOB.

Conclusão

A ferramenta VTK ITK vem somar-se a ampla gama de alternativas oferecidas pelo OrtogOnBlender. Os maiores contemplados com o seu surgimento são os usuários do Windows, cujas soluções anteriores apresentavam um desempenho claramente inferior aos demais sistemas.

Com a inserção do Multiprocessing os usuários do Linux e do Mac contam agora com uma opção compatível em relação ao desempenho do VTK ITK, mas com uma qualidade de malha amplamente superior e arquivos com praticamente a metade do tamanho.

O modo VTK ITK está apenas no início do seu desenvolvimento e melhoramentos na malha e no tamanho dos arquivos podem ser implementados no futuro, o fato é que a diferença de qualidade, ainda que seja evidente no aspecto da apresentação das imagens, pouco influencia no planejamento cirúrgico e na confecção de guias por parte de usuários preparados e experientes. Sendo assim, em linhas gerais, não há muita diferença prática entre as ferramentas abordadas neste capítulo.

Agradecimentos

Ao Dr. Davi Sandes Sobral por ceder a tomografia utilizada neste capítulo.