李大湘,王小雨
(西安郵電大學(xué)通信與信息工程學(xué)院,西安 710121)
近些年來,隨著計算機視覺與人工智能技術(shù)的發(fā)展與應(yīng)用,在大部分高校的電子、信號處理、通信與計算機專業(yè)的本科或研究生中,均開設(shè)了《視頻圖像處理與分析》相關(guān)課程與實驗。由于該課程的教學(xué)內(nèi)容會涉及到很多圖像處理與模式識別的理論知識,且具有很強的實踐性與應(yīng)用性,為了讓學(xué)生理論與實踐相結(jié)合,培養(yǎng)其編程與應(yīng)用開發(fā)能力,則該課程在教學(xué)與實驗中,非常適合采用案例教學(xué)[1]。
OpenCV是一個可以運行在多種常用操作系統(tǒng)之上的計算機視覺跨平臺函數(shù)庫,提供了豐富的視頻圖像處理算法,且這些函數(shù)均以C或C++語言編寫,不需要添加新的外部支持就可以編譯執(zhí)行,實現(xiàn)人機互動、物體識別、圖像處理、人臉識別、動作識別、運動跟蹤、機器人、運動分析、機器視覺、結(jié)構(gòu)分析等功能。所以,很多視頻圖像處理與分析商業(yè)產(chǎn)品開發(fā),均選用OpenCV作為開發(fā)平臺,并且在很多高等院校中也經(jīng)常用它來作為工具完成視頻圖像處理與分析相關(guān)的畢業(yè)設(shè)計[2]。
本案例庫建設(shè)主要是針對當(dāng)前《視頻圖像處理與分析》課程教學(xué)過程中理論與應(yīng)用開發(fā)相脫離的實際問題,將基于VS2010+OpenCV編程環(huán)境,以培養(yǎng)與提高學(xué)生的編程能力為應(yīng)用目標(biāo),首先,講授每個案例所涉及的算法原理,然后,剖析算法的編程思想與編程步驟,引導(dǎo)學(xué)生去編程相應(yīng)的實驗程序,遵循理論與實踐相結(jié)合的教學(xué)原則,從而激發(fā)學(xué)生的學(xué)習(xí)興趣[3]。
為了提高《視頻圖像處理與分析》課程教學(xué)效果,在該課程中選擇一些理論性、實踐性與可操作性均很強的知識點或算法,建設(shè)成為教學(xué)案例,其主要建設(shè)思想如下[3]:
(1)案例要倡導(dǎo)理論與實踐相結(jié)合,基于OpenCV開發(fā)平臺,詳細講解視頻圖像處理及分析算法原理與編程方法,其核心是培養(yǎng)學(xué)生的編程實踐能力;
(2)案例不僅要讓學(xué)生能夠?qū)σ曨l圖像處理與分析的原理有深刻的理解,也要讓學(xué)生迅速掌握OpenCV視頻圖像處理工具,為后續(xù)視頻圖像處理與分析應(yīng)用開發(fā)打下實踐基礎(chǔ);
(3)每個案例都各自成為一個獨立的教學(xué)內(nèi)容,均涉及到視頻圖像處理與分析的一個研究方向或應(yīng)用領(lǐng)域,在教學(xué)中先介紹其應(yīng)用背景,再講授算法原理與編程思想,最后安排上機試驗與拓展編程,可作為高等院校電子信息、計算機相關(guān)專業(yè)本科生和研究生的教學(xué)素材,也可作為其他從事數(shù)字圖像處理行業(yè)人員的參考資料。
以我校開設(shè)的《視頻圖像處理與分析》課程教學(xué)為例,將建設(shè)基于OpenCV的視頻錄制與播放、圖像幾何變換、圖像平滑去噪、圖像灰度增強、邊緣檢測、行人檢測、圖像銳化處理、運動目標(biāo)檢測、圖像檢索與人臉識別等10個案例,為課程實驗教學(xué)提供素材。下面以“直方圖均衡化圖像灰度增強”為例,來描述案例制作與應(yīng)用模式。
(1)編寫案例指導(dǎo)書
在案例指導(dǎo)書中,每個案例作為獨立的章節(jié),其中重要的內(nèi)容就是要介紹本案例所涉及的算法原理,以直方圖均衡化圖像灰度增強為例,原理部分的主要內(nèi)容如下:
所謂圖像增強[4,5]就是通過構(gòu)造一個特定的變換函數(shù)對原圖像的灰度值進行逐點變換,希望能夠把圖像中感興趣的特征進行強化,同時壓制其他的非興趣特征,從而達到改善圖像視覺效果的目的。常用的圖像增強方法可分為兩種,即空間域圖像增強和頻率域圖像增強,空間域增強是直接對像素灰度進行操作,屬于直接增強的方法,它包括灰度變換和直方圖變換等方法;頻率域圖像增強就是先對圖像進行傅里葉變換,然后在頻率域采用高通、帶通或低通濾波的方法對圖像進行增強。
直方圖均衡化作為一種全自動的空域圖像增強方法,算法中不需要人工設(shè)置參數(shù),其本質(zhì)思想是[4,5]:希望增強之后新圖像對應(yīng)的灰度直方圖是均勻分布的,從而增加灰度動態(tài)范圍以提高圖像的對比度。設(shè)變量r代表圖像中像素的灰度級,直方圖均衡化就是要尋找一個變換函數(shù)s=T(r),通過它的變換,原始圖像的每個級r都會變成一個新值s。變換函數(shù)T(r)應(yīng)滿足以下條件:
①T(r)在區(qū)間0≤r≤1中為單值單調(diào)遞增;
②0≤r≤1時,0≤T(r)≤1,即T(r)的取值范圍與r相同。
對于任意一幅灰度圖像,設(shè)nr為像素值r出現(xiàn)的頻率,則定義其發(fā)生概率為:

