学习使用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工具相关推荐

  1. PyTorch深度学习训练可视化工具tensorboardX

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 之前笔者提到了PyTorch的专属可视化工具visdom,参看Py ...

  2. 树莓派学习笔记——交叉编译工具链

    0.前言 [1]为什么要使用交叉编译     交叉编译工具较快开发的速度.树莓派中已经安装了gcc工具链,可在树莓派中直接编译源代码生成可执行文件.于此同时,PC机上也可使用gcc工具链生成可执行代码 ...

  3. wandb(wb)(weights and biases): 深度学习轻量级可视化工具入门教程

    参考文章:wandb: 深度学习轻量级可视化工具入门教程 这wandb有点蛋疼啊,说登录https://wandb.ai/authorize?signup=true获取API KEY,但貌似要梯子才能 ...

  4. 【深度学习】PyTorch深度学习训练可视化工具visdom

    PyTorch Author:louwill Machine Learning Lab 在进行深度学习实验时,能够可视化地对训练过程和结果进行展示是非常有必要的.除了Torch版本的TensorBoa ...

  5. wandb: 深度学习轻量级可视化工具入门教程

    本文,就来给大家介绍一款新型的机器学习可视化工具,能够让人工智能研发过程变得更加简单明了. wandb: 深度学习轻量级可视化工具入门教程 引言 wandb 验证数据可视化 自然语言处理 重要工具 极 ...

  6. 手机号正则表达式验证_想精通正则表达式 这几个正则表达式学习资料及工具你必须有!...

    正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...

  7. 想精通正则表达式 这几个正则表达式学习资料及工具你必须有!

    正则表达式不是什么开发语言,也不什么脚本语言,但是你在做项目开发的时候,离不开它.你可以把它理解过一种逻辑公式,正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本.正则对刚入门的程序员,甚至 ...

  8. java工具类应该抛异常吗,java学习阶段一 工具类(异常)

    java学习阶段一 工具类(异常) 介绍 异常:运行期间出现的错误 背离程序本身意图的表现 基本知识 异常的分类 根类 Throwable Error 程序无法处理的错误 表示运行应用程序中教严重的问 ...

  9. OpenAI Gym 是一个优秀开发和比较强化学习算法的工具

    OpenAI Gym 是一个优秀开发和比较强化学习算法的工具. gym的核心接口是Env方法: reset(self):重置环境的状态,返回观察.     step(self, action):推进一 ...

  10. 深度学习半自动标注_时下流行的深度学习数据标注工具

    时下流行的深度学习数据标注工具 迷若烟雨 2018-09-04 16:36:00 15820 收藏 33 分类专栏: 深度学习 版权 本文将标注工具适用的最佳运行环境分成了三类. 跨平台 https: ...

最新文章

  1. 由“ASP.NET网站限制访问频率”想到的两点问题(转)
  2. 解决Transformer固有缺陷:复旦大学等提出线性复杂度SOFT
  3. 反向传播算法 Backpropagation Algorithm
  4. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
  5. 少写点if-else吧,它的效率有多低你知道吗?
  6. spring 事物的级别_Spring 事务中的隔离级别有哪几种?
  7. digital ocean 内存不足时增加swap文件的方法
  8. PyCharm 2020.2.3复制粘贴及删除键修正
  9. 常见笔顺错误的字_[转载]常见笔画笔顺易错字大全
  10. Excel 对比两列数据大小 大于等于 高亮显示
  11. 潇洒学校丹丹老师分享免喷涂材料注塑工艺的五大要点
  12. Windows安装RabbitMQ的时候出现Plugin configuration unchanged
  13. 华为hicar 鸿蒙,华为智能座舱的野心:HiCar上车,为鸿蒙OS铺路
  14. Python基础语法知识3
  15. SpringBoot 统一功能处理
  16. Meltdown: Reading Kernel Memory from User Space论文翻译
  17. 从欧美到亚洲,2019年全球有多少个软件工程师?
  18. Git教程-帮助开发人员更好的运用Git | 云效
  19. OJ每日一练——温度换算
  20. FreeBSD10 安装

热门文章

  1. c语言随机抽取函数,Excel随机取值,给你三种解决方案
  2. 如何进入Dos窗口以及了解常用Dos命令
  3. 网站压力测试的几种方法
  4. mysql手册05_存储过程和存储函数
  5. MySQL和Navicat for MySQL下载及安装详细教程
  6. ip首部可选字段_IP报文格式及各字段意义
  7. 图计算:社区发现算法
  8. c语言函数实现顺序线性表,数据结构C语言实现——顺序线性表SqList
  9. web全栈工程师进阶学习线路图
  10. JAVA JSP学生助学金管理系统 jsp学生资助管理系统jsp学生管理系统jsp贷款管理系统jsp大学生贷款管理系统