齊玉娟, 李如鋒, 王延江
(中國石油大學(華東) 信息與控制工程學院,山東 青島 266580)
隨著信息技術的發展,借用新的信息技術呈現更生動、更直觀,特別是可以交互的輔助教學方法勢在必行。近年來計算機軟件技術、多媒體技術的發展為計算機輔助教學帶來了便利,并應用于課程實驗教學中[1-7]。 “數字圖像處理”課程[8-10]是電子信息專業的一門重要課程,該課程涉及范圍廣泛,包括線性代數、微積分、概率統計等課程。在學習這門課的過程中,由于其基本理論和算法相對抽象,學生普遍感到很難理解。為了解決這一實際問題,本文在VC++[11-13]平臺下基于開源計算機視覺庫(Open Source Computer Vision Library,OpenCV)[14]設計一套圖像處理教學演示系統作為課程的輔助教學系統。該教學演示系統不僅涵蓋了數字圖像處理領域的大部分經典算法,包括圖像增強、圖像變換、圖像分割、圖像壓縮與編碼、圖像復原和圖像形態學處理,并且集運動目標提取、運動目標跟蹤于一體,并且可轉化為可執行的exe文件,脫離VC環境運行,方便教學應用演示。通過該教學軟件平臺,加深學生對理論知識的掌握,培養學生理論聯系實踐的動手能力和設計創新能力,從而獲得良好的教學效果。
教學演示軟件的總體設計框架如圖1所示。本系統將所有算法分成:靜態圖像處理和視頻圖像處理兩大模塊;靜態圖像處理模塊,又包括圖像增強、變換、分割、形態學變換、復原和編碼6個子模塊,每個子模塊可以包含各自的子模塊;視頻圖像處理模塊包括運動目標提取和跟蹤2個子模塊。以上基本涵蓋了數字圖像處理課程的主要教學內容。

