APP下载

基于VS和SQL的数字PACS系统设计

2017-02-23韦伟朱俊陈琳琳刘伟

电子技术与软件工程 2016年24期
关键词:图像增强

韦伟+朱俊+陈琳琳+刘伟

目前国内X光机成像急需数字化改造,构建成数字化医院。针对这一问题,在VC++.net架构上,设计和实现了一整套数字化医院PACS操作软件。主要包括建立管理数据库,通过以太网方式采集图像并转换成DICOM3.0格式,对图像进行增强处理及胶片和报告的打印等内容。通过现场的联合调试,性能良好,满足了医院的实际使用需求。

【关键词】PACS 以太网传输 DICOM图像 图像增强 胶片打印

1 引言

PACS(Picture Archiving and Communication Systems,影像归档和通信系统)是数字化医院的重要硬件支撑,包括获取图像、图像管理、图像处理、图像归档等内容。该系统起源于美国陆军的远程放射诊断系统项目。随后,美国及欧洲、日本的很多科研机构开始研究商业 PACS 系统。目前,西门子公司生产的 PACS 系统比较著名,在很多欧美国家使用。在我国,研究开发 PACS 系统比较晚,到目前为止,只有一些大型医疗机构使用 PACS 系统,其规模较小,即为小型化、迷你化的 PACS 系统。主要原因是PACS 系统价格昂贵、远程医疗不发达、标准化程度不高等。我国生产 PACS 系统的厂家较少,主要有中联医学图像系统、永安科技和东软系统。目前国内的一些大医院逐步淘汰模拟X射线机和普通的暗室洗片,而开始使用数字化DR摄影设备,结合数字化网络,组成医疗诊断系统,所以PACS系统的研究和开发具有十分重要的现实意义。

2 系统工作原理

PACS是一套可用于X光机成像的软件系统,其主要功能是采集和保存X光机所拍摄的海量医学图像,通过图像加密技术并对图像进行处理,提供病理信息和诊断依据,可在授权的情况下通过外部接口进行图像的传输,医生及专家在授权情况下进行查看 PACS 系统中的图像信息,进行诊断。

3 系统软件设计

本系统以Visual Studio.Net 为框架,以模块化和嵌入式为技术指导思想,以SQL Server、Quartus为开发工具,完成了一个PACS完整系统的实际开发。本系统组成如图1所示。

3.1 病人信息登记

信息登记是将病人的姓名、ID号、年龄、性别及注册日期等基本信息录入到医院的PACS系统中统一管理。本系统采用SQL Server 2005作为数据库引擎,在SQL Server的环境下编写数据库文件,创建数据库。设置主数据文件名称(PatientManager)及其初始大小、增长最大值及增长率。设置日志文件文件名及其初始大小和增长值。创建含有病人基本信息的数据表、病人图像数据表格(包括图像拍摄大小、保存路径及生成日期等)、病人诊断报告信息表(包括病人ID、病情及诊断记录等信息)。

在VS系统中编写对话界面,输入病人的ID、姓名、年龄等个人信息,并将这些信息录入到创建的数据库中。MFC访问数据库常用的技术是ADO,它提供了访问对象链接和嵌入数据库的应用程序编程接口。VC++.net为开发ADO应用程序提供了动态连接库。使用前先导入ADO类型库,在stdafx. h 文件里直接使用#import引入,#import " C: Program Files Common Files Systemado msado15. dll"之后调用CoInitialize进行OLE/COM数据库初始化,声明一个指向Connection对象的指针,创建对象的实例并连接数据库,创建记录集。

CoInitialize(NULL);//初始化OLE/COM库环境

pConn.CreateInstance("ADODB.Connection");//初始化Connection指针

pRst.CreateInstance("ADODB.Recordset");//初始化Recordset指针

pConn->ConnectionString = (_bstr_t)GetConnectionStr();//数据库的连接字符串

pConn->Open("","","",adConnectUnspecified);//打开数据库连接

通过病人信息输入对话框,读取病人的基本信息,并将这些信息存入结构体iSqlSentence中。病人的信息输入后调用pConn->Execute((_bstr_t)iSqlSentence,NULL,adCmdText); 将信息存入数据库中。

3.2 图像获取

PACS系统和高压发生器配合,接收高压发生器传输的KV、mAs、剂量水平及曝光时间信号,在软件里设置曝光时间,再接收高压发生器的外触发信号后进行触发曝光成像。PACS系統采用CCD作为图像探测传感器,采用碘化铯(CsI)作为DR探测器的主要闪烁材料,经过X射线曝光后,将X射线光子转换为可见光,再由CCD探测器变为图像电信号,最后获得数字图像。本系统所采用的CCD为柯达公司的KAF16803高分辨率图像探测器,在输出屏后端配有聚焦光学镜头成像,再输入计算机进行图像处理。KAF16803是一款单输出的高性能全帧型CCD图像传感器,有效分辨率为4096×4096,像元数量为16M,最小像素尺寸为9um×9um,两相驱动读出,最大支持10MHz的采样频率,实现高速高分辨率成像。AD转换芯片是AD9824,片内含有最高30MS/s相关双采样电路(CDS),并且可以编程控制其内部增益放大器。KAF16803行列像素转移所需要的驱动信号,AD转换及锁存信号由FPGA在Quartus环境下采用Verilog语言变成用状态机的方法实现。这些信号通过电压转换(LM317/LM337)和脉冲驱动芯片(DS0026)经过调整后加载到各自元件上。

