dcmjpeg: JPEG 圧縮・展開ライブラリとユーティリティアプリ群
本モジュールには、DICOM 画像オブジェクトの非圧縮表現と JPEG 圧縮表現(転送構文)を相互に変換するクラスが含まれる。可逆(lossless)・非可逆(lossy)の両方の JPEG プロセスに対応する。本モジュールは DcmCodec クラスから派生したコーデック群を実装しており、これらは dcmdata モジュールが管理するコーデックリストに登録できる。
主なインタフェースクラスは次のとおり:
ツール
本モジュールには次のコマンドラインツールが含まれる:
- dcmcjpeg: DICOM ファイルを JPEG 転送構文にエンコード
- dcmdjpeg: JPEG 圧縮された DICOM ファイルをデコード
- dcmj2pnm: DICOM 画像を PGM/PPM・PNG・TIFF・JPEG・BMP に変換
- dcmmkdir: DICOMDIR ファイルを作成
使用例
次の例は、可逆 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, ¶ms).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