【DICOM Transfer Syntax UID】DICOM传输中一个非常重要却易被忽略的TAG

本文由Markdown 语法编辑器编辑完成。

声明:
封面图像由Google Gemini生成,提示词:“DICOM3.0的图标 + TransferSyntaxUID的介绍,生成一个博客的封面图”。

在这里插入图片描述

1.背景和引言:

在医学影像AI软件的开发过程中,研发和测试人员,经常需要使用dcmtk中的storescu命名行,进行DICOM文件的发送。

在发送的过程中,如果使用类似的指令:

storescu -aet TEST -aec PACS +sd +r -d 10.10.22.xx 1111x /xxx.dcm

偶尔会遇到以下的报错:
在这里插入图片描述

这时如果不了解错误的原因,那么图像就无法发送成功。

通过咨询AI, 可以了解到,这是因为storescu时,客户端(SCU)和服务端(SCP), 在传输前会进行一个传输协议的协商。客户端需要告诉它本次将要发送的dicom图像的传输语法(Transfer Syntax UID), 服务端会根据当前是否有能力接收该传输语法的图像,而决定是否接收图像。

由于以上的storescu的指令中,未特别指明传输语法,那么就是默认的DICOM的传输语法 —— Little Endian Explicit。而当服务端发现,当前发送的图像,实际不是默认的传输语法时,便会协商失败,服务端拒绝接收图像。因此会出现上面的报错。
在这里插入图片描述

解决方案有三种:
方案1: dcmsend直接发送压缩图像

# 自动处理压缩格式,必要时解压缩
dcmsend -v -aet <你的AET> -aec <对方AET> <对方IP> <端口> <文件.dcm>
 
# 如果确定要强制解压缩(包括有损压缩)
dcmsend +dly -v -aet ... -aec ... <IP> <端口> <文件>

方案 2:手动解压缩后发送

先用 dcmdjpeg 或 dcml2pnm 解压缩,再用 storescu:

# 解压缩 JPEG-LS 文件
dcmdjpeg +el <输入.dcm> <输出.dcm>
 
# 然后发送(此时文件已是 Little Endian Explicit)
storescu -v -aet ... -aec ... <IP> <端口> <输出.dcm>

方案 3:配置 storescu 提议 JPEG-LS(如果 SCP 支持)

如果 SCP 实际支持 JPEG-LS 但未配置,强制 storescu 提议该传输语法:
https://support.dcmtk.org/docs/storescu.html

# 提议 JPEG-LS Lossless
storescu --propose-lossless -v -aet ... -aec ... <IP> <端口> <文件.dcm>
 
# 或组合提议(同时提议压缩和未压缩)
storescu -xs -xt -xv -v -aet ... -aec ... <IP> <端口> <文件.dcm>

2. Transfer Syntax UID到底是干什么用的?

2.1 DICOM标准中关于TransferSyntaxUID的定义

我们已经知道,在DICOM的传输过程中, 客户端和服务端,必须就将要发送的DICOM图像,进行传输协议的协商。那么这个传输协议,里面到底包含了哪些内容呢?

我们需要根据它的定义,以及结合它在DICOM标准中的位置,来了解清楚它的作用。

DICOM标准中,关于Transfer Syntax UID的介绍在: https://dicom.nema.org/medical/dicom/current/output/chtml/part05/chapter_10.html

以下是DICOM3.0标准中的一个总览图。而TransferSyntaxUID, 属于第5章节(Data Structure and Encoding)的部分。
在这里插入图片描述

Transfer Syntax的定义:

A Transfer Syntax is a set of encoding rules able to unambiguously represent one or more Abstract Syntaxes. 
传输语法是一组编码规则,能够明确地表示一个或多个抽象语法。

In particular, it allows communicating Application Entities to negotiate common encoding techniques they both support (e.g., byte ordering, compression, etc.).
具体来说,它允许通信的应用程序实体协商它们都支持的通用编码技术(例如,字节顺序、压缩等)。

A Transfer Syntax is an attribute of a Presentation Context, one or more of which are negotiated at the establishment of an Association between DICOM Application Entities.
传输语法是表示上下文的一个属性,在 DICOM 应用程序实体之间建立关联时,会协商一个或多个表示上下文。

从DICOM3.0标准中,关于传输语法的定义,可以了解到,它主要是用于在客户端和服务端进行DICOM文件传输前,在建立连接时,进行一个关于图像如何编码和压缩等的技术的协议的依据。只有双方协议沟通成功后,才能进行接下来的DICOM文件传输。否则就会出现文章一开头的那个报错。

2.2 TransferSyntaxUID的主要内容

从定义中可以看出,TransferSyntaxUID, 主要定义了 byte ordering 和 compression 两个方面。一个是字节顺序,一个是压缩格式。

从这个网站中,可以看到,目前常见的传输语法包括:
https://www.dicomlibrary.com/dicom/transfer-syntax/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 通过dcmdump或gdcmdump, 查看图像的传输语法

通过dcmtk或gdcm提供的解析dicom文件的工具,可以很方便地查看图像的传输语法。
dcmdump,是将一些已知的UUID, 直接用名称带代替;而gdcmdump, 则仍然展示的还是UUID的原始值。

2.3.1 查看未压缩图像

比如: Little Endian Explicit, 它对应的UUID的值就是: 1.2.840.10008.1.2.1

TagNameUUIDName
Media Storage SOP Class UID1.2.840.10008.5.1.4.1.1.2CTImageStorage
Transfer Syntax UID1.2.840.10008.1.2.1LittleEndianExplicit
SOP Class UID1.2.840.10008.5.1.4.1.1.2CTImageStorage

dcmdump xxx.dcm
在这里插入图片描述
gdcmdump xxx.dcm
在这里插入图片描述

2.3.2 查看压缩图像

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值