版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 單位代碼 </p><p> 學(xué) 號 10101038 </p><p> 1分類號 TP311.1 </p><p><b> 畢業(yè)設(shè)計(論文)</b></p><p> C形臂X光成像系統(tǒng)的軟件開發(fā)</p><
2、p><b> 2014年 6月</b></p><p> 學(xué)院名稱生物與醫(yī)學(xué)工程學(xué)院</p><p> 專業(yè)名稱生物醫(yī)學(xué)工程</p><p> 學(xué)生姓名張文卓</p><p> 指導(dǎo)教師張弛</p><p><b> 北京航空航天大學(xué)</b></p>
3、<p> 本科畢業(yè)設(shè)計(論文)任務(wù)書</p><p> ?、瘛厴I(yè)設(shè)計(論文)題目:</p><p> C形臂X光成像系統(tǒng)的軟件開發(fā) </p><p> ?、颉厴I(yè)設(shè)計(論文)使用的原始資料(數(shù)據(jù))及設(shè)計技術(shù)要求:</p>&l
4、t;p> 原始資料包括:馳馬特公司現(xiàn)有版本的C形臂X光成像軟件系統(tǒng)及其技術(shù)文檔; C形臂相關(guān)的專利資料;圖像處理算法資料等。</p><p> 設(shè)計技術(shù)要求:(1)完善現(xiàn)有軟件的結(jié)構(gòu);(2)完善相機(jī)采集圖像功能,增加軟件適用范圍;(3)完成病例報告生成、DICOM圖像傳輸?shù)裙δ?;?)完成軟件測試,提高系統(tǒng)的可靠性。 </p><p>
5、; ?、?、畢業(yè)設(shè)計(論文)工作內(nèi)容:</p><p> 研究馳馬特公司的現(xiàn)有軟件,明確現(xiàn)有軟件的結(jié)構(gòu)和功能。對軟件結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計,分層處理。 </p><p> 調(diào)研Basler Pylon CCD相機(jī)和Thales平板探測器的功能和應(yīng)用,在此基礎(chǔ)上,分別開發(fā)基于影像增強(qiáng)器和Basler相機(jī)的,以及基于平板探測器的X光成像系統(tǒng)軟件。
6、 </p><p> 集成軟件功能,主要是集成DICOM圖像傳輸功能,提高軟件的可靠性。 </p><p> 對軟件進(jìn)行測試,提高軟件的可靠性和穩(wěn)定性。 </p><p><b>
7、 Ⅳ、主要參考資料:</b></p><p> [1] 曾佳興. C 臂 X 光機(jī)在骨科手術(shù)中的應(yīng)用[J]. 中國臨床新醫(yī)學(xué), 2012, 5(11). </p><p> [2] R. B. Spratt. Automatic X-r
8、ay exposure control system and method of use: U.S. Patent 5,617,462[P]. 1997-4-1. </p><p> [3] 段煅. C 語言編程技巧在 C 語言學(xué)習(xí)中的應(yīng)用[J]. 電腦編程技巧與維護(hù), 2010 (20): 150-151.
9、 </p><p> [4] 杜高鵬, 翟正軍, 徐雋. C++ Builder 與 Matlab 混合編程的兩種方法[J]. 科學(xué)技術(shù)與工程, 2006, 6(7): 886-889. </p><p> 生物與醫(yī)學(xué)工程學(xué)院
10、院(系)生物醫(yī)學(xué)工程 專業(yè)類 101012 班</p><p><b> 學(xué)生 張文卓</b></p><p> 畢業(yè)設(shè)計(論文)時間: 自 年 月 日至 年 月 日</p><p> 答辯時間: 年 月 日 成績 </p><
11、;p> 指導(dǎo)教師: </p><p> 兼職教師或答疑教師(并指出所負(fù)責(zé)部分):</p><p> 教研室 主任 </p><p><b> 本人聲明</b></p><p> 我聲明,本論文及其研究工作是由本人在導(dǎo)師指導(dǎo)下獨(dú)立完
12、成的,在完成論文時所利用的一切資料均已在參考文獻(xiàn)中列出。</p><p><b> 作者:張文卓</b></p><p><b> 簽字:</b></p><p> 時間:2014年 6 月</p><p> C形臂X光成像系統(tǒng)的軟件開發(fā)</p><p> 學(xué)
13、 生:張文卓</p><p><b> 指導(dǎo)教師:張 弛</b></p><p><b> 摘 要</b></p><p> 自X光被發(fā)現(xiàn)以來,X光技術(shù)已在醫(yī)學(xué)上得到廣泛的應(yīng)用。C形臂X光成像系統(tǒng)是目前廣泛使用的醫(yī)學(xué)影像設(shè)備,它憑借成像角度靈活、實時成像和便于數(shù)字剪影等優(yōu)勢,用于各種手術(shù)中的成像和造像。國內(nèi)C
14、形臂X光成像系統(tǒng)在軟硬件方面都與國外存在較大差距。</p><p> 本畢業(yè)設(shè)計與馳馬特公司合作,旨在對其C形臂X光成像系統(tǒng)的軟件進(jìn)行開發(fā)和改進(jìn)。本文研究了現(xiàn)有軟件的結(jié)構(gòu)和功能,優(yōu)化了軟件結(jié)構(gòu)。在此基礎(chǔ)上,擴(kuò)展了相機(jī)驅(qū)動,包括Basler相機(jī)和平板探測器,使本軟件可適用于馳馬特公司兩個系列的X光成像系統(tǒng)。軟件集成了DICOM圖像傳輸功能,實現(xiàn)了X光成像系統(tǒng)與醫(yī)院PACS系統(tǒng)的交互。軟件通過測試,性能可靠穩(wěn)定。
15、</p><p> 本畢業(yè)設(shè)計的C形臂X光成像軟件與原軟件相比,可靠性更強(qiáng),采集圖像的質(zhì)量和效率更高,并實現(xiàn)了軟硬件的交互升級。本論文對于提升了X光成像系統(tǒng)的整體性能具有重要價值。</p><p> 關(guān)鍵詞:C形臂X光成像系統(tǒng),CCD 相機(jī),平板探測器,DICOM,軟件測試</p><p> the Development of C-arm X-ray Ima
16、ging Software</p><p> Author : ZHANG Wen-zhuo</p><p> Tutor : ZHANG Chi</p><p><b> Abstract</b></p><p> Since X-ray was discovered, it has been widely
17、 used in medical science. As medical imaging equipment, C-arm X-ray imaging system is now widely used for a variety of radiography and photography in surgery, with its flexible imaging angle, real-time digital imaging, e
18、asier digital silhouette and other advantages. There is a big gap between domestic C-arm X-ray imaging system and foreign C-arm X-ray imaging system in terms of software and hardware. </p><p> This graduati
19、on design which is in collaboration with Smart Medical Group, is aimed at developing and improving C-arm X-ray imaging software. In this paper, after the structure and function of existing software been investigated, imp
20、rovement has been made in software structural optimization, camera driver extension, function integration and software testing. Camera driver extension including Basler Pylon CCD camera and flat-panel detector, makes the
21、 software applied to two series of X-ray imagin</p><p> The quality and the efficiency about image acquisition of the new software is higher than the old software. And the new software makes the interacted
22、upgrade between hardware and software easier. This paper has important value in promoting the performance of C-arm X-ray imaging software.</p><p> Key words: C-arm X-ray imaging system, CCD camera, Flat-pan
23、el detector, DICOM, Software testing</p><p><b> 目 錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 課題背景及目的1</p><p> 1.2 國內(nèi)外研究現(xiàn)狀2</p>
24、<p> 1.3 課題研究方法3</p><p> 1.4 論文構(gòu)成及研究內(nèi)容3</p><p><b> 2 總體設(shè)計4</b></p><p> 2.1 現(xiàn)有軟件系統(tǒng)分析4</p><p> 2.2 新軟件系統(tǒng)總體設(shè)計6</p><p> 3 物理層軟件設(shè)計
25、7</p><p> 3.1 軟件結(jié)構(gòu)優(yōu)化7</p><p> 3.2 軟件物理層需求分析9</p><p> 3.3 Basler相機(jī)驅(qū)動更換11</p><p> 3.3.1 Basler相機(jī)介紹11</p><p> 3.3.2 Basler相機(jī)打開并初始化15</p><
26、;p> 3.3.3 Basler相機(jī)參數(shù)設(shè)置15</p><p> 3.3.4 Basler相機(jī)采集圖像16</p><p> 3.3.5 Basler相機(jī)函數(shù)封裝19</p><p> 3.4 平板探測器驅(qū)動更換20</p><p> 3.4.1 采集平板介紹20</p><p> 3.4
27、.2 平板探測器驅(qū)動介紹21</p><p> 3.4.3 平板初始化及校準(zhǔn)22</p><p> 3.4.4 平板圖像采集22</p><p> 4 DICOM圖像傳輸24</p><p> 4.1 DICOM簡介24</p><p> 4.2 DICOM圖像格式轉(zhuǎn)換24</p>
28、<p> 4.2.1 格式轉(zhuǎn)換分析24</p><p> 4.2.2 RAW轉(zhuǎn)換BMP25</p><p> 4.2.3 BMP轉(zhuǎn)換DICOM27</p><p> 4.3 DICOM圖像傳輸28</p><p> 5 軟件測試30</p><p><b> 結(jié)論31&l
29、t;/b></p><p><b> 致謝32</b></p><p><b> 參考文獻(xiàn)33</b></p><p><b> 附錄34</b></p><p> 附錄A MyPylonC.c代碼34</p><p> 附錄B
30、 RAW格式轉(zhuǎn)BMP部分代碼38</p><p> 附錄C DICOM圖像傳輸部分代碼42</p><p><b> 1 緒論</b></p><p> 1.1 課題背景及目的</p><p> 十九世紀(jì)末,物理學(xué)家倫琴在探索陰極射線本性的研究中,意外地發(fā)現(xiàn)了X光[1]。隨后不久X光就在物理學(xué)、農(nóng)業(yè)、工
31、業(yè)和醫(yī)學(xué)上得到廣泛的應(yīng)用,特別是在醫(yī)學(xué)上,X光技術(shù)已經(jīng)成為對疾病進(jìn)行診斷和治療的專門學(xué)科,在醫(yī)療保健事業(yè)中占有重要的地位,尤其給骨科手術(shù)的深入發(fā)展創(chuàng)造了良好的條件[2]。</p><p> 隨著工業(yè)的進(jìn)一步發(fā)展,從最原始的X光機(jī)到C形臂X光機(jī),各類型的X光成像系統(tǒng)已被廣泛地應(yīng)用到臨床醫(yī)學(xué)當(dāng)中。目前C形臂X光成像系統(tǒng)是廣泛使用的醫(yī)學(xué)影像設(shè)備,它集光、機(jī)、圖像處理技術(shù)為一體,由C形狀的機(jī)架,產(chǎn)生X光的球管,采集圖像
32、的影像增強(qiáng)器和CCD相機(jī),以及處理圖像的工作站組成。C形臂X光成像系統(tǒng)的工作原理大致如下:球管與影像增強(qiáng)器集成在C形臂的兩端,球管發(fā)射X光穿過人體組織后被影像增強(qiáng)器接收,在C形臂的另一端CCD相機(jī)中生成圖像。因為人體不同部位的組織密度不同,所以X光穿過人體不同部位就會產(chǎn)生不同的衰減,從而會產(chǎn)生可以顯示人體內(nèi)部組織的圖像[3]。圖像再經(jīng)過加工處理,最終顯示到顯示屏上供醫(yī)生參考。C形臂X光成像系統(tǒng)憑借成像角度靈活、實時成像和便于數(shù)字剪影等優(yōu)
33、勢,用于各種手術(shù)中的成像和造像,尤其在骨科手術(shù)、血管和消化道介入治療中具有重要的臨床應(yīng)用價值。</p><p> 從目前國際發(fā)展水平來看,C形臂X光成像系統(tǒng)的發(fā)展趨勢是向著更高的圖像分辨率、更靈活的成像角度、更低的輻射劑量發(fā)展。這種發(fā)展趨勢對其軟硬件提出了越來越高的要求。目前,國內(nèi)C形臂系列的產(chǎn)品在軟硬件方面都與國外同類型產(chǎn)品存在較大差距,國外采取技術(shù)壟斷,嚴(yán)重制約了國內(nèi)C形臂系列產(chǎn)品在臨床上的應(yīng)用。因此,開發(fā)
34、并完善國產(chǎn)C形臂X光成像系統(tǒng)很有必要。</p><p> 從C形臂X光成像系統(tǒng)的軟件方面來看,與國際知名品牌相比,國內(nèi)品牌還存在較大差距,主要體現(xiàn)在:X光圖像采集方式落后,圖像質(zhì)量不高,軟件可靠性差,軟件功能單一和人機(jī)交互性不強(qiáng)。這些缺陷嚴(yán)重制約了國內(nèi)C形臂系列產(chǎn)品在臨床上的應(yīng)用。針對目前國內(nèi)產(chǎn)品軟件的不足,對C形臂X光成像系統(tǒng)的軟件功能進(jìn)行開發(fā)和完善,能夠有效增強(qiáng)國內(nèi)C形臂系列產(chǎn)品的市場競爭力。</p&
35、gt;<p> 本課題與國內(nèi)知名C形臂企業(yè)馳馬特公司合作,旨在對該公司的C形臂X光成像的軟件系統(tǒng)進(jìn)行開發(fā)和改進(jìn),切合臨床需求,完善軟件功能,構(gòu)建一套功能完善、系統(tǒng)可靠、滿足臨床需求、符合醫(yī)生使用習(xí)慣的C形臂X光成像軟件系統(tǒng)。該課題對于提高臨床醫(yī)生的手術(shù)效率具有一定會的臨床應(yīng)用價值。</p><p> 1.2 國內(nèi)外研究現(xiàn)狀</p><p> 國外C形臂X光成像系統(tǒng)的發(fā)展
36、起步早,而且因為國外工業(yè)科技比較發(fā)達(dá),所以C形臂X光成像系統(tǒng)已經(jīng)有了很好的發(fā)展。知名C形臂企業(yè)主要有飛利浦、西門子和GE等。這些企業(yè)可以生產(chǎn)多種型號的C形臂產(chǎn)品,而且產(chǎn)品質(zhì)量高,可靠性強(qiáng),功能豐富。</p><p> 國外的C形臂X光成像系統(tǒng)已在國內(nèi)一些醫(yī)院投入使用,口碑很好。但是進(jìn)口產(chǎn)品價格昂貴,加上每年的高額維修檢測費(fèi)用,一般醫(yī)院根本承擔(dān)不起。國外對國內(nèi)采取技術(shù)壟斷,所以為了我國醫(yī)療事業(yè)的發(fā)展,必須獨(dú)立自主
37、研究并生產(chǎn)國產(chǎn)的C形臂X光成像系統(tǒng)。</p><p> 國內(nèi)品牌諸如馳馬特、大恒等公司在C形臂X光成像系統(tǒng)的研發(fā)上已經(jīng)做了很多年,它們標(biāo)志著國內(nèi)X光醫(yī)療設(shè)備的領(lǐng)先水平。但與國外的產(chǎn)品相比,還是存在較大差距,從軟件方面上看,國內(nèi)C形臂產(chǎn)品X光圖像采集方式落后,圖像質(zhì)量不高,軟件可靠性差,軟件功能單一和人機(jī)交互性不強(qiáng)。這些缺陷嚴(yán)重制約了國內(nèi)C形臂系列產(chǎn)品在臨床上的應(yīng)用,降低了國內(nèi)C形臂系列產(chǎn)品的市場競爭力。<
38、/p><p> 目前,我院與馳馬特公司展開合作。該公司產(chǎn)品已經(jīng)可以實現(xiàn)術(shù)中X光圖像采集、圖像處理及測量、病人信息及圖像管理、病例報告生成、DICOM圖像傳輸及打印等功能。但是其軟件部分還存在較多問題,使得其產(chǎn)品在售后服務(wù)中處于較被動的地位。醫(yī)院在使用其產(chǎn)品后,對其軟件可靠性、軟件使用是否符合醫(yī)生習(xí)慣、圖像采集模式是否能夠滿足醫(yī)生手術(shù)需要等方面提出了更高的要求。經(jīng)過一段時間的調(diào)查和總結(jié),了解到其軟件系統(tǒng)的不足主要包括
39、:軟件結(jié)構(gòu)不合理,導(dǎo)致軟硬件交互升級困難;相機(jī)驅(qū)動范圍太窄,導(dǎo)致無法使用最新相機(jī)和平板探測器;軟件系統(tǒng)的集成度不高,分散成很多小軟件工程,導(dǎo)致軟件可靠性差和使用不方便。</p><p> 總的來說,目前國內(nèi)的C形臂X光成像系統(tǒng)與國外的相比還是有差距的。本課題的研究重點(diǎn)側(cè)重于C形臂X光成像系統(tǒng)的軟件方面,研究目標(biāo)是對馳馬特公司的軟件系統(tǒng)進(jìn)行開發(fā)和改進(jìn),切合臨床需求,完善軟件功能,構(gòu)建一套功能完善、系統(tǒng)可靠、滿足臨
40、床需求、符合醫(yī)生使用習(xí)慣的C形臂X光成像軟件系統(tǒng)。</p><p> 1.3 課題研究方法</p><p> 本課題的研究方法是查閱相關(guān)資料,分析馳馬特公司現(xiàn)有的C形臂X光成像軟件系統(tǒng),從結(jié)構(gòu)、功能、代碼層面上找出該軟件不合理的地方,然后進(jìn)行新軟件的設(shè)計,重點(diǎn)是修改不合理的地方和增加新的功能,以達(dá)到開發(fā)改進(jìn)的目的。</p><p> 本課題的編程方法采用C++
41、語言,編譯平臺選擇C++ Builder,版本是6.0。</p><p> C++語言簡便靈活,盡量的兼容了C語言,支持面向?qū)ο?,而且運(yùn)算符和數(shù)據(jù)結(jié)構(gòu)豐富,程序執(zhí)行效率高,同時具有高級語言與匯編語言的特征[4]。</p><p> C++ Builder是Borland公司推出的一款Windows下可視化集成開發(fā)工具,它具有快速可視化開發(fā)環(huán)境[5]:只要簡單地把控件拖到窗體上,定義一下
42、它的屬性,設(shè)置一下它的外觀,再寫一些事件程序,就可以快速地建立應(yīng)用程序界面。</p><p> 1.4 論文構(gòu)成及研究內(nèi)容</p><p> 本課題基于C++Builder平臺,研究內(nèi)容主要包括:</p><p> ?。?)主要研究了現(xiàn)有軟件系統(tǒng)以及新軟件系統(tǒng)的總體設(shè)計。</p><p> (2)實現(xiàn)了軟件結(jié)構(gòu)優(yōu)化和相機(jī)驅(qū)動的擴(kuò)展,主要
43、擴(kuò)展了Basler相機(jī)和平板探測器的使用。</p><p> ?。?)實現(xiàn)了DICOM圖像格式轉(zhuǎn)換和DICOM圖像傳輸。</p><p> (4)完成了軟件測試。</p><p><b> 2 總體設(shè)計</b></p><p> 2.1 現(xiàn)有軟件系統(tǒng)分析</p><p> 馳馬特公司現(xiàn)有
44、的C形臂X光成像產(chǎn)品的系統(tǒng)結(jié)構(gòu)如圖2.1所示。腳閘控制球管發(fā)射X光,同時也提示下位機(jī)開始采集圖像。球管發(fā)射的X光通過影像增強(qiáng)器被CCD相機(jī)接收,形成X光圖像,最終CCD相機(jī)將采集到的圖像數(shù)據(jù)傳遞給下位機(jī)。所以發(fā)射X光和CCD相機(jī)采集圖像都受腳閘的控制。</p><p> 圖2.1 基于影像增強(qiáng)器的系統(tǒng)結(jié)構(gòu)示意圖</p><p> 馳馬特公司現(xiàn)有軟件包括了一個主體軟件和多個分散的小軟件工
45、程。主體軟件是在C++Builder開發(fā)平臺上開發(fā)的,其他多個小軟件工程包括病例報告生成打印和DICOM圖像傳輸功能,分別是在C++Builder和VB上開發(fā)的。該軟件系統(tǒng)主界面如圖2.2所示,采集圖像的功能界面如圖2.3所示。</p><p> 圖2.2 軟件系統(tǒng)主界面</p><p> 圖2.3 采集圖像功能界面</p><p> 現(xiàn)有軟件系統(tǒng)的采集模式有
46、四種:1、末幀保持,即采集完畢后只保留最后一幅圖像;2、連續(xù)采集,即球管連續(xù)發(fā)射X光,相機(jī)連續(xù)采集并保存圖像;3、脈沖采集,即球管發(fā)射脈沖X光,每次發(fā)射都會產(chǎn)生觸發(fā)信號,觸發(fā)相機(jī)采集并保存圖像;4、數(shù)字點(diǎn)片,和脈沖采集一樣,但最后需要求出圖像的平均值。其中脈沖采集可以降低輻射劑量,在臨床上被廣泛使用,是目前最為先進(jìn)的X光圖像采集方式。連續(xù)采集和脈沖采集都要求軟件可以一邊采集圖像一邊保存圖像,因此軟件需要實現(xiàn)多線程處理。</p>
47、;<p> 現(xiàn)有軟件系統(tǒng)可以實現(xiàn)手術(shù)中X光圖像采集、圖像處理及測量、病人信息及圖像管理、病例報告生成、DICOM圖像傳輸及打印等功能,基本可以滿足臨床需求。但是該軟件系統(tǒng)還是存在一些不合理的地方:</p><p> 軟件結(jié)構(gòu)不合理。每一次硬件更新?lián)Q代,特別是更換相機(jī)時,都需要對軟件做出較大調(diào)整,使得軟件的后期維護(hù)困難,且成本高昂。</p><p> 現(xiàn)有的軟件系統(tǒng)是基于
48、顯約相機(jī)開發(fā)的,其驅(qū)動程序兼容性差,在每一次硬件升級之后都要對軟件驅(qū)動部分進(jìn)行調(diào)整。另外,顯約相機(jī)的可靠性較差,目前已有用戶反饋相機(jī)容易在長期采集后出現(xiàn)BUG。目前國外的X光成像系統(tǒng)的成像元件已逐步從影像增強(qiáng)器向平板探測器過度。與傳統(tǒng)的影響增強(qiáng)器相比,平板探測器具有成像分辨率高、采集速度快、便于數(shù)字化處理、成像質(zhì)量穩(wěn)定、圖像視野更大等優(yōu)勢。但是目前國內(nèi)X光成像系統(tǒng)中,平板探測器的使用非常少,仍處于試驗階段。但是從影像增強(qiáng)器向平板探測器的
49、過度是這一領(lǐng)域的發(fā)展趨勢。目前馳馬特公司已開始著手開發(fā)基于平板探測器的成像系統(tǒng),但是需要對原有的軟件系統(tǒng)做出較大調(diào)整,需要能夠處理更大分辨率的圖像、能夠響應(yīng)更快速的采集、需要實現(xiàn)更高效的圖像處理及存儲,才能夠滿足平板探測器采集圖像的需求。因此,現(xiàn)有軟件在這些方面還難以適應(yīng)平板探測器的采集需求。</p><p> 軟件集成度不高,有分散的獨(dú)立小軟件工程,這就造成軟件的可靠性差,容易出現(xiàn)錯誤,使用時也很不方便。&l
50、t;/p><p> 這三個問題是比較重要的問題,除了這三個問題,軟件還有一些缺點(diǎn),比如不夠美觀,軟件的功能代碼沒有注釋。</p><p> 2.2 新軟件系統(tǒng)總體設(shè)計</p><p> 本課題的目標(biāo)是與馳馬特公司合作,在C++Builder平臺上,對現(xiàn)有C形臂X光成像軟件系統(tǒng)進(jìn)行開發(fā)和改進(jìn),構(gòu)建一套功能完善、系統(tǒng)可靠、滿足臨床需求、符合醫(yī)生使用習(xí)慣的C形臂X光成像
51、軟件系統(tǒng)。</p><p> 現(xiàn)有軟件出現(xiàn)諸多問題,比如結(jié)構(gòu)不合理,軟件沒有集成等等,本課題的研究為解決這些問題,主要分為兩個部分:一個是軟硬件的模塊設(shè)計,主要包括軟件結(jié)構(gòu)優(yōu)化、硬件Basler相機(jī)驅(qū)動和平板探測器驅(qū)動更換,其中結(jié)構(gòu)優(yōu)化,可以增強(qiáng)系統(tǒng)可靠性,實現(xiàn)軟硬件的交互升級,硬件驅(qū)動更換,可以擴(kuò)展系統(tǒng)的使用范圍,提高系統(tǒng)的性能;另一個是軟件的集成,主要是將DICOM圖像傳輸?shù)墓δ芗傻街黧w軟件上,即需要對D
52、ICOM圖像傳輸功能重新設(shè)計編寫。將分散的小軟件工程集成到主體軟件上而形成獨(dú)立唯一的軟件,可以提高軟件的可靠性,同時也方便了使用。</p><p> 3 物理層軟件設(shè)計</p><p> 3.1 軟件結(jié)構(gòu)優(yōu)化</p><p> 馳馬特現(xiàn)有的C形臂X光成像軟件系統(tǒng)包含了多個窗體和代碼單元,其中比較重要的是frmPatientDlg,frmMain,frmIOH
53、andle這三個窗體。</p><p> frmPatientDlg窗體如圖3.1所示,該窗體是唯一的自動創(chuàng)建窗體,是程序運(yùn)行后會自動彈出的主界面。在該主界面上點(diǎn)擊按鈕或者圖標(biāo),可以創(chuàng)建其他相應(yīng)的窗體,比如預(yù)約病人窗體、編輯病人窗體、采集圖像窗體和刻錄光盤窗體,之后就可以在新創(chuàng)建的窗體上進(jìn)行操作。frmPatientDlg窗體的主要作用是新建病人或者查找病人,并將病人的相關(guān)信息包括病例號、姓名、性別、出生日期、
54、預(yù)約日期、手術(shù)醫(yī)生等信息存儲到數(shù)據(jù)庫中。</p><p> 圖3.1 frmPatientDlg窗體</p><p> frmMain窗體如圖3.2所示,該窗體是接收探訪的窗體,即需要通過點(diǎn)擊主界面的采集圖像按鈕才能夠被創(chuàng)建。該窗體的作用不是采集圖像,而是對采集到的圖像進(jìn)行圖像處理和圖像顯示。圖像處理主要包括圖像的平移、翻轉(zhuǎn)、對稱,圖像增強(qiáng)以及灰度、長度、角度測量。圖像顯示可以顯示一張
55、圖像,也可以顯示連續(xù)幾幅圖像。</p><p> 圖3.2 frmMain窗體</p><p> frmIOHandle窗體如圖3.3所示,該窗體也是接收探訪的窗體,即需要通過點(diǎn)擊主界面的采集圖像按鈕才能夠被創(chuàng)建。該窗體被創(chuàng)建時,默認(rèn)不會顯示,只有在需要更改參數(shù)的時候輸入密碼才能顯示在屏幕上。該窗體的作用是采集圖像以及設(shè)置相機(jī)參數(shù),比如曝光時間、光圈、增益和工作模式。該窗體是連接軟件和
56、硬件的通道。</p><p> 圖3.3 frmIOHandle窗體</p><p> 綜上,現(xiàn)有軟件系統(tǒng)大致分為以上三個窗體,其中frmPatientDlg窗體和frmMain窗體主要負(fù)責(zé)病人信息管理和圖像處理,與硬件相機(jī)沒有關(guān)系,但是它們的代碼中卻含有相機(jī)的調(diào)用;frmIOHandle窗體包含了相機(jī)調(diào)用,而且是直接調(diào)用相機(jī)函數(shù)。這就造成硬件相機(jī)牽扯了多個窗體,結(jié)構(gòu)混亂,一旦相機(jī)進(jìn)行
57、升級,牽扯的這些窗體都需要進(jìn)行修改。修改的代碼量可能較少,但是必須仔細(xì)查詢一遍軟件整體,這就浪費(fèi)了人力物力,導(dǎo)致了軟硬件交互升級困難。</p><p> 所以必須對軟件結(jié)構(gòu)進(jìn)行優(yōu)化設(shè)計,使其一方面能夠維持軟件的穩(wěn)定性和可靠性,一方面又能夠方便后期維護(hù)和產(chǎn)品升級?;谛枨?,將軟件結(jié)構(gòu)設(shè)計為三層:</p><p> 物理層,這一層直接與系統(tǒng)的硬件驅(qū)動相關(guān)。當(dāng)硬件更新時,這一層也跟著更新。物
58、理層主要包括圖像采集硬件相關(guān)函數(shù);</p><p> 應(yīng)用層,這一層實現(xiàn)與醫(yī)生交互的功能,與硬件沒有直接關(guān)聯(lián)。當(dāng)硬件更新時,這一層應(yīng)維持不變,實現(xiàn)軟件功能的穩(wěn)定。應(yīng)用層主要包括病人信息管理和圖像采集處理功能;</p><p> 中間層,這一層連接物理層和應(yīng)用層,主要作用是傳遞兩者之間的信息。</p><p> 結(jié)構(gòu)優(yōu)化設(shè)計分成三層,上述frmPatientDl
59、g窗體和frmMain窗體屬于應(yīng)用層,frmIOHandle窗體屬于中間層,而物理層就是硬件的相關(guān)函數(shù)配置文件。進(jìn)行結(jié)構(gòu)優(yōu)化,就要去除frmPatientDlg窗體和frmMain窗體中不必要的相機(jī)調(diào)用,使得應(yīng)用層不受相機(jī)牽連。其次對使用到的硬件相機(jī)函數(shù)包括相機(jī)打開初始化、相機(jī)參數(shù)設(shè)置、相機(jī)采集等函數(shù)進(jìn)行封裝,封裝到一個C文件中。這個C文件就是物理層,它包含了硬件相關(guān)函數(shù)配置文件。添加該C文件到工程中,frmIOHandle窗體調(diào)用里面
60、定義的函數(shù),就可以對相機(jī)進(jìn)行操作。</p><p> frmIOHandle窗體使用該C文件里定義的函數(shù)對硬件相機(jī)進(jìn)行操控,獲取圖像信息傳給其他窗體進(jìn)行圖像顯示及處理。如果硬件升級,只需要更改一下驅(qū)動,對該C文件進(jìn)行修改即可,其他程序可以保持不變;如果軟件升級,增加新的功能,只需添加新的窗體,調(diào)用從frmIOHandle窗體獲得的圖像即可。這樣整個軟件系統(tǒng)的結(jié)構(gòu)就變的很清晰,保證了軟件的穩(wěn)定性和可靠性,也方便了
61、后期維護(hù)和產(chǎn)品升級。</p><p> 3.2 軟件物理層需求分析</p><p> 軟件物理層封裝了相機(jī)函數(shù)配置文件,其中主要包括相機(jī)初始化、相機(jī)采集和相機(jī)參數(shù)設(shè)置,這些封裝的內(nèi)容就是物理層的需求。只有清楚了解物理層需求什么,才可以進(jìn)行相機(jī)更換。</p><p> 了解物理層需求,得研究分析現(xiàn)有C形臂X光成像系統(tǒng)的硬件相機(jī)。該相機(jī)是顯約SG系列數(shù)字?jǐn)z像機(jī),簡
62、稱顯約相機(jī)或SV相機(jī)。它支持硬件和軟件外觸發(fā),自動白平衡,自動增益、曝光控制,支持二次開發(fā),分辨率是1000*1000。它的背面有兩個接口,一個是標(biāo)準(zhǔn)的RJ45插座,用來通過網(wǎng)線和主機(jī)進(jìn)行數(shù)據(jù)交換;另一個是HR插座,是相機(jī)的I/O和電源接口,如圖3.4所示。相機(jī)通過HR插座和RJ45插座建立了與主機(jī)的通信。</p><p> 圖3.4 12針HR插座示意圖</p><p> 在相機(jī)與主
63、機(jī)硬件相連后,第一步要做的是安裝相機(jī)驅(qū)動。查閱顯約相機(jī)的開發(fā)文檔SDK,該SDK使用指南里寫了驅(qū)動程序安裝和二次開發(fā)編程說明,并指出運(yùn)行環(huán)境為WindowsXp。在安裝顯約相機(jī)的驅(qū)動時,相關(guān)的KDC_API.dll、SelectPath.dll和CommPublic.dll庫文件也被安裝到主機(jī)系統(tǒng)system32目錄下。</p><p> 在相機(jī)與主機(jī)硬件連接并安裝相機(jī)驅(qū)動之后,就可以進(jìn)行二次開發(fā)。進(jìn)行二次開發(fā)
64、,只需要在工程中包含幾個頭文件,并將KDC_API.lib加入工程中,就可以調(diào)用相應(yīng)的API函數(shù)對相機(jī)進(jìn)行操作了。</p><p> 現(xiàn)有軟件和相機(jī)相關(guān)聯(lián)的是frmIOHandle窗體,該窗體對相機(jī)的操作主要包括相機(jī)打開,相機(jī)關(guān)閉,相機(jī)采集,相機(jī)參數(shù)設(shè)置,相關(guān)函數(shù)的詳細(xì)解釋可以在顯約相機(jī)SDK中查詢。</p><p> 相機(jī)連接后,相機(jī)會有自己的設(shè)備序號,默認(rèn)為0。如果連接了多個相機(jī),
65、則會對應(yīng)多個序號。使用兩個函數(shù)KDC_OpenDcvice() 和KDC_CloseDcvice()實現(xiàn)相機(jī)打開和關(guān)閉,參數(shù)是設(shè)備序號。使用KDC_SetParameter(DWORD CardNo, KDC_PARAMTER Oper, DWORD Val)函數(shù)可以進(jìn)行相機(jī)參數(shù)設(shè)置,其中CardNo表示設(shè)備序號,Oper表示操作參數(shù)標(biāo)志,Val表示具體設(shè)置的參數(shù)值。Oper參數(shù)標(biāo)志定義在KDC_PARAMTER枚舉變量中,其中參數(shù)達(dá)到
66、200多個,需要用到的參數(shù)有工作模式、曝光時間、增益、光圈、圖像大小、像素深度和最大圖像存儲數(shù)量等等。利用SetParameter函數(shù)可以對序號相對應(yīng)的相機(jī)進(jìn)行相應(yīng)的參數(shù)設(shè)置,比如工作模式設(shè)置,Val值設(shè)置成0,則相機(jī)的工作模式就是連續(xù)的;Val值設(shè)置成1,則工作模式就是外觸發(fā)的,需要引腳接收觸發(fā)信號才會采集圖像。其他參數(shù)設(shè)置類似。使用函數(shù)KDC_GetParameter(DWORD CardNo,KDC_PARAMTER Oper)
67、可以從顯約相機(jī)獲取相應(yīng)參數(shù)的具體值Val。</p><p> frmIOHandle窗體調(diào)用相機(jī)函數(shù)的流程如下:查詢相機(jī)個數(shù),打開相機(jī),設(shè)置相機(jī)各個重要的參數(shù),開始采集,停止采集,關(guān)閉相機(jī)。每成功采集一張圖像,就會自動調(diào)用相機(jī)回調(diào)函數(shù),發(fā)消息給frmIOHandle窗體,消息攜帶了消息號和指向圖像數(shù)據(jù)緩存地址的指針。frmIOHandle窗體代碼中編寫了消息處理事件,即收到Message消息后,會核對消息號,如
68、果符合,就會將指針指向的緩存數(shù)據(jù)存儲并顯示出來。使用回調(diào)函數(shù)和消息處理機(jī)制,使得相機(jī)采集圖像和主程序并行運(yùn)行。</p><p> 如果更換現(xiàn)有顯約相機(jī),就需要重新編寫程序來完成新相機(jī)的打開關(guān)閉、采集、參數(shù)設(shè)置和圖像數(shù)據(jù)保存。這些內(nèi)容就是物理層的需求。</p><p> 3.3 Basler相機(jī)驅(qū)動更換</p><p> 3.3.1 Basler相機(jī)介紹<
69、/p><p> 現(xiàn)有C形臂X光成像系統(tǒng)使用的相機(jī)是國產(chǎn)的顯約相機(jī)。雖然該相機(jī)的性能勉強(qiáng)能達(dá)到手術(shù)要求,但是硬件的每次升級,都會導(dǎo)致驅(qū)動變化很多,而且相機(jī)的兼容性比較差。</p><p> Basler Pylon CCD相機(jī)是德國生產(chǎn)的。該相機(jī)全部在德國制造,從原材料采購到產(chǎn)品工藝設(shè)計,從產(chǎn)品測試到出廠,Basler有著非常嚴(yán)格的管理體系,每臺Basler相機(jī)在出廠前也都經(jīng)過了嚴(yán)格的光學(xué)和
70、機(jī)械測試。Basler相機(jī)性能強(qiáng)大,具備顯約相機(jī)的大部分功能,比如支持硬件和軟件外觸發(fā),自動白平衡,自動增益、曝光控制,支持二次開發(fā),分辨率為1600*1600。更重要的是,Basler相機(jī)與其它CCD相機(jī)相比,具有更好的兼容性,即在不同的操作系統(tǒng)環(huán)境下,不同的相機(jī)型號,可以使用同樣的驅(qū)動工作。因此,更換成Basler相機(jī)后,會提高軟件系統(tǒng)的穩(wěn)定性,便于軟件的后期維護(hù),并降低維護(hù)成本。</p><p> 更換B
71、asler相機(jī)首先要做的是硬件連接,驅(qū)動安裝。如圖3.5所示的是實驗用到的Basler相機(jī),該相機(jī)和顯約相機(jī)類似,背面也有兩個接口,一個是標(biāo)準(zhǔn)的RJ45插座,用來通過網(wǎng)線和主機(jī)進(jìn)行數(shù)據(jù)交換;另一個是HR插座,是相機(jī)的I/O和電源接口。將這兩個接口與主機(jī)連接,就完成了硬件連接。</p><p> ?。╝) 相機(jī)正面 (b) 相機(jī)反面</p><p>
72、圖3.5 Basler相機(jī)的正面與反面</p><p> Basler相機(jī)與主機(jī)完成硬件連接后,必須安裝驅(qū)動才能夠被使用。雙擊驅(qū)動安裝包,選擇安裝路徑進(jìn)行安裝。驅(qū)動安裝完成后會出現(xiàn)三個圖標(biāo),打開pylon IP Configurator,進(jìn)行IP地址和子網(wǎng)掩碼的設(shè)置。如圖3.6所示,IP地址為192.168.2.55,子網(wǎng)掩碼為255.255.255.0,狀態(tài)Status顯示OK表明檢測到了相連的Basler相
73、機(jī),就可以進(jìn)行二次開發(fā)。</p><p> 圖3.6 pylon IP Configurator界面</p><p> 進(jìn)行二次開發(fā),首先需要在工程中添加相應(yīng)的頭文件PylonC.h和lib文件PylonC_MD_BCC55.lib,之后就可以調(diào)用Basler相機(jī)的函數(shù)配置文件。更換相機(jī)來采集圖像,就要編寫相機(jī)的打開,初始化,參數(shù)設(shè)置,采集圖像和關(guān)閉等相對應(yīng)的代碼,即滿足上述軟件物理層
74、的需求。查閱Basler相機(jī)的開發(fā)文檔SDK,找出相關(guān)的API函數(shù)。表3.1列出了本文提到的Basler相機(jī)API函數(shù)進(jìn)行說明。</p><p> 表3.1 Basler相機(jī)API函數(shù)說明</p><p> 3.3.2 Basler相機(jī)打開并初始化</p><p> 首先第一步需要做的是在frmIOHandle窗體被創(chuàng)建時,初始化pylon,即在frmIOHa
75、ndle窗體構(gòu)造函數(shù)中使用函數(shù)PylonInitialize()。這個初始化的意思是該窗體一旦被建立,Basler Pylon的函數(shù)就可以使用了。同樣在frmIOHandle窗體的析構(gòu)函數(shù)中,必須使用PylonTerminate()來終止Basler Pylon。這樣就保證了在frmIOHandle窗體存在的時候,Basler Pylon一直處于激活狀態(tài),也就表明相機(jī)的函數(shù)配置文件可以被使用。</p><p>
76、 Basler Pylon激活后,就可以打開相機(jī)并初始化相機(jī)。先使用函數(shù)PylonEnumerateDevices查詢當(dāng)前連接到的相機(jī)數(shù)量,如果為0,就彈出對話框“沒有發(fā)現(xiàn)相機(jī)”;如果不為0,就將第一個查詢到的相機(jī)關(guān)聯(lián)到事先定義好的句柄hDev。句柄是用來標(biāo)識應(yīng)用程序中不同對象和同類對象中不同實例的,比如一個窗口,按鈕,滾動條等等。對句柄hDev進(jìn)行某些操作,就相當(dāng)于對相對應(yīng)的相機(jī)進(jìn)行操作。比如打開相機(jī),函數(shù)為PylonDeviceOp
77、en(hDev, MODE),其中hDev表明了打開哪個相機(jī),MODE表示打開的方式,有很多值可供選擇。</p><p> 相機(jī)打開后就要對相機(jī)進(jìn)行一些初始化。比如設(shè)置圖像像素深度,設(shè)置圖像大小,設(shè)置傳遞數(shù)據(jù)包大小等等,其中最重要的是創(chuàng)建打開數(shù)據(jù)流和分配緩存。為了能連續(xù)抓取多張圖像,就得創(chuàng)建一個數(shù)據(jù)流抓取器。Basler相機(jī)支持多通道數(shù)據(jù)流方式,使用這種方法抓取圖像比較簡單。數(shù)據(jù)流抓取器不能單靠應(yīng)用程序直接建立
78、,它必須對應(yīng)相機(jī),也就是句柄。PylonDeviceGetStreamGrabber( hDev, 0, &hGrabber )建立了hDev的第一個數(shù)據(jù)流抓取器,而hGrabber就是該數(shù)據(jù)流抓取器的句柄。PylonStreamGrabberOpen( hGrabber )就是將創(chuàng)建好的數(shù)據(jù)流抓取器hGrabber打開。分配緩存用到了函數(shù)malloc(),該函數(shù)可以動態(tài)分配內(nèi)存,每一塊緩存設(shè)置成圖像大小,創(chuàng)建多塊緩存就可以緩沖
79、多個圖像,最后還需要注冊一下這些緩存區(qū),將這些緩存區(qū)和數(shù)據(jù)流抓取器hGrabber聯(lián)系起來,形成一個數(shù)據(jù)流緩存隊列。這樣當(dāng)相機(jī)開始采集圖像后,圖像數(shù)據(jù)就會源源不斷地存到預(yù)先設(shè)置好的數(shù)據(jù)流緩存隊列中。</p><p> 3.3.3 Basler相機(jī)參數(shù)設(shè)置</p><p> 在Basler相機(jī)打開并初始化完畢后,就可以對相機(jī)進(jìn)行參數(shù)設(shè)置,相機(jī)未打開的情況下是不可以對相機(jī)進(jìn)行任何設(shè)置的。首
80、先是讀取相機(jī)默認(rèn)設(shè)置的圖像寬和高還有像素類型,用來設(shè)置軟件內(nèi)部參數(shù),這樣可以及早確定圖像大小,從而在顯示圖像時節(jié)約內(nèi)存。相機(jī)參數(shù)設(shè)置的重點(diǎn)是工作模式設(shè)置,這個設(shè)置必須在采集圖像前完成,因為沒有確定工作模式,采集圖像將無法進(jìn)行。工作模式有兩種,第一種是連續(xù)模式,即相機(jī)開始采集后就會一直連續(xù)采集圖像,直到停止采集;第二種是硬件外觸發(fā)模式,即相機(jī)開始采集后通過引腳傳遞觸發(fā)信號來觸發(fā)相機(jī)采集圖像,該引腳與C形臂上的X光發(fā)射器相連接,所以觸發(fā)信號
81、就是X光的發(fā)射信號,這樣就保證了每次發(fā)射X光相機(jī)都會采集圖像。</p><p> Basler相機(jī)通過設(shè)置觸發(fā)選擇器來控制工作模式。如果設(shè)置連續(xù)工作模式,就選擇所有的觸發(fā)選擇器并將其觸發(fā)模式設(shè)置為Off。這些觸發(fā)選擇器包括了AcquisitionStart,F(xiàn)rameBurstStart和FrameStart。如果設(shè)置硬件外觸發(fā)工作模式,就需要選擇一個相對應(yīng)的觸發(fā)選擇器,設(shè)置觸發(fā)模式為On,并設(shè)置觸發(fā)源,比如函
82、數(shù)PylonDeviceFeatureFromString(hDev, "TriggerSelector", "FrameStart")選擇觸發(fā)選擇器為FramStart,函數(shù)PylonDeviceFeatureFromString(hDev, "TriggerMode", "On")將觸發(fā)模式設(shè)置為On,函數(shù)PylonDeviceFeatureFromSt
83、ring( hDev, "TriggerSource", "Action1")設(shè)置觸發(fā)源為Action1信號源。</p><p> Basler相機(jī)還可以設(shè)置增益和曝光時間等相機(jī)參數(shù),這些具體的參數(shù)在打開相機(jī)時會給出默認(rèn)值,不同的工作模式下默認(rèn)值不同。如果需要修改,在frmIOHandle窗體的對應(yīng)文本框中輸入具體值,就可以完成對相機(jī)參數(shù)的修改。</p>&
84、lt;p> 3.3.4 Basler相機(jī)采集圖像</p><p> 完成Basler相機(jī)的打開及初始化和相機(jī)參數(shù)設(shè)置后,就可以采集圖像了。采集圖像涉及的函數(shù)包括開始采集、等待抓取、釋放緩存隊列和停止采集。顯約相機(jī)采集圖像采取相機(jī)自帶的回調(diào)函數(shù)和消息處理機(jī)制,如圖3.7所示。</p><p> 圖3.7 顯約相機(jī)采集圖像流程圖</p><p> 每成功采
85、集一張圖像,就會調(diào)用顯約相機(jī)自帶的回調(diào)函數(shù),在回調(diào)函數(shù)里使用函數(shù)PostMessage(Handle,CAPTURE_EVENT,0,m_FrameInfo.lBufPtr)發(fā)送消息給frmIOHandle窗體,其中Handle是frmIOHandle窗體的句柄,CAPTURE_EVENT是消息名稱,0是WParam值,m_FrameInfo.lBufPtr是LParam值,是指向圖像數(shù)據(jù)的指針。當(dāng)停止采集時,也會PostMessage
86、發(fā)出CAPTURE_EVENT消息給窗體,WParam值卻為1。該窗體對此編寫了CaptureEvent事件,用于處理接收到的消息:如果消息的WParam值為0,意味著收到了圖像采集成功的消息,那么就將LParam值指向的圖像數(shù)據(jù)進(jìn)行保存顯示;如果消息的WParam值為1,意味著采集停止,那么就將之前采集到的圖像保存成文件形式。這種機(jī)制可以使相機(jī)采集和主程序同時進(jìn)行,相機(jī)不斷采集圖像,同時也不斷調(diào)用回調(diào)函數(shù)發(fā)消息進(jìn)行圖像的保存顯示。&l
87、t;/p><p> Basler相機(jī)沒有自帶的回調(diào)函數(shù),因此無法像顯約相機(jī)一樣進(jìn)行類似的采集圖像過程。設(shè)置先采集圖像后保存圖像的流程,不符合連續(xù)采集和脈沖采集模式的要求,會對手術(shù)不利,尤其會對實時減影的功能造成影響。所以必須使用多線程處理的方式,才可以實現(xiàn)軟件一邊采集一邊保存圖像。</p><p> 在一個程序中,獨(dú)立運(yùn)行的程序片段就是線程,利用它編程就叫作多線程處理,正在系統(tǒng)上運(yùn)行的每個
88、程序都是一個進(jìn)程,一個進(jìn)程至少有一個主線程,它由系統(tǒng)創(chuàng)建,用戶可以在進(jìn)程中創(chuàng)建線程,一個進(jìn)程中的所有線程都在該進(jìn)程的虛擬地址空間中,它們可以實現(xiàn)并行處理,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛[6]。</p><p> 在工程中編寫一個Thread線程,將有關(guān)相機(jī)采集的程序放到該線程中,這樣就可以將相機(jī)采集和主程序分開。具體工作流程圖如圖3.8所示。打
89、開相機(jī)并初始化后,創(chuàng)建Thread線程并初始化,Thread線程采取消息循環(huán)等待消息。相機(jī)參數(shù)設(shè)置完畢,開始采集,并發(fā)開始采集的消息給Thread線程。Thread線程收到消息,等待圖像抓取,抓取成功后發(fā)CAPTURE_EVENT消息給frmIOHandle窗體的主線程,接著在主線程的CaptureEvent事件中將圖像數(shù)據(jù)從緩存中取出,并發(fā)消息給Thread線程釋放抓取圖像的數(shù)據(jù)流緩存隊列。就這樣主線程和Thread線程并行工作著,源
90、源不斷獲得圖像數(shù)據(jù),因為有釋放數(shù)據(jù)流緩存隊列,所以不會溢出。停止采集后,主線程發(fā)停止采集的消息給Thread線程,Thread線程收到后會發(fā)CAPTURE_EVENT消息給主線程來保存圖像文件,Thread線程又回歸到等待消息,等待下一個開始采集消息。關(guān)閉相機(jī),主線程發(fā)消息終止Thread線程。</p><p> 圖3.8 Basler相機(jī)采集圖像流程圖</p><p> Thread
91、線程在這里充當(dāng)了原來顯約相機(jī)回調(diào)函數(shù)的作用,使得相機(jī)采集圖像和主程序可以并行工作,滿足了手術(shù)需求,也滿足了實時減影的需求。</p><p> 3.3.5 Basler相機(jī)函數(shù)封裝</p><p> Basler相機(jī)的編程已經(jīng)完成,編譯運(yùn)行沒有問題,可以實現(xiàn)相機(jī)的打開及初始化,相機(jī)參數(shù)設(shè)置和采集圖像,最后一步就是將相機(jī)的相關(guān)函數(shù)封裝到MyPylonC.c中。</p><
92、;p> MyPylonC.c是單獨(dú)編寫的C文件,該文件里包含了相機(jī)頭文件PylonC.h和相機(jī)lib文件PylonC_MD_BCC55.lib,可以使用相機(jī)函數(shù)配置文件。這個文件封裝了操控相機(jī)用到的函數(shù),比如相機(jī)打開并初始化,包括數(shù)據(jù)流和緩存的代碼都放置在自定義函數(shù)initializeBasler()中,相機(jī)關(guān)閉的一些代碼都放置在自定義函數(shù)terminateBasler()中等等。工程只需要包含這個文件,就可以利用封裝在里面的自
93、定義函數(shù)對相機(jī)進(jìn)行操作了,比如打開相機(jī)并初始化只需要寫一句函數(shù)initializeBasler()。函數(shù)封裝,即把物理層和中間層做了分離,方便了以后修改和軟硬件的交互升級。</p><p> 圖3.9是更換Basler相機(jī)之后,程序運(yùn)行采集到的圖像。其中對話框是新編寫的frmIOHandle窗體。該圖像與顯約相機(jī)采集到的圖像相比,分辨率從1000*1000增加到1600*1600,像素深度也從原來的8位增加到1
94、6位,而且Basler相機(jī)具有更好的兼容性和可靠性,增加了軟件的穩(wěn)定性,也方便了軟件后期升級。</p><p> 圖3.9 使用Basler相機(jī)采集的圖像</p><p> 3.4 平板探測器驅(qū)動更換</p><p> 3.4.1 采集平板介紹</p><p> 自1995年第一臺平板探測器推出,近幾年來平板探測技術(shù)取得飛躍性的發(fā)展。
95、采集平板是個很復(fù)雜的器件,一個典型的采集平板主要包括:閃爍體、光電轉(zhuǎn)換陣列和電子學(xué)部分,此外還要有軟件、電源等附件。</p><p> 目前在國外,采集平板已被大量應(yīng)用于X光成像儀,原因是它與影像增強(qiáng)器相比,具有成像分辨率高,采集與模數(shù)轉(zhuǎn)換一體化,成像視野大,便于校準(zhǔn)等優(yōu)勢?;谏鲜鰞?yōu)勢,采集平板已成為開發(fā)C形臂X光成像系統(tǒng)研發(fā)的不二選擇,標(biāo)志著C形臂X光成像系統(tǒng)的更高水平。但是它也給圖像采集的軟件系統(tǒng)提出了更
96、高的要求。由于圖像分辨率和圖像尺寸更大,需要軟件系統(tǒng)更快速的采集圖像、處理圖像和存儲圖像。因此,在基于平板探測器的軟件系統(tǒng)中,我們對驅(qū)動進(jìn)行了較大的調(diào)整。</p><p> 基于平板的C形臂X光成像系統(tǒng)的基本結(jié)構(gòu)如圖3.10所示。其中高壓發(fā)生器與球管、平板探測器和下位機(jī)都有雙向聯(lián)系,腳閘控制球管發(fā)射X光,并傳遞信息給下位機(jī)開始圖像采集,采集平板接收到信息采集圖像并將圖像數(shù)據(jù)傳遞給下位機(jī)保存。</p>
97、<p> 圖3.10 基于平板的系統(tǒng)結(jié)構(gòu)示意圖</p><p> 我們選用的是Thales公司生產(chǎn)的Pixium 2630 Surgical 平板,其圖像灰度深度為16位,采集分辨率為1560*1440,每個像素代表的大小為0.184 mm,實際采集區(qū)域為28.7*26.5 cm。平板如圖3.11所示。</p><p> 圖3.11 Pixium 2630 Surgic
98、al平板探測器</p><p> 3.4.2 平板探測器驅(qū)動介紹</p><p> 平板驅(qū)動主要包括了平板初始化、平板校準(zhǔn)、平板采集等功能。表3.2列出了使用到的API函數(shù)。</p><p> 表3.2 采集平板API函數(shù)說明</p><p> 使用上述API函數(shù),需要調(diào)用Pixdyn.dll的動態(tài)鏈接庫,并在程序中包含Pixdyn.
99、h文件。</p><p> 3.4.3 平板初始化及校準(zhǔn)</p><p> 平板探測器驅(qū)動安裝完成后,會生成一個PixDyn_50Hz.ini文件。在該配置文件中,包含了對平板探測器的設(shè)置信息,包括使用模式、設(shè)置模式、放大率、采集頻率、X光偏移量、X光劑量校準(zhǔn)信息等。在每次打開平板并初始化時,應(yīng)首先用PixDyn_Open讀入該配置文件,獲得上述信息,從而確定平板狀態(tài),進(jìn)行相應(yīng)的校準(zhǔn)或
100、采集。并通過PixDyn_RegisterEventCallback和PixDyn_RegisterOutputMsgCallback函數(shù)注冊事件回調(diào)函數(shù)和輸出消息回調(diào)函數(shù)。</p><p> 接著對平板進(jìn)行偏移量校準(zhǔn),使用PixDyn_DarkCalibration函數(shù)。在使用外觸發(fā)的采集方式下,偏移量校準(zhǔn)需要踩下腳閘才能完成。為了實現(xiàn)偏移量校準(zhǔn)的自動化,我們在此時通過串口給高壓發(fā)生器模擬了一個腳閘信號,使其
101、通知平板完成偏移量校準(zhǔn)。</p><p> 為了使平板得到最佳的圖像采集效果,應(yīng)每半年對平板的X光劑量進(jìn)行1次校準(zhǔn)。在首次校準(zhǔn)時,需要人工實現(xiàn),即改變不同的X光劑量,用平板采集后得到校準(zhǔn)曲線。在首次校準(zhǔn)后的有效期內(nèi),可以通過PixDyn_LoadReferences函數(shù)讀取之前的校準(zhǔn)信息。如果校準(zhǔn)過期,軟件將讀取校準(zhǔn)信息失敗,此時采集仍可繼續(xù),但是將提示用戶進(jìn)行校準(zhǔn)。</p><p>
102、 3.4.4 平板圖像采集</p><p> 在平板初始化及校準(zhǔn)完成之后,可以通過PixDyn_StartAcquisition函數(shù)開始圖像采集。由于目前的平板驅(qū)動不支持C++ Builder開發(fā)環(huán)境,因此上述平板的操作全部在VC++ 6.0 中完成,并生成一個平板初始化軟件。在平板開始進(jìn)入采集模式后,平板初始化軟件將調(diào)用原有的圖像采集軟件進(jìn)行采集。至此,我們就實現(xiàn)了基于平板的圖像軟件驅(qū)動的更換。平板初始化軟件
103、界面如圖3.12所示。</p><p> 圖3.12 平板初始化軟件界面</p><p> 原有的圖像采集軟件在處理平板采集到的圖像時,由于平板采集到的圖像位深為16位,分辨率為1560*1440,即每幅圖像約4.5MB,所以需要軟件更快速的處理和存儲圖像。我們同樣采用了多線程技術(shù)來解決這一問題,與Basler相機(jī)的采集過程類似,在此就不再贅述。另外,圖像軟件實現(xiàn)了動態(tài)電壓采集技術(shù),即
104、根據(jù)采集的圖像,估算平均亮度,然后實時反饋給高壓發(fā)生器,并調(diào)節(jié)球管電壓,從而達(dá)到最佳的采集效果。由于圖像分辨率高,我們選取了圖像中心的1/4大小的區(qū)域,并用稀疏采樣的方法,實現(xiàn)了圖像亮度的估算;然后通過編碼,用串口通訊發(fā)送給高壓發(fā)生器。這一技術(shù)在基于平板的采集系統(tǒng)中的應(yīng)用是本論文的一大創(chuàng)新。圖3.13是使用平板探測器采集到的圖像,圖中一個兔子的頭。</p><p> 圖3.13 使用平板探測器采集到的兔頭骨圖像
105、</p><p> 4 DICOM圖像傳輸</p><p> 4.1 DICOM簡介</p><p> DICOM(Digital Imaging and Communications in Medicine),即醫(yī)療數(shù)字成像和通信,是醫(yī)學(xué)圖像存檔和通信的國際標(biāo)準(zhǔn),是所有醫(yī)學(xué)影像技術(shù)的基礎(chǔ)[7]。它是由美國放射學(xué)會(ACR)和美國電器制造商協(xié)會(NE-MA)
106、共同組織制定的用于醫(yī)學(xué)圖像存儲與通信的國際標(biāo)準(zhǔn),它的應(yīng)用促進(jìn)了不同廠家、不同醫(yī)療設(shè)備產(chǎn)生的醫(yī)學(xué)影像之間的傳輸和通信[8]。</p><p> DICOM文件一般包括DICOM文件頭和DICOM數(shù)據(jù)集合,DICOM文件頭包含了標(biāo)志數(shù)據(jù)集合的相關(guān)信息,每個DICOM文件都必須包括文件頭,DICOM數(shù)據(jù)集合由DICOM數(shù)據(jù)元素按照一定順序排列組成,由4個部分組成:標(biāo)簽、數(shù)據(jù)類型、數(shù)據(jù)長度和數(shù)據(jù)域[9],如圖4.1所示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c形臂x機(jī)的操作流程
- 基于c#的監(jiān)控組態(tài)軟件開發(fā)
- 并網(wǎng)光伏發(fā)電系統(tǒng)優(yōu)化設(shè)計及軟件開發(fā).pdf
- 軟件開發(fā)崗位舉證模板_軟件開發(fā)
- 基于C#的監(jiān)控組態(tài)軟件開發(fā).pdf
- 光學(xué)相干層析成像系統(tǒng)圖像處理與軟件開發(fā).pdf
- 軟件開發(fā)崗位舉證模板_資深軟件開發(fā)
- 軟件開發(fā)崗位舉證模板_助理軟件開發(fā)
- 軟件開發(fā)崗位舉證模板_高級軟件開發(fā)
- 用于微光CCD的關(guān)聯(lián)成像軟件開發(fā).pdf
- 基于LabVIEW的SAR成像處理軟件開發(fā).pdf
- 系統(tǒng)軟件開發(fā)合同
- 軟件開發(fā)
- 基于visual c++的聯(lián)合空冷系統(tǒng)設(shè)計軟件開發(fā).pdf
- 基于無衍射光的同軸度誤差測量系統(tǒng)軟件開發(fā).pdf
- 薄膜X射線測厚儀的設(shè)計和軟件開發(fā).pdf
- 教務(wù)管理系統(tǒng)軟件開發(fā)
- 張拉整體結(jié)構(gòu)找形軟件開發(fā).pdf
- 12電極電容層析成像數(shù)據(jù)采集系統(tǒng)的設(shè)計及軟件開發(fā).pdf
- C、Z形冷彎薄壁構(gòu)件的強(qiáng)度和屈曲分析軟件開發(fā)和應(yīng)用.pdf
評論
0/150
提交評論