CCD探测器与采集计算机通过千兆以太网进行连接,采用MAC加PHY芯片的结构组成千兆以太网传输模块。具体采用AX88180作为数据链路层MAC控制器,采用88E1111作为自适应物理层传输芯片。AX88180及88E1111的编程通过在FPGA中建立NIOS II软核来实现。首先用Verilog语言编写AX88180基于NIOS II总线(Avalon)接口的IP内核,然后编程对AX88180内置256字节的配置寄存器进行配置初始化,参考亚信电子相关资料进行初始化编程。采用Verilog语言编写高效率的HDL语言封包程序。封包程序参考TCP/IP协议。为了满足程序良好的兼容性,便于移植,PC端软件采用Wincap类库编写程序来捕获网络数据包。图像采集流程图2所示。

3.3 图像保存

16M像素所生成的图像裸数据为32Mbyte,为了统一标准,实现信息共享,需要将裸数据转为DICOM标准格式。DICOM格式完整的定义了医学影像及相关信息的消息格式及传输机制,使得影像信息在医学设备间的交换更加有效。DICOM标准也一直在完善中,本系统的3.0版本,文件后缀为.DCM。DICOM实际上是一种文件封装方式,一般由DICOM文件元信息和描述DICOM SOP类实例的数据集合而成。每个DICOM文件都有两部分组成:头文件信息和数据集。DICOM文件头包含了数据集合的相关信息,包括文件的SOP、UID及传输格式等。数据集放在头文件之后,代表了一个SOP(Service-Object Pair)实例,主要包括医学图像以及许多和医学图像有关的信息,如病人姓名、图像大小等。文件头元素采用显示格式(Explicit VR)编码,各个数据元素的排列按照标签数值从小到大的传输格式编码。标签是一个4字节的无符号整数,它被人为地分为两个部分: 组号(高位2字节)和元素号(低位2字节)。

由于DICOM标准内容较多,涉及到多种图像压缩,开发时可以借鉴专业的DCMTK开发包,进行二次开发。DCMTK是一个遵循DICOM标准的公开源代码的专业开发包,利用其自带的库可以实现DICOM应用。二次开发时用到的DCMTK开发包里的库主要有dcmdata.lib、dcmimage.lib、dcmimgle.lib等相关库。

DCMTK开发包里DcmItem类中定义的putAndInsertString()函数创建一个DICOM dataset数据集,根据标签,写入头文件的信息。

部分代码如:

DcmDataset *dataset = fileformat.getDataset();

dataset –>putAndInsertString(DcmTagKey(0x0002, 0x0002),UID_RawDataStorage);

dataset –>putAndInsertString(DcmTagKey(0x0002, 0x0003),dcmGenerateUniqueIdentifier(uid,SITE_INSTANCE_UID_ROOT));

调用DcmItem类函数编写void GenerateHead(DcmDataset * dataset,intwidth,int height)将病人的信息写入到头文件中。编写DICOM文件存储函数voidSaveDicom(CStringpathName,intwidth,intheight,unsigned short* buf,boolbIsJpegCompressed),其中pathName为保存文件名,width 和height分别为CCD探测器行列像素大小,指针buf为32Mbyte图像数字量信息的首地址,bIsJpegCompressed选择是否保存为压缩的DICOM文件。采集图像结束后调用此函数将图像保存成DICOM格式文件等。

3.4 图像增强处理

图像增强是改善图像质量,突出有用特征、增加图像的清晰度、获取较好视觉效果的一种手段,可以辅助医生准确地诊断病情。图像增强包括灰度增强、平滑滤波和边缘增强等。

本系统嵌入了南京医疗软件公司的增强模块,通过加密狗的操作方式达到增强效果。根据所拍摄人体部位的不同,采用了中值滤波、探测器边界校准、计算物体灰度阈值、背景灰度阈值、Sobel 滤波器、去除行伪影等一系列综合图像算法提高了不同部位,不同剂量强度下图像清晰度。增强模块与原始图像之间采用DICOM文件接口方式,用户以磁盘文件的形式指定原始图像路径以及文件名,增强之后的图像也以文件的形式存放于磁盘,文件类型为DICOM格式。接口以动态链接库的形式提供,按照动态链接库的一般调用方式,调用动态连接库IeLauncher.dll,(接口描述包含在头文件IeLauncher.h中)。

增强时调用库文件下的LaunchImageEnhancer_DICOM(srcPath, destPath, strRegion);函数。srcPath,destPath和strRegion分别为原始图像数据文件地址、增强后图像文件地址和增强部位选择(现有胸部、腰椎、颈椎、盆骨、头部、膝盖及手足等部位可选)。

