醫學映像可視化自動編程平台的設計
來源:互聯網
上載者:User
醫學映像可視化自動編程平台的設計
陳德星,郭雷,聶晶鑫
(西北工業大學自動化學院,陝西西安710072
)
摘 要:為了充分利用現有的各種醫學影像處理演算法,避免重複開發,提高開發效率,設計並實現了一個基於OpenCV影像處理基礎演算法庫的醫學映像可視化自動編程平台,該平台在開放原始碼的基礎上,充分整合了OpenCV演算法庫,避免了演算法的重複開發。通過對可視化編程技術的研究,實現了該平台中編程過程的可視化與自動化?同時利用OpenCV平台無關的特性,使用makeflle檔案來控制產生程式碼的編譯,舞現了產生的程式碼的可移植性。並討論了平台的整體結構設計與各個模組具體實現。最後給出一個開發買例,證明了該平台在演算法測試和開發方面的高效性與簡潔性。關鍵詞:基礎演算法庫;醫學影像處理;可視化編程;跨平台中圖分類號:TP 311 文獻標識碼:A
L
引言 20世紀70年代以來,隨著CT,MRI,超聲等先進醫學成像技術的成熟與發展,醫學影像處理已成為醫學技木中發展最快的領域之一。醫學影像處理技術作為這些成像技術的發展基礎,驅使現代醫學診斷技術發生深刻變革. 豐富的醫學影像處理演算法在滿足不同處理需求的同時,也帶來了一些新的問題。過多的演算法使得生物醫學研究者開銷大量時間設計、測試一些基礎演算法,嚴重影Ⅱ向了生物醫學方面的研究進度。且用不同的程式設計語言寫出的演算法難以重用,不適應生物醫學研究過程對處理工具的簡單化、自動化的要求。 本文設計並實現的基於OpenCV的醫學映像可視化自動編程平台解決了上述問題。該平台實現了可視化編程,能夠在使用者的指導下自動產生並運行來源程式,簡單而直觀。且產生的目標程式具有可移植性。
2
醫學映像可視化自動編程平台的結構設計 為了方便使用者進行演算法測試和演算法流程開發,醫學映像可視化自動編程平台的設計目標如下: ①整合一個完備的基礎演算法庫使用者可以從該基礎演算法庫中任意調用各種基礎演算法進行測試和流程開發,有效地提高了使用者工作效率。 ②統一的編程風格由此實現了不同使用者對平台演算法資料庫某一特定演算法進行複用與修改的過程。 ③可視化編程直接利用圖形模組來操作來源程式中的變數和函數”一,簡化了程式流程設計與編寫過程。 ④自動化編程基於圖形模組建立的處理流程,能自動產生相應的程式源碼和可執行程式。 ⑤可移植性為獲得期望的目標程式可移植性。 根據醫學映像可視化自動編程平台的設計目的和功能要求,設計該平台的系統架構結構,1所示。 使用者介面設計,2所示。 以調用一個存在於OpenCV中的基礎演算法為例,說明其工作流程如下: ①平台啟動後,根據當前資料庫的版本號碼調用對應的資料庫,然後讀模數塊中的函數,從而讀出並儲存資料庫,再利用樹形列表顯示資料庫的內容。 ②從樹形列表中選擇特定演算法,拖人平台的工作區,形成一個圖形模組。 ③在演算法參數設定區設定演算法的屬性參數,並在順序調整區設定執行順序。 ④點擊儲存剮產生C來源程式。在參數輸入區輸人蔘數後點擊執行則進行需要的處理。
3
醫學映像可視化自動編程平台的實現 根據前面進行的系統設計,醫學映像可視化自動編程平台細分為4個模組,其關係圖,3所示。 1)資料庫操作模組由前面的討論可以看出,平台必須有一個存有OpenCV中演算法函數相關資訊的資料庫。資料庫中的資訊是平台實現各種功能的基礎,為了實現資訊從資料庫到平台的傳遞,還需要一個能從資料庫中讀取資訊的資料庫操作類。 ①資料庫的設計與實現因為平台的資料庫儲存的是OpenCV中演算法函數的資訊,用XML檔案可滿足需求。在XML資料庫中用根節點的屬性DBVersion表示資料庫的版本號碼;用FunctionSet節點表示一系列功能類似的演算法函數集合;用Function節點儲存了一個函數的相關資訊,而Parameters節點則儲存了一個變數的相關資訊。可看出一個FunctionSet節點中可以有多個Function節點,而一個Function節點中可以有多個Parameter節點。 ②資料庫的讀取考慮到隨著平台的升級和發展.資料庫的結構可能也會有所變化,所以在資料庫的讀取部分設計了一個資料庫版本選取器,實現針對不同版本的資料庫調用其對應的讀取程式。由於整個資料庫的結構是完全遞迴的,因此在具體的讀取程式中採用的是遞迴的讀取演算法。 2)資料操作模組從圖3可以看出,資料操作模組的主要作用就是儲存、修改平台中的各種資料,是模組間資訊儲存、傳遞和處理的核心。資料操作模組主要包括底層的資料存放區結構和平台中演算法函數相關資料的傳遞路徑。 ①底層資料結構在軟體進行所有操作之前,必須要有一個儲存和描述模組之間傳遞的資訊的資料結構。模組間傳遞的資料主要是資料庫中的函數資訊,這裡所說的函數資訊包括函數名、函數的傳回值、函數的出口和人口參數資訊以及資料庫中對函數的描述等。傳遞的資訊可分為五類:資料流、函數、輸入變數、輸出變數和常量。 由圖1中可見,通過可視化編程完成的XML格式的程式(又叫程式流圖)應該是可以通過平台開啟並進行修改的,程式流圖經過下文的格式轉換模組才會產生C語言源檔案。在平台中也有一個對應的資料存放區類CDataModel專門用來儲存程式流程圖。所有對程式流程圖的增減修改操作都是基於底層資料結構的設計,4所示。 ②演算法函數相關資料的流動線路主要有2條 可視化編程的過程當中,若使用者建立資料流連線時路徑。一是從資料庫中調用對應演算法函數相關資料 使得某個演算法的輸人間接地依賴於該演算法的輸出資料流.二是通過平台產生給定變數時的資料流。資料 則會導致資料流死迴圈。可以通過檢測偏序關係來流所涉及的各個相關類的作用圖,5所示。 其中,比較重要的是模型可視化部分和視窗狀態類。模型可視化部分的主要作用是實現CDataModel類中對應部分的圖形顯示,比如定位滑鼠,決定如何繪製圖形等;而視窗狀態類昀作用則是設定視窗類的一些狀態以及和文檔類配合實現平台的回退和前進操作。 ③基於偏序特性的資料流死迴圈檢測演算法在可視化的過程當中,若使用者建立資料流連線時是的某個演算法的輸入間接地依賴於該演算法的輸出,則會導致資料流死迴圈。可以通過檢測偏序關係來發現這個問題。 先考察一下偏序的定義:若一個關係滿足傳遞性和反自反性,則稱此關係為偏序關係。設A是一個非空集a,b,c是A中的任意元素,P是A上的一個關係,不難想到,程式中資料流的傳遞正是一個偏序關係。可以用偏序關係的特性來判斷某一資料流是否會造成死迴圈。用偏序關係的傳遞性可以減少比較次數,在一定程度上提高了檢測機制的效率。 3)資料顯示模組結構和資料操作模組類似,實際上是對資料操作模組中每一個類都進行了封裝,實現了諸如定位、繪製圖形模組及其出人口、響應滑鼠動作等功能。 4)格式轉換模組通過以上幾個模組的共同作用,平台實現了從讀取資料庫的資料資訊到產生XML格式程式流程圖的一系列操作。但產生程式流程圖不是平台的最終目標,還要把XML格式的程式流程圖轉化為可直接編譯啟動並執行C語言源檔案。這樣才能大大簡化程式設計的過程,提高使用者工作效率。格式轉換的主要流程,6所示。
4
醫學映像可視化自動編程平台開發 以Canny邊緣檢測演算法的使用為例,簡單展示基於本平台的演算法流程開發。Canny邊緣檢測演算法是John F Canny於1986年開發的一個多級邊緣檢測演算法。這種檢測演算法能適應不同的場合,它的參數允許根據不同實現的特定要求進行調整,以識別不同的邊緣特徵。Canny演算法的參數主要有兩個:閡值和高斯濾波器的大小。下面在本平台中使用Canny運算元處理nuclei映像。 1)拖曳左邊樹形結構中的演算法函數節點到工作區來構建一個程式流圖,7所示。 2)通過選擇演算法函數對應的圖形模組來進行演算法參數的設定,見圖7。 3)還可通過順序調整區來設定演算法函數執行的順序, 4)執行。本平台支援帶參數的批處理執行,可一次處理多個目標對象,實現處理的自動化。 以上4個步驟隱匿了繁瑣的函數調用與變數定義,使用者所要做的只是拖動圖形模組,串連連接埠,調節參數。只要選擇合適的參數就能獲得期望的結果,具體結果8所示。
5
結語 基於OpenCV的醫學映像可視化自動編程平台在Visual C十+.Net 2003環境下編寫代碼並調試通過。運行測試表明使用該平台可實現充分利用各種現有的醫學影像處理演算法,避免演算法的重複開發,實現了自動化編程與提高開發效率的目標。該平台目前已經應用於斑馬魚的研究,獲得了良好的評價。平台目前僅整合了OpenCV演算法庫,可進一步實現對現今常用的醫學影像處理演算法庫(如ITK,VTK)的整合,拓展平台的使用前景,更好地服務於生物醫學研究者。