DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”

本文介绍了如何将多幅JPG图像数据存入Multi-frame DCM文件,详细解析了操作步骤和错误分析,包括DICOM标准中的JPEG压缩、DcmPixelData字段及解决方案,提供了代码实例。
摘要由CSDN通过智能技术生成

背景:

        续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件。即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式。

多幅JPG图像数据存入DCM文件:

        为了避免引起歧义,这里着重说明一下。本博文的描述的场景是:假设我们手中有多张JPG文件,想把JPG文件写入DCM文件,即单个DCM文件包含多幅图像信息的Multi-Frame形式。该问题之前与CSDN博友y317215133y也讨论过,当时我在OFFIS论坛中找到了一个帖子直接给了y317215133y答复。今天重新梳理了一下发现,当时帖子中的情况与我今天要描述的问题略有不同:帖子中作者已经拥有多张图像的原始数据(从作者的描述来看,该数据是非压缩的),希望将该系列数据以压缩形式写入DCM文件中。想必作者执行该操作的目的是减少存储空间,而本博文中我拥有的是JPEG压缩的数据,也就是说我不是为了减少存储空间,而单纯的就是希望将多幅JPEG格式的图像存成Multi-frame DCM格式,便于归档管理。

        帖子中OFFIS DICOM Team人员给出的答复是:1)创建DcmFileFormat对象,利用getDataset()获得其中的数据体指针;2)利用putAndInsertXXX向1)中的Dataset写入非压缩的原始图像数据,即上一篇博文DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”所采用的方法;3)注册JPEG编码参数,例如DJ_PRLossless、DJ_RPLossy等,然后调用chooseRepresentation函数。该部分操作就是对DCM文件进行JPEG有损或无损压缩,具体过程可参照dcmcjpeg.cc中的代码;4)调用saveFile函数将编码后的数据写入Multi-fram DCM文件。

        以上四步操作并未使用DcmPixelSequence类,帖子作者以及博友y317215133y在这种场景下却希望使用DcmPixelSequence学习一下SQ字段的写入操作,其实是选择场景错误才导致错误使用DcmPixelSequence类。帖子最后作者也给出了提示,如下图:


        上述正是本文要做的事情,希望通过该实例来讲解DcmPixelSequence类的使用,并进一步学习JPEG压缩的Multi-frame DCM文件。

代码实例:

        参照OFFIS论坛中的代码http://forum.dcmtk.org/viewtopic.php?t=1544&highlight=creating+multiframe+dicom+images,直接给出源码:

// DcmPixelDataTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmdata/dcistrmf.h"
#include "dcmtk/dcmdata/dcpixel.h"
#include "dcmtk/dcmdata/dcpixseq.h"
#include "dcmtk/dcmdata/dcpxitem.h"
/*----BMP图像解析----*/
#include "dcmtk/dcmdata/libi2d/i2dbmps.h
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zssure

己欲立而立人,己欲达而达人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值