韋偉+朱俊+陳琳琳+劉偉



目前國內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