DICOM医学图像处理:开源库mDCM与DCMTK的比较分析(一),JPEG无损压缩DCM图像

本文对比分析了DICOM医学图像处理的两个开源库——mDCM(fo-dicom)和DCMTK在JPEG无损压缩DCM图像方面的差异。通过示例代码展示了DCMTK的实现过程,同时指出mDCM在压缩后文件头可能存在错误,导致读取问题。通过修改mDCM的文件元信息,实现了JPEG无损压缩功能。总结中强调了DCM文件元信息中传输语义的重要性。
摘要由CSDN通过智能技术生成

背景介绍:

最近项目需求,需要使用C#进行最新的UI和相关DICOM3.0医学图像模块的开发。在C++语言下,我使用的是应用最广泛的DCMTK开源库,在本专栏的起初阶段的大多数博文都是对DCMTK开源库的介绍和学习。目前由于项目需要,现开始对mDCM开源库继续学习分析,因此本专栏接下来的文章会大多以mDCM开源库为例进行医学图像的讲解,DCMTK由于是C++语言开发的,所以作为我学习和剖析mDCM开源库的原始依据,我们并未放弃对DCMTK开源库的学习,而是通过更加仔细的研读和分析DCMTK的C++源码,从而更好的切更迅速的切换到C#语言环境下的医学图像处理。

DCMTK、mDCM(fo-dicom)的关系:

DCMTK的官网上有详细的说明文档,对该开源库的各个类,以及类之间的依赖关系进行了清晰的阐述。是学习DICOM3.0医学最新标准不可或缺的资源。其官网网址是:http://www.dcmtk.org/,活跃的开发者论坛地址是:http://forum.dcmtk.org/index.php

mDCM目前了解是从DCMTK开源库转过来的,或者说是该开源项目的另一个分支,是对用C#语言对C++版本的医学图像开源库的再次组织和封装,其项目托管在GitHub上的官方网址是:https://github.com/ignacioinnovo/mdcm。此处就需要提到fo-dicom了,该开源库是mDCM的升级版本,里面增加了几大特性,详情可参见GitHub网址:https://github.com/fo-dicom/fo-dicom

大致上这三者的关系就是如此,所以更说明了我们依然要以DCMTK开源库为依据,来快速学习和剖析mDCM(fo-dicom)开源库,要很好的借助于DCMTK开源库丰富而详细的说明文档,以及活跃的开发者论坛。下面我们就通过对DCM图像进行无损压缩这一任务来对比学习一下mDCM与DCMTK开源库的不同。

DCMTK与mDCM对DCM图像进行JPEG无损压缩的对比学习:

DCMTK的说明文档中对于dcmjpeg包的介绍中,就直接给出了一个利用JPEG无损压缩的实例。具体代码如下:

/*****************************************************************************
dcmjpeg程序包 
dcmjpeg提供了一个压缩/解压缩库以及可用工具。该模块包含一些类,可将DICOM图像对象在非压缩和JPEG压缩表示(传输协议)之间转换。无失真和有失真JPEG处理都被支持。这个模块实现了一族codec(编码解码器,由DcmCodec类派生而来),可以将这些codec在codec list中注册,codec list是由dcmdata模块保存的。
主要接口类: 
--DJEncoderRegistration: 一个singleton(孤立)类,为所有支持的JPEG处理注册编码器。在djencode.h中定义。 
--DJDecoderRegistration: 一个singleton(孤立)类,为所有支持的JPEG处理注册解码器。在djdecode.h中定义。 
--DJCodecEncoder: JPEG编码器的一个抽象codec类。This abstract class contains most of the application logic needed for a dcmdata codec object that implements a JPEG encoder using the DJEncoder interface to the underlying JPEG implementation. This class only supports compression, it neither implements decoding nor transcoding. 在djcodece.h中定义。 
--DJCodecDecoder: JPEG解码器的一个抽象codec类。This abstract class contains most of the application logic needed for a dcmdata codec object that implements a JPEG decoder using the DJDecoder interface to the underlying JPEG implementation. This class only supports decompression, it neither implements encoding nor transcoding. 
工具: 
dcmcjpeg: Encode DICOM file to JPEG transfer syntax 
dcmdjpeg: Decode JPEG-compressed DICOM file 
dcmj2pnm: Convert DICOM images to PGM, PPM, BMP, TIFF or JPEG 
dcmmkdir: Create a DICOMDIR file 
举例: 
--用无失真JPEG压缩一幅DICOM图像文件。 
********
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zssure

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

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

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

打赏作者

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

抵扣说明:

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

余额充值