从PixelData值(DCMTK)开始解压缩JPEG DICOM图像

乔迪

我想使用DCMTK解压缩DICOM文件,例如本例http://support.dcmtk.org/docs/mod_dcmjpeg.html,但是我的问题是我不想加载文件。

我有一个内部有PixelData值压缩的数组。我已经尝试过这种方式,但是没有用。

DJDecoderRegistration::registerCodecs();
DJEncoderRegistration::registerCodecs();

DcmFileFormat fileformat;
DJ_RPLossless param_lossless;

DcmDataset *pDataset = fileformat.getDataset();
pDataset->chooseRepresentation(EXS_JPEGProcess14SV1, &param_lossless);

BYTE*   pBufferImg = (BYTE*)pArray->ImgDicom.GetAt(0); //here I have my PixelData
//I put it into my dataset
pDataset->putAndInsertUint8Array(DCM_PixelData, pBufferImg, pArray->NumByteImg);
//decompress
OFCondition status = pDataset->chooseRepresentation(EXS_LittleEndianExplicit, NULL); //status is OK
...
//add all the tags like Rows, Columuns, BitStored, etc
...
if (pDataset->canWriteXfer(EXS_LittleEndianExplicit))
{
   fileformat.saveFile("test.dcm", EXS_LittleEndianExplicit);
}

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

已创建文件test.dcm,但我无法打开它(免费Dicom Viewr软件崩溃),并且尺寸等于压缩文件,因此解码过程不起作用...我的错误是什么?

我也尝试过:

DcmElement * dummyElem;
        pDataset->findAndGetElement(DCM_PixelData, dummyElem);

        Uint32 frameSize;
        dummyElem->getUncompressedFrameSize(pDataset, frameSize);

        BYTE* buf = new BYTE[frameSize];
        OFString decompressedColorModel;
        Uint32 startFragment = 0;

        dummyElem->getUncompressedFrame(pDataset, 0, startFragment, buf, frameSize, decompressedColorModel);

        pDataset->putAndInsertUint8Array(DCM_PixelData, (const Uint8*)buf, frameSize);
        pDataset->removeAllButCurrentRepresentations();
        //check if everything went well
        if (pDataset->canWriteXfer(EXS_LittleEndianExplicit))
        {
            fileformat.saveFile("test.dcm", EXS_LittleEndianExplicit);
        }

getUncompressedFrame返回错误“太多字节请求”如果使用frameSize - 1的不是框架尺寸我有错误“非法调用也许错参数” ......那是为什么?!?

乔迪

好吧,多亏了DICOM官方论坛,我才发现了Image2Dcm::insertEncapsulatedPixelData()功能,正是我需要的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将DICOM图像转换为JPEG图像

来自分类Dev

将DICOM图像转换为JPEG图像

来自分类Dev

如何使用DCMTK 3.6.1加载dicom图像

来自分类Dev

GDCM python DICOM解压缩

来自分类Dev

GDCM python DICOM解压缩

来自分类Dev

DICOM访问压缩数据(DCMTK)

来自分类Dev

如何在MATLAB中保存或更新DICOM图像的更改值

来自分类Dev

压缩和解压缩dd图像-zstd而不是gzip

来自分类Dev

解压缩PVRTC压缩图像格式?

来自分类Dev

使用DCMTK(C ++)压缩DICOM文件

来自分类Dev

在Google Colab中解压缩图像目录不会解压缩全部内容

来自分类Dev

是否有可能在木瓜 Dicom 查看器中查看 jpeg 图像?

来自分类Dev

如何解压缩使用速记存储的图像?

来自分类Dev

Forticlient“解压缩图像文件时出错”

来自分类Dev

创建Dicom图像

来自分类Dev

读取DICOM图像

来自分类Dev

DICOM能否将窗口中心和窗口宽度与像素数据压缩解压缩混淆

来自分类Dev

如何解压缩包含图像的Zip文件而不在android中删除任何图像?

来自分类Dev

如何找到dicom的图像平面

来自分类Dev

使用VTK转换DICOM图像

来自分类Dev

了解DICOM图像中的BPP

来自分类Dev

从DICOM图像获取测量值

来自分类Dev

如何更改Dicom图像的灰度?

来自分类Dev

如何访问下载的解压缩文件夹中的图像?

来自分类Dev

如何在Android Studio中使用BASE64做解压缩图像

来自分类Dev

跨浏览器的图像解压缩的一致性如何?

来自分类Dev

Android-使用PixelMed Java DICOM Toolkit显示DICOM图像

来自分类Dev

使用DCMTK从现有DICOM文件创建新的DICOM文件

来自分类Dev

Android尚不支持DICOM JPEG压缩