dicom文件的传输语法讲解

dicom文件的传输语法讲解

Dicom全称是医学数字图像与通讯,这里讲diocm格式文件的解读,读取本身是没啥难度的 无非就是字节码数据流处理。只不过确实比较繁琐。
dicom中文协议文档:http://download.csdn.net/download/wenzhi20102321/9897014
dicom文件结构:
1

整体结构先是128字节所谓的导言部分,跳过就是了,接着就是四个字节组成的字符串,然后是dataElement元素依次排列的方式, 就是一个dataElement接一个dataElement的方式排到文件结尾.我们要读取dicom里面的各种数据就是在各个数据元素中。通俗的讲dataElement就是指tag,就是破Dicom标准里定义的数据字典,每个dataElement中的tag决定自身或整个文件的某些数据类型或自身dataElement内容类别。

标记tag(2字节UInt16分组号和2字节UInt16元素号);

tag是4个字节表示的 前两字节是组号后两字节是元素号 比如0008(组号) 0018(元素号)。
我们获取dicom里面的数据,就是根据tag,来知道这个dataElement里面是否是我们需要的数据,然后读取该dataElement里面的数据。

tag的dataElement结构,分为下面三种:

1.显示VR:VR为OB OW OF UT SQ UN的元素结构

组号元素号VR预留值长度数据元素值
2222(0x00,0x00)4由数据长度决定

组号和元素号组成tag,上面的数组表示给类型占有的字节长度

2.显示VR:VR为普通类型时元素结构(少了预留那一行)

组号元素号VR值长度数据元素值
2224由数据长度决定

3.隐式VR时元素结构(也就是dataElement中没有VR这个值)

组号元素号值长度数据元素值
224由数据长度决定

所有dataElement从前到后按tag又可简单分段:

文件元dataElement不受传输语法影响 总是以显示VR方式表示 因为它里面就定义了传输语法
普通dataElement受传输语法影响 显示VR表示方式还是隐式VR表示方式
像素数据dataElement最重要也是最大的一个数据项 其实存储的就是图像数据

决定dataElement的传输方式的tag是0002, 0010

这个tag决定了dicom文件所有普通tag的传输方式和影像的存储方式!
传输的方式包括little字节方式和big字节方式。
dicom文件的图像分为压缩过的和没压缩的。

1
上面图就是一个dicom文件的数据展示。

下面罗列出该tag的VF值,并介绍他表示的意义。

未压缩:

意义VF
Implicit VR Little Endian:同下
Default Transfer Syntax for DICOM1.2.840.10008.1.2
Explicit VR Little Endian1.2.840.10008.1.2.1
Explicit VR Big Endian1.2.840.10008.1.2.2

无损压缩:

意义VF
JPEG Lossless :同下
Default Transfer Syntax for Lossless JPEG同下
ImageCompression1.2.840.10008.1.2.4.70
JPEG 2000 Image Compression(Lossless Only)1.2.840.10008.1.2.4.90
RLE Lossless1.2.840.10008.1.2.5

有损压缩:

意义VF
Default Transfer Syntax for Lossy同下
JPEG 12 Bit Image Compression1.2.840.10008.1.2.4.51
LOSSY(8 bit)1.2.840.10008.1.2.4.50
动态:MPEG2 image Compression1.2.840.10008.1.2.4.100

上面这些VF值虽然不是所有的,但是也算是最常用的,我们遇见的dicom文件的99%都是在上面。
上面可以看到未压缩的文件都是显示VR类型的,虽然压缩的没标明,但是我知道那基本都是隐式类型&little字节。
我常见的压缩格式是无损压缩的JPEG和JPEG2000的dicom文件。上面还写有RLE也是一个压缩格式。
还有一点要注意的是显示VR和隐式VR和字节方式little字节和big字节没有太大的关联,是一种组和关系。
比如显示VR有可能是little字节的,也有可能是big字节的,隐式VR也是同理。
具体的查找就要去看dicom协议的定义了!

看了上面那么多,知道有显示VR和隐式VR,和little字节和big字节的传输方式,但是有什么意义呢?
表面上来说,隐式VR的dataElement要比显示的VR的dataElement前面要少调VR这两/四个字节。
特别要注意的是,隐式VR并不是这个dataElement没有值类型,而是隐藏了,它这个tag的类型该是什么,还是什么,就像前面那句话说的,少两个字节而已。
隐式与显式没什么好讨论的啊,隐式一个tag少2个字节,可以节省空间,就像有的人的名字有4个字有的2个一样的吧
我觉得之所有会有显隐式之分,应该是当时制定DICOM标准时,为了兼容那几个已有的大厂商。