3.5 诊断报告打印及胶片打印

采集图像结束后通过对话窗口打开诊断报告对话框。对话框先从数据录中加载病人的基本信息,同时加载DICOM图像并且创建缩略位图文件,在Picture Control 控件里加载显示。将MFC对话框界面转换成打印文件的实现方法是采用MFC类打印及预览CPrintFrame,CPrintView类。通过此类建立CPrintFrame的对象,设置该对象的指针为pframe, 并将对话框的指针传给m_pCallerDlg(指向PrintFrame对话框的指针),调用对象的Creat函数创建框架窗口。

pframe->m_pCallerDlg = this;

pframe->Create(NULL,_T("打印預览"),WS_VISIBLE | WS_CAPTION,CRect(0,0,0,0));

pframe->m_pView->OnMyPrintPreview();

pframe->m_pView->OnMyPrint();

在OnMyPrint函数中实现的功能包括打印表格、图片、数据等。采用Rectangle(&DrawRect),SelectObject(&font);TextOut;Lineto等函分别实现矩形绘制、设置字体、文字输出和划线等功能。在主机上安装打印驱动,进行报告编辑的打印。

胶片打印功能通过在PACS系统基础上编写接收打印数据包的方法实现。为了方便开发,可以采用德国offis公司提供的DCMTK开源项目,该平台提供了所有必要的配置方法和示例工程文件,操作中使用标准中的打印管理服务类来实现打印管理的数据流模型。主要是编写 dcmpstat.cfg 文件,此文件为打印引用的配置文件,打印胶片所需的参数都在该文件中。首先在VS中编写胶片打印机配置界面,通过界面将打印机的基本信息录入到dcmpstat.cfg。之后在该cfg中编写Aetitle(系统与外部DICOM节点连接的实体名)、主机名称、端口号、IP地址等信息。在VS中先调出需打印的一张影像,将该影像的文件路径信息加上dcmprescu启动DICOM接受服务,从PACS服务器接收影像。通过CreateProcess创建进程并调用进程,即可将文件发送到打印服务器上。本系统所采用的是DRYPIX4000胶片打印机,将打印机和PACS主机通过路由器设置在同一个IP段内实现在线胶片打印。

4 运行结果

本系统完成后,安装在河北南皮县利民医院,对其原有的传统X光成像和手工胶片冲洗进行了DR 成像系统数字化改造。将所开发的PACS软件、CCD探测器与医院原有的高压发生器配合使用,对整个系统进行了联合测试,主要对系统各个模块进行了功能测试和整体性能测试。功能测试包括用户登录、图像采集与增强、诊断报告及胶片打印等,而整体性能测试主要是对PACS工作站在运行过程中系统性能进行测试,包括系统登录响应时间、查询获取病人信息的时间以及运行过程等。从结果看本系统运行稳定,性能良好,满足了医院的实际使用需求。

5 结束语

本文讨论了一套完整的PACS系统开发。基于VC++.NET框架配合SQL、ADO、FPGA、DCMTK 工具包等技术实现了对CCD探测器的以太网数据采集成像显示、DICOM医疗图像数据存储、图像增强分析及诊断信息和胶片打印等一系列工作,开发过程中进行了大量的编程试验和调试,最终投入到医院实际使用。目前我国数字式X射线机主要依靠进口,无法进行成像检测的普及,因此,以中小医院为主要对象,开发国产数字式X光机及PACS系统非常迫切,PACS系统在以后将会有极其广阔的发展前景。

参考文献

[1]曹奕雯,陶蔷.PACS关键技术及国内应用[J].医疗卫生装备,2011,32(01):77-80.

[2]郭强.ADO技术在VC编程中的研究及应用分析[J].电子科技,2013,26(01):37-40.

[3]朱晓科.医用胶片数字化软件中图像采集与文件管理的设计与实现[D].西安:西安电子科技大学,2007.

[4]门金瑞,姚大志,韦伟. 基于千兆以太网的CCD相机设计[J]. 激光与光电子学进展,2012,49(03):146-150.

[5]王韵灵.跨平台移动医学图像显示系统[D].上海:中国科学院研究生院(上海技术物理研究所),2014.

[6]江和.數字医院PACS系统的设计与实现[D].成都:电子科技大学,2012.

[7]贾斌.医学影像按需打印系统关键技术研究[D].广州:华南理工大学,2013.

作者单位

1.南京理工大学紫金学院 江苏省南京市 210046

2.紫金山天文台 江苏省南京市 210008

猜你喜欢

图像增强
基于纹理先验和颜色聚类的图像增强算法
关于对低照度图像增强算法的研究
通过图像增强与改进Faster-RCNN网络的重叠鱼群尾数检测
一种基于轻量级深度网络的无参考光学遥感图像增强算法
图像增强技术在超跨声叶栅纹影试验中的应用
水下视觉SLAM图像增强研究
虚拟内窥镜图像增强膝关节镜手术导航系统
基于图像增强的无人机侦察图像去雾方法
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
船用视频图像增强装置的模块化设计