Melhoramentos na Conversão de Objetos 3D em Arquivos DICOM no OrtogOnBlender¶
ISBN: 978-65-00-29233-6
O OrtogOnBlender é desenvolvimento majoritariamente utilizando recursos livres e gratuitos, o que permite aos desenvolvedores lançar mão de inúmeras soluções disponíveis na internet e, ao passo que o add-on absorve as mesmas, também contribui para o desenvolvimento delas. No presente capítulo serão apresentados os melhoramentos na ferramenta 3D Objetct to CT-Scan, em especial aquele relacionado ao tempo necessário para a geração de voxel data, posto que nesta versão a geração do arquivo DICOM é notoriamente mais rápida do que na anterior.
Dica
No capítulo Conversão de Malhas 3D em Arquivos DICOM com o OrtogOnBlender [A16] é apresentado o uso da ferramenta na criação de uma tomografia falsa a partir de uma reconstrução facial forense.
Atenção
Este material utiliza a seguinte licença Creative Commons: Atribuição 4.0 Internacional (CC BY 4.0).
Contato com os Desenvolvedores¶
O aplicativo responsável pela conversão de objetos 3D em imagens é o stl-to-voxel, disponível abertamente no GitHub. Existem outras interações e bibliotecas no processo de conversão de um objeto 3D em um conjunto de arquivos DICOM, mas o stl-to-voxel é marcadamente o mais importante do processo.
Assim que a ferramenta 3D Object to CT-Scan foi implementada e os primeiros trabalhos utilizando-a foram efetuados, houve um aumento de demanda e um visível desconforto dos usuários em relação ao tempo necessário para a conversão do modelo 3D em uma série de fatias em forma de imagens (.png).
Em face daquele problema, o desenvolvedor do OrtogOnBlender (OOB) entrou em contato com os desenvolvedores do stl-to-voxel relatanto a questão do longo tempo necessário para a conversão e inquirindo acerca de possibilidades de melhoramento.
A resposta não tardou a aparecer, o desenvolvedor @youngkiu rapidamente implementou melhorias no código, baseado em uma série de novas bibliotecas Python, com destaque para a biblioteca ray.
Testes iniciais foram implementados no Linux e no Mac revelando uma grande redução de tempo, mas o novo código apresentou problemas ao ser executado no Windows, gerando um novo reporte ao desenvolvedor e uma nova adaptação, agora baseada na biblioteca multiprocessing do Python, o que permitiu um efetivo funcionamento nos três sistemas operacionais supracitados.
Como Foram Efetuados os Testes¶
Um crânio tridimensional disponível na Wikimedia Commons foi escolhido como modelo base para os testes.
Inicialmente foi rodado um cálculo com o código antigo (Old) do stl-to-voxel, posteriormente com a primeira alteração (New) e finalmente com o código final (New 2).
O tempo total não considera apenas a conversão do stl-to-voxel, mas outros comandos como a conversão de imagens com características específicas (imagemagick) a e conversão das imagens em arquivos DICOM (Python VTK). O único comando que se alterou entre um teste e outro foram aqueles contidos no stl-to-voxel, as demais estruturas foram mantidas.
Os testes 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 caopitulo Fotogrametria 3D - Desempenho nos Sistemas Operacionais: Windows, Linux e Mac OS X [A22]. Basicamente trata-se de um notebook contendo um processador i7-8565U com 20 GB de RAM.
Os resultados apresentam ausência da primeira modificação do stl-to-voxel no Windows (New) pelo motivo já abordado da incompatibilidade de algumas bibliotecas Python naquele sistema operacional. No entanto, ao se substituir o ray pelo multiprocessing o stl-to-voxel passou a rodar nos três sistemas com resultados muito parecidos (Fig. 1).
No Linux houve uma redução de 19,10 vezes (1051 vs. 55 segundos). No Mac OS X houve uma redução de 11 vezes (693 vs. 63 segundos). No Windows houve uma redução de 10,22 vezes (521 vs. 51 segundos).
Os testes certificam uma evolução significativa entre a versão New baseada na biblioteca ray (89 segundos no Linux e no Mac) em relação a New 2 baseada no multiprocessing (55 no Linux e 63 no Mac).
Conclusão¶
O presente capítulo buscou apresentar um caso de evolução de ferramenta baseado nas relações de troca de informações e experiências entre os desenvolvedores, frente às demandas dos usuários. Graças em parte a realidade do software aberto ou livre, onde há amplo acesso aos códigos e aos desenvolvedores destes, é possível melhorar uma solução em questão de dias, como no caso aqui apresentado.
Além da claríssima e inequívoca redução de tempo entre o código anterior e o presente, também houveram outras evoluções paralelas em relação a como o Python é implementado no OOB. Durante o melhoramento do conversor de 3D para DICOM, verificou-se que o executável do Python presente na instalação do Blender pode ser chamado via script, tornando desnecessária a instalação do Python pela Microsoft Store, o que é significativamente importante, posto que houveram muitos relatos negativos por parte dos usuários do OOB ao tentarem acessar a central de instalação de programas presentes no Windows. Uma vez que é possível rodar nativamente, os usuário terão uma etapa a menos para se preocuparem no processo de instalação, tornando a versão daquele sistema operacional a mais fácil a ser instalada e uma das mais rápidas em relação as ferramentas.
Agradecimentos¶
Agradecimentos especiais aos desenvolvedores do stl-to-voxel em especial ao @youngkiu que fora tão solícito e eficaz na correção e melhoramento do código em tão curto espaço de tempo.