定义
dcm4che是一组面向医疗机构的开源应用与实用工具,用Java编写,以便兼顾运行性能与跨平台部署能力,早期版本支持在JDK 1.4及以上环境运行[3]。项目核心是DICOM标准的实现,即医学数字成像与通信标准,用于处理、存储、打印和传输医学影像相关信息[4]。
与单纯的编解码库不同,dcm4che同时提供一套命令行工具和一组可被其他程序引用的程序库,因此既可以直接使用,也可以作为第三方DICOM应用的底层组件[5]。项目还包含dcm4chee子项目,其中多出的字母e表示enterprise,即面向机构级使用[6]。
原理
dcm4che以模块化方式组织,按功能划分为多个构件,包括核心数据结构与解析模块dcm4che-core、网络通信模块dcm4che-net、影像处理模块dcm4che-image与dcm4che-imageio、HL7消息处理模块dcm4che-hl7、配置管理模块dcm4che-conf以及安全审计模块dcm4che-audit等[7]。配置数据可以存入LDAP目录服务,符合DICOM标准第15部分附录H定义的应用程序配置管理规范[5]。
在网络层面,该工具集实现DICOM的关联协商机制,客户端与服务端通过交换A-ASSOCIATE请求建立连接,并以调用方AE标题与被调用方AE标题来选择合适的网络应用实体[8]。影像压缩与解压借助本机代码库完成,该库是OpenCV的JNI封装,仅使用CPU计算路径,并按运行环境选择SIMD指令集[5]。
存储流程可概括为:影像设备通过C-STORE服务类将DICOM对象发送至归档端,归档端把对象写入文件系统并在数据库中登记索引,随后其他系统可通过C-FIND查询和C-MOVE或C-GET取回;Web环境下的存取则由DICOMweb定义的STOW-RS、QIDO-RS与WADO-RS接口承担[2]。
发展历程
项目的起点在2000年前后,当时开发人员Gunter Zeilinger在TIANI Medgraph公司使用商业版Java DICOM工具包JDT编写了JDicom实用工具集,此后决定自行开发一套DICOM工具包,dcm4che由此产生[9]。名称的构词方式借鉴了Java领域常见的以数字结尾的命名习惯,读音近似于按字母念出的形式[6]。
最初的设计目标是把这套工具包提交给Sun公司,作为标准化Java DICOM接口的Java规范请求,因此代码被划分为接口层与实现层;该规范请求最终未能立项,但工具包在Java DICOM开发者群体中逐渐普及[9]。随后出现的dcm4jboss子项目实现了IHE的影像管理与影像归档角色,多次通过IHE Connectathon测试并进入实际生产环境,后来更名为dcm4chee[6]。
2006年前后,出于性能、内存占用、灵活性与简化结构等考虑,工具包被重新架构,新版本定名为dcm4che2,其首个开源版本2.0.5发布于2006年5月31日[4]。此后的3.x系列是在2.x基础上的彻底重写,主要目标之一是压缩DICOM数据集的内存占用[10]。
TIANI Medgraph的所有权此后经由GWI转至Agfa Gevaert,开发工作未中断;2015年Gunter Zeilinger加入新成立的J4Care公司,该公司专注于dcm4che的开发[9]。项目采用MPL、GPL与LGPL三重许可,使用者可任选其一遵守[11]。
应用
工具包最常见的用法是嵌入其他软件,作为其读取、写入与处理DICOM文件的基础库,商业项目与开源项目均有采用[1]。配套的命令行工具覆盖多种转换需求,例如dcm2dcm用于按指定传输语法转码DICOM文件,dcm2jpg把影像转为JPEG等常见格式,dcm2xml与xml2dcm在XML表示与DICOM之间互转,jpg2dcm与pdf2dcm则分别把JPEG影像和PDF文档封装为DICOM对象[5]。
在网络测试与服务模拟方面,findscu、getscu、movescu、storescu与storescp等工具可分别发起查询、取回、存储请求或充当接收端,mppsscu与mppsscp处理检查步骤消息,dcmqrscp提供一个简易归档服务,modality可模拟影像设备[7]。另有deidentify工具用于对DICOM文件做去标识处理[5]。
在归档场景中,dcm4chee Archive 5提供符合IHE规范的影像管理与影像归档功能,支持多租户、审计日志、影像压缩以及通过XDS或XDSI注册库与存储库接入跨机构共享环境,也可配置为连接外部归档以实现数据共享与冗余[2]。该归档应用可与Web查看器等前端配合,用户社区还维护着dcm4che的文档站点、问题跟踪系统与邮件列表[12]。
作为基础组件,dcm4che被多个开源医学影像项目视为同类替代方案,例如其他DICOM库、归档服务器与影像查看器,其代码仓库的关注数在2026年时达到1400以上[13]。
局限
该工具集是为DICOM与HL7等医疗信息技术标准设计的开发组件,本身不提供面向临床诊断的完整成品系统,使用者需要具备对DICOM标准的理解才能正确配置与调用[14]。1.x系列已被2.x取代,2.x版本也已被标注为不再推荐,官方建议使用3.x及之后的版本,因此早期版本的文档与代码示例可能过时[14]。
对系统环境有一定依赖。构建3.x及之后版本需要Java 17或更高版本的开发工具包[5]。影像压缩所依赖的本机库在Linux上动态链接glibc,需要满足最低glibc版本,无法直接在Alpine等使用musl的发行版上运行,除非额外提供兼容层;该库仅支持CPU路径,不提供GPU或OpenCL加速;32位架构的发布包已不再提供[5]。
参见
参考资料
- Open Source Clinical Image and Object Management [引用日期2026-10-14]
- dcm4chee-arc-light 5 | DCM4CHE [引用日期2026-10-14]
- The Project [引用日期2026-10-14]
- dcm4che3 [引用日期2026-10-14]
- dicom4che [引用日期2026-10-14]
- History [引用日期2026-10-14]
- dcm4che/dcm4che: DICOM Implementation in JAVA · GitHub [引用日期2026-10-14]
- /* ***** BEGIN LICENSE BLOCK ***** [引用日期2026-10-14]
- dcm4che History | DCM4CHE [引用日期2026-10-14]
- dcm4che DICOM Toolkit & Library [引用日期2026-10-14]
- license [引用日期2026-10-14]
- dcm4che.org Wiki [引用日期2026-10-14]
- dcm4che [引用日期2026-10-14]
- dcm4che2 DICOM Toolkit [引用日期2026-10-14]