DCMTK

由于现在的医学影像设备的图像存储和传输正在逐渐向DICOM标准靠拢,在我们进行医学图像处理的过程中,经常需要自己编写和DICOM格式的图像相关的各种程序模块,以完成自己处理功能。如果从头开始理解DICOM的协议,然后完全自己编写这些代码来实现这些协议,是一件工程浩大的事情。德国offis公司开发的DCMTK,为我们提供了实现DICOM协议的一个平台,使得我们可以在它的基础上轻松的完成自己的主要工作,而不必把太多的精力放在实现DICOM协议的细节问题上。本文以WINDOWSXP+VC6.0为开发平台,从DCMTK的下载、调试、使用等方面介绍基于DCMTK的DICOM相关程序编写过程。
DCMTK是由德国offis公司提供的开源项目,并拥有相应的版权。这个开发包经过10多年的开发和维护,已经基本实现了DICOM协议的所有内容。该开发包提供所有的源代码、支持库和帮助文档。DCMTK提供了在各种操作系统下使用的可能版本,如LINUX、SUN、MACOS、WINDOWS等,用户可更具自己的开发平台进行编译。目前DCMTK的版本是3.6.0。

DescriptionDCMTK is a collection of libraries and applications implementing large parts the DICOM standard. It includes software for examining, constructing and converting DICOM image files, handling offline media, sending and receiving images over a network connection, as well as demonstrative image storage and worklist servers. DCMTK is is written in a mixture of ANSI C and C++. It comes in complete source code and is made available as "open source" software.
DCMTK has been used at numerous DICOM demonstrations to provide central, vendor-independent image storage and worklist servers (CTNs - Central Test Nodes). It is used by hospitals and companies all over the world for a wide variety of purposes ranging from being a tool for product testing to being a building block for research projects, prototypes and commercial products.
The DCMTK software can be compiled under Windows and a wide range of Unix operating systems including Linux, Solaris, HP-UX, IRIX, FreeBSD, OpenBSD and MacOS X. All necessary configuration scripts and project makefiles are supplied.
See the documentation included with the distribution for the latest information about changes in DCMTK between releases. A summary of the highlights of the current release is available in the ANNOUNCE file. An overview of the toolkit's modules is included in the distribution's README file. The COPYRIGHT text and the history of DCMTK's development are also available online. Frequently asked questions are answered in the FAQ.
 

使用道具举报

  
孔老师 当前离线
注册时间
2011-5-25
最后登录
2012-3-27
阅读权限
200
积分
1357
精华
1
帖子
378
查看详细资料

Rank: 9Rank: 9Rank: 9

发表于 2011-11-13 11:42:28 | 显示全部楼层
http://www.cnblogs.com/-clq/archive/2011/10/31/2230107.html
pacs dicom3.0 DCMTK EFilm

--------------------------------------------------

http://bbs.hc3i.cn/thread-26153-1-1.html

dcmtk 中的movescu如何测试? 试了很长时间不知如何测试请高手相助

弄个Dicom服务器 ConQuest或者EFilm  然后在你自己的程序中试着把服务器上的Dicom图像通过movescu拉取到本地客户端

http://blog.csdn.net/leo_888/archive/2010/12/21/6089141.aspx

--------------------------------------------------

DCMTK中的findscu.exe以及movescu.exe的使用方法总结

在DCMTK官方网站上下载DCMTK软件包

然后编译该软件包,如何编译这里就省去了,主要记录其中的测试程序findscu.exe以及movescu.exe的用法

编译好DCMTK之后会在app目录下生成findscu.exe以及movescu.exe的测试程序,可以把findscu.exe文件放到D盘的根目录中,打开cmd输入以下命令:

前提先生成query.dcm的查询文件

D:/>findscu 192.168.1.7 4007 -aec "myonly" -v -k 0008,0052="STUDY" query.dcm -S

假如Dicom服务器中有Dicom的文件就会返回Dicom文件的信息

下面再记录一下movescu.exe的用法

前提是有move.dcm文件

E:/>movescu 192.168.1.7 4008 -aec "myonly" -v -k 0020,000d="1.2.840.113619.2.67.2158294438.15745010109084247.20000" move.dcm -S

