DCMTK-dcmimage-压缩/解压缩库
Posted itzyjr
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DCMTK-dcmimage-压缩/解压缩库相关的知识,希望对你有一定的参考价值。
此模块包含在DICOM图像对象的未压缩和JPEG压缩表示(传输语法)之间进行转换的类。支持无损和有损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
dataset->chooseRepresentation(EXS_JPEGProcess14SV1, ¶ms);
// check if everything went well
if (dataset->canWriteXfer(EXS_JPEGProcess14SV1))
// force the meta-header UIDs to be re-generated when storing the file
// since the UIDs in the data set may have changed
delete metaInfo->remove(DCM_MediaStorageSOPClassUID);
delete metaInfo->remove(DCM_MediaStorageSOPInstanceUID);
// 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
dataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL);
// check if everything went well
if (dataset->canWriteXfer(EXS_LittleEndianExplicit))
fileformat.saveFile("test_decompressed.dcm", EXS_LittleEndianExplicit);
DJDecoderRegistration::cleanup(); // deregister JPEG codecs
以上是关于DCMTK-dcmimage-压缩/解压缩库的主要内容,如果未能解决你的问题,请参考以下文章