学习使用DCMTK工具
学习使用DCMTK工具
一、了解DICOM
1、DICOM语法
DICOM维护一个所有标准属性(超过2000个)的列表,即所谓的DICOM数据字典(DICOM Data Dictionary)。DICOM依靠数据字典来保证属性命名和处理的一致性。
把这些超过2000个的项目按照一定顺序排列,所有项目首先被分成编号的项目组(group)(如果项目内容的大概相似就分为一组)。项目组是由单独的元素组合在一起的。因此,每个项目都有其自己的编号“(项目组,元素)”,这就是所谓的元素“标签(tag)”。 所有进行标签的元素都称作“属性(attribute)”,或 者DICOM“数据元素(data element)” 或简称为DICOM“元素”。项目组和元素都是用十六进制数字编号的,“(项目组,元素)”标签唯一地对应属性名称。
摘录
(Group,Element) tag (项目组,元素)标 签 |
Attribute(data element) name 属性(数据元素)名称 |
VR |
VM |
(0008,0001) |
Length to End 到结尾的长度 |
||
(0008,0005) |
Specific Character Set特定的字符集 |
CS |
1-N |
(0010,0010) |
Patient Name 病人姓名 |
PN |
|
(0010,0020) |
Patient ID 病人ID |
LO |
1 |
(0010,0030) |
Patient’s Birth Date 病人出生日期 |
DA |
1 |
(0010,0032) |
Patient’s Birth Time 病人出生时间 |
TM |
1 |
VR:值表现,DICOM标准在PS 3.5中定义了27个基本数据类型,每个VR都有他自己两个字母的缩写;表示内容的定义;数据中允许出现的字母描述;以及规定的数据长度。
VM:数据元素值多样性。
2、DICOM服务命令
处理复合(composite)数据的DIMSE服务称作“DIMSE-C”服务;而处理常规数据的DIMSE服务称为“DIMSE-N”服务。“C”和“N”这种标记经常会作为服务名称的前缀,放在服务名称之前。
例子:
C-Echo:用来校验一个DICOM AE是否与另一个AE建立了连接。
C-Store:承载着要存储的数据。
C-Find:在C-Find服务提供者(如数字归档)那里进行匹配的查询参数。
C-Move:在服务者那边下载匹配参数的文档。
3、DICOM通信
连接建立的两端都成为AE,为了区分服务请求者和服务提供者,DICOM称前者为服务类用户(Service Class Users,SCU),称后者为服务类提供者(Service Class Providers,SCP)。
请求连接(呼叫)的AE建立并发送一个A-Associate-RQ消息,即向接收(被呼叫)的AE发出请求,要求其开启一个连接。这个消息由多个呈现上下文(我们的名片),以及附加的用户信息数据打包而成,其中用户信息数据描述了AE初始化连接的能力(用户所用的请求AE)。接收AE会查看所有建议的通讯参数,如果连接被接受,它会选择最合适的参数,并返回一个A-Assciate-AC消息。
二、了解DCMTK
1、DCMTK编译
http://blog.csdn.net/YiLooks/article/details/7867855
http://blog.csdn.net/ancewer/article/details/74408441
2、DCMTK工具介绍
scu --> scp 发送dcm文件
scp: storescp.exe 104 –aet myaet
scu: storescu.exe 127.0.0.1 104 C:/DICOM/Source/CT1/CT.dcm
storescp.exe是Dcmtk工具包中用于接收DICOM影像并进行保存的服务端程序
-aet myaet中的aet为Application Entity Title
scu --> scp 查询内容
scp: wlmscpfs.exe-dfr -dfp wlistdb 104
scu: findscu 127.0.0.1 104 wlistqry/wlistqry.wl -aec OFFIS
findscu 192.168.1.7 4007 -aec "myonly" -v -k0008,0052="STUDY" query.dcm -S
findscu.exe -v -W -k 0008,0060=DR -aecDicomworklist -X 127.0.0.1 3000 worklist.dcm
如果需要查多个值,只需要重复写-k 0008,0060=DR 这个参数,当然你需要查出来你所需要的属性所对应的两个4位码。
-k 0010,0020="123456" PatientID字段为123456的患者数据
-dfr表接受字段不完整的DICOM文件作为查询内容;
-dfpwlistdb 表wlmscpfs.exe搜索的文件夹的路径,可以为绝对路径;
104 为工作列表程序的端口号;
scu --> scp 下载内容
movescu192.168.1.7 4008 -aec "myonly" -v -k0020,000d="1.2.840.113619.2.67.2158294438.15745010109084247.20000"move.dcm -S
3、模拟pacs实现上传下载
scp接受多项服务
D:\DCMTK\bin\dcmqrscp.exe -d --configdcmqrscp.cfg
scu:测试是否能连接
D:\DCMTK\bin\echoscu.exe -d localhost 11110-aec ACME_STORE -aet ACME1
D:\DCMTK\bin\echoscu.exe -d 192.168.1.65104 -aec ACME_STORE
scu:传输dcm文件
D:\DCMTK\bin\storescu.exe -d localhost11110 D:\CT.dcm -aec ACME_STORE
scu:查询dcm文件
D:\DCMTK\bin\findscu.exe -d 127.0.0.1 11110-k QueryRetrieveLevel=STUDY -k 0010,0010 -k 0010,0020 -k 0020,0010 -aecACME_STORE -v -S
scu:下载
D:\DCMTK\bin\movescu.exe -d 192.168.1.65104 +P 5003 -aec ACME_STORE -k QueryRetrieveLevel=STUDY -k 0010,0020=7637 -odD:\DICOM\Worklist\
dcm --> bmp 转换文件
dcm2pnm.exe +obCT.1.2.840.113704.9.4021.3.1.1.200927949440CT.1.2.840.113704.9.4021.3.1.1.200927949440.bmp
解析数据
dcmdump.exe D:\CT.dcm
dcmqrscp.cfg:
NetworkTCPPort = 104
MaxPDUSize = 16384
MaxAssociations =16
HostTable BEGIN
echoscu = (ECHOSCU, ywu-PC, 5000)
findscu = (FINDSCU, ywu-PC, 5001)
storescu = (STORESCU, ywu-PC, 5002)
movescu = (MOVESCU, ywu-PC, 5003)
acmeCTcompany = echoscu, findscu, storescu, movescu
HostTable END
VendorTable BEGIN
"Acme CTCompany" = acmeCTcompany
VendorTable END
AETable BEGIN
ACME_STORE D:\DICOM\DcmScuScp RW (9, 1024mb) acmeCTcompany
AETable END
学习使用DCMTK工具相关推荐
- PyTorch深度学习训练可视化工具tensorboardX
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 之前笔者提到了PyTorch的专属可视化工具visdom,参看Py ...
- 树莓派学习笔记——交叉编译工具链
0.前言 [1]为什么要使用交叉编译 交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码 ...
- wandb(wb)(weights and biases): 深度学习轻量级可视化工具入门教程
参考文章:wandb: 深度学习轻量级可视化工具入门教程 这wandb有点蛋疼啊,说登录https://wandb.ai/authorize?signup=true获取API KEY,但貌似要梯子才能 ...
- 【深度学习】PyTorch深度学习训练可视化工具visdom
PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...
- wandb: 深度学习轻量级可视化工具入门教程
本文,就来给大家介绍一款新型的机器学习可视化工具,能够让人工智能研发过程变得更加简单明了. wandb: 深度学习轻量级可视化工具入门教程 引言 wandb 验证数据可视化 自然语言处理 重要工具 极 ...
- 手机号正则表达式验证_想精通正则表达式 这几个正则表达式学习资料及工具你必须有!...
正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...
- 想精通正则表达式 这几个正则表达式学习资料及工具你必须有!
正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...
- java工具类应该抛异常吗,java学习阶段一 工具类(异常)
java学习阶段一 工具类(异常) 介绍 异常:运行期间出现的错误 背离程序本身意图的表现 基本知识 异常的分类 根类 Throwable Error 程序无法处理的错误 表示运行应用程序中教严重的问 ...
- OpenAI Gym 是一个优秀开发和比较强化学习算法的工具
OpenAI Gym 是一个优秀开发和比较强化学习算法的工具. gym的核心接口是Env方法: reset(self):重置环境的状态,返回观察. step(self, action):推进一 ...
- 深度学习半自动标注_时下流行的深度学习数据标注工具
时下流行的深度学习数据标注工具 迷若烟雨 2018-09-04 16:36:00 15820 收藏 33 分类专栏: 深度学习 版权 本文将标注工具适用的最佳运行环境分成了三类. 跨平台 https: ...
最新文章
- 由“ASP.NET网站限制访问频率”想到的两点问题(转)
- 解决Transformer固有缺陷:复旦大学等提出线性复杂度SOFT
- 反向传播算法 Backpropagation Algorithm
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
- 少写点if-else吧,它的效率有多低你知道吗?
- spring 事物的级别_Spring 事务中的隔离级别有哪几种?
- digital ocean 内存不足时增加swap文件的方法
- PyCharm 2020.2.3复制粘贴及删除键修正
- 常见笔顺错误的字_[转载]常见笔画笔顺易错字大全
- Excel 对比两列数据大小 大于等于 高亮显示
- 潇洒学校丹丹老师分享免喷涂材料注塑工艺的五大要点
- Windows安装RabbitMQ的时候出现Plugin configuration unchanged
- 华为hicar 鸿蒙,华为智能座舱的野心:HiCar上车,为鸿蒙OS铺路
- Python基础语法知识3
- SpringBoot 统一功能处理
- Meltdown: Reading Kernel Memory from User Space论文翻译
- 从欧美到亚洲,2019年全球有多少个软件工程师?
- Git教程-帮助开发人员更好的运用Git | 云效
- OJ每日一练——温度换算
- FreeBSD10 安装