◆陳凱迪
醫學圖像信息處理是一門結合了算法與程序設計的專業課程,若僅依靠Visual C++ 6.0作為開發平臺,可能導致學生視野偏窄、學習效率偏低。通過此次教學改革,將Matlab、OpenCV、VTK及Visual Studio開發平臺共同應用于教學過程中,在不同的章節突出不同的內容。實踐表明,借助這些高級開發平臺進行學習,學生學習積極性得到激發,理論水平及工程實踐能力明顯提升,為開展畢業設計或科研工作打下良好的基礎。
醫學圖像信息處理是結合溫州醫科大學醫學特色,向信息管理與信息系統專業學生開設的一門高年級專業課,旨在讓學生掌握生物醫學成像及圖像處理方面的基本原理、方法和發展趨勢,拓寬學生知識基礎,提高學生素質,使學生具有解決一般醫學成像和圖像處理問題的能力。
以前,在醫學圖像信息處理課程中是以Visual C++ 6.0和Matlab作為課堂演示及上機實驗的平臺。Visual C++ 6.0作為一種通用的開發平臺,使用其編寫程序時,工作量大,開發周期長。對于學生來說,把大量的時間用在熟悉開發語言而不是用在學習圖像處理的算法上,顯然不是本課程的目的。因此,僅使用Visual C++作為教學及實驗的工具并不合適。
Matlab語法結構簡單,提供了專門的圖像處理工具箱,使學習者不必太多地去關心圖像的文件格式、讀寫、顯示等細節,而把精力集中在算法研究上。但是,僅偏重于學生如何使用Matlab工具箱實現圖像處理的功能,不利于學生深入理解各種算法原理。而且,由于Matlab程序的移植性較差,學生學完后不能面對實際的開發應用,難以提高實踐動手能力[1]。
本課題研究的目的在于拓寬學生知識面,在教學過程中增加了OpenCV和VTK這兩種高層開發平臺,以期提高學習效率,為開展學生科研、畢業設計以及今后的工作打下更加扎實全面的基礎。
此項教學改革的總體思路是將Matlab、OpenCV、VTK共同引入醫學圖像信息處理課程的學習,在不同的章節嵌入適當的示例程序,分析算法原理和代碼實現。同時,設計合適的實驗項目,讓學生能夠按部就班、從簡到難地開展基于以上開發工具的上機實驗。改變學生由于C++語言的復雜繁瑣所導致的學習積極性不高、缺乏自主探索意識的現狀,轉而能夠在學習和實踐中充分體驗醫學數字圖像處理的內涵和魅力。同時,教師可以挑選對該方面感興趣的學生,以學生科研課題或畢業設計的形式,做進一步的指導,從而使本課程的教學水平得到提高。
Matlab平臺的應用 Matlab雖然不適合于本課程所有章節的演示與實驗,但在介紹數字圖像的一些基本概念時不失為一個好的平臺,因為它具有界面直觀明了、命令簡單、易學易懂的優點。以下幾幅圖是在教學過程中使用的部分示例:圖1是用Matlab命令顯示的人體骨骼PET原始圖像及其直方圖,圖2是原始圖像的灰度反轉圖及其直方圖。

圖1 人體骨骼PET原始圖像及其直方圖

