- 浏览: 3449153 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
sonichy:
Qt5改动很多,要改改了。
基于QItemDelegate的例子1 SpinBoxDelegate -
我的主页6:
楼主,2.2子查询的分页方式:SELECT * FROM ar ...
Mysql 分页语句Limit用法 -
liguoqi:
非常感谢楼主的用心指导,工具以及图片例子都提供了 赞!
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
问下这个图片怎么解压损坏呀
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载 -
liguoqi:
楼主讲解的非常详细,还附带工具和图片例子,非常感谢
两款免费DCIOM 图像浏览软件介绍和DICOM图像例子供下载
何 博 曹晓光 杜振洲
(北京航空航天大学图像中心 北京 100083)
DICOM 网关是医学图像存档与通信系统(PACS) 的关键部分,用于接收、存储、转发DICOM 医学图像,实现了DICOM存储和通讯的关键技术。本文介绍了DICOM 网关的详细设计过程以及在Windows 2000/ XP 操作系统下利用DCMTK工具包实现DICOM 网关的具体方法,并进行了对比测试和结果分析。
引言
医学图像存档与通信系统(简称PACS) 是遵循医学数字成像和通讯标准(简称DICOM) 的计算机网络系统。PACS 应用网络通讯和计算机图像处理技术,整合全医院医学图像的获取、存储、传输、显示和管理,从而改进医学图像的管理质量,提高工作效率,降低管理成本。DICOM 网关用于接收、存储、转发DICOM 医学图像,因此, DICOM网关是PACS 的关键部分之一,其实现技术也是PACS 的关键技术之一。本文在研究DICOM 国际标准和改造流行的DICOM 开发工具包DCMTK的基础上,进一步设计实现了Windows 2000/ XP操作系统的DICOM 网关程序。本文阐明了需要解决的各类实际问题和总体解决方案的设计构想,并进行了程序对比测试和结果分析,涉及的思路、方法和结果可供同类相关研究和开发参考。
1 DICOM 网关总体设计
1. 1 图像存储方案
PACS 中图像有两个特点: (1) 图像数据量大;(2) 访问频率高。由于关系数据库支持海量图像数据的高频率访问能力差, 直接在诸如Oracle 或SQL Server 等关系数据库中存储DICOM 图像,将无法满足PACS 存储海量数据和即时响应的要求。PACS 采用如下图像存储方案:将DICOM 图像所包含的相关信息存储在关系数据库,将图像数据以文件的形式存储在图像存档服务器( Picture Archiving Server ,简称PAS) 中,通过DICOM 图像所包含的病人、检查等信息为数据库和PAS 建立对应关系。
1. 2 图像传输流程
PACS 中DICOM 图像流程如下:
(1) 登记工作站登记病人信息,在数据库中建立该病人的记录,将病人信息填入数据库;
(2) 操作医疗设备的检查医生将病人信息登记到医疗设备中,然后进行检查;
(3)DICOM 网关从医疗设备获取图像;
(4)DICOM 网关将图像转发并存储到PAS ;
(5)DICOM 网关将图像在PAS 的存储目录写入该病人的数据库记录中;
(6) 诊断工作站调用病人图像时,首先访问数据库中该病人记录,获取DICOM 图像在PAS 中的存储目录;
(7) 诊断工作站根据存储目录以FTP 方式获取PAS 上的图像,进行阅片或其他处理。
整个过程如图1 所示,其中虚线代表信息数据流,实线代表图像数据流
1. 3 DICOM 网关工作流程
根据PACS 中图像传输流程,自行设计的DICOM网关用于实现图像采集和图像存储功能。DICOM 网关负责完成1. 2 节中描述的第(3) 、(4) 、(5) 步工作,需要实现的功能包括: (1) 与医疗设备实现DICOM 通讯并存储DICOM 图像; (2) 转发DICOM 图像到PAS ; (3) 访问数据库。DICOM 网关的工作流程如图2 所示。
2 DICOM 网关详细设计
2. 1 图像采集机制设计
DICOM网关负责采集医疗设备产生的DICOM 图像。根据DICOM 协议,连接的双方通过应用实体(Application Entity ,简称AE) 进行通讯,AE 的名字叫做AE Title。AE 代表了某个进程,它必须拥有物理网络中唯一的网络地址,即表示层地址。由于DICOM 采用TCP/ IP 作为底层协议,AE映射到表示层地址就是IP 地址和TCP 端口号。在进行实际的DICOM 设备连接时,必须设置AETitle、IP 和端口号这三个参数,才能接收DICOM图像。设置参数后,DICOM 网关监听网络消息,接收到DICOM 连接消息后,协商传输语法、应用上下文、表示上下文等内容,一旦协商成功,就与医疗设备建立连接,进行数据传输,实现DICOM 通讯过程,从而采集到DICOM 图像。
2. 2 图像存储机制设计
DICOM 网关按照分级目录进行图像存储。
各级目录的命名由对应的DICOM 图像中与病人、医疗设备相关的信息确定。这些信息包括检查号( ExamNo) 、设备类型(Modality) 、检查日期(StudyDate) 、病人ID ( Patient ID) 、病人姓名拼音(PatientName) 、检查序列号(Series Number) 、传输语法( Transfer Syntax UID) 等。
目录结构需要便于查找、备份、导出等日常文件操作。为了保证文件操作的效率,目录结构设计为四级: (1) 图像类型; (2) 采集时间; (3) 病人信息;(4) 图像序列号。其中第一级目录命名为图像中Modality 的属性值; 第二级目录命名为图像中StudyDate 的属性值; 第三级目录命名为图像中Patient ID 属性值和PatientName 属性值的组合,从而保证病人信息的唯一性;第四级目录命名为图像中SeriesNumber 的属性值。
比如一个ID 为2000 , 名为J ack 的病人, 在2004 年3 月15 日做了两次CT 检查,分别得到序列号0001 和序列号0002 的两个序列的CT 图像,那么第一次检查的图像存储目录是CT \20040315 \ 2000 J ack \ 0001 ,第二次检查的图像存储目录是CT \ 20040315 \ 2000 J ack \ 0002 。这种结构的优点在于既保证文件存储的唯一性,又方便文件的查找和备份。即使同一病人在同一天做了多次同类设备的检查,仍然能够保证每次检查的图像的存储目录唯一。
2. 3 图像转发机制设计
DICOM网关负责转发DICOM图像到PAS 上。首先网关将接收到的图像按照四级目录结构存储在本地,然后再转发到PAS ,并按照相同的四级目录结构存储。
另外,在大型医院中,为了减轻网络数据流量,还需要在不同的科室建立多个科室PAS 作为中央PAS 在科室的备份。科室内部的诊断工作站可以直接访问科室PAS 中的图像而不必直接访问中央PAS ,从而减少主干网络访问量,提高网络利用效率。因此DICOM 网关还必须能够同时向多个PAS 发送图像,这种机制被称为“预分配”机制。
2. 4 数据库访问机制设计
DICOM 网关负责将DICOM 图像中相关信息填入数据库。
首先DICOM 图像中含有的检查号信息访问数据库,然后把从DICOM 图像中获得的设备类型、检查日期、图像序列号三项信息填写到该检查号对应的数据库记录中。诊断工作站在访问数据库后,可以根据这些信息构成对应的图像在PAS上的存储目录。
3 DICOM 网关实现
根据DICOM 网关的设计方案, 在Windows2000/ XP 操作系统上以Visual C + + . NET 为开发工具,采用面向对象的设计方法,实现了DICOM网关。
网关由三个模块组成:
(1) 接收模块;
(2) 发送模块;
(3) 数据库模块。
接收模块实现图像采集和图像存储机制,采用DICOM 协议与医疗设备进行通讯,接收DICOM 图像,并在网关本地按照四级目录结构存储。发送模块实现图像转发机制并支持“预分配”机制,采用FTP协议转发DICOM 图像并存储在PAS。数据库模块实现数据库访问机制,把从DICOM 图像中获得的信息填入数据库记录中相应字段
3. 1 接收模块 实现
根据DICOM 标准和PACS 设计要求,医疗设备对应为C - STORE 存储服务类的服务类使用者(Service Class Provider ,简称SCU) ,DICOM 网关接收模块对应为C - STORE 存储服务类的服务类提供者(Service Class Provider ,简称SCP) 。医疗设备与网关接收模块之间的通讯过程如图3 所示:其中第(1) 步到第(4) 步是连接协商过程,其目的为了确定传输数据的数据类型和编码方式。第(5) 步到第(6) 步是数据传输过程,协商数据类型和编码方式成后,SCU 将DICOM 命令和DICOM数据封装成协议数据单元( Protocol Date Unit ,简称PDU) ,然后以协商好的连接方式发送给SCP。第(7) 到第(8) 步是释放连接过程,数据传输完毕或者传输出现错误都需要释放连接。
根据上述通讯过程,在DCMTK 开发包基础上实现了网关接收模块。DCMTK 开发包是一套开放源代码的DICOM 工具包,它提供了一系列函数和类库, 便于开发DICOM 应用程序。由于DCMTK是开放源代码工具包,不能够满足具体的应用需求, 因此为了实现网关接收模块, 对DCMTK进行了二次开发。
接收模块的具体实现函数流程如下:
(1) initializeNetwork ,用于创建、初始化网络连接;
(2) setParameter ,用于设置网络连接参数;
(3) acceptAssociation ,用于接收连接;
(4) selectSyntax ,用于确定传输语法;
(5) acknowledgeAssociation ,用于确认协商后连接成功;
(6) receiveCommand ,用于接收传输命令;
(7) storeSCP ,用于实现C - STORE SCP 服务,传输、存储数据;
(8) dropSCPAssociation ,用于关闭SCP 连接;
(9) dest royAssociation ,用于释放连接;
(10) dropNetwork ,用于释放网络连接。
在DCMTK中C - STORE SCP 服务需要指定相应的传输语法才能工作。在selectSynatax 函数中修改了这一限制,从而能够支持8 种传输语法:
(1)DICOM 隐式VR 小尾;
(2)DICOM 显示VR 小尾;
(3)DICOM 显式VR 大尾;
(4) RL E 无损压缩;
(5)J PEG无损压缩;
(6)J PEG有损压缩(8 位) ;
(7)J PEG有损压缩(12 位) ;
(8) DICOM 显式Deflated压缩。
另外, DCMTK 中按照DICOM 图像中的StudyInstanceUID 信息和DateTime 信息构成存储目录,不能满足网关需要。接收模块按照存储机制设计要求修改了存储目录。网关获取图像之后,首先根据图像的格式,提取出文件中的检查号、设备类型、研究日期、病人ID、病人姓名拼音、检查序列号六项信息,并按照“Modality \ StudyDate \ Patient ID PatientName \ SeriesNumber”四级目录结构将图像存储在本地硬盘。
3. 2 发送模块实现
网关获取DICOM 图像后,按照设定IP 地址、端口号、用户名、密码、存储目录等,将DICOM 图像采用FTP 方式转发到PAS。
采用FTP 方式传输文件效率高、便于管理,因此网关作为FTP 客户端,将采集到的DICOM 图像以FTP 方式上传到任意一个PAS。发送模块以动态链接库的形式供网关程序调用。
发送模块传输文件的步骤是:
(1) 创建并初始化一个网络会话;
(2) 建立与服务器的连接;
(3) 连接时查询或设置网络参数;
(4) 对FTP 服务器进行操作,实现按照4级目录结构上传文件功能;
(5) 关闭FTP 连接。另外,为了实现“预分配”机制,发送模块提供了INI 文件(配置文件) 接口,只要在INI 文件中设置目的PAS 的IP 地址、端口号、用户名、密码、目录等,就可以将DICOM 图像转发到指定的PAS并按照四级目录结构存储。
3. 3 数据库模块实现
为了关联PAS 和数据库,网关发送文件后需要修改数据库中相应记录。数据库模块以动态链接库的形式供网关程序调用。
数据库模块操作数据库的步骤是:
(1) 注册和连接数据库;
(2) 根据检查号打开数据库记录集;
(3) 操作该检查号对应的数据记录集,在设备类型、研究日期、检查序列号这些字段中填入信息;
(4) 关闭与数据库的连接。
4 结果分析
4. 1 传输语法比较
对自行设计的DICOM 网关与美国DesAcc 公司的商业化DICOM 服务器Digital J acket Pro 4. 0(DJ ) 进行了多种传输语法测试,DICOM 网关和DJ都支持的传输语法包括:
( 1) Implicit VR , LittleEndian ;
(2) Explicit VR , Little Endian ;
(3) Explicit VR , Big Endian ;
(4) J PEG Lossy , 8bit ;
(5) JPEGLossy ,12bit ;
(6) J PEG Lossless。
而DICOM 网关支持,而DJ 不支持的传输语法如表1 所示。
由表1 可以看出DICOM 网关支持的传输语法比Digital Jacket Pro 4. 0 多。
4. 2 传输时间比较
在相同软件(Windows XP 操作系统) 、硬件(CPU : Intel Pentium 2. 0G; 内存: 256M) 、网络(100Mbps) 环境下,以4 组有代表性的DICOM 图像作为测试样本(测试图像如表2 所示) ,测试了DICOM 网关与Digital J acket Pro 4. 0 接收相同图像的时间,如表3 所示。
由表3 可以看出,自行设计的DICOM 网关接收MR、CR、CT、US 图像所消耗时间都比Digital Jacket Pro 4. 0 少10 %以上。
4. 3 转发机制比较
DICOM 网关能够实现预分配机制,可以同时向多个PAS 服务器转发指定的目录下的DICOM图像;Digital J acket Pro 4. 0 只能向一个指定的PAS 服务器转发图像。
4. 4 数据库机制比较
DICOM 网关能够访问并修改数据库记录,Digital J acket Pro 4. 0 没有访问数据库的功能。
5 结论
DICOM网关是PACS 的重要组成部分。
自行设计的DICOM网关经过实际测试,实现了:
(1) 正确接收和存储DICOM 图像;
(2) 正确地将DICOM 图像发送到指定的一个或多个服务器;
(3) 正确修改数据库记录中的相应字段。目前,DICOM 网关已经用于PACS 测试版本中,正在进行进一步的测评。
发表评论
-
DCMTK: DcmSCP, error:QueryRetrieveLevel larger remaining bytes
2012-11-06 09:48 3020最近在DcmSCU发送一个findRequest后,DcmSC ... -
DICOM标准(2011)
2012-10-22 10:31 2983DICOM标准(2011) 最新版,下载请看我的百度云网 ... -
DCMTK:wwwapp instalation
2012-10-18 15:55 3319问题 最近按照wwwapp.txt安装work ... -
workList in DCMTK问题总结
2012-10-17 19:37 3583最近正在配置DCMTK中的worklist,因为需要响应C-F ... -
web Server支持 perl
2012-10-17 10:06 3402最近使用DCMTK 安装worklist 需要用到webser ... -
DICOM C-GET vs C-MOVE
2012-10-08 17:01 6626DICOM中C-Get 和C-Move的区别。 C-Move ... -
【最新snapshot】DCMTK3.6.1(MD支持库)安装说明
2012-09-25 16:16 7441【前言】 最近,因为需要开发DICOM ... -
【原创】自定义Appender类,输出DCMTK日志
2012-09-24 10:30 5252就像DCMTK官方论坛说的 ... -
问题:自定义Appender输出DCMTK的oflog
2012-09-24 10:09 2836在我调试DCMTK的DcmNet过程中,发现在Oflog中,D ... -
DCMTK:Receiving Images from PACS using DCMSCU
2012-09-15 14:03 5182通过DCMTK的DCMSCU,从PACS获取图像,看看人 ... -
DCMTK: Set output directory to DcmSCP
2012-09-18 09:16 4558Author Message -
DCMTK:DCMSCU get series
2012-09-15 14:02 2782Author Message mano ... -
DCMTK DCMSCU例子
2012-09-15 14:01 5796转载:http://forum.dcmtk.org/viewt ... -
DCMTK DCMScu和DCMScp 细节讨论
2012-09-15 14:04 14434PACS connection Moderator: ... -
DCMTK Howto: User Identity Negotiation
2012-09-18 09:16 6182Howto: User Identity Negotia ... -
DCMTK:howto:dcmscu-example 网络客户端
2012-09-15 14:00 4350DcmSCU example program Th ... -
DCMTK Create a Mammography CAD SR Document
2012-09-18 09:17 2786Howto: Create a Mammography ... -
DCMTK create GSPS object with multiple image references
2012-09-18 09:17 3014Howto: Create GSPS object wi ... -
DCMTK提取Overlay Data
2012-09-14 14:07 4258Howto: Extract Overlay Data ... -
DCMTK获取压缩后的pixel data
2012-09-14 14:06 6451Howto: Accessing Compressed ...
相关推荐
1. 系统接口:支持标准和非标准视频输出信号,直接实现采集影像的DICOM转换、实时降噪处理。 2. 影像存储管理:DICOM影像自动归档存储及数据库管理,提供Patient ID\Name、时间间期限定查询、模糊查询支持等。 3. ...
本文将详细介绍如何在C#环境中实现DICOM与JPEG之间的转换,并探讨相关的技术细节。 ### DICOM转JPEG 1. **解析DICOM文件**:首先,我们需要一个库来读取和解析DICOM文件。在C#中,常用的选择有ClearCanvas、fo-...
在医学影像设备与医院信息化系统之间,为了保证不同厂家设备的医学图像能够实现统一标准的存储和传输,DICOM标准应运而生。而由于通用图像处理软件如PhotoshopCS3虽然能处理DICOM图像,但使用起来费时费力,对于序列...
6. **应用**:BMP转DICOM的程序在多种场景下有用,例如,当非DICOM图像需要与医疗系统集成时,或者当研究者需要在标准DICOM环境中分析非医疗环境获取的图像时。 7. **挑战与注意事项**:转换过程中需确保元数据的...
在VS2010环境下用C++进行DICOM与BMP之间的转换,涉及到的关键知识点包括图像处理、文件读写、二进制数据解析以及标准库或第三方库的使用。 首先,理解DICOM文件结构是至关重要的。DICOM文件不仅包含图像数据,还...
DICOM医学数字图像格式与BMP通用图像格式转换软件的设计与实现 DICOM医学图像文件格式 DICOM医学图像文件格式解析与应用研究 WINDOWS环境下DICOM医学图像显示方法的初步研究 标准医学DICOM图像的转换实现 基于DICOM...
本文介绍如何运用跨平台的Java语言处理DICOM文件,实现图像像素值的提取与转换,并将其展示处理,最终以常见的图像格式存储,从而简化流程,提高效率。 #### DICOM文件格式解析 ##### 数据元素与数据集 DICOM标准...
一种基于PACS 系统的B 超影像采集工作站及其设计与实现. 本系统作为B 超诊断仪与PACS 系 统联接钮带,重点解决了B 超图像的采集,存储与传输. 在采集方面根据标准视频输入可实现单帧 与动态多帧采集;在存储方面图像...
本文将深入探讨如何使用Visual C++(VC)来实现DICOM图像的转换,并设计相关的应用程序。 首先,理解DICOM格式至关重要。DICOM不仅仅是一个图像格式,它还包含患者信息、成像设备信息以及图像的元数据。这些元数据...
在本文中,我们将讲述DICOM图像格式与BMP图像格式的转换,探讨如何实现从BMP图像到DICOM图像的格式转换,并讨论这种转换对医疗图像应用的影响。 DICOM图像格式是基于DICOM标准的图像格式,该标准是由美国放射学会...
通过DICOM网络服务类,可以实现PACS(Picture Archiving and Communication System)与工作站之间的数据交互。例如,利用C-FIND服务,我们可以向PACS服务器发送查询请求,查找符合特定条件的病例。 在编程过程中,...
基于DICOM的PACS设计及其关键技术的实现 硕士学位论文 DICOM通讯 数字影像通讯
文件包含:BMP转DICOM代码,和学习文件。代码程序需要安装DCMTK包(DCMTK包的下载安装参考:http://download.csdn.net/detail/u012840934/8368657),配置好之后运行本程序即可。
标题中的“vue展示dicom文件医疗系统的实现代码”指出了本文将要讨论的核心内容,它涉及如何在使用Vue.js框架构建的Web应用中展示DICOM(Digital Imaging and Communications in Medicine)文件,这通常用于医疗影像...
"DICOM数据转换为mat格式" DICOM(Digital Imaging and Communications in Medicine)是一种标准的医学图像数据格式,文件后缀为.dcm。为了进行医学切片三维重建,需要将DICOM数据转换为mat格式。下面将详细介绍...
### DICOM医学图像格式转换的C++实现 #### 一、引言 DICOM (Digital Imaging and Communications in Medicine) 3.0 是一种被广泛应用于医学领域的图像存储和传输的标准。随着医疗影像技术和网络技术的发展,医院...
在本文中,我们将深入探讨如何使用C#和WPF(Windows Presentation Foundation)来实现读取并显示DICOM(Digital Imaging and Communications in Medicine)图像。DICOM是一种标准格式,广泛用于医疗影像领域,如CT...
综上所述,C#实现DICOM解析涉及了医学图像标准的理解、数据元素的解析、图像格式转换等多个方面,是一个结合了专业领域知识与编程技能的综合性任务。通过这个项目,开发者不仅可以提升对DICOM标准的认识,还能增强C#...
“Dicom文件处理系统的设计与实现”这个项目可能涵盖了以上提到的所有方面,通过实际的代码实现,帮助我们更好地理解DICOM文件系统的构建和操作。在实践中,这可能会涉及对DCMTK等库的深入研究,以及对DICOM标准的...