把查询出来的UID替代0020,000d字段的信息,如果成功的话就会把Dicom服务器上面的Dicom文件拉取到客户端

--------------------------------------------------

http://bbs.hc3i.cn/thread-29092-1-1.html

使用dcmtk进行worklist服务的测试方法
dcmtk, 测试, worklist, 服务器
服务器端,把dcmtk-3.5.4\dcmwlm\wlistdb\OFFIS目录下的文件通过dump2dcm转换到L:\dcmtk\testWLMSCPFS\OFFIS目录下,用如下语句启动

wlmscpfs -v -dfp "L:\dcmtk\testWLMSCPFS" 666

客户端,把dcmtk-3.5.4\dcmwlm\wlistqry目录下的文件通过dump2dcm转换到L:\dcmtk\testWLMSCPFS\wlistqry目录下,用如下语句启动

findscu 127.0.0.1 666 -aec "OFFIS" -k 0010,0010="VIVALDI^ANTONIO" -k 0010,0020 -k 0010,0030  -v L:\dcmtk\testWLMSCPFS\wlistqry\wlistqry0.dcm

这时,不管-k使用什么参数,服务器都返回

C-Find RSP: MsgID: 1 [Status=Success]

  AffectedSOPClassUID: =FINDModalityWorklistInformationModel

  Data Set: Not Present

Releasing Association

跟踪服务器端代码,发现WlmFileSystemInteractionManager:etermineMatchingRecords中288行,如下代码DatasetIsComplete总是返回False,

if( enableRejectionOfIncompleteWlFiles && !DatasetIsComplete( dataset ) )

导致不进行数据查询,感觉是enableRejectionOfIncompleteWlFiles 这个变量没有初始化,检查代码,发现它被初始化为True,检查初始化代码,原来在WlmDataSourceFileSystem::ConnectToDataSource中进行的初始化,而WlmConsoleEngineFileSystem::WlmConsoleEngineFileSystem初始化时就接受--disable-file-reject这个参数,因此决定添加--disable-file-reject这个参数,修改服务器启动参数如下:

wlmscpfs -v -dfp "L:\dcmtk\testWLMSCPFS" 666 --disable-file-reject

这样服务器就可以返回匹配-k的数据了

要注意:findscu 中的参数 -k 0010,0020 -k 0010,0030 是不带值的,作用是让服务器返回这两个-k表示的值。


楼主是用开发库中现成的exe通过命令行做的吧,请问有没有自己写的代码啊?现在刚接触dcmtk,对dcmnet功能不是很懂,能否给详细说一下。
   

dcmtk有现成的调试测试工具(exe)程序,首先要熟悉这些程序的用法,然后对照着边测试开发就可以省力很多了

--------------------------------------------------

http://blog.csdn.net/pachleng/article/details/5792718

第二章 打印影像(胶片)

1 、目的:将 DICOM 影像提交至相机(干式胶片打印机),并打印。

2 、实验平台: Windows XP Professional SP2 ,其他 Windows 系统笔者未验证,希望验证过的朋友添加进来。

3 、前置条件

    在您的电脑上新建文件夹如下

C:/PACS ,用于存放相关文档

C:/DCMTK ,用于存放 dcmtk 工具包及源代码

C:/DICOM

C:/DICOM/Source 用于存放实验过程中用到的源图片

       以下 3 个文件夹用于存放“提交影像”过程中的产生的临时文件,注意大小写,并确认为其属性为“可写”。

C:/DICOM/Source/database

C:/DICOM/Source/spool

C:/DICOM/Source/log

C:/DICOM/Dest ,用于存放实验过程中接收到的图片,

       以下 3 个文件夹用于存放“模拟影像打印”过程中的产生的临时文件,注意大小写,并确认为其属性为“可写”。

C:/DICOM/Dest/database

C:/DICOM/Dest/spool

C:/DICOM/Dest/log

4 、所需工具:

1 ) dcmtk 中 dcmprscp.exe 、 dcmprscu.exe 、 dcmpsprt.exe 、 dcmpstat.cfg

       已编译的 dcmtk 工具包下载链接:

ftp://dicom.offis.de/pub/dicom/o ... .5.4-win32-i386.zip

