齊玉娟, 李如鋒, 王延江
(中國石油大學(xué)(華東) 信息與控制工程學(xué)院,山東 青島 266580)
隨著信息技術(shù)的發(fā)展,借用新的信息技術(shù)呈現(xiàn)更生動、更直觀,特別是可以交互的輔助教學(xué)方法勢在必行。近年來計算機(jī)軟件技術(shù)、多媒體技術(shù)的發(fā)展為計算機(jī)輔助教學(xué)帶來了便利,并應(yīng)用于課程實驗教學(xué)中[1-7]。 “數(shù)字圖像處理”課程[8-10]是電子信息專業(yè)的一門重要課程,該課程涉及范圍廣泛,包括線性代數(shù)、微積分、概率統(tǒng)計等課程。在學(xué)習(xí)這門課的過程中,由于其基本理論和算法相對抽象,學(xué)生普遍感到很難理解。為了解決這一實際問題,本文在VC++[11-13]平臺下基于開源計算機(jī)視覺庫(Open Source Computer Vision Library,OpenCV)[14]設(shè)計一套圖像處理教學(xué)演示系統(tǒng)作為課程的輔助教學(xué)系統(tǒng)。該教學(xué)演示系統(tǒng)不僅涵蓋了數(shù)字圖像處理領(lǐng)域的大部分經(jīng)典算法,包括圖像增強(qiáng)、圖像變換、圖像分割、圖像壓縮與編碼、圖像復(fù)原和圖像形態(tài)學(xué)處理,并且集運動目標(biāo)提取、運動目標(biāo)跟蹤于一體,并且可轉(zhuǎn)化為可執(zhí)行的exe文件,脫離VC環(huán)境運行,方便教學(xué)應(yīng)用演示。通過該教學(xué)軟件平臺,加深學(xué)生對理論知識的掌握,培養(yǎng)學(xué)生理論聯(lián)系實踐的動手能力和設(shè)計創(chuàng)新能力,從而獲得良好的教學(xué)效果。
教學(xué)演示軟件的總體設(shè)計框架如圖1所示。本系統(tǒng)將所有算法分成:靜態(tài)圖像處理和視頻圖像處理兩大模塊;靜態(tài)圖像處理模塊,又包括圖像增強(qiáng)、變換、分割、形態(tài)學(xué)變換、復(fù)原和編碼6個子模塊,每個子模塊可以包含各自的子模塊;視頻圖像處理模塊包括運動目標(biāo)提取和跟蹤2個子模塊。以上基本涵蓋了數(shù)字圖像處理課程的主要教學(xué)內(nèi)容。
圖1 數(shù)字圖像處理演示系統(tǒng)的總體框架
由于Visual C++不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設(shè)計集成交互操作、可開發(fā)多種程序等優(yōu)點,而且通過簡單的設(shè)置就可使其生成的程序框架支持?jǐn)?shù)據(jù)庫接口、OLE2,WinSock網(wǎng)絡(luò)、3D控制界面。并且它以擁有“語法高亮”,IntelliSense(自動完成功能)以及高級除錯功能而著稱[11-13]。同時,本專業(yè)學(xué)生已學(xué)習(xí)了“程序設(shè)計語言(C/C++)”課程,并結(jié)合軟件培訓(xùn)公司的實訓(xùn)模式開展了“C/C++軟件設(shè)計實訓(xùn)”,學(xué)生有一定的C/C++編程基礎(chǔ)。因此本文基于Visual C++ 微軟基礎(chǔ)類庫(Microsoft Foundation Classes,MFC)框架進(jìn)行系統(tǒng)設(shè)計。OpenCV[14],是一個基于(開源)發(fā)行的跨平臺計算機(jī)視覺庫,可以運行在Linux、Windows和Mac OS等操作系統(tǒng)上。本系統(tǒng)利用OpenCV的一些基本數(shù)據(jù)結(jié)構(gòu)及類型,如IplImage, CvvImage, CvMat等,以及一些圖像操作的基本函數(shù)cvLoadImage,cvCloneImage等對圖像文件進(jìn)行打開及復(fù)制操作,以簡化系統(tǒng)設(shè)計。
根據(jù)系統(tǒng)總體設(shè)計框架的思路,軟件模塊分為2大模塊,8個子模塊。軟件設(shè)計采用單文檔界面(Single Docunment Inteface,SDI)[15]并適當(dāng)結(jié)合對話框的方式,目的是節(jié)約系統(tǒng)資源的開銷,也使系統(tǒng)使用簡單方便。其中靜態(tài)圖像處理設(shè)置為“數(shù)字圖像基本處理”菜單項,視頻圖像處理模塊設(shè)置為“數(shù)字視頻處理”菜單項。子模塊作為相應(yīng)菜單項的下拉子菜單項。各個子模塊又可以分解為多個子菜單,最后一級子菜單包含相應(yīng)的基本算法。如子菜單“圖像變換”的下一級子菜單包含“幾何變換”、 “正交變換”、“小波變換”、“沃爾什哈達(dá)瑪”4個菜單項,“正交變換” 的下一級子菜單,包含F(xiàn)T、FFT、IFFT、 ExFFT、ExIFFT等算法,如圖2所示。
圖2 演示系統(tǒng)圖像處理示意圖
本系統(tǒng)的各大模塊均是獨立的模塊,各個算法之間獨立,不會相互影響。
與目前存在的圖像處理演示系統(tǒng)[16]相比,本系統(tǒng)具有如下特點:
(1) 界面美觀友好。界面采用自定義的背景作為演示系統(tǒng)的整體背景圖,界面美觀友好。并且,菜單各大模塊清晰簡潔,一目了然,操作起來十分方便。另外算法在操作時可以靈活進(jìn)行參數(shù)的設(shè)置與輸入;當(dāng)設(shè)置的參數(shù)不合理的時候,會提示錯誤信息,讓用戶進(jìn)行修改。
(2) 眾多的圖像格式。本系統(tǒng)能夠處理包括BMP格式圖像在內(nèi)的其它幾種格式的圖像,如JPG、Gif等,而不需要用戶處理指定格式的圖像或者進(jìn)行轉(zhuǎn)換格式的圖像,極大地方便了演示系統(tǒng)的使用。
(3) 集成運動目標(biāo)檢測與跟蹤算法。本系統(tǒng)不僅能對靜止圖像進(jìn)行處理,而且還集運動目標(biāo)檢測和運動目標(biāo)跟蹤算法于一體。
(4) 便于教學(xué)。本系統(tǒng)實現(xiàn)的算法均是根據(jù)算法原理進(jìn)行設(shè)計,便于教學(xué)過程中理論與實踐的結(jié)合。
(5) 便于二次開發(fā)。本系統(tǒng)采用單文檔方式設(shè)計,不僅可以作為學(xué)習(xí)、教學(xué)和實驗用,還方便用戶根據(jù)特定的數(shù)字圖像處理領(lǐng)域進(jìn)行二次開發(fā)和設(shè)計。
該教學(xué)演示系統(tǒng)涉及數(shù)字圖像處理以及數(shù)字視頻處理的各種典型算法。其中數(shù)字圖像處理包括圖像的增強(qiáng)、變換、分割、形態(tài)學(xué)變換、復(fù)原和編碼等典型算法;數(shù)字視頻處理包括混合高斯目標(biāo)檢測算法和粒子濾波目標(biāo)跟蹤算法[17-19]。下面分別以鄰域平均算法和粒子濾波跟蹤算法為例展示演示軟件圖像操作和視頻操作過程及效果。
4.1.1鄰域平均算法原理
鄰域平均法是經(jīng)典的圖像平滑方法,它的基本思想是,將原始圖像的像素灰度值與之周圍的鄰域像素灰度值,求取平均數(shù),然后將平均數(shù)賦給該像素,即得到平滑過后的像素值[8-11]。它的計算結(jié)果不僅與本像素灰度值有關(guān),且與鄰域像素的灰度值均有關(guān)系,因此,可以利用模板的方法對像素進(jìn)行計算,這也是數(shù)學(xué)中的卷積運算。計算公式如下:
(1)
式中:s為(x,y)點鄰域中點的坐標(biāo)集合;N為鄰域中像素的個數(shù)。
常用的3×3模板如下:
其它的模板還有5×5, 7×7, 9×9等,根據(jù)實際的應(yīng)用需要采用不同的模板進(jìn)行平滑操作。
4.1.2鄰域平均算法演示設(shè)計
為了使學(xué)生直觀觀察平滑處理效果,本系統(tǒng)人為加入兩種噪聲:椒鹽噪聲和隨機(jī)噪聲。通過彈出的對話框,可以選擇噪聲的類型,同時可以自主選擇3×3,5×5, 7×7, 9×9等模板進(jìn)行圖像的平滑(其他模板暫不支持),且如果輸入錯誤參數(shù),系統(tǒng)會彈出錯誤提示框。每次平滑處理后,質(zhì)量評價的八個參數(shù)以信息框的形式彈出,讓用戶直觀得到各個質(zhì)量參數(shù)的值。
4.1.3鄰域平均算法操作過程及處理結(jié)果
首先點擊“文件”菜單->“打開圖像”,選擇一幅圖像并打開(本實例中打開的是Lena圖片),然后在菜單項選擇“數(shù)字圖像基本處理”菜單->“圖像平滑”->鄰域平均法,打開鄰域模板及噪聲選擇對話框,如圖3所示。選擇噪聲及填寫模板尺寸后,點擊確定,就會顯示加噪后圖片、鄰域平均法去噪后的圖片以及評價結(jié)果,如圖4所示。圖5是模板選擇輸入錯誤信息提示框。
圖3 鄰域噪聲模板選擇對話框
圖4 鄰域平均法處理結(jié)果示意圖
圖5 模板輸入錯誤信息提示框
4.2.1粒子濾波算法原理
粒子濾波算法根據(jù)蒙特卡洛仿真原理遞推實現(xiàn)貝葉斯估計[20],在目標(biāo)跟蹤過程,用足夠數(shù)量的、帶有相關(guān)權(quán)值的粒子對應(yīng)目標(biāo)各種可能的狀態(tài),并通過粒子間的線性加權(quán)逼近目標(biāo)的真實狀態(tài)。
假設(shè)運動目標(biāo)用大小為W×H的矩形框表示,其中W和H分別是矩形框的寬度和高度。則目標(biāo)的狀態(tài)可定義為:
Χ={X,W,H}
(2)
(3)
式中:A為狀態(tài)轉(zhuǎn)移矩陣;B為零均值的高斯隨機(jī)過程矩陣。
粒子濾波跟蹤算法可描述為:
步驟2對k≥1,根據(jù)式(3)更新每一個粒子的轉(zhuǎn)移模型,獲得每一個粒子的狀態(tài)。
步驟3根據(jù)下式計算粒子ψi的權(quán)重:
(4)
(5)
(6)
式中:pi是以粒子ψi位置(x,y)為中心的寬為W高為H的估計區(qū)域的估計模板;q表示目標(biāo)模板;ρ(pi,q)是Bhattacharyya系數(shù);di為pi和q的巴氏距離。
步驟4根據(jù)下式重采樣選擇新的粒子集
(7)
式中:ul∈(0,1)是隨機(jī)變量。
步驟5根據(jù)下式估計目標(biāo)的狀態(tài)并標(biāo)定跟蹤目標(biāo)
(8)
步驟6轉(zhuǎn)到步驟2繼續(xù)后續(xù)幀的處理,直到視頻結(jié)束。
4.2.2粒子濾波算法設(shè)計
演示系統(tǒng)采用手動選定感興趣目標(biāo),因此“數(shù)字視頻處理”菜單下的“粒子濾波目標(biāo)跟蹤”子菜單設(shè)計如圖6所示,即:“粒子濾波目標(biāo)跟蹤”子菜單項彈出兩個子菜單項“目標(biāo)選定”和“目標(biāo)跟蹤”?!澳繕?biāo)選定”利用鼠標(biāo)左鍵的按下和抬起畫出一條對角線選定感興趣目標(biāo),實現(xiàn)跟蹤器的初始化?!澳繕?biāo)跟蹤”啟動跟蹤程序。
圖6 粒子濾波算法設(shè)計界面
4.2.3粒子濾波目標(biāo)跟蹤操作及效果展示
首先點擊“文件”菜單->“打開視頻”,選擇視頻并打開,再點擊“數(shù)字視頻處理”菜單->“粒子濾波目標(biāo)跟蹤”->目標(biāo)選定(目標(biāo)選定操作如下:在當(dāng)前幀圖像按下左鍵在感興趣區(qū)域畫一條對角線后左鍵抬起);然后再點擊“數(shù)字視頻處理”菜單->“粒子濾波目標(biāo)跟蹤”->目標(biāo)跟蹤,進(jìn)行目標(biāo)跟蹤。跟蹤效果如圖7所示,其中,紅色框表示跟蹤的目標(biāo),滑塊展示了視頻播放進(jìn)度。
圖7 粒子濾波目標(biāo)跟蹤效果
在《數(shù)字圖像處理》課程理論教學(xué)過程利用“基于VC及OpenCV數(shù)字圖像/視頻處理演示系統(tǒng)”進(jìn)行輔助教學(xué),既演示圖像處理算法結(jié)果又對算法實現(xiàn)進(jìn)行講解。課程大作業(yè)要求學(xué)生利用VC和OpenCV實現(xiàn)簡易的圖像處理系統(tǒng)。圖8和圖9展示了學(xué)生設(shè)計的簡易圖像處理系統(tǒng)。從大作業(yè)效果來看,95%以上的學(xué)生都能夠基于MFC單文檔界面獨立實現(xiàn)簡易圖像處理系統(tǒng)。通過作業(yè)設(shè)計實訓(xùn),使學(xué)生的編程能力、理論聯(lián)系實際能力得到了較大提高,對學(xué)生后期的畢業(yè)設(shè)計、就業(yè)和繼續(xù)深造也會起到重要的助推作用。
圖8 學(xué)生設(shè)計系統(tǒng)(一)
圖9 學(xué)生設(shè)計系統(tǒng)(二)
為了方便教學(xué)演示以及對數(shù)字圖像處理基礎(chǔ)算法的理解,本文在VC++平臺下基于OpenCV設(shè)計了一套數(shù)字圖像處理演示系統(tǒng)。該軟件系統(tǒng)不僅涵蓋了數(shù)字圖像處理領(lǐng)域的大部分經(jīng)典算法,而且集運動目標(biāo)提取、運動目標(biāo)跟蹤于一體。該系統(tǒng)為學(xué)生學(xué)習(xí)數(shù)字圖像處理提供一個交互式、可視化仿真環(huán)境,將原本枯燥、抽象的數(shù)字圖像處理概念變得直觀、生動,既能增進(jìn)學(xué)生對理論知識理解,又能使學(xué)生將理論知識與實際應(yīng)用相結(jié)合,激發(fā)了學(xué)生學(xué)習(xí)興趣,改善了教學(xué)效果。