Path: blob/master/site/pt-br/io/tutorials/dicom.ipynb
25118 views
Copyright 2019 The TensorFlow IO Authors.
Decodifique arquivos DICOM de exames de imagem
Visão geral
Este tutorial mostra como usar tfio.image.decode_dicom_image
no TensorFlow IO para decodificar arquivos DICOM usando o TensorFlow.
Configuração e uso
Baixe a imagem DICOM
A imagem DICOM usada neste tutorial vem do dataset NIH Chest X-ray (raios-X de tórax da NIH).
Esse dataset contém 100.000 imagens anonimizadas de raios-X do tórax no formato PNG, fornecido pelo Centro Clínico NIH e que pode ser baixado neste link.
O Google Cloud também fornece uma versão DICOM das imagens, disponível no Cloud Storage.
Neste tutorial, você vai baixar um arquivo de amostra do dataset no repositório do GitHub.
Observação: para ver mais informações sobre o dataset, confira a seguinte referência:
Xiaosong Wang, Yifan Peng, Le Lu, Zhiyong Lu, Mohammadhadi Bagheri, Ronald Summers, ChestX-ray8: Hospital-scale Chest X-ray Database and Benchmarks on Weakly-Supervised Classification and Localization of Common Thorax Diseases, IEEE CVPR, páginas 3.462-3.471, 2017
Instale os pacotes necessários e reinicie o runtime
Decodifique a imagem DICOM
Decodifique os metadados DICOM e trabalhe com tags
decode_dicom_data
decodifica as informações de tags. dicom_tags
contém informações úteis, como a idade e o sexo do paciente. Portanto, você pode usar tags DICOM como dicom_tags.PatientsAge
e dicom_tags.PatientsSex
. O tensorflow_io usa a mesma notação de tags do pacote DICOM pydicom.
Documentação
Esse pacote tem duas operações que encapsulam funções DCMTK
. decode_dicom_image
decodifica os dados de pixel dos arquivos DICOM, e decode_dicom_data
decodifica as informações de tags. tags
contém tags DICOM úteis, como tags.PatientsName
. A notação de tags é a mesma do pacote DICOM pydicom
.
Obtendo dados da imagem DICOM
contents
: Tensor do tipo string. 0-D. Arquivo DICOM codificado com byte stringcolor_dim
:bool
opcional. O padrão éFalse
. SeTrue
, um terceiro canal é anexado a todas as imagens, formando um tensor tridimensional. Uma imagem 1024x1024 em escala de cinza será 1024x1024x1on_error
: o padrão éskip
(ignorar). Esse atributo define o comportamento caso ocorra um erro ao abrir a imagem ou se o tipo de saída não conseguir acomodar todos os possíveis valores de entrada. Por exemplo, se o usuário definir o dtype de saída comotf.uint8
, mas uma imagem DICOM armazenar um tipotf.uint16
,strict
vai gerar um erro.skip
retorna um tensor unidimensional vazio.lossy
continua a operação, dimensionando o valor por meio do atributoscale
.scale
: o padrão épreserve
(preservar). Esse atributo define o que fazer com a escala dos valores de entrada.auto
fará o dimensionamento automático dos valores de entrada. Se o tipo de saída for inteiro,auto
usará a escala de saída máxima, por exemplo,uint8
, que armazena valores de [0, 255], para alargar linearmente para preencher umuint16
, com valores [0,65535]. Se a saída for float,auto
vai dimensionar no intervalo [0,1].preserve
mantém os valores como eles são. Um valor de entrada maior do que a saída máxima possível será recortado.dtype
: umtf.DType
opcional dentre:tf.uint8, tf.uint16, tf.uint32, tf.uint64, tf.float16, tf.float32, tf.float64
. O padrão étf.uint16
.name
: nome da operação (opcional).
Retorna um Tensor
do tipo dtype
, e o formato é determinado pelo arquivo DICOM.
Obtendo os dados de tags DICOM
contents
: Tensor do tipo string. 0-D. Arquivo DICOM codificado com byte stringtags
: Tensor do tipotf.uint32
de qualquer dimensão. Esses númerosuint32
mapeiam diretamente para tags DICOMname
: nome da operação (opcional).
Retorna um Tensor
do tipo tf.string
e mesmo formato que tags
. Se uma tag DICOM for uma lista de strings, elas são combinadas em uma string e separadas por uma barra invertida dupla \
. Existe um bug em DCMTK: se a tag for uma lista de números, somente o elemento com índice 0 será retornado como uma string.
Bibtex
Se esse pacote tiver ajudado, por favor, cite o seguinte:
Licença
Copyright 2019 Marcelo Lerendegui, Ouwen Huang, Gradient Health Inc.
Licenciado com Licença Apache, Versão 2.0 ("Licença"); você não pode usar este arquivo, exceto conforme disposto pela Licença. Você pode obter uma cópia da Licença em:
http://www.apache.org/licenses/LICENSE-2.0
A menos que exigido pelas leis aplicáveis ou acordado por escrito, o software distribuído com a Licença é distribuído "DA FORMA EM QUE SE ENCONTRA", SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, explícitas ou implícitas. Confira a Licença para ver as informações específicas sobre permissões e limitações da Licença.