下载预编译的 Dcmtk 工具包至 C:/DCMTK ,并解压,解压后的目录为 C:/DCMTK/dcmtk-3.5.4-win32-i386 。

2 )请至以下链接下载测试用的 DICOM 图片,不需积分:

http://download.csdn.net/source/2218931

    将下载到图片拷贝至 C:/DICOM/Source 文件夹并解压,解压后的目录为 C:/DICOM/Source/CT01 ,包含文件 CT.dcm 和 ct.bmp 。

5 、前置知识

    要完成本节的实验,您得具备 Windows 系列操作的使用经验,具备命令行方式程序的使用经验则更好。

6 、实验步骤

       1 )将 dcmpstat.cfg 分别拷贝至 C:/DICOM/Source 目录和 C:/DICOM/Dest 目录

    2 )启动 dcmprscp

    启动 cmd.exe ,依次键入以下命令

C:>cd C:/DICOM/Dest

C:/DICOM/Dest >dcmprscp.exe -c dcmpstat.cfg -p IHEFULL   ( 命令到此结束,注意大小写 ) ,将出现类似如下的提示,否则,请检查您的操作步骤:

$dcmtk: dcmprscp v3.5.4 2005-12-20 $

2010-08-0517:30:43

started

    3 )提交影像

再启动一个 cmd.exe ,依次键入

C:/>cd C:/DICOM/Source

C:/DICOM/Source>dcmpsprt.exe -s -c dcmpstat.cfg -p IHEFULL C:/DICOM/Source/CT01/CT.dcm --filmsize 8INX10IN  (命令到此结束,注意大小写,另外 8IN 和 10IN 之间的字符为字母 x,y,z 中的 x 的大写)

如果一切正常,在目录 C:/DICOM/Dest/database 将出现文件名类似 HG_4c5a89d3397d8c09.dcm 和 SP_4c5a89d3397d8c09.dcm 的文件,你的电脑上文件名应该稍有区别,但是开头的 HG_ 和 SP_ 应是一致的,其中 HG_4c5a89d3397d8c09.dcm 的大小较大,在我的电脑上约为 2049KB 。

4 )查看影像

启动 cmd.exe ,依次键入以下命令,将 DICOM 文件转换为 bmp 文件。

C:>cd C:/DICOM/Dest/database

C:/DICOM/Dest/database>dcm2pnm.exe +ob HG_4c5a89d3397d8c09.dcm HG_4c5a89d3397d8c09.bmp

    双击打开 HG_4c5a89d3397d8c09.bmp ,将看到一张典型的肺部平扫的 CT 图片,与第一章中的图片一致。

7 、提交影像至相机

1 )按照 3 和 4 的描述,在您的电脑上部署好目录和工具,通过交换机或者 HUB 将您的电脑和相机进行连接,并将您电脑的 IP 设置为与相机在同一个网段,比如:

相机 IP : 192.168.1.12

则您电脑 IP : 192.168.1.11

具体如何设置可以上网查询,或者联系系统管理员。

2 )咨询您的系统管理员,得到相机的 IP 地址、打印胶片的端口号、 AE Title 和相机支持的胶片尺寸(如 8INX10IN , 10INX12IN 等)

3 )用“写字板”打开 C:/DICOM/Source/dcmpstat.cfg ,按 Ctrl+F ,搜索定位至如下所示:

[IHEFULL]

Aetitle = IHEFULL

Description = IHE Full Print SCP

Hostname = localhost

Port = 10005

将 Aetitle= 后面的 IHEFULL 修改为 2) 中得到的相机的 aetitle ,

将 Hostname= 后面的 localhost 修改为 2 )中得到的相机的 IP 地址,

将 Port= 后面的 10005 修改为 2 )中得到的相机打印胶片的端口号。

保存后退出。

4 )在您的电脑上启动 cmd.exe ,依次键入命令

C:/>cd C:/DICOM/Source

C:/DICOM/Source>dcmpsprt.exe -s -c dcmpstat.cfg -p IHEFULL  C:/DICOM/Source/CT01/CT.dcm --filmsize 8INX10IN       (命令到此结束, 8INX10IN 修改您的相机支持的胶片尺寸。)