其中L為灰度級數(shù),N為像素總數(shù),p(r)實際上是圖像的歸一化直方圖。設(shè)c(r)為對應(yīng)于r的累計概率函數(shù),定義為:

即c(r)是圖像的累計歸一化直方圖。則直方圖均衡化的變換函數(shù)T(r)定義為:

這里T(r)將不同的灰度值映射到[0,1]域,為了將這些值映射回[0,255]域,則最終變換為:

最后,直方圖均衡化圖像增強算法的編程步驟總結(jié)如下:
Step 1:列出原圖像的灰度值r(r=0,1,…,L-1);
Step 2:統(tǒng)計原始圖像各灰度值出現(xiàn)的頻率nr;
Step 3:采用式(1)計算歸一化直方圖 p(r);
Step 4:采用式(2)計算累積直方圖 c(r);
Step 5:采用式(4)確定映射關(guān)系 r→s;
Step 6:采用Step 5確定的映射關(guān)系對原圖像每個像素進行變換,從而得到直方圖均衡化增強之后的新圖像。
(2)編寫案例參考程序
在案例參考程序部分,首先要介紹OpenCV中對應(yīng)的函數(shù)原型及參數(shù),然后要給出相應(yīng)的程序代碼,以直方圖均衡化圖像增強為例,該部分的主要內(nèi)容如下:
現(xiàn)有的OpenCV中包含有灰度直方圖均衡化的函數(shù) cvEqualizeHist,即:void cvEqualizeHist(CvArr*src,CvArr*dst),其中src表示輸入的8-比特單信道原圖像,dst表示增強之后輸出的新圖像。
讓學(xué)生按照實驗指導(dǎo)書上的方法安裝配置VS2010+OpenCV編程環(huán)境,且建立命令符項目文件,編寫如下代碼[6]:


程序經(jīng)編譯運行之后,試驗結(jié)果如圖1所示。

圖1 直方圖均衡化前后圖像效果對比
(3)拓展編程及實驗報告
為了真正提高學(xué)生的編程實踐能力,針對每個案例,在驗證OpenCV函數(shù)的基礎(chǔ)上,讓學(xué)生參考上課PPT及案例指導(dǎo)手冊,自己編寫直方圖均衡化子函數(shù),即:


要求:①編寫與調(diào)試上述直方圖均衡化子程序,并與cvEqualizeHist進行比對實驗;②實驗完成之后,學(xué)生要書寫實驗報告,對所涉及的算法原理、編程思想與實驗結(jié)果,進行歸納總結(jié)。
以我校研究生的OpenCV《視頻圖像分析綜合實驗》教學(xué)為例,每個案例視情況分配2-4個學(xué)時,在教學(xué)過程中,案例庫的應(yīng)用模式是[3]:
(1)原理講解:針對每個案例庫,制作一個PPT,在上實驗課時,先花一節(jié)課,對本案例設(shè)計的目的、算法原理與編程方法,進行講授;
(2)驗證實驗:讓學(xué)生根據(jù)“案例指導(dǎo)手冊”,對相關(guān)案例進行編程與實驗,觀察分析實驗結(jié)果;
(3)拓展編程:讓學(xué)生根據(jù)上課PPT與實驗指導(dǎo)書或查閱資料,自己編寫案例所述功能的算法程序,以提高編程實踐能力;
(4)提交報告:每個案例教學(xué)完成之后,讓學(xué)生書寫實驗報告,對算法原理與編程思想進行歸納總結(jié),且分析比對實驗結(jié)果。
學(xué)生通過對基于OpenCV開發(fā)的10個案例的學(xué)習(xí)和實驗,達到的目標(biāo)是[3]:
(1)為視頻圖像處理與分析課程實驗教學(xué)提供素材。研究生課程OpenCV《視頻圖像分析綜合實驗》是一門理論性與實踐性很強的課程,教學(xué)中非常適合采用本“案例教學(xué)”;
(2)學(xué)生通過對本案例庫的學(xué)習(xí)與實驗,培養(yǎng)了學(xué)生的編程動手能力。OpenCV具有很強的應(yīng)用性,在講授“視頻圖像處理與分析”算法原理的基礎(chǔ)上,通過實驗中的案例教學(xué),讓學(xué)生理論與實踐相結(jié)合,增強編程與應(yīng)用開發(fā)能力;
(3)案例教學(xué)中的可實現(xiàn)性與可操作性,不但提高了學(xué)生學(xué)習(xí)的積極性與主動性,還極大地增強了學(xué)生學(xué)習(xí)OpenCV圖像處理的興趣。
針對視頻圖像處理與分析教學(xué)應(yīng)用需求,結(jié)合教學(xué)團隊多年從事圖像處理教學(xué)與應(yīng)用開發(fā)的實踐經(jīng)驗,建立了一個教學(xué)案例庫,每個案例均涉及到視頻圖像處理與分析的一個研究方向或應(yīng)用領(lǐng)域,在注重案例具有代表性與理論性的基礎(chǔ)上,還重點要突出案例的實用性與可操作性,其宗旨在于培養(yǎng)學(xué)生基于OpenCV的編程與實踐能力。在本校的教學(xué)過程中,學(xué)生反映很好,達到了預(yù)期的教學(xué)目標(biāo)。