南京林業(yè)大學(xué)機(jī)械電子工程學(xué)院 王皖君 程玉柱 李趙春
基于OpenCV的圖像處理編程教學(xué)模式研究
南京林業(yè)大學(xué)機(jī)械電子工程學(xué)院 王皖君 程玉柱 李趙春
實(shí)踐教學(xué)是圖像處理課程教學(xué)的重要組成部分。本文將OpenCV引入到數(shù)字圖像處理的實(shí)踐教學(xué)當(dāng)中,包括多種開發(fā)平臺(tái)的搭建、函數(shù)的調(diào)用、算法演示等。利用Visual Studio和Anaconda與OpenCV搭建PC端圖像處理平臺(tái),同時(shí)搭建Android Studio與OpenCV手機(jī)端圖像處理平臺(tái)。通過兩種平臺(tái)教學(xué)實(shí)踐表明,此教學(xué)模式能顯著地提高教學(xué)效果。
OpenCV;圖像處理;教學(xué)模式
“數(shù)字圖像處理”課程理論性、實(shí)踐性都很強(qiáng),理論上囊括了幾乎所有的數(shù)學(xué)理論。在實(shí)踐上,傳統(tǒng)采用Matlab軟件進(jìn)行教學(xué),Matlab雖然易于學(xué)生掌握,但不適合工程應(yīng)用,與創(chuàng)新創(chuàng)業(yè)的教學(xué)思路不符,而采用C++語言教學(xué),難度較大,短時(shí)間很難入門。
OpenCV是開源計(jì)算機(jī)視覺庫(kù),由Intel公司主導(dǎo)開發(fā)的基于BSD開源發(fā)型的跨平臺(tái)計(jì)算機(jī)視覺庫(kù),具有多種接口:C、C++、Java、Python等,可以運(yùn)行在多種操作系統(tǒng)上。與Matlab相比,OpenCV的優(yōu)勢(shì)在于實(shí)時(shí)且高效,提升軟件算法的可應(yīng)用性。同時(shí)可以利用GPU硬件,實(shí)現(xiàn)算法的并行加速處理。OpenCV實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺的很多通用算法,算法通過函數(shù)、類和模塊實(shí)現(xiàn),便于學(xué)生調(diào)用和練習(xí),有助于提高圖像處理課程的實(shí)踐教學(xué)效果。
本文將OpenCV引入到“數(shù)字圖像處理”課堂教學(xué)中來,通過搭建PC端和手機(jī)端兩種開發(fā)平臺(tái),生成兩套編程教學(xué)系統(tǒng),供學(xué)生上課進(jìn)行二次開發(fā)和學(xué)習(xí),提高課堂教學(xué)效果。通過編程教學(xué),有助于圖像處理理論及算法的理解。
學(xué)生電腦主要配備微軟的Windows操作系統(tǒng),因此,PC端構(gòu)建OpenCV教學(xué)系統(tǒng)主要基于Windows系統(tǒng)開發(fā)。本文通過Visual Studio與OpenCV構(gòu)建C++圖像處理算法演示系統(tǒng),同時(shí)也用Anaconda與OpenCV構(gòu)建Python圖像處理算法教學(xué)系統(tǒng)。
Visual Studio 2017是微軟于2017年3月8日正式推出的新版本,是迄今為止最具生產(chǎn)力的 Visual Studio 版本,其內(nèi)建工具整合了.NET Core、Azure 應(yīng)用程序、微服務(wù)、Docker 容器等所有內(nèi)容,本文采用面向?qū)W生、開源和個(gè)人開發(fā)者的免費(fèi)社區(qū)版。平臺(tái)搭建過程:首先下載Visual Studio和OpenCV,安裝VS2017,然后解壓OpenCV,得到預(yù)先編譯好的lib、bin、include等文件夾;打開Visual Studio,設(shè)置好庫(kù)文件路徑,電腦高級(jí)變量等。最后新建工程,輸入代碼,實(shí)現(xiàn)圖像處理算法,進(jìn)行課堂演示。
Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,Python是純粹的自由軟件, 源代碼和解釋器遵循 GPL協(xié)議。語法簡(jiǎn)潔清晰,強(qiáng)制用空白符作為語句縮進(jìn)。具有豐富和強(qiáng)大的庫(kù)。Anaconda可以看做Python的一個(gè)集成安裝,安裝它后就默認(rèn)安裝了python、IPython、集成開發(fā)環(huán)境Spyder和眾多的包和模塊,非常方便。Python分成2.x版本和3.x版本,安裝方式通常有兩種,一種直接拷貝cv2/pyd文件,另一種利用conda install opencv 命令實(shí)現(xiàn)。
搭建Android與OpenCV圖像步驟如下:首先下載并安裝Android Studio2.1.2版本,并將下載好的OpenCV for Android解壓到固定文件夾。利用AS新建工程,并加載OpenCV模塊,至此,開發(fā)環(huán)境搭建成功,設(shè)置AVD,生成手機(jī)模擬器,測(cè)試程序的有效性。
圖1 不同平臺(tái)邊緣檢測(cè)效果圖
課堂采用理論和實(shí)踐交互式比較教學(xué)模式,學(xué)生預(yù)先安裝好PC端和手機(jī)端開發(fā)軟件,首先運(yùn)行代碼演示,學(xué)生看到算法的實(shí)際效果,增強(qiáng)對(duì)理論認(rèn)識(shí),并掌握VS/Android與OpenCV編程技術(shù),提供算法源代碼供學(xué)生二次開發(fā),作為課堂及課后練習(xí)。
本文以圖像Canny邊緣檢測(cè)為例,說明其教學(xué)過程。首先讀取彩色圖像,彩圖灰度化,并利用Canny算子對(duì)灰度圖進(jìn)行邊緣檢測(cè)。實(shí)驗(yàn)結(jié)果如圖1所示,圖1(a)為原始圖像,圖1(b)為VS2017邊緣檢測(cè)處理結(jié)果,圖1(c)為手機(jī)模擬器上的邊緣檢測(cè)結(jié)果。通過多種編程模式可以實(shí)現(xiàn)同樣的處理結(jié)果,使得學(xué)生更好地理解圖像處理算法的精髓。
理論可在實(shí)踐開發(fā)之前,也可在開發(fā)之后,或者交替進(jìn)行。大致按照“理論、實(shí)踐、理論、分析、總結(jié)”的模式進(jìn)行教學(xué)。在此過程中,需要教師既具有較強(qiáng)的理論功底,也具有實(shí)踐編程能力,將理論與編程代碼相結(jié)合的能力,對(duì)教師提出了更高的要求。
針對(duì)數(shù)字圖像實(shí)踐教學(xué)的特點(diǎn),從教學(xué)方式和教學(xué)內(nèi)容上,對(duì)該課程教學(xué)模式進(jìn)行了探索研究。將OpenCV引入到教學(xué)中,使得學(xué)生高效利用電腦和手機(jī)平臺(tái)進(jìn)行課程學(xué)習(xí)。讓學(xué)生采用不同的編程語言和開發(fā)平臺(tái),通過比較實(shí)驗(yàn)結(jié)果,加深對(duì)圖像處理算法的理解,顯著地提高教學(xué)質(zhì)量。
[1]李樹濤,胡秋偉.LIShu-tao,等.OpenCV在”數(shù)字圖像處理”課程教學(xué)中的應(yīng)用[J].電氣電子教學(xué)學(xué)報(bào),2010,32(6):26-28.
[2]唐紅梅,王霞,李琦,等.數(shù)字圖像處理課程教學(xué)改革與實(shí)踐[J].河北工業(yè)大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),2006,21(4):8-10.
[3]朱娟花,吳昂.MATLAB在數(shù)字圖像處理課程教學(xué)中的應(yīng)用[J].實(shí)驗(yàn)室科學(xué),2011,14(1):66-67.
[4]劉賢輝.基于OpenCV在移動(dòng)端的圖像處理技術(shù)[J].電子技術(shù)與軟件工程,2017(9):70-70.
王皖君(1984—),男,博士,南京林業(yè)大學(xué)機(jī)械電子工程學(xué)院講師,主要研究方向:自動(dòng)化。
南京林業(yè)大學(xué)2017年校級(jí)“教學(xué)質(zhì)量提升工程”項(xiàng)目。
程玉柱(1980—),男,博士,南京林業(yè)大學(xué)機(jī)械電子工程學(xué)院講師,主要研究方向:圖像處理與模式識(shí)別。
李趙春(1978—),女,博士,南京林業(yè)大學(xué)機(jī)械電子工程學(xué)院副教授,主要研究方向:控制理論及控制工程。