圖2 原始圖像的灰度反轉圖及其直方圖
OpenCV的應用 OpenCV即開源計算機視覺庫,它是以C函數和C++類的形式實現大量圖像處理算法。相對于Matlab而言,學生不僅可以利用OpenCV開放的源代碼,以函數進行圖像處理,而且可以查看算法的代碼實現,在提高編程能力的同時理解算法的原理[2]。
在講解圖像增強、圖像分割、圖像變換時設計了采用Visual Studio.net+OpenCV為平臺的實驗內容。因為考慮到工具的高效性和通用性,所以OpenCV是本次教改中最為重要的一個教學內容,所占學時也最多。根據以往經驗,大多數學生對OpenCV并不熟悉,配置OpenCV的開發環境又比較麻煩,僅讓學生在實驗課上跟著教師做一遍并不能讓他們真正掌握知識,因此需要先在理論課上對OpenCV做詳細的介紹,演示各種開發案例,講解常用函數功能,然后在實驗課上再讓學生對照實驗指導書安裝OpenCV并一步步配置開發環境,接著完成各項實驗內容,包括在win32控制臺項目中使用OpenCV和在MFC框架下使用OpenCV進行數字圖像處理。實驗課后再布置若干個大型的實驗任務,可以2~3人一個小組,讓學生自己查資料開發完成,期末上交實驗報告及源代碼。
實踐表明,采用理論課+實驗課+課外實驗的模式,整個學期持續地讓學生接觸、實踐新的開發工具,才有可能比較好地掌握這個工具。否則,很可能就變成學一段忘一段的無效學習。圖3是采用Sobel邊緣檢測算子分割圖像的效果圖,圖4是對圖像做閾值分割的效果圖,圖5和圖6分別是對圖像進行仿射變換和透視變換的效果圖。

圖3 Sobel算子分割圖像

圖4 圖像閾值分割

圖5 圖像仿射變換

圖6 圖像透視變換
VTK的應用 VTK是在OpenGL的基礎上,結合面向對象技術,重新設計和開發用于三維計算機圖形、三維可視化、圖像處理的C++類庫。醫學圖像的三維重建和顯示是本課程中最抽象的內容。在教學過程中,引入VTK三維可視化工具包,可提高學生對理論的理解,激發學習興趣。在講解這部分內容時采用Visual Studio.net+VTK為演示平臺,實驗教學過程中采用表面繪制技術對醫學圖像進行三維重建。需要說明的是,基于VTK的實驗內容對硬件的要求非常高,在實驗室環境升級改造之前,只能提供用cmake配置VTK的文檔讓學生在自己的機器上進行操作。
事實上,VTK提供的教材本身就非常好。VTK源程序包的Example目錄包括了一系列例子,它們都有詳盡的注釋。一步步學習這些例子,可以很容易理解VTK涉及的可視化概念和VTK編程的一般特點[3]。
教改中設計的利用VTK做CT片的三維重構實驗,從算法和數據結構來看,是一個讀取數據和圖形顯示的問題。教師事先準備好符合DICOM 3.0標準的CT圖像文件,學生試著用VTK的vtk Image Reader類或者vtkVo lume Reader類去讀取數據。關于重建算法,對于CT片這種三維規則數據場,可以采取成熟、基本的算法來進行三維重建,比如Marching Cubes算法。圖7為讀取一系列的頭骨切片圖像數據,然后利用vtk Marching Cubes類提取的表面。

圖7 用MarchingCubes算法重建的頭骨表面
在醫學圖像信息處理課程中單獨使用某一種軟件開發工具都顯得比較片面,而同時將Matlab、OpenCV、VTK及Visual Studio開發平臺應用于教學過程中,在不同的章節突出不同的內容和方法,則是較為全面的考慮。實施此次教學改革,雖然學生的學習任務繁重了許多,對教師的要求也提高了很多,但收獲也是不言而喻的。其收獲在于三個方面:一是能夠結合過去所學的編程語言,學生在數字圖像處理方面的理論水平及工程實踐能力得到很大提高;二是為開展圖像相關的學生科研課題、畢業設計以及今后的工作打下基礎;三是教師借此機會進行知識的更新升級,開闊教學思路,提高業務水平。
[1]馮伍,鐘田亮.Matlab在醫學圖像處理中的應用[J].數字技術與應用,2011(6):42-43.
[2]李樹濤,胡秋偉.OpenCV在“數字圖像處理”教學中的應用[J].電氣電子教學學報,2010(6):26-27.
[3]VTK官網幫助文檔[EB/OL].[2013-08-16].http://www.vtk.org/VTK/help/documentation.html.