大小字节的区别:

little和big字节方式,决定流的传输方式,比如:是同一个字节流的数据通过不同的方式传输后表现的数据形式是不一样的。

5

图像压缩的原理:

修剪率:

2

无损压缩:

3
把固定的符号替换成短一些的另一种符号。

有损压缩:

4
把相近的固定符号替换成某一个符号。

dicom传输的相关知识也只能介绍到这里,其实我也是一个菜鸟,上面很多知识还没有理解透彻,只是把这些知识罗列出来,给大家参考一下!

dicom文件解析知识的其他地址:

1.dicom文件详解

http://blog.csdn.net/wenzhi20102321/article/details/75127362

2.dicom文件的值类型VR详解

http://blog.csdn.net/wenzhi20102321/article/details/75127140

3.dicom文件tag详解

http://blog.csdn.net/wenzhi20102321/article/details/75127101

4.android 解析并显示dicom文件的数据和图像

http://blog.csdn.net/wenzhi20102321/article/details/75040225

5.java代码使用ImageJ解析dicom文件成图片

http://blog.csdn.net/wenzhi20102321/article/details/74995084

前面5个是我自己写的,后面是一些我自己看过的相关资料:

6.Dicom文件解析

http://blog.csdn.net/leaf6094189/article/details/8510325

7.使用dcm4che3获取Dicom的bmp格式缩略图

http://blog.csdn.net/Kerrigeng/article/details/60866656

8.使用dcm4che3解析DICOM中,中文乱码问题

http://blog.csdn.net/Kerrigeng/article/details/53942846

9.使用dcm4che3对jpeg压缩的dcm文件进行解压

http://blog.csdn.net/Kerrigeng/article/details/62215647

10.DICOM的常用Tag分类和说明

http://www.cnblogs.com/stephen2014/p/4579443.html

11.dicom的大牛zssure的博客,几十篇文章

http://blog.csdn.net/zssureqh/article/category/1389985

12.dicom协议中文文档下载

http://download.csdn.net/detail/wenzhi20102321/9897014

13.Sante DICOM Editor 4,查看dicom文件的工具,直接打开用

http://download.csdn.net/detail/wenzhi20102321/9895616

共勉:现在的你跟十年以后的你,是有很大关系的!

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在使用 `storescu.exe` 工具发送 DICOM 文件时设置传输语法,你可以使用 `-x` 参数指定要使用的传输语法。以下是一个示例命令行: ``` storescu -v -aet <本地AE标题> -aec <服务端AE标题> -a <服务端IP地址> -p <服务端端口号> -x <传输语法> <DICOM文件路径> ``` - `-v`:可选参数,用于启用详细的日志输出。 - `-aet <本地AE标题>`:替换为你的应用程序在 DICOM 网络中的 AE 标题。 - `-aec <服务端AE标题>`:替换为目标设备的 AE 标题。 - `-a <服务端IP地址>`:替换为目标设备的 IP 地址。 - `-p <服务端端口号>`:替换为目标设备的端口号。 - `-x <传输语法>`:替换为要使用的传输语法的 UID。你可以在 DICOM 标准的 Transfer Syntax (UID) 列表中找到各种传输语法的 UID 值。 - `<DICOM文件路径>`:替换为要发送的 DICOM 文件的路径。 举个例子,假设你要使用 `storescu.exe` 工具向 IP 地址为 `192.168.0.100` 的设备发送名为 `example.dcm` 的 DICOM 文件,并将传输语法设置为 'Explicit VR Little Endian',你可以使用以下命令: ``` storescu -v -aet MY_APP -aec TARGET_AE -a 192.168.0.100 -p 104 -x 1.2.840.10008.1.2 -x 1.2.840.10008.1.2.1 example.dcm ``` 请根据实际情况替换相关参数和文件路径,并确保提供正确的传输语法 UID。 在发送 DICOM 文件之前,建议检查目标设备支持的传输语法,以确保选择了目标设备支持的传输语法。 请注意,这只是一个基本示例,实际操作中可能需要根据工具的文档或帮助指南提供其他参数。确保按照工具的要求进行操作,并根据需要处理发送过程中的日志和错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

峥嵘life

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

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

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

打赏作者

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

抵扣说明:

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

余额充值