东海大学资讯工程与科学系东海大学资讯工程学系.docx

上传人:b****5 文档编号:28984035 上传时间:2023-07-20 格式:DOCX 页数:20 大小:471.20KB
下载 相关 举报
东海大学资讯工程与科学系东海大学资讯工程学系.docx_第1页
第1页 / 共20页
东海大学资讯工程与科学系东海大学资讯工程学系.docx_第2页
第2页 / 共20页
东海大学资讯工程与科学系东海大学资讯工程学系.docx_第3页
第3页 / 共20页
东海大学资讯工程与科学系东海大学资讯工程学系.docx_第4页
第4页 / 共20页
东海大学资讯工程与科学系东海大学资讯工程学系.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

东海大学资讯工程与科学系东海大学资讯工程学系.docx

《东海大学资讯工程与科学系东海大学资讯工程学系.docx》由会员分享,可在线阅读,更多相关《东海大学资讯工程与科学系东海大学资讯工程学系.docx(20页珍藏版)》请在冰豆网上搜索。

东海大学资讯工程与科学系东海大学资讯工程学系.docx

东海大学资讯工程与科学系东海大学资讯工程学系

 

東海大學資訊工程與科學系

畢業專題聯合評審

 

三維醫學影像顯示

專題實驗報告書

 

中華民國九十七年十二月二十日

目次

1、前言……………………………….……………………….………2

2、技術背景………………………………………………..…………2

3、設計原理分析…………………………………………….….……5

4、系統架構………………………………………….………….……5

5、實驗結果…………………………………………………………..7

6、效能評估……………………………..…………………..………11

7、結論…………………..…………………..….…………………...11

8、參考文獻…………………………………………………………12

三維醫學影像顯示

指導老師:

黃育仁教授

參與組員:

942939李承融、942958陳柏翰、942811鄭元碩

摘要

醫學影像可以用來透視人體,幫助人類瞭解自己的構造而不必大卸八塊,更為臨床診斷提供莫大的資訊。

醫學影像也是研究心臟的最佳工具,優點在於可以以非侵入的方式獲得心臟的資訊,並提供醫學臨床分析的重要指標。

近年來醫學影像漸受重視,病人將檢查之器官透過電腦斷層掃描,形成一連串的二維影像,將這些二維影像收集之後,利用電腦顯示重建為3D影像,可以幫助醫生做專業判斷,讓病人也一目瞭然。

本研究與台中榮總進行合作,由醫師提供心臟和腫瘤的醫學影像,以及醫生使用教授所開發之輪廓描繪程式,開啟各張醫學影像描繪心肌的內、外圈輪廓,形成特定格式儲存,利用此輪廓資訊檔,本專題利用JOGL(JavabindingsforOpenGL)技術進行顯示成3D影像,可進行多視角觀察。

本專題之成果也提供CT醫學影像的輸入,可直接於本程式上描繪心肌的內、外圈存檔後可立即以本程式進行3D成像顯示,達到使用單一程式就可以完成全部工作的方便性。

1.前言

1.1研究背景

電腦斷層掃描(ComputedTomography、CT),或稱X射線斷層成像,是一種影像診斷學的檢查。

這一技術曾被稱為電腦軸切面斷層影像(ComputedAxialTomography)。

電腦斷層是一種利用數位幾何處理後重建的三維放射線醫學影像。

該技術主要通過單一軸面的X射線旋轉照射人體,由於不同的組織對X射線的吸收不同,可以用電腦的三維技術重建出斷層面影像。

經由窗寬、窗位處理,可以得到相應組織的斷層影像。

將斷層影像層層堆疊,即可形成立體影像。

電腦斷層掃描自從20世紀70年代被發明後,在醫學影像上已經變成一個重要的工具,雖然價格昂貴,它至今依然是診斷多種疾病的黃金準則。

電腦斷層掃描技術的優點之一是它可以提供很高的空間解析度(0.5mm)。

1.2研究動機與目的

現今電腦斷層所應用的範圍很廣,如頭部斷層檢查、胸腔斷層檢查、心臟斷層檢查、腹部和骨盆的斷層檢查、以及四肢的檢查,醫療影像方面,近年來很受重視,人體器官經由斷層掃描後,形成一連串的二維影像,若是能把這些資料重建成3D立體影像,如下圖所示,不僅對醫生在判別病徵時有正面的輔助,醫生與病人說明病情時,可以從不同的視覺觀點去觀察來輔助說明的話,也可使病人容易了解自己身體狀況。

故與老師討論過後制定本專題目的,由台中榮總醫生所提供的CT診斷圖,及醫生使用教授開發之輪廓描繪程式自行描繪心肌之內外圈,產生的特定格式文字檔之後,經由本專題程式可以顯示出立體圖形,以方便醫生診斷。

1.3研究架構

本報告總共分七個章節。

第一章是前言,闡述研究動機、研究背景以及目的。

簡單介紹醫學影像,以及影像在判斷病徵上的重要性。

並藉此了解並說明本研究之動機。

第二章為技術背景,主要闡述關於OpenGL歷史及架構以及選擇Java為主要開發語言的原因。

第三章為設計原理分析,主要介紹本研究中所使用的各種演算法原理,包含了讀取檔案、固定間距控制點選取法、等比例距離控制點選取法、組合電腦斷層圖像等相關技術。

第四章系統架構,分別敘述程式執行時的主要流程結構圖、影像顯示流程結構圖以及描繪流程結構圖。

第五章為實驗結果,顯示採用不同取點方式所產生的影像、讓使用者可以分層觀看每個slice的影像結果及手動描繪CT影像的方式。

第六章為成果探討,主要就顯示影像的效能來作討論。

第七章是結論,對於實作本專題的收穫,以及對本研究之內容與結果做總結,並針對未來相關研究做建議。

2.技術背景

2.1OpenGLIntroduction

OpenGL(OpenGraphicsLibrary)是個定義了一個跨程式語言、跨平台的編程介面的規格,它用於三維圖像(二維的亦可)。

這個介面由近三百五十個不同的函數調用組成,用來從簡單的圖元繪製複雜的三維景象。

普遍應用於在電子遊戲工業中,而另一種編程介面系統是僅用於MicrosoftWindows上的Direct3D。

OpenGL常用於CAD、虛擬實境、科學視覺化程式和電子遊戲開發[1]。

OpenGL的高效實現(利用了圖形加速硬體)存在於Windows,很多UNIX平台和MacOS。

這些實現一般由顯示設備廠商提供,而且非常依賴於該廠商提供的硬體。

開放原始碼庫Mesa是一個純基於軟體的圖形API,它的代碼兼容與OpenGL。

但是,由於許可證的原因,它只聲稱是一個「非常相似」的API[1]。

OpenGL規範由1992年成立的OpenGL架構評審委員會(ARB)維護。

ARB由一些特別興趣于建立一個統一的普遍可用的API的公司組成。

根據OpenGL官方網站,2002年6月的ARB投票成員包括3Dlabs、AppleComputer、ATITechnologies、DellComputer、Evans&Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和SunMicrosystems(Microsoft曾是創立成員之一,但已於2003年3月退出)[2][12]。

2.2JOGL

JOGL的原名為JavaOpenGL,是SunMicrosystemsGameTechnologyGroup所開發,封裝成JOGLLibrary[8][14],使用於Java程式語言。

環境設定如下:

Step1.到http:

//J下載最新JDK並安裝,在Windows底下的預設安裝路徑為C:

\ProgramFiles\Java\jdk1.6.0_03,要注意的是JOGL並不支援JDK1.4.2以前的版本。

Step2.到下載最新的JOGLLibrary,將裡頭的Library解壓縮至C:

\ProgramFiles\Java\jre1.6.0_05\lib\ext目錄底下。

Step3.將剛解壓縮出來的Library也同樣複製一份放到路徑C:

\ProgramFiles\Java\jre1.6.0_05\bin

完成上述步驟,即可執行或開發JOGL程式[14]。

2.3開發語言

因為Java及OpenGL都具有一個很強大的特性,那就是跨平台。

Java,是一種可以撰寫跨平台應用軟體的物件導向的程式語言,由昇陽(SunMicrosystems)公司的JamesGosling等人於1990年代初開發。

Java伴隨著網際網路的迅猛發展而發展,逐漸成為重要的網路程式語言。

Java程式語言的風格十分接近C++語言。

繼承了C++語言物件導向技術的核心,Java捨棄了C++語言中容易引起錯誤的指標(以參照取代)、運算符重載(operatoroverloading)、多重繼承(以介面取代)等特性,增加了垃圾回收器功能用於回收不再被參照的對象所佔據的內存空間。

在JavaSE1.5版本中Java又引入了泛型程式設計(GenericProgramming)、類型安全的枚舉、不定長參數和自動裝、拆箱等語言特性[4][12]。

Java不同於一般的編譯執行計算機語言和解釋執行計算機語言。

它首先將原始碼編譯成位元組碼(bytecode),然後依賴各種不同平台上的虛擬機來解釋執行位元組碼,從而實現了「一次編譯、到處執行」的跨平台特性。

不過,這同時也在一定程度上降低了Java程序的運行效率。

但在J2SE1.4.2發布後,Java的執行速度有了大幅提升。

與傳統程序不同,Sun公司在推出Java之際就將其作為一種開放的技術。

全球數以萬計的Java開發公司被要求所設計的Java軟體必須相互兼容。

「Java語言靠群體的力量而非公司的力量」是Sun公司的口號之一,並獲得了廣大軟體開發商的認同。

這與微軟公司所倡導的注重精英和封閉式的模式完全不同。

Sun公司對Java程式語言的解釋是:

Java程式語言是個簡單、物件導向、分散式、解釋性、健壯、安全與系統無關、可移植、高性能、多執行緒和動態的語言。

目前主要的兩個3D繪圖API為DirectX3D和OpenGL[1],必須透過它們才能在3D顯示卡上進行3D影像的繪製。

但DirectX只局限於Windows平台,所以目前主要的應用是在遊戲及多媒體方面,在專業繪圖應用仍然是OpenGL的天下。

OpenGL的架構非常簡單明確,它除了具有強大的繪圖功能之外,最方便的優點的就是與硬體無關的開放架構,讓它能在許多圖形介面平台上執行,除Windows之外,還有Linux、FreeBSD、OS/2、MacintoshOS及BeOS等作業系統,故若我們要將開發的程式轉移到其它作業系統,只要重新編譯便可以執行[1]。

3.設計原理分析

3.1固定間距控制點選取

初始為每個slice取10個點來做顯示,假設某一slice的外圈點數有x點,x/10則為間隔數,以迴圈的方式計算點與間隔,拿每ㄧ個slice的第一個點當起始點,第一點以GL.GL_LINE_LOOP連線到第一點加間隔數,以此類推到第十點[3]。

但存在一個問題,如下圖粉紅圈所示,固定間距選取當點數已達要求的點數後,即不再取點,導致後面還有很多點數沒用到後就做連線,所以造成顯示效果的缺陷。

3.2等比例距離控制點選取

程式讀入每個slice的內外圈點數以似切蛋糕方式各對半切劃四等份,即可在每一個slice上得到這8個點,從1到8先以JOGL提供的GL.GL_LINE_LOOP連成一圈,再將圖五所標號之左(1,2)及右(1,2)以GL.GL_POLYGON連成一四邊形,直至最後一個slice即完成顯示[15]。

4.系統架構

4.1基本架構圖

4.2程式介面

執行程式後,即可看到主程式介面如上圖,使用者可選擇1.輪廓資訊檔的讀入開始3D影像的顯示,或是2.使用DrawCT即可做CT醫學影像的描繪。

若開啟的檔案格式不正確,則系統將跳出警告視窗。

當影像顯示觀察完畢後,使用者可選擇繼續下一個輪廓資訊檔的讀入顯示,或是結束程式[2]。

4.3影像顯示架構圖

影像顯示的各種情況如上圖所示,使用者有三種取樣點數可選擇第一為10點、第二為20點、第三為30點,擷取點數的多寡影響顯示的相似度也影響程式效能;旋轉視角的功能分兩種,第一種為使用者拖曳滑鼠控制圖形達到旋轉的效果[2][11][13],第二種為輸入欲讓圖形繞何軸旋轉,由程式所控制;第三個功能為顯示完整心肌,或是只顯示影像取點的框架,附圖於後面章結的實驗結果。

4.4描繪架構圖

DrawCT為描繪CT醫學影像內外圈的功能,使用者若開啟此功能,系統會先提問使用者共有多少張CT醫學影像要描繪,輸入非數字或零則跳出系統提示警告,輸入正確後系統將請使用者輸入欲存檔之名稱,而後判斷檔案是否已存在,若已存在詢問是否取代,檔案不存在則新建後跳出檔案開啟的視窗請使用者選擇CT醫學影像的讀入後即可開始描繪,先描繪的是心肌外圈再來是內圈,畫好之後按下程式右下方Save按鈕,即可將此CT醫學影像所描繪的輪廓記錄到使用者命名的輪廓資訊檔,若描繪的次數未達使用者所輸入之slice數目,則系統將再跳出檔案開啟的視窗請使用者選擇CT醫學影像的讀入,以上動作持續到使用者所輸入之slice數目為止,則結束描繪,視窗回到主程式[2]。

5.實驗結果

5.1影像顯示

5.1.1固定點數測試

挑選兩個輪廓資訊檔讀入測試,檔名為VOI_contour_000022294G_81624.txt的影像如圖一(a)、圖一(b)所示,此測試未經旋轉,經檔案讀入後只利用滾輪將呈現情形放大。

而圖二(a)、圖二(b)為VOI_contour_001632188D_8168.txt的影像,此測試經滑鼠拖曳旋轉以及使用點數30的效果影像呈現。

圖一(a)

圖一(b)框架

圖二(a)

圖二(b)框架

5.1.2動態點數測試

此部份為取樣點數的測試,如圖三(a)為每個slice使用10點去取點而成,圖三(b)則是它的框架,圖三(c),為使用20點去取點而成,可明顯看出顯示效果較佳,圖三(d)為其框架,到了圖三(e)時已用30點去取樣,使其更為真實、圓滑,圖三(f)可看出其點數相當密集。

圖三(a)

圖三(b)框架

圖三(c)

圖三(d)框架

圖三(e)

圖三(f)框架

5.2分層觀察CT醫學影像

紅色為心室外圈,綠色為心室內圈,在主程式上將影像的3D顯示以特別顏色標示出來,外圈為藍色、內圈為淺藍色,讓醫生更易對照電腦斷層影像觀察[16]。

5.3描繪CT醫學影像

描繪CT醫學影像如圖四所示,將醫學影像讀入後即可開始描繪,紅色部分為外圈的描繪,當描繪完畢後點選上方Color按鈕後可開始描繪綠色的內圈,直到完成全部Slice為止,描繪途中一旦發生描繪失誤,程式提供重新讀入及Renew的功能,可讓使用者重繪目前工作中的CT醫學影像[16]。

圖四-描繪slice外圈

圖四-描繪slice內圈

 

6.效能評估

本專題開發初期曾考量不周,多餘的I/O動作使用太多,導致程式效能不佳,經過一番改寫過後,效能精進,CPU的使用也降低非常多。

分析情況為程式V1.0和修正後程式V2.0,評估方法為Render心肌100次,記錄每次描繪的時間後作平均而得,分析如下表:

硬體設備

CPU

RAM

GPU

Athlon64X2,2300MHz(11.5x200)4400+

2GigaBytes

ATI

Radeon

X300

程式版本

取點個數

Version1.0

Version

2.0

(1)取10點

70.76(ms)

1.57(ms)

(2)取20點

71.75(ms)

2.88(ms)

(3)取30點

74.58(ms)

4.23(ms)

由上表可得知狀況

(1)差距約達45倍之多,狀況

(2)差距約24倍,狀況(3)差距約18倍。

程式v1.0對於取點的多寡以比例而言增幅較小,但整體效能非常差,而程式v2.0對於取點多寡影響比例而言增幅較大,由兩程式相對照可看出取點個數所增長的CPUTIME相近,由此可見程式v1.0將大部份的CPU資源用在IO部分。

此次程式改善非常的成功,未來再加入更多點顯示時能花費較少的CPUTIME達到更好的顯示情形。

7.結論

本專題利用電腦顯示,將資料重建為3D影像,可進行心肌或是腫瘤的顯示。

操作方面可進行多視角觀察,且能讀入資料檔之原始CT醫學影像,易於對照觀察。

也提供CT醫學影像的輸入,可直接於本程式上描繪心肌的內、外圈存檔,並可立即以本程式進行3D成像顯示,這樣醫師便可以直接利用3D影像診斷分析,快速的掌握病人的情況,在問診時並可搭配程式執行的結果,把三維圖像展示給患者,可以達到輔助說明的效果,使病患更加的了解,降低初期診斷時的誤判率,達到早期診斷、早期治療的最佳效果。

對於本專題點數使用上,點數的使用量還是較少,如果能使用更多的參考點,增多點數的顯示,或是將點數全部用上,更可接近真實心肌的原貌,不管在醫生的專業判斷上,還是病人了解狀況方面,都能有更精確的表現、更容易了解情形。

本專題主要是針對特定資料結構的資料顯示成像,在未來的發展上,希望可以是朝著醫學影像方面前進,不管是什麼器官,經過斷層掃描後,所生成的資料結構,只要經過標準化,我們都可以顯示出3D圖像,便於醫生診斷,成為醫生診斷必備的工具之一。

參考文獻

[1]OpenGL超級手冊,大新資訊/碁峰資訊,2000

[2]互動式電腦繪圖與OpenGL實作,AngelEdward/黃加佩,1998

[3]使用MFC設計OpenGL,溫植燁,2006

[4]JavaSE6技術手冊,林信良,2007

[5]JavaWorld@TW

.tw/

[6]JavaWorld

[7]J3D.ORG

http:

//www.j3d.org/

[8]JOGL.info

http:

//www.jogl.info/

[9]Hoofdpagina

http:

//www.latinpage.be/index.php

[10]J

[11]JavaTips

http:

//www.java-tips.org/

[12]Wiki

http:

//zh.wikipedia.org/

[13]程式設計俱樂部

http:

//www.programmer-

[14]JOGLAPIProject

[15]NeHe

[16]Leftventricularmyocardialvolumesmeasuredonarterialanddelayedphasesofmulti-detectorrowCT:

anintraobserverandinterobservervariabilitystudy

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1