⚠️ Este é um site de tradução não oficial, sem relação com o DCMTK / OFFIS. Para informações oficiais, consulte a página original (https://support.dcmtk.org/docs/mod_dcmect.html).

dcmect: uma biblioteca para trabalhar com objetos Enhanced CT

Sumário

  • Introdução
  • Como usar o dcmect
    • Criação
    • Leitura
    • Salvamento
    • Modificação
    • Exemplo de código
    • Compressão
  • Módulos com suporte
  • Macros de grupos funcionais com suporte

Introdução

Este módulo contém classes para lidar com objetos Enhanced CT do DICOM. Ele é capaz de criá-los, carregá-los e salvá-los. Diversas verificações (na medida do possível) garantem que apenas objetos Enhanced CT válidos sejam gravados. Este módulo faz uso intenso do módulo dcmiod para gerenciar os atributos comuns de IOD, bem como do módulo dcmfg para gerenciar os grupos funcionais exigidos pelos objetos Enhanced CT.

A classe principal deste módulo é:

Como usar o dcmect

O módulo dcmect oferece uma classe principal, EctEnhancedCT , que deve ser usada como ponto de partida para carregar ou criar objetos Enhanced CT. A classe EctEnhancedCT gerencia seus dados de forma semelhante à organização do IOD Enhanced CT correspondente no padrão. Ela mantém uma lista de módulos (veja Módulos com suporte) e um conjunto de macros de grupos funcionais (veja Macros de grupos funcionais com suporte) que, juntos, compõem o objeto Enhanced CT.

Criação

Para criar um novo objeto Enhanced CT do zero, é necessário usar um método de fábrica, EctEnhancedCT::create() (o construtor comum é protected). create() solicita algumas informações obrigatórias, necessárias em qualquer caso para criar objetos Enhanced CT válidos.

Em seguida, os diversos atributos dos módulos com suporte podem ser definidos. Há um método get() para cada módulo que retorna uma referência, por exemplo EctEnhancedCT::getIODPatientModule() para obter o Patient Module e definir o atributo Patient's Name (IODPatientModule::setPatientName())

Uma exceção são os atributos do Enhanced CT Image Module, que podem ser definidos diretamente usando métodos set() na classe EctEnhancedCT, por exemplo EctEnhancedCT::setISOCenterPosition().

Os grupos funcionais são adicionados de duas maneiras:

  1. EctEnhancedCT::addForAllFrames() adiciona um grupo funcional como "shared" (compartilhado), ou seja, válido para todos os frames que farão parte deste objeto Enhanced CT
  2. EctEnhancedCT::Frames::addFrame() adiciona um novo frame com dados de pixel e também recebe um conjunto de grupos funcionais que devem ser adicionados como "per-frame" (por frame).

Depois de construído, o objeto Enhanced CT pode ser gravado em um DcmItem ou em um arquivo DICOM (EctEnhancedCT::writeDataset() ou EctEnhancedCT::saveFile()).

Leitura

Um objeto Enhanced CT existente pode ser lido usando os métodos estáticos EctEnhancedCT::loadFile() (carregar a partir de um arquivo DICOM) ou EctEnhancedCT::loadDataset() (ler a partir de um objeto DcmItem já existente em memória).

Para compressão, veja a seção sobre compressão.

Salvamento

Um objeto Enhanced CT existente pode ser gravado usando os métodos EctEnhancedCT::saveFile() (salvar em arquivo DICOM) ou EctEnhancedCT::writeDataset() (gravar em um objeto DcmItem já existente em memória). Por padrão, EctEnhancedCT grava arquivos não comprimidos na sintaxe de transferência Little Endian Explicit.

Para compressão, veja a seção sobre compressão.

Modificação

Um objeto EctEnhancedCT existente pode ser modificado em memória usando os métodos descritos acima. Observe que a modificação deve ser feita com cuidado e pode gerar objetos inconsistentes. Por isso, não é recomendado modificar objetos existentes com o módulo dcmect.

Exemplo de código

O diretório dcmect/tests contém um arquivo chamado t_roundtrip.cc, que reúne código para criar, gravar e ler um objeto Enhanced CT, sendo, portanto, uma demonstração bastante completa de como usar o módulo dcmect.

Compressão

EctEnhancedCT opera sobre dados de pixel não comprimidos. Por isso, ele tenta primeiro descomprimir um arquivo codificado com uma sintaxe de transferência comprimida ("encapsulada").

O DCMTK oferece suporte a diversas sintaxes de transferência comprimidas; no entanto, os codecs correspondentes que realizam a compressão ou a descompressão precisam ser registrados previamente pelo aplicativo que deseja usá-los. EctEnhancedCT não registra esses codecs automaticamente, deixando essa tarefa a cargo do usuário do módulo. Uma vez registrados os codecs, EctEnhancedCT os utiliza ao tentar descomprimir o conjunto de dados comprimido.

Veja, por exemplo, o módulo dcmjpeg para saber como funciona o registro (e, mais tarde, o cancelamento do registro) dos codecs.

Ao salvar, EctEnhancedCT::saveFile() grava o arquivo na sintaxe de transferência Little Endian Explicit. Ao definir o parâmetro writeXfer para uma sintaxe de transferência comprimida, dcmect tenta comprimir o arquivo antes de gravá-lo. Assim como ao ler um conjunto de dados ou arquivo, isso só funciona se o usuário tiver registrado previamente os codecs de descompressão correspondentes.

Módulos com suporte

Os seguintes módulos do IOD Enhanced CT têm suporte:

  • Patient Module
  • Patient Study Module
  • General Study Module
  • General Series Module
  • Enhanced CT Series Module
  • Frame of Reference Module
  • Synchronization Module
  • General Equipment Module
  • Enhanced General Equipment Module
  • Image Pixel Module
  • Multi-frame Functional Groups Module
  • Multi-frame Dimension Module
  • Acquisition Context Module
  • Enhanced CT Module
  • SOP Common Module
  • Common Instance Reference Module

Os seguintes módulos não têm suporte (ainda):

  • Enhanced Contrast/Bolus Module
  • Cardiac Synchronization Module
  • Respiratory Synchronization Module
  • Supplemental Palette Color Lookup Table Module
  • Device Module
  • Specimen Module
  • Enhanced Multi-energy CT Acquisition Module
  • ICC Profile Module
  • Frame Extraction Module

Pode haver outros módulos opcionais sem suporte que tenham sido adicionados ao padrão DICOM desde a última atualização desta documentação.

Macros de grupos funcionais com suporte

As seguintes macros de grupos funcionais têm suporte:

  • Pixel Measures
  • Frame Content
  • Plane Position (Patient)
  • Plane Orientation (Patient)
  • Derivation Image
  • Frame Anatomy
  • Frame VOI LUT
  • Real World Value Mapping
  • Irradiation Event Identification
  • CT Image Frame Type
  • CT Acquisition Type
  • CT Acquisition Details
  • CT Table Dynamics
  • CT Position
  • CT Geometry
  • CT Reconstruction
  • CT Exposure
  • CT X-Ray Details
  • CT Pixel Value Transformation
  • CT Additional X-Ray Source
  • Temporal Position

As seguintes macros de grupos funcionais não têm suporte (ainda):

  • Referenced Image
  • Cardiac Synchronization
  • Contrast/Bolus Usage
  • Respiratory Synchronization
  • Multi-energy CT Processing
  • Multi-energy CT Characteristics

Pode haver outras macros de grupos funcionais opcionais sem suporte que tenham sido adicionadas ao padrão DICOM desde a última atualização desta documentação.