圖1 數字圖像處理演示系統的總體框架
由于Visual C++不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發多種程序等優點,而且通過簡單的設置就可使其生成的程序框架支持數據庫接口、OLE2,WinSock網絡、3D控制界面。并且它以擁有“語法高亮”,IntelliSense(自動完成功能)以及高級除錯功能而著稱[11-13]。同時,本專業學生已學習了“程序設計語言(C/C++)”課程,并結合軟件培訓公司的實訓模式開展了“C/C++軟件設計實訓”,學生有一定的C/C++編程基礎。因此本文基于Visual C++ 微軟基礎類庫(Microsoft Foundation Classes,MFC)框架進行系統設計。OpenCV[14],是一個基于(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows和Mac OS等操作系統上。本系統利用OpenCV的一些基本數據結構及類型,如IplImage, CvvImage, CvMat等,以及一些圖像操作的基本函數cvLoadImage,cvCloneImage等對圖像文件進行打開及復制操作,以簡化系統設計。
根據系統總體設計框架的思路,軟件模塊分為2大模塊,8個子模塊。軟件設計采用單文檔界面(Single Docunment Inteface,SDI)[15]并適當結合對話框的方式,目的是節約系統資源的開銷,也使系統使用簡單方便。其中靜態圖像處理設置為“數字圖像基本處理”菜單項,視頻圖像處理模塊設置為“數字視頻處理”菜單項。子模塊作為相應菜單項的下拉子菜單項。各個子模塊又可以分解為多個子菜單,最后一級子菜單包含相應的基本算法。如子菜單“圖像變換”的下一級子菜單包含“幾何變換”、 “正交變換”、“小波變換”、“沃爾什哈達瑪”4個菜單項,“正交變換” 的下一級子菜單,包含FT、FFT、IFFT、 ExFFT、ExIFFT等算法,如圖2所示。

圖2 演示系統圖像處理示意圖
本系統的各大模塊均是獨立的模塊,各個算法之間獨立,不會相互影響。
與目前存在的圖像處理演示系統[16]相比,本系統具有如下特點:
(1) 界面美觀友好。界面采用自定義的背景作為演示系統的整體背景圖,界面美觀友好。并且,菜單各大模塊清晰簡潔,一目了然,操作起來十分方便。另外算法在操作時可以靈活進行參數的設置與輸入;當設置的參數不合理的時候,會提示錯誤信息,讓用戶進行修改。
(2) 眾多的圖像格式。本系統能夠處理包括BMP格式圖像在內的其它幾種格式的圖像,如JPG、Gif等,而不需要用戶處理指定格式的圖像或者進行轉換格式的圖像,極大地方便了演示系統的使用。
(3) 集成運動目標檢測與跟蹤算法。本系統不僅能對靜止圖像進行處理,而且還集運動目標檢測和運動目標跟蹤算法于一體。
(4) 便于教學。本系統實現的算法均是根據算法原理進行設計,便于教學過程中理論與實踐的結合。
(5) 便于二次開發。本系統采用單文檔方式設計,不僅可以作為學習、教學和實驗用,還方便用戶根據特定的數字圖像處理領域進行二次開發和設計。
該教學演示系統涉及數字圖像處理以及數字視頻處理的各種典型算法。其中數字圖像處理包括圖像的增強、變換、分割、形態學變換、復原和編碼等典型算法;數字視頻處理包括混合高斯目標檢測算法和粒子濾波目標跟蹤算法[17-19]。下面分別以鄰域平均算法和粒子濾波跟蹤算法為例展示演示軟件圖像操作和視頻操作過程及效果。
4.1.1鄰域平均算法原理
鄰域平均法是經典的圖像平滑方法,它的基本思想是,將原始圖像的像素灰度值與之周圍的鄰域像素灰度值,求取平均數,然后將平均數賦給該像素,即得到平滑過后的像素值[8-11]。它的計算結果不僅與本像素灰度值有關,且與鄰域像素的灰度值均有關系,因此,可以利用模板的方法對像素進行計算,這也是數學中的卷積運算。計算公式如下:
(1)
式中:s為(x,y)點鄰域中點的坐標集合;N為鄰域中像素的個數。
常用的3×3模板如下:
其它的模板還有5×5, 7×7, 9×9等,根據實際的應用需要采用不同的模板進行平滑操作。
4.1.2鄰域平均算法演示設計
為了使學生直觀觀察平滑處理效果,本系統人為加入兩種噪聲:椒鹽噪聲和隨機噪聲。通過彈出的對話框,可以選擇噪聲的類型,同時可以自主選擇3×3,5×5, 7×7, 9×9等模板進行圖像的平滑(其他模板暫不支持),且如果輸入錯誤參數,系統會彈出錯誤提示框。每次平滑處理后,質量評價的八個參數以信息框的形式彈出,讓用戶直觀得到各個質量參數的值。
4.1.3鄰域平均算法操作過程及處理結果
首先點擊“文件”菜單->“打開圖像”,選擇一幅圖像并打開(本實例中打開的是Lena圖片),然后在菜單項選擇“數字圖像基本處理”菜單->“圖像平滑”->鄰域平均法,打開鄰域模板及噪聲選擇對話框,如圖3所示。選擇噪聲及填寫模板尺寸后,點擊確定,就會顯示加噪后圖片、鄰域平均法去噪后的圖片以及評價結果,如圖4所示。圖5是模板選擇輸入錯誤信息提示框。

圖3 鄰域噪聲模板選擇對話框

圖4 鄰域平均法處理結果示意圖

圖5 模板輸入錯誤信息提示框
4.2.1粒子濾波算法原理
粒子濾波算法根據蒙特卡洛仿真原理遞推實現貝葉斯估計[20],在目標跟蹤過程,用足夠數量的、帶有相關權值的粒子對應目標各種可能的狀態,并通過粒子間的線性加權逼近目標的真實狀態。
假設運動目標用大小為W×H的矩形框表示,其中W和H分別是矩形框的寬度和高度。則目標的狀態可定義為:
Χ={X,W,H}
(2)

(3)
式中:A為狀態轉移矩陣;B為零均值的高斯隨機過程矩陣。
粒子濾波跟蹤算法可描述為:

步驟2對k≥1,根據式(3)更新每一個粒子的轉移模型,獲得每一個粒子的狀態。
步驟3根據下式計算粒子ψi的權重:
(4)
(5)
(6)
式中:pi是以粒子ψi位置(x,y)為中心的寬為W高為H的估計區域的估計模板;q表示目標模板;ρ(pi,q)是Bhattacharyya系數;di為pi和q的巴氏距離。
步驟4根據下式重采樣選擇新的粒子集
(7)
式中:ul∈(0,1)是隨機變量。
步驟5根據下式估計目標的狀態并標定跟蹤目標
(8)
步驟6轉到步驟2繼續后續幀的處理,直到視頻結束。
4.2.2粒子濾波算法設計
演示系統采用手動選定感興趣目標,因此“數字視頻處理”菜單下的“粒子濾波目標跟蹤”子菜單設計如圖6所示,即:“粒子濾波目標跟蹤”子菜單項彈出兩個子菜單項“目標選定”和“目標跟蹤”。“目標選定”利用鼠標左鍵的按下和抬起畫出一條對角線選定感興趣目標,實現跟蹤器的初始化。“目標跟蹤”啟動跟蹤程序。

圖6 粒子濾波算法設計界面
4.2.3粒子濾波目標跟蹤操作及效果展示
首先點擊“文件”菜單->“打開視頻”,選擇視頻并打開,再點擊“數字視頻處理”菜單->“粒子濾波目標跟蹤”->目標選定(目標選定操作如下:在當前幀圖像按下左鍵在感興趣區域畫一條對角線后左鍵抬起);然后再點擊“數字視頻處理”菜單->“粒子濾波目標跟蹤”->目標跟蹤,進行目標跟蹤。跟蹤效果如圖7所示,其中,紅色框表示跟蹤的目標,滑塊展示了視頻播放進度。

圖7 粒子濾波目標跟蹤效果
在《數字圖像處理》課程理論教學過程利用“基于VC及OpenCV數字圖像/視頻處理演示系統”進行輔助教學,既演示圖像處理算法結果又對算法實現進行講解。課程大作業要求學生利用VC和OpenCV實現簡易的圖像處理系統。圖8和圖9展示了學生設計的簡易圖像處理系統。從大作業效果來看,95%以上的學生都能夠基于MFC單文檔界面獨立實現簡易圖像處理系統。通過作業設計實訓,使學生的編程能力、理論聯系實際能力得到了較大提高,對學生后期的畢業設計、就業和繼續深造也會起到重要的助推作用。

圖8 學生設計系統(一)

圖9 學生設計系統(二)
為了方便教學演示以及對數字圖像處理基礎算法的理解,本文在VC++平臺下基于OpenCV設計了一套數字圖像處理演示系統。該軟件系統不僅涵蓋了數字圖像處理領域的大部分經典算法,而且集運動目標提取、運動目標跟蹤于一體。該系統為學生學習數字圖像處理提供一個交互式、可視化仿真環境,將原本枯燥、抽象的數字圖像處理概念變得直觀、生動,既能增進學生對理論知識理解,又能使學生將理論知識與實際應用相結合,激發了學生學習興趣,改善了教學效果。