dcmect: Enhanced CT オブジェクトを扱うためのライブラリ
目次
- はじめに
- dcmect の使い方
- 生成
- 読み込み
- 保存
- 変更
- コード例
- 圧縮
- サポートするモジュール
- サポートするファンクショナルグループマクロ
はじめに
このモジュールは、DICOM の Enhanced CT オブジェクトを扱うためのクラス群を提供します。これらのオブジェクトの生成・読み込み・保存が可能です。可能な範囲で複数のチェックを行い、妥当な Enhanced CT オブジェクトだけが書き出されるようにします。本モジュールは、共通の IOD 属性を管理するために dcmiod モジュールを、Enhanced CT オブジェクトに必要なファンクショナルグループを管理するために dcmfg モジュールを多用しています。
このモジュールの中心となるクラスは次のとおりです。
dcmect の使い方
dcmect モジュールは中心となるクラス EctEnhancedCT を提供しており、Enhanced CT オブジェクトの読み込みや生成を始める際の起点として使います。EctEnhancedCT クラスは、規格で定義された Enhanced CT IOD の構成に近い形でデータを管理します。モジュールのリスト(サポートするモジュール を参照)と、一連のファンクショナルグループマクロ(サポートするファンクショナルグループマクロ を参照)を保持し、これらが合わさって Enhanced CT オブジェクトを構成します。
生成
新しい Enhanced CT オブジェクトをゼロから生成するには、ファクトリメソッド EctEnhancedCT::create() を使う必要があります(通常のコンストラクタは protected になっています)。create() は、妥当な Enhanced CT オブジェクトを生成するためにいずれにせよ必要となる情報の入力を求めます。
その後、サポートされる各モジュール内のさまざまな属性を設定できます。モジュールごとに参照を返す get() メソッドが用意されています。たとえば Patient Module を取得して属性 Patient's Name を設定するには EctEnhancedCT::getIODPatientModule() を使います(IODPatientModule::setPatientName())。
例外は Enhanced CT Image Module の属性で、これらは EctEnhancedCT クラスの set() メソッドを使って直接設定できます。たとえば EctEnhancedCT::setISOCenterPosition() です。
ファンクショナルグループは次の2通りの方法で追加します。
- EctEnhancedCT::addForAllFrames() は、ファンクショナルグループを "shared"(共有)として追加します。つまり、この Enhanced CT オブジェクトに含まれるすべてのフレームに対して有効になります。
- EctEnhancedCT::Frames::addFrame() は、ピクセルデータを伴う新しいフレームを追加します。あわせて、"per-frame"(フレームごと)として追加するファンクショナルグループの組を受け取ります。
Enhanced CT オブジェクトを構築したら、DcmItem または DICOM ファイルに書き出せます(EctEnhancedCT::writeDataset() と EctEnhancedCT::saveFile())。
読み込み
既存の Enhanced CT オブジェクトは、静的メソッド EctEnhancedCT::loadFile()(DICOM ファイルから読み込む)または EctEnhancedCT::loadDataset()(メモリ上の既存の DcmItem オブジェクトから読み込む)で読み込めます。
圧縮については 圧縮に関する節 を参照してください。
保存
既存の Enhanced CT オブジェクトは、EctEnhancedCT::saveFile()(DICOM ファイルに保存する)または EctEnhancedCT::writeDataset()(メモリ上の既存の DcmItem オブジェクトに書き込む)で書き出せます。既定では、EctEnhancedCT は転送構文 Little Endian Explicit で非圧縮のファイルを書き出します。
圧縮については 圧縮に関する節 を参照してください。
変更
既存の EctEnhancedCT オブジェクトは、上述のメソッドを使ってメモリ上で変更できます。ただし変更は慎重に行う必要があり、整合性のないオブジェクトを生んでしまうおそれがあります。そのため、dcmect モジュールで既存オブジェクトを変更することは推奨されません。
コード例
dcmect/tests ディレクトリには t_roundtrip.cc というファイルがあり、Enhanced CT オブジェクトを生成・書き出し・読み込みするコードが含まれています。dcmect モジュールの使い方を示す、ほぼひととおり揃ったデモになっています。
圧縮
EctEnhancedCT は非圧縮のピクセルデータを対象に動作します。そのため、圧縮された("カプセル化された")転送構文でエンコードされたファイルは、まず展開(伸長)を試みます。
DCMTK はさまざまな圧縮転送構文をサポートしていますが、圧縮や展開(伸長)を行う対応コーデックは、それらを使うアプリケーション側でまず登録しておく必要があります。EctEnhancedCT はコーデックを自動で登録せず、その作業をモジュールの利用者に委ねています。コーデックがいったん登録されれば、EctEnhancedCT は圧縮されたデータセットを展開する際にそれらを利用します。
コーデックの登録(および後で行う登録解除)の仕組みについては、たとえば dcmjpeg モジュール を参照してください。
保存時、EctEnhancedCT::saveFile() はファイルを Little Endian Explicit 転送構文で書き出します。引数 writeXfer に圧縮転送構文を指定すると、dcmect は書き出す前にファイルの圧縮を試みます。データセットやファイルを読み込むときと同様、これは利用者が対応する展開(伸長)コーデックをあらかじめ登録している場合にのみ機能します。
サポートするモジュール
Enhanced CT IOD の以下のモジュールがサポートされています。
- 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
以下のモジュールは(まだ) サポートされていません 。
- 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
本ドキュメントの最終更新以降に DICOM 規格へ追加された、サポート対象外の任意モジュールが他にもある可能性があります。
サポートするファンクショナルグループマクロ
以下のファンクショナルグループマクロがサポートされています。
- 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
以下のファンクショナルグループマクロは(まだ) サポートされていません 。
- Referenced Image
- Cardiac Synchronization
- Contrast/Bolus Usage
- Respiratory Synchronization
- Multi-energy CT Processing
- Multi-energy CT Characteristics
本ドキュメントの最終更新以降に DICOM 規格へ追加された、サポート対象外の任意ファンクショナルグループマクロが他にもある可能性があります。