Notebook 19
Tomografia, heatmaps
O script neste documento lê um arquivo do tipo DICOM (Digital Imaging and Communications in Medicine) com dados relacionados a uma "fatia" tomográfica do corpo humano. O arquivo foi gerado por um sistema tomográfico real (https://www.dropbox.com/s/8pihvvxt1em8vb2/DICOM.zip?dl=0, a partir de https://lapisco.ifce.edu.br/producao-academica/private-datasets/database-lungs-from-chest-ct-scans/) e contém dois grupos de informações:
O número de Housfield $H$, que é essencialmente uma medida da densidade eletrônica dos materiais, distribui-se por 4096 níveis, que vão de −2048 a 2047, tendo a água no centro da escala ($H$ = 0). Para materias menos densos que a água $H \lt 0$; para materiais mais densos que a água, $H \gt 0$. O ar tem $H \simeq -1000$, tecido ósseo $H \simeq 1000$, enquanto os tecidos moles (gordura, músculo, glândulas etc.) têm $H$ entre −300 e 300, aproximadamente.
Essas informações são essenciais para que se possa interpretar o conteúdo do arquivo. Como pode ser visto no código fonte, para interpretar os primeiros 1910 bytes os dados são colocados em uma matriz de inteiros sem sinal com 8 bits (Uint8Array
), enquanto os demais dados são colocados em uma matriz de inteiros com sinal com 16 bits (Int16Array
).
O script mostra os dados de duas maneiras:
O primeiro histograma mostra os dados "brutos". Os dados estão divididos essencialmente em três grupos: (a) um pico em −2048, associados aos pixels que não representam medidas físicas possíveis (fora do "campo de visão" do tomógrafo); (b) um grupo entre aproximadamente −1100 e −500, associados a medidas do ar no entorno do paciente e no interior dos seus pulmões; (c) um grupo entre aproximadamente −300 e 300, associados aos tecidos moles. Para além disso existe uma "graminha" associada à pequena quantidade de tecido ósseo presente na imagem.
O segundo histograma faz um "janelamento" na região dos tecidos moles, para $-300 \lt H \lt 300$.
Ao clicar em "escolher arquivo" (ou equivalente) o navegador abrirá uma janela para a seleção do arquivo. copie no campo "Nome:" a seguinte URL:
Dependendo do seu dispositivo, o script pode demorar um pouco para responder, uma vez que são manipulados uma quantidade relativamente grande de dados.
Exercícios
![]() |
![]() |
![]() |
![]() |