如无意外,您的相机应该根据您的指示打印出了一张胶片,内容为 6 中显示的图片。如果还没有,仔细检查上述步骤,细心点,相信自己,你会成功的。



8 、总结

       1 、命令解释

       1 ) dcmprscp.exe -c dcmpstat.cfg -p IHEFULL

       -c dcmpstat.cfg 表 dcmprscp.exe 引用的配置文件;

       -p IHEFULL 表 dcmprscp.exe 引用的相机



       2 ) dcmpsprt.exe -s -c dcmpstat.cfg -p IHEFULL  C:/DICOM/Source/CT01/CT.dcm --filmsize 8INX10IN

       -s 表生成待打印的 DICOM 文件的临时文件后,提交至相机, s 即 spool ;

       -c dcmpstat.cfg 表 dcmpsprt.exe 引用的配置文件;

       -p IHEFULL 表 dcmpsprt.exe 引用的相机;

       C:/DICOM/Source/CT01/CT.dcm 为待打印的 DICOM 文件;

       --filmsize 8INX10IN 表打印的胶片的尺寸。



       2 、 dcmpstat.cfg 为打印引用的配置文件,打印胶片所需的参数都在该文件中,待您熟悉后可以自定义很多参数。



       3 、应用为王,如果过程中有不懂的地方,可以先跳过,实验成功就是胜利。

--------------------------------------------------

http://blog.csdn.net/pachleng/article/details/5465526

[置顶]Dcmtk在PACS开发中的应用(基础篇) 第一章 与影像设备互连 作者 冷家锋
2010-04-09 07:12 546人阅读 评论(0) 收藏 举报

Dcmtk 在 PACS 开发中的应用

第一章 与影像设备互连

       PACS(Picture Archiving and Communication System) ,译为医学影像归档与通讯系统,关于该名词更多详细的解释,请参考网络。

一、接收影像

1 、目的:接收影像设备发送的影像,并显示。

2 、实验平台: Windows XP Professional SP2 ,其他 Windows 系统笔者未验证,希望验证过的朋友添加进来。

3 、前置条件

       在您的电脑上新建文件夹如下

C:/PACS ,用于存放相关文档

C:/DCMTK ,用于存放 dcmtk 工具包及源代码

C:/DICOM

C:/DICOM/Source 用于存放实验过程中用到的源图片

C:/DICOM/Dest ,用于存放实验过程中接收到的图片,如接收的图片

4 、所需工具:

1 ) dcmtk 中 storescp.exe 、 storescu.exe 、 dcm2pnm.exe

       已编译的 dcmtk 工具包下载链接:

ftp://dicom.offis.de/pub/dicom/o ... .5.4-win32-i386.zip

下载预编译的 Dcmtk 工具包至 C:/DCMTK ,并解压,解压后的目录为 C:/DCMTK/dcmtk-3.5.4-win32-i386 。

       2 ) DICOM ( Digital Imaging and Communication in Medicine )图片,链接为本人的资源,不需积分:

http://download.csdn.net/source/2218931

       将下载到图片拷贝至 C:/DICOM/Source 文件夹并解压,解压后的目录为 C:/DICOM/Source/CT01 ,包含文件 CT.dcm 和 ct.bmp 。

5 、前置知识

       要完成本节的实验,您得具备 Windows 系列操作的使用经验,具备命令行方式程序的使用经验则更好,当然不具备后者的使用经验也没关系,跟着笔者的脚步我们一起来学习它,没想象中的那么难 ;-) 。在本文中,新手朋友们可能会遇到很多不熟悉的名词, Take it easy ,我们的宗旨是【应用为王】 ,先撇开它们,书读百遍,其义自现嘛。

6 、实验步骤

       1 )将 C:/DCMTK/dcmtk-3.5.4-win32-i386/bin 目录下的所有 exe 文件拷贝至 %windir%( 一般为您的硬盘中 C:/Windows 文件夹 ) 。这样我们的命令行解释器(下文简称 cmd.exe ,可以通过“开始” à 运行 à 输入 ”cmd.exe” à 确定来启动)启动后,处于任何一个当前目录,都可以使用 dcmtk 工具包。

       2 )启动 storescp

       启动 cmd.exe ,依次键入以下命令

