⚠️ これは 非公式の翻訳サイトです。DCMTK / OFFIS とは無関係です。正確な情報は 原文(https://support.dcmtk.org/docs/mod_dcmjpeg.html) を参照してください。

dcmjpeg: JPEG 圧縮・展開ライブラリとユーティリティアプリ群

本モジュールには、DICOM 画像オブジェクトの非圧縮表現と JPEG 圧縮表現(転送構文)を相互に変換するクラスが含まれる。可逆(lossless)・非可逆(lossy)の両方の JPEG プロセスに対応する。本モジュールは DcmCodec クラスから派生したコーデック群を実装しており、これらは dcmdata モジュールが管理するコーデックリストに登録できる。

主なインタフェースクラスは次のとおり:

ツール

本モジュールには次のコマンドラインツールが含まれる:

使用例

次の例は、可逆 JPEG で DICOM 画像ファイルを圧縮する方法を示す:

DJEncoderRegistration::registerCodecs(); // register JPEG codecs

DcmFileFormat fileformat;

if (fileformat.loadFile("test.dcm").good())

{

DcmDataset *dataset = fileformat.getDataset();

DcmItem *metaInfo = fileformat.getMetaInfo();

DJ_RPLossless params; // codec parameters, we use the defaults

// this causes the lossless JPEG version of the dataset to be created

if (dataset->chooseRepresentation(EXS_JPEGProcess14SV1, &params).good() &&

dataset->canWriteXfer(EXS_JPEGProcess14SV1))

{

// store in lossless JPEG format

fileformat.saveFile("test_jpeg.dcm", EXS_JPEGProcess14SV1);

}

}

DJEncoderRegistration::cleanup(); // deregister JPEG codecs

次の例は、JPEG 圧縮された DICOM 画像ファイルを展開する方法を示す:

DJDecoderRegistration::registerCodecs(); // register JPEG codecs

DcmFileFormat fileformat;

if (fileformat.loadFile("test_jpeg.dcm").good())

{

DcmDataset *dataset = fileformat.getDataset();

// decompress data set if compressed

if (dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL).good() &&

dataset->canWriteXfer(EXS_LittleEndianExplicit))

{

fileformat.saveFile("test_decompressed.dcm", EXS_LittleEndianExplicit);

}

}

DJDecoderRegistration::cleanup(); // deregister JPEG codecs