`
qimo601
  • 浏览: 3445978 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

【转】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 测试版本中,正在进行进一步的测评。

 

  • 大小: 41 KB
  • 大小: 30.2 KB
  • 大小: 39.9 KB
  • 大小: 23.6 KB
  • 大小: 49.1 KB
分享到:
评论

相关推荐

    DICOM网关工作站

    1. 系统接口:支持标准和非标准视频输出信号,直接实现采集影像的DICOM转换、实时降噪处理。 2. 影像存储管理:DICOM影像自动归档存储及数据库管理,提供Patient ID\Name、时间间期限定查询、模糊查询支持等。 3. ...

    C# Jpeg 转Dicom,Dicom 转Jpeg

    本文将详细介绍如何在C#环境中实现DICOM与JPEG之间的转换,并探讨相关的技术细节。 ### DICOM转JPEG 1. **解析DICOM文件**:首先,我们需要一个库来读取和解析DICOM文件。在C#中,常用的选择有ClearCanvas、fo-...

    基于Matlab的批量转换DICOM格式CT序列图像的实现.pdf

    在医学影像设备与医院信息化系统之间,为了保证不同厂家设备的医学图像能够实现统一标准的存储和传输,DICOM标准应运而生。而由于通用图像处理软件如PhotoshopCS3虽然能处理DICOM图像,但使用起来费时费力,对于序列...

    BMP转换为DICOM程序

    6. **应用**:BMP转DICOM的程序在多种场景下有用,例如,当非DICOM图像需要与医疗系统集成时,或者当研究者需要在标准DICOM环境中分析非医疗环境获取的图像时。 7. **挑战与注意事项**:转换过程中需确保元数据的...

    DICOM与BMP相互转换 c++代码 VS2010

    在VS2010环境下用C++进行DICOM与BMP之间的转换,涉及到的关键知识点包括图像处理、文件读写、二进制数据解析以及标准库或第三方库的使用。 首先,理解DICOM文件结构是至关重要的。DICOM文件不仅包含图像数据,还...

    DICOM图像相关文档

    DICOM医学数字图像格式与BMP通用图像格式转换软件的设计与实现 DICOM医学图像文件格式 DICOM医学图像文件格式解析与应用研究 WINDOWS环境下DICOM医学图像显示方法的初步研究 标准医学DICOM图像的转换实现 基于DICOM...

    DICOM医学影像文件格式与常见格式的转换

    本文介绍如何运用跨平台的Java语言处理DICOM文件,实现图像像素值的提取与转换,并将其展示处理,最终以常见的图像格式存储,从而简化流程,提高效率。 #### DICOM文件格式解析 ##### 数据元素与数据集 DICOM标准...

    B超影像采集工作站及DICOM接口设计与实现

    一种基于PACS 系统的B 超影像采集工作站及其设计与实现. 本系统作为B 超诊断仪与PACS 系 统联接钮带,重点解决了B 超图像的采集,存储与传输. 在采集方面根据标准视频输入可实现单帧 与动态多帧采集;在存储方面图像...

    医学图像dicom转化的vc实现与设计

    本文将深入探讨如何使用Visual C++(VC)来实现DICOM图像的转换,并设计相关的应用程序。 首先,理解DICOM格式至关重要。DICOM不仅仅是一个图像格式,它还包含患者信息、成像设备信息以及图像的元数据。这些元数据...

    DICOM图像格式与BMP图像格式的转换

    在本文中,我们将讲述DICOM图像格式与BMP图像格式的转换,探讨如何实现从BMP图像到DICOM图像的格式转换,并讨论这种转换对医疗图像应用的影响。 DICOM图像格式是基于DICOM标准的图像格式,该标准是由美国放射学会...

    DICOM医学图像数据接口的Java实现

    通过DICOM网络服务类,可以实现PACS(Picture Archiving and Communication System)与工作站之间的数据交互。例如,利用C-FIND服务,我们可以向PACS服务器发送查询请求,查找符合特定条件的病例。 在编程过程中,...

    基于DICOM的PACS设计及其关键技术的实现

    基于DICOM的PACS设计及其关键技术的实现 硕士学位论文 DICOM通讯 数字影像通讯

    BMP转DICOM程序例子

    文件包含:BMP转DICOM代码,和学习文件。代码程序需要安装DCMTK包(DCMTK包的下载安装参考:http://download.csdn.net/detail/u012840934/8368657),配置好之后运行本程序即可。

    c#实现Dicom解析(tag、png图像)

    综上所述,C#实现DICOM解析涉及了医学图像标准的理解、数据元素的解析、图像格式转换等多个方面,是一个结合了专业领域知识与编程技能的综合性任务。通过这个项目,开发者不仅可以提升对DICOM标准的认识,还能增强C#...

    vue展示dicom文件医疗系统的实现代码

    标题中的“vue展示dicom文件医疗系统的实现代码”指出了本文将要讨论的核心内容,它涉及如何在使用Vue.js框架构建的Web应用中展示DICOM(Digital Imaging and Communications in Medicine)文件,这通常用于医疗影像...

    DICOM医学图像格式转换的C++实现

    ### DICOM医学图像格式转换的C++实现 #### 一、引言 DICOM (Digital Imaging and Communications in Medicine) 3.0 是一种被广泛应用于医学领域的图像存储和传输的标准。随着医疗影像技术和网络技术的发展,医院...

    C# WPF实现读取显示DICOM

    在本文中,我们将深入探讨如何使用C#和WPF(Windows Presentation Foundation)来实现读取并显示DICOM(Digital Imaging and Communications in Medicine)图像。DICOM是一种标准格式,广泛用于医疗影像领域,如CT...

    DICOM文件系统设计

    “Dicom文件处理系统的设计与实现”这个项目可能涵盖了以上提到的所有方面,通过实际的代码实现,帮助我们更好地理解DICOM文件系统的构建和操作。在实践中,这可能会涉及对DCMTK等库的深入研究,以及对DICOM标准的...

    DICOM和JPEG文件相互转换

    本文将深入探讨如何通过编程实现DICOM与JPEG文件的相互转换,并详细阐述其转换过程。 一、DICOM文件格式 DICOM格式不仅仅是一个图像文件,它包含了丰富的元数据,如患者信息、设备信息、扫描参数等。这些元数据对于...

Global site tag (gtag.js) - Google Analytics