C:>cd C:/DICOM/Dest

C:/DICOM/Dest >storescp.exe 104

       3 )发送影像

       再启动一个 cmd.exe ,键入

C:/>storescu.exe 127.0.0.1 104 C:/DICOM/Source/CT1/CT.dcm

如果一切正常,在目录 C:/DICOM/Dest 将出现文件 CT.1.2.840.113704.9.4021.3.1.1.200927949440 ,文件名有点长,不是吗?

       4 )启动 cmd.exe ,依次键入以下命令,将 DICOM 文件转换为 bmp 文件。

       C:>cd C:/DICOM/Dest

C:/DICOM/Dest> dcm2pnm.exe +ob CT.1.2.840.113704.9.4021.3.1.1.200927949440 CT.1.2.840.113704.9.4021.3.1.1.200927949440.bmp

       然后,双击打开 CT.1.2.840.113704.9.4021.3.1.1.200927949440.bmp ,将看到一张典型的肺部平扫的 CT 图片。

7 、与影像设备互连初步

       有读者朋友问了,到此为止,你都没有提到影像设备的事,你做了以上一大堆事情到底有什么意义呢?笔者想说的是意义太大了,通过以上实验,您已经跨入 PACS 开发的大门,列位看官莫急,且听笔者慢慢道来。

       让我们在 6 中的实验基础上学习一个稍微复杂点的命令先。

       启动 cmd.exe ,键入

C:>storescp.exe –aet myaet 104

下面,笔者对这个命令做点解释:

1 )如名称所示, storescp.exe 是 Dcmtk 工具包中用于接收 DICOM 影像并进行保存的服务端程序, store 是个英文单词(废话一句 ;- )),表保存; scp 是指 Service Class Provider ,字面意思为服务类提供者,即 DICOM 标准中所说的服务端程序。

2 ) -aet myaet 中的 aet 为 Application Entity Title ,翻译为中文:应用程序实体标题,有点生硬,呵呵; -aet myaet 意即设置 storescp.exe 的 AET 为 myaet 。

3 ) 104 ,指该服务程序监听的端口,具备网络基础的朋友们可能会了解端口的意义,不清楚的朋友可以先跳过,【应用为王】嘛。

这个稍微复杂点的命令先解释到这,如果您有点云里雾里,没关系,多看几遍,或者先放过意义的理解,随着后面和笔者一起学习,一定会理解的,自信和耐心是我们学习的首要条件。

到此,有机会实际接触医院影像科设备的朋友已经可以自信的说:我可以接收影像设备发送的影像了!

8 、与影像设备互连

       1 )按照 3 和 4 的描述,在您的电脑上部署好目录和工具,通过交换机或者 HUB 将您的电脑和影像设备进行连接,并将您电脑的 IP 设置为与影像设备在同一个网段,比如:

       影像设备 IP : 192.168.1.10

       则您电脑 IP : 192.168.1.11

       具体如何设置可以上网查询,或者联系系统管理员。

       2 )将您电脑的 IP (此处假定为 192.168.1.11 ,请根据实际情况)、端口( 104 )、 AET ( myaet )告知影像设备维护人员(什么?您就是影像设备维护人员,那太好了),并请影像设备维护人员在影像设备上添加到您电脑的接收节点。

       3 )在您的电脑上启动 cmd.exe ,依次键入命令

       C:/DICOM/Dest

C:/DICOM/Dest>storescp.exe –aet myaet 104 ,然后请影像医师手工发送一幅影像到您的电脑节点。

OK ,在 C:/DICOM/Dest 目录有新的影像吗?恭喜你!什么,还没有?仔细检查上述步骤,细心点,你会成功的。
--------------------------------------------------

http://bbs.hc3i.cn/thread-5152-1-1.html

请问什么是ADVT?
ADVT
看大家讨论的比较热烈,有点浅浅的认识,知道它是作用于网络传输的,有没有资料共享一下啊,呵呵,多谢各位坛友

这个工具对于刚开始学习DICOM通讯很有帮助,这个东东的下载你得到网上搜一个比较新的版本
--------------------------------------------------

http://qimo601.iteye.com/blog/1050351
 

使用道具举报


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值