Melhoramentos na Conversão de Objetos 3D em Arquivos DICOM no OrtogOnBlender
============================================================================
| **Cicero Moraes**
| *3D Designer, Arc-Team Brazil, Sinop-MT*
|
| **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.14816274
.. only:: html
ISBN: **978-65-00-29233-6**
.. figure:: images/3Dtovoxel_capa.jpg
:align: center
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.
.. tip::
No capítulo **Conversão de Malhas 3D em Arquivos DICOM com o OrtogOnBlender** :cite:`OOBDICOMFAKE2020` é apresentado o uso da ferramenta na criação de uma tomografia falsa a partir de uma reconstrução facial forense.
.. attention::
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** :cite:`OOBFOTOGRAM2020`. Basicamente trata-se de um notebook contendo um processador i7-8565U com 20 GB de RAM.
.. figure:: images/3Dtovoxel_graf.png
:align: center
Resultados dos testes em 3 sistemas operacionais diferentes.
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.
.. .. bibliography:: 3dtoctscan_references.bib
:labelprefix: C
:style: plain
:cited: