一. 設計概述 1. 設計意圖 迅速發展的醫學影像技術不斷的推動現代醫學進步,CT、MRI、PET廣泛地應用與臨床診斷分析,其作用已經從人體組織器官解剖結構的非侵入檢查和可視化,發展成一種用于手術計劃和仿真、手術導航、放療計劃和跟蹤病灶變化的基本工具,從醫學圖象中分割出解剖結構并構造出形狀地集合表達。 MR脊柱圖像分割的研究對于醫學圖象的計算機輔助識別及神經病理學的臨床研究有著至關重要的作用。如果不能將脊椎準確而清晰從圖像中分割和識別出來的話,那么計算機技術對于醫學臨床研究的價值是非常有限的,然而,僅僅依靠人工的方法完成這項工作也是遠遠不夠的。傳統的對椎骨骨折的評估是手動的對每塊椎骨標注6個點(四個角和上下邊沿的中點),然后測量前面、中間、后面的椎骨的高度。但是這個過程是相當的耗時。文獻記載,對于用鼠標定位一位病人1塊椎骨要花費大于15分鐘,對于整個脊椎的定位的耗時將讓人很難接受。因此醫學臨床上迫切的需要一種方法能夠自動完成MR脊柱圖像的分割,計算機自動定位椎骨和椎間盤對于輔助診斷具有重要的臨床應用價值。 本作品的設計意圖即在Nios. II處理器的平臺上實現我們研究提出的一種可行的,魯棒性高的算法,即利用我們實驗室研究的關于MRI Spine圖像分割算法實現了脊椎核磁共振矢狀圖(Sagittal Views)自動的椎間盤定位以及量化的標注,充分利用Altera FPGA/Nios II資源,使系統小型化、便攜化。該算法的應用,可以改善對骨質疏松引起的椎骨骨折進行自動的評估,對椎間盤進行量化分析,有助于與其他成像圖像(如CT)進行圖像的配準,以及圖像引導的椎骨外科手術。 2. 適用范圍及針對用戶群 本作品主要適用于各擁有核磁共振儀器的醫療機構。由于本作品是基于Nios II處理器,具有使用方便的特點,因此也適合普通的老百姓,他們可以以此來了解病人的病情,提醒病人在生活上注意預防各種脊椎病情。并且本作品有網絡傳輸功能,方便醫生進行遠程會診。 3. 本設計采用Nios II 處理器的優勢 (1)Nios II處理器提供的創新的SOPC設計理念 Nios II軟核系統的性能是可以根據應用來進行裁減的,定制用戶自己的系統,與固定的處理器相比,在較低的時鐘速率下具備更高的性能。具有豐富的IP核庫,方便用戶設計,有效的提高系統的運算能力。Nios II的用戶邏輯功能和用戶指令突現NiosII 處理器的技術亮點,提供了運算優化、加速的一個有效途徑,將處理速度提高到一個相當的層次,易于實現算法的商用化。 (2)Nios II IDE開發環境集成了已經移植到Nios II 處理器的RTOS ucosII操作系統,方便我們直接利用該操作系統完成系統的功能設計及功能行擴展。 (3)Dsp Builder豐富的功能模塊和IP核 有了在DSP Builder,使得我們能在Simulink下進行算法級的系統開發。并且可以將算法設計成自定義用戶指令,利用SoPC Builder和Quartus. II軟件集成至Nios II嵌入式系統處理器中,通過軟件調用該自定義指令完成DSP算法。 (4)C2H對設計的有力支持 Nios II提供的C2H編譯器能夠將對性能要求較高的C語言程序自動轉換為硬件加速器,集成到基于FPGA的Nios II子系統中。這樣,分擔了Nios II處理器的數據計算和存儲器訪問功能,使處理器能夠更好的處理其他任務。由于Avalon互聯架構并沒有限制主機和從機的數量,因此,Nios II C2H編譯器可以根據轉換目標代碼的要求,產生多個存儲器自治硬件加速器。幫助嵌入式系統開發人員提高效率,實現成功的設計。 二. 功能描述 MRI脊柱圖像分割的研究是利用磁共振成像設備對人體組織進行定性或定量分析所必不可少的關鍵步驟。引入計算機輔助MRI脊柱圖像分割技術將使得醫生的臨床診斷更加準確及時,降低醫療費用,減輕醫生的工作壓力,具有良好的應用前景。 本設計硬件板塊主要包括DE1開發平臺、MRI圖像LCD顯示板、與MR設備及PC機網絡接口板構成。系統的功能模塊主要分成以下六個:MRI圖像預處理模塊、脊髓提取模塊、脊椎檢測分割模塊,LCD圖像顯示及人機交互模塊,MRI圖像數據存取模塊,網絡傳輸模塊。 1. MRI圖像預處理模塊、脊髓提取模塊、脊椎檢測分割模塊是本設計的算法部分,也是本作品的功能核心所在。我們利用 Nios II處理器強大的運算能力,將大部分的算法使用C程序實現,得益于C2H工具的加速功能,我們將算法中最耗時間的部分使用該工具進行加速,縮短了開發周期。 2. LCD圖像顯示及人機交互模塊:我們采用LCD屏及鼠標來實現圖像的顯示和人機交互的功能。鼠標和lcd通過自己編寫的IP核,以Avalon從設備的方式連接到 Nios II處理器。設計時我們使用了IED開發環境下的UCOSII實時操作系統來完成系統的任務管理及算法調度,移植對應于我們采用的LCD控制器芯片TCB8000C的UCGUI圖形操作界面,使系統具有良好的人機交互性。 3. MRI圖像數據存取模塊:直接從成像設備中獲取的圖像一般符合標準的醫學圖像格式,即dicom格式,這種格式的圖像對于普通的用戶是不常見的,要用專門的軟件或醫學設備讀取,所以為了使得圖像在任何情況下,在大多數環境下可以方便的讀取,我們在處理前經過由dicom格式向bmp格式的轉換,通過網絡下載到硬件平臺的存儲設備上的圖像是已經進行過格式轉換的bmp格式圖像,處理后仍然以bmp格式的圖像上傳到PC機。在這種情況下,就需要比較大的存儲空間,因此采用sd卡作為數據存儲區,并且移植對應于sd卡的UCFS文件系統,增強了系統的擴展性和系統的數據管理能力。 4. 網絡傳輸模塊:采用以太網方式,實現數據的交互。以太網口方便系統從MR設備上獲取圖像。利用DE1的擴展接口,以DM9000A芯片為核心,自行開發了網絡接口板,由于以太網的引入使得系統具有更好的擴展性。 Nios II處理器的特點和sopc的設計理念使我們的設計過程變得不那么枯燥,這是一個不斷優化算法,完善設計,使系統速度運行速度更快的一個過程。我們將設計分成一下兩個步驟進行: 1)搭建Nios II系統,將算法用純軟件的方式在Nios II上運行起來,并初步實現系統的功能。 2)利用自定義指令和自定義外設,加速算法的運行。 三. 性能參數 系統性能參數: 脊柱核磁共振圖像對于診斷脊骨的疾病方面扮演著非常重要的角色,例如對于退化椎間盤的描述比其他形式的圖像有更好的效果,并且能夠對脊椎外科手術的治療進行評估。對脊椎核磁共振圖像進行分析處理可以輔助診斷更加精確,節省時間和花費。因此對于本系統來說,最重要的就是要將脊椎準確而清晰從圖像中分割和識別出來,在保證圖像分割的準確性的同時,通過優化代碼、使用C2H工具及自定義用戶外設等方法加塊運算速度。 下圖是系統工程編譯之后各種資源的占用情況: 算法各個步驟運行時間如下:(以下是經過代碼優化后的運行時間) 圖像預處理:4128.77ms ms 脊髓的提取(Spinal Cord extraction): 24208.14ms 椎間盤的探測(Disks Detection): 6.03ms 圖像存入sd卡時間:15881.59 ms 圖像從sd卡讀入時間:5730.02ms 算法分割的準確性從系統運行后生成的最終處理圖像可以看出,系統能夠比較準確的將脊椎標注出來,并且在平臺上將各個脊椎按照編號標注出來。醫療儀器的具體性能還需要長期的臨床實驗來得到驗證,并通過這些數據改善我們的算法。 下圖是直接拍攝作品顯示的處理效果,在后面章節顯示的圖片是系統通過網絡將圖片傳輸到計算機上得到的。 四. 設計結構 基于Nios II的MRI脊柱圖像分割系統硬件結構圖 軟件流程如下: 五. 設計方法 1. 系統硬件設計 SOPC Builder設置如下圖 Quartus II 軟件下模塊示意圖如下 系統實物圖片: 2. 實現步驟及實現方法 1). LCD圖像顯示及人機交互模塊 (1) LCD及鼠標硬件部分 LCD控制器芯片采用TCB8000C,控制5.7寸TFT65000色LCD顯示屏。控制器接口與MCU接口圖如下,通過編寫了硬件程序以Avalon總線從設備的方式連接到Avalon總線上,實現 Nios直接訪問LCD控制器的功能,利于驅動程序編寫,簡化后續的GUI移植中有關LCD驅動部分。 系統采用PS/2接口鼠標,PS/2鼠標接口采用一種雙向同步串行協議。即每在時鐘線上發一個脈沖,就在數據線上發送一位數據。與nios的連接仍然采用verilog語言編寫Avolon從設備,實現PS/2鼠標的傳輸協議。程序包括mouse_avalon_interFace.v,mouse_register_file.v , ps2_mouse_interface.v 。其中mouse_avalon_interface.v 是avalon總線從設備接口,mouse_register_file.v,ps2_mouse_interface.v完成PS/2鼠標協議的數據轉換和傳輸。編寫對應的GUI下的驅動程序,實現GUI的鼠標操作功能。 (2) μc/gui移植 μC/GUI是一款針對嵌入式系統的優秀圖形軟件,它具有源碼公開、可移植、可裁減、穩定性和可靠性高的特點。μC/GUI提供了豐富的界面元素,例如按鈕、編輯框、滑動條等控件,同時支持高效的窗口會調機制,為界面與應用函數之間提供了良好的接口機制。多功能數字小相框系統的人機交互界面正是利用這個工具進行開發的。 μC/GUI軟件體系結構如下: μC/GUI函數庫為用戶程序提供GUI接口,包含的函數有文本、數值、二維圖形、輸入設備以及各種窗口對象。其中,輸入設備可以是鍵盤、鼠標或觸摸屏;二維圖形包括圖片、直線、多邊形、園、橢圓、圓弧等;窗口對象包括按鈕、編輯框、進度條、復選框等。 μC/GUI函數庫可以通過GUIConf.h文件進行配置,配置的內容包括是否采用內存設備,是否采用窗口管理器,是否支持操作系統、觸摸屏,以及配置動態內存的大小等。 在LCDConf.h文件中定義了與硬件有關的各種屬性,如液晶的大小、顏色以及與液晶的接口函數。而LCD驅動文件則負責把μC/GUI的各種函數解釋成LCDConf.h文件中定義的液晶接口函數,這個文件與具體的硬件連接無關。 μC/GUI與LCD的硬件接口通過驅動文件把硬件接口函數轉化為LCDConf.h中定義的LCD讀寫函數。 2)μC/GUI移植過程: 1. 配置文件的移植 移植工作首先需要完成的是對配置文件的GUIConf.h, LCDConf.h移植,根據數字相冊系統的顯示模塊的要求,對配置文件的相關的參數進行配置。 2. LCD驅動的移植 μC/GUI針對不同的液晶控制器提供了多種驅動程序,如KS0713、SEDl335、T6963等控制器都有對應的液晶驅動程序。但是由于在本系統中,采用的顯示模塊為TOPWAY TCB8000A LCD控制器和TFT、 65000色、LCD屏。而μC/GUI沒有提供相關控制器的驅動,并且與μC/GUI提供驅動支持的LCD控制器相比較,TCB8000A控制器擁有自己獨立的屏幕控制指令體系,這給μC/GUI在TCB8000A控制器的移植工作帶來了很大的難度。 在移植的過程中,我們首先運用TCB8000A的指令體系,實現了μC/GUI為上層應用函數提供的大部分API函數,接著對于TCB8000A控制器不能在硬件支持的API函數,我們采用軟件實現的方法對驅動進行了修補,最后通過對大量控件顯示測試實驗,調整了在LCD驅動中運用的TCB8000A顯示指令中的參數,使得LCD驅動的性能達到最優。最終實現了μC/GUI在TCB8000A控制器上的無縫移植。 3. MRI圖像數據存取模塊 SD卡是Secure Digital Card卡的簡稱,直譯成漢語就是“安全數字卡”,是由日本松下公司、東芝公司和美國SANDISK公司共同開發研制的全新的存儲卡產品。SD存儲卡是一個完全開放的標準(系統),多用于MP3、數碼攝像機、數碼相機、電子圖書、AV器材等等,尤其是被廣泛應用在超薄數碼相機上。SD卡在外形上同MultiMedia Card卡保持一致,大小尺寸比MMC卡略厚,容量也大很多。并且兼容MMC卡接口規范。另外,SD卡為9引腳,目的是通過把傳輸方式由串行變成并行,以提高傳輸速度。它的讀寫速度比MMC卡要快一些,同時,安全性也更高。 我們為了使系統更具有廣泛的應用性、兼容性,我們決定使用SD卡作為設備的主要存儲介質,用于存放我們的照片、音樂、素材等重要數據。DE2上的SD讀卡裝置為1線方式,其速度受到了很大限制。我們把裝置改動為4線方式,使其更加符合我們系統的要求。 在Nios II軟件開發集成環境下,包含了uc/os,可以使用戶方便的應用到自己的軟件工程里,我們為了更合理使各任務共同執行、共享cpu,我們使用了uc/os操作系統,并為其加掛文件系統。一開始我們選用了zlg文件系統,在成功移植后,我們測試了他的速度,速度不盡人意。在向sd卡讀寫1M數據分別需要用時37sec和57sec。我們分析了它的耗時所在,一方面sd卡讀寫模式限制,在標準的DE2開發板上,sd卡使用的是1線讀寫模式,其數據線只有1根,速度受到了很大的限制,我們通過修改其模式,增加數據線的方式,使sd卡的讀寫模式改變為4線的sd模式,經過測試,速度有了提高,分別為17sec和27sec,但是速度并不是我們假想的快到原來的四倍,這是因為另一方面的影響—文件系統,經過上網查詢,發現zlg/fs的性能不高,浪費了很多時間,我們決定使用Micrium 公司的Uc/fs,他和uc/os有著很好的兼容性,在性能上也是得到了大眾的好評。經過幾周的努力我們成功移植了uc/fs 1.34版本到de2平臺上,為四線模式的sd卡架起了文件系統。 經過比較測試,讀寫速度有了很大提高,1M數據讀寫分別只用時3.6s和11s。這樣基本滿足了我們存取數據文件的速度要求。但是仍存在著寫較慢的問題,原因在于在寫數據到sd卡的時候每一個block都需要計算16位的CRC校驗,占用了一部分發送的時間,我們選擇采用自定義用戶指令的方式加快CRC16運算速度,往SD卡寫入一張MR圖像 (約1.5M)的時間從21.7S降低到15.8S。選用更高速的sd卡,還能有效的加塊寫卡的速度。 SD模式時序
Single Block Read Single Block Write 4. 網絡接口 DE1上沒有網絡接口的功能,為了增強系統的可擴展性,我們自行設計了網絡接口板,通過DE1的擴展口連接接起來,這樣就使得開發板就有網絡功能。考慮到擴展口IO口有限,我們還需要使用IO連接LCD顯示屏,一次選用IO口數量相對較少的網絡芯片dm9000a。在發數據上,我們是開發板以定時的方式發數據,在PC機上以查詢方式收數據。網絡使用上,發數據是借助ucosII 的驅動程序實現的,收數據是在網絡第二層以中斷方式實現的。 5. 圖象處理算法實現: 典型的人體脊椎有24塊骶骨前(pre-sacral)椎骨,將其結構劃分,頸部的椎骨(Cervical)7塊, 胸部的椎骨(Thoracic)12塊,腰部的椎骨(Lumbar)5塊。所以在我們的脊椎矢狀圖中,相應的典型的圖像中可見的椎間盤有23塊,分別是C2-3、C3-4、C4-5、C5-6、C6-7、C7-T1、T1-2、T2-3、T3-4、T4-5、T5-6、T6-7、T7-8、T8-9、T9-10、T10-11、T11-12、T12-L1、L1-2、L2-3、L3-4、L4-5、L5-S1。 本算法的目標是將可見的椎間盤進行量化標志,并且對不清晰的椎間盤進行預測估計,也將其標出。算法采用基于uc/osII操作系統編寫的c程序實現,加上我們移植的ucgui和ucfs,實現了具有良好的人機交互性的MRI脊椎圖像分割系統,易于系統的推廣應用。 具體算法分為3步: (a) 圖像的預處理(Preprocessing): 由于原始的核磁共振圖像對比度比較低,視覺效果非常不清晰,所以首先要進行圖像質量的改善,增強椎間盤的可見度。以下兩圖為預處理前后的對比。 該步驟中的圖像中值濾波部分比較耗費時間,可喜的是該部分程序非常適合采用c2h工具進行算法加速,加速前后的時間對比如下: 預處理前 預處理后 (b) 脊髓的提取(Spinal Cord extraction): 脊髓在脊柱核磁共振圖像中是一個明顯的典型的部分,可以為椎間盤的定位提供方向性的信息,應用統計模式識別的模式匹配的方法,進行脊髓的提取。這里我們僅進行上半身的脊髓的提取,是因為上半身的脊髓曲線因人而異的變化比較復雜,而下半身的則可以根據上半身進行預測。 左下圖中的紅線是提取出來的上半身的脊髓。這部分的算法相對于其他部分來說比較耗時,但是從目前的算法結構上看并不適合使用C2H 進行加速,考慮到我們的算法會進一步優化,因此沒有采用其他的方式進行算法加速,我們將在今后的工作中從算法結構和加速實現方式上完善本系統的功能。 脊髓提取圖像 椎間盤定位圖像 (c) 椎間盤的探測(Disks Detection): 對每個椎間盤進行定位,并將其標注。見右上圖,紅點代表定位的椎間盤,由黃線引出進行標注。 我們運用SOPC的設計理念,成功的完成了本系統的設計任務,基本完成了預先設置功能。在系統設計過程中,SOPC概念在以下幾個方面得到了體現: (1、 系統的可重構性 由于Nios II是軟核處理器,具有可裁剪的特性。因此對于我們設計的系統具有廣闊的升級空間,比如,因為時間的原因,一些適合FPGA硬件實現的算法我們采用的c程序實現,速度受到限制,在后續的工作中我們可以在不更改硬件平臺的情況下升級我們;還有就是目前的顯示屏像素值不夠,編寫不同的LCD控制器便能夠兼容同類型的LCD顯示,這些都是SOPC給我們帶來的系統可重構優點。 (2、 系統設計模塊化 系統設計過程是個團隊密切協作分工合作的過程。普通的嵌入式處理器平臺設計必須針對特定的處理器進行設計,硬件工作完成后才能夠進行軟件調試。但是Nios就不同了,只要是能夠支持Nios 的Altera 的 FPGA芯片,在其他 FPGA平臺上進行調試是沒有任何區別的。這樣能夠使得設計過程的軟硬件工作同步進行,在實際產品的設計過程中,就可以將市場拓展和產品研發同時啟動,縮短了整個產品的面世周期,這對企業無疑具有無可估量的意義。 (3、 實現方式多樣化 利用SOPC概念進行系統設計的時候,系統實現方式是多種多樣的,比如要實現一個算法的加速你可以采用自定義用戶指令、自定義用戶外設或者C2H 的方式實現,通過比較找到最佳的實現方式。 六. 設計特點 基于Nios II的MRI脊柱圖像分割系統具有運算速度快,體積小,操作簡單,易于同原有的MRI設備共建形成一個新的完整的系統,且便于醫生們使用分割后的圖像進行集體會診。 1. 基于Nios II處理器的ucosII操作系統的引入,ucosII在世界范圍內得到廣泛的應用、包括諸多領域,如手機,路由器,集線器、飛行器、 醫療設備等等。uC/OS適合小型控制系統,具有執行效率高、占用空間小、實時性能優良和可擴展性強等特點。Nios II的開發環境IDE下已經集成了該操作系統,免去了移植工作,非常方便,在使用過程中發現,在Nios II運行基于ucosII及任務時非常穩定。本系統的軟件開發均在Nios II集成的μc/os-II操作系統上面完成。 2. 系統引入了ucGUI,系統具有了非常好的人機交互性,只需要使用鼠標就能操作實現該系統所有的功能。這對于本系統的推廣有著很大的幫助。 3. 系統設計時考慮到大量MRI圖像存儲的問題,采用大容量的SD卡就解決了這方面的問題,得益于Nios 軟核處理器的優勢,我們非常方便了加入了四線制的sd卡控制器,提高了sd卡讀取速度。同時我們移植了對應于sd卡ucFS文件系統,大大方便了對文件訪問操作。 4. 基于ucosII 操作系統的網絡接口,使得我們的系統具有了很強的可擴展性。同時網絡的支持也可以使得我們保持圖像的更新和對遠程醫療的良好支持。 5. Nios II提供一系列的處理器成員,用戶可以針對本身系統的需求,創建一個在處理器、外設、存儲器和I/O接口方面的完美的方案,這樣,既能提供合理的性能組合,另一方面也節省了系統開發的成本,增強了系統在成本上的競爭力。 6. NiosⅡ提供的C2H編譯器能夠將對性能要求較高的C語言程序自動轉換為硬件加速器,集成到基于FPGA的NiosⅡ子系統中,對我們提高系統運行速度提供了有利的支持。 七. 總結 我們本次大賽的設計作品“基于Nios II的MRI脊柱圖像分割系統”按照預定計劃完成了設計的全部任務,實現了系統的功能,在一些細節上我們還需要努力改進。大賽過程中我們學到了很多新的有關Nios II處理器的支持,首次嘗試了醫學圖像方面算法在Nios II嵌入式處理器實現的方式,體現了Nios II處理器強大處理功能和可靠的運行特性。積累了在Nios II上使用uc/osII、ucGUI、ucFS的使用經驗。調試過程中,出現了的不少問題在團隊協作的力量下,我們一一將它們克服。 Nios Ⅱ軟核系統的性能是可以根據應用來進行裁減的,定制用戶自己的系統,與固定的處理器相比,具有很強的優勢。Nios II的用戶邏輯功能和用戶指令突現Nios II處理器的技術亮點,提供了系統實現的多樣化特點。對于學生來說,SOPC設計理念帶來的就是創新的設計思想。有利于激發我們的創新性。 感謝Altera公司為我們提供了非常好的理論與實現相結合的時間機會,通過大賽,驗證了我們設計的算法硬件實現可行性!對于我們的理論研究也具有相當的促進作用。 |