您的位置:首页 > 其它

学习使用DCMTK工具

2018-03-12 15:05 197 查看
学习使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  DICOM DCMTK