dcmdata: データのエンコード/デコードを行うライブラリとユーティリティ群
このモジュールには、DICOM のデータ構造とファイルを扱うためのクラスが含まれます。また、DICOM 記録媒体で必要となる DICOMDIR ファイルにも対応しています。
主なインターフェースクラスは次のとおりです。
このほか、知っておくと役立つクラスを挙げます。
ツール
このモジュールには、次のコマンドラインツールが含まれます。
- cda2dcm: CDA ファイルを DICOM ファイル形式へカプセル化する
- dcm2cda: DICOM にカプセル化された CDA から CDA ファイルを取り出す
- dcm2json: DICOM ファイルとデータセットを JSON へ変換する
- dcm2pdf: DICOM にカプセル化された PDF から PDF ファイルを取り出す
- dcm2xml: DICOM ファイルとデータセットを XML へ変換する
- dcmconv: DICOM ファイルのエンコードを変換する
- dcmcrle: DICOM ファイルを RLE 転送構文へエンコードする
- dcmdecap: DICOM にカプセル化された保存オブジェクトからファイルを取り出す
- dcmdrle: RLE 圧縮された DICOM ファイルをデコードする
- dcmdump: DICOM ファイルとデータセットをダンプする
- dcmencap: ドキュメントを DICOM 形式へカプセル化する
- dcmftest: ファイルが DICOM Part 10 形式かどうかを判定する
- dcmgpdir: 汎用 DICOMDIR を作成する
- dcmodify: DICOM ファイルを編集する
- dump2dcm: ASCII ダンプを DICOM ファイルへ変換する
- img2dcm: 標準的な画像形式を DICOM 形式へ変換する
- json2dcm: JSON ドキュメントを DICOM ファイルまたはデータセットへ変換する
- pdf2dcm: PDF ファイルを DICOM ファイル形式へカプセル化する
- stl2dcm: STL ファイルを DICOM ファイル形式へカプセル化する
- xml2dcm: XML ドキュメントを DICOM ファイルまたはデータセットへ変換する
ファイル
次のファイルに、さらに詳しい説明があります。
使用例
次の例は、DICOM ファイルを読み込み、患者名を出力する方法を示します。
DcmFileFormat fileformat;
OFCondition status = fileformat.loadFile("test.dcm");
if (status.good())
{
OFString patientName;
if (fileformat.getDataset()->findAndGetOFString(DCM_PatientName, patientName).good())
{
cout << "Patient's Name: " << patientName << endl;
} else
cerr << "Error: cannot access Patient's Name!" << endl;
} else
cerr << "Error: cannot read DICOM file (" << status.text() << ")" << endl;
次の例は、DICOM データセットを作成してファイルに保存する方法を示します。
char uid[100];
DcmFileFormat fileformat;
DcmDataset *dataset = fileformat.getDataset();
dataset->putAndInsertString(DCM_SOPClassUID, UID_SecondaryCaptureImageStorage);
dataset->putAndInsertString(DCM_SOPInstanceUID, dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));
dataset->putAndInsertString(DCM_PatientName, "Doe^John");
/ ... /
dataset->putAndInsertUint8Array(DCM_PixelData, pixelData, pixelLength);
OFCondition status = fileformat.saveFile("test.dcm", EXS_LittleEndianExplicit);
if (status.bad())
cerr << "Error: cannot write DICOM file (" << status.text() << ")" << endl;
次の例は、複数のファイルから汎用 DICOMDIR を作成する方法を示します。
DicomDirInterface dicomdir;
OFCondition status = dicomdir.createNewDicomDir();
if (status.good())
{
while ( / there are files / )
dicomdir.addDicomFile( / current filename / );
status = dicomdir.writeDicomDir();
if (status.bad())
cerr << "Error: cannot write DICOMDIR (" << status.text() << ")" << endl;
} else
cerr << "Error: cannot create DICOMDIR (" << status.text() << ")" << endl;