周 越, 李 響
(上海交通大學(xué) 計(jì)算機(jī)視覺與模式識(shí)別研究所, 上海 200240)
現(xiàn)有的數(shù)字圖像處理課程實(shí)驗(yàn)大多是在計(jì)算機(jī)上運(yùn)行的程序示例[1-3],雖然學(xué)生可以自由進(jìn)行代碼編寫、調(diào)試,利用互聯(lián)網(wǎng)獲取豐富資源,但是實(shí)驗(yàn)設(shè)計(jì)往往都以單純掌握一個(gè)算法為目的,而且只是注重算法結(jié)果,并不能培養(yǎng)學(xué)生應(yīng)用算法解決問題的能力。在這種模式下,很難實(shí)現(xiàn)圖像處理課程對(duì)學(xué)生解決問題、獲取資源、合作溝通等多種能力培養(yǎng)的支撐[4]。因此有必要開發(fā)一款圖像處理的實(shí)驗(yàn)平臺(tái),配合以成果為導(dǎo)向的課程設(shè)計(jì),將圖像處理算法應(yīng)用到實(shí)際工程中,增加學(xué)生對(duì)圖像處理算法的直觀認(rèn)識(shí),培養(yǎng)學(xué)生使用算法解決復(fù)雜系統(tǒng)問題的能力,增強(qiáng)學(xué)生對(duì)圖像處理的興趣與好奇心[5-7]。
隨著搭載觸摸屏的智能設(shè)備逐漸普及,運(yùn)行的軟件、游戲也日漸豐富、廣為流傳。其中一些游戲不僅本身具有很強(qiáng)的趣味性,也非常適合應(yīng)用圖像處理等技術(shù),實(shí)現(xiàn)計(jì)算機(jī)自動(dòng)攻略游戲。本平臺(tái)便以此目的設(shè)計(jì),提供從圖像處理到觸屏操作的一整套實(shí)驗(yàn)平臺(tái),實(shí)驗(yàn)平臺(tái)的結(jié)構(gòu)如圖 1所示。
圖1 實(shí)驗(yàn)平臺(tái)結(jié)構(gòu)框圖
在本實(shí)驗(yàn)平臺(tái)中,使用一臺(tái)PC作為上位機(jī),目的為攻略一臺(tái)觸屏設(shè)備(Android或iOS系統(tǒng))上的游戲。上位機(jī)通過局域網(wǎng)、USB等方式連接到觸屏設(shè)備,獲取設(shè)備顯示的實(shí)時(shí)影像,通過圖像處理等相關(guān)算法生成對(duì)設(shè)備的操作指令,發(fā)送到通過USB連接的實(shí)驗(yàn)平臺(tái)執(zhí)行機(jī)構(gòu),執(zhí)行機(jī)構(gòu)將按照指令點(diǎn)擊、拖動(dòng)觸屏設(shè)備,完成一個(gè)周期的操作。
在該實(shí)驗(yàn)平臺(tái)中,學(xué)生只需關(guān)注圖像處理算法,即可快速搭建可用的系統(tǒng),非常適合作為圖像處理課程的課程設(shè)計(jì)開展。結(jié)合硬件,特別是自動(dòng)攻略手機(jī)、平板電腦上的游戲,相對(duì)于傳統(tǒng)的圖像處理實(shí)驗(yàn),對(duì)學(xué)生有較大的吸引力。
為了模擬人與觸屏設(shè)備的交互,本平臺(tái)設(shè)計(jì)了如圖 2的執(zhí)行機(jī)構(gòu)。該機(jī)構(gòu)使用12 V直流電源(配置220 V電源轉(zhuǎn)換器),通過通用串行總線(USB)與上位計(jì)算機(jī)通信,可以模擬人單指對(duì)觸屏的點(diǎn)擊、拖動(dòng)等操作。
圖2 觸屏操作設(shè)備的設(shè)計(jì)渲染圖
機(jī)構(gòu)框架由2020與2040鋁合金型材組合而成,配合厚亞克力板組成可以在平面兩個(gè)方向的滑動(dòng)的行走機(jī)構(gòu)。行走機(jī)構(gòu)由共計(jì)3臺(tái)42步進(jìn)電機(jī)驅(qū)動(dòng),最高速達(dá)到80 mm/s,使用同步輪與同步帶定位,往復(fù)精度優(yōu)于0.2 mm。行走機(jī)構(gòu)最末端配置執(zhí)行器滑塊,承載觸摸器。觸摸器由直線往復(fù)式電磁鐵與觸摸筆組合而成,電磁鐵通電時(shí)帶動(dòng)觸摸筆降下,實(shí)現(xiàn)對(duì)觸屏的點(diǎn)擊等操作。
機(jī)構(gòu)底層控制使用開源硬件Arduino CNC控制板[8],該控制板配合搭載ATMega328芯片的ArduinoNano開發(fā)板,可以將通過USB傳輸?shù)纳衔粰C(jī)指令轉(zhuǎn)化為運(yùn)動(dòng)控制信號(hào)。通過A4983驅(qū)動(dòng)芯片開發(fā)板輸出調(diào)制好的步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào),控制3臺(tái)步進(jìn)電機(jī)與電磁鐵執(zhí)行相應(yīng)操作。ArduinoNano開發(fā)板上搭載了開源嵌入式運(yùn)動(dòng)控制軟件Grbl,將USB傳輸?shù)姆螱-code標(biāo)準(zhǔn)的上位機(jī)指令解析為各個(gè)引腳上的PWM信號(hào),再通過驅(qū)動(dòng)電路解析為步進(jìn)電機(jī)的脈沖信號(hào)。整個(gè)機(jī)構(gòu)的底層控制結(jié)構(gòu)如圖 3所示。
圖3觸屏操作設(shè)備各部件連接圖
機(jī)構(gòu)運(yùn)作時(shí),將含觸屏的智能設(shè)備放在上層面板上,調(diào)整設(shè)備與觸筆之間的高度并對(duì)齊坐標(biāo)系原點(diǎn),將機(jī)構(gòu)打開接入上位機(jī)之后,即可通過上位機(jī)對(duì)機(jī)構(gòu)發(fā)出指令,實(shí)現(xiàn)對(duì)觸屏的點(diǎn)擊、拖動(dòng)等操作。
整套機(jī)構(gòu)設(shè)計(jì)時(shí)使用開源硬件與軟件,使用的各零件絕大部分為符合行業(yè)標(biāo)準(zhǔn)的通用件,結(jié)構(gòu)簡(jiǎn)單,成本低廉,易于使用和維護(hù),同時(shí)達(dá)到了可觀的性能,適合大量采購(gòu),滿足大規(guī)模課堂教學(xué)的需求,該執(zhí)行機(jī)構(gòu)已獲國(guó)家實(shí)用新型專利授權(quán)(專利號(hào)2016201772460)。
為了配合實(shí)驗(yàn)平臺(tái)的執(zhí)行機(jī)構(gòu)運(yùn)作,維持整個(gè)實(shí)驗(yàn)平臺(tái)發(fā)揮作用,上位機(jī)運(yùn)行實(shí)驗(yàn)平臺(tái)軟件。該軟件按照C++11標(biāo)準(zhǔn)編寫,使用開源版QT組成圖形顯示界面及輔助功能。軟件主體包括三部分:串口通信模塊,圖像輸入模塊和圖像處理模塊。
串口通信模塊負(fù)責(zé)上位機(jī)與前文介紹的執(zhí)行機(jī)構(gòu)的通訊,通過USB連接之后建立虛擬串口,通過不斷發(fā)送符合G-code的串口指令,即可實(shí)現(xiàn)對(duì)機(jī)構(gòu)的控制。該模塊包含串口驅(qū)動(dòng)與G-code翻譯模塊,可以將使用者對(duì)機(jī)構(gòu)的運(yùn)動(dòng)意圖翻譯為設(shè)備可理解的協(xié)議代碼并發(fā)送。其他模塊也可以通過此模塊使得機(jī)構(gòu)作出相應(yīng)運(yùn)動(dòng)。本模塊的配套界面如圖 4所示,左側(cè)為日志窗口,便于開發(fā)者了解程序運(yùn)行狀態(tài)與執(zhí)行機(jī)構(gòu)狀態(tài);右側(cè)除了基本的連接/斷開按鈕之外,還集成了簡(jiǎn)單的運(yùn)動(dòng)控制界面,方便使用者對(duì)執(zhí)行機(jī)構(gòu)狀態(tài)進(jìn)行調(diào)試。
圖4串口通信模塊界面
圖像輸入模塊負(fù)責(zé)將智能設(shè)備上的圖像輸入程序,便于圖像處理模塊進(jìn)行判讀操作。軟件設(shè)計(jì)兼容Android與iOS雙平臺(tái):在第三方軟件、服務(wù)的配合下,這兩個(gè)系統(tǒng)的設(shè)備屏幕上的視頻影像都可以輸入到本程序中。圖 5演示了圖像輸入模塊的軟件界面,在本界面使用者可以方便選擇輸入影像的設(shè)備,并對(duì)影像參數(shù)進(jìn)行調(diào)整。同時(shí)軟件還支持將當(dāng)前系統(tǒng)中的窗口作為視頻源輸入,提高了軟件使用的自由度。
在使用沼肥時(shí),尤其要注意肥分損失的問題。據(jù)測(cè)定,沼液肥施于地表,不覆土,2 d后銨態(tài)氮損失達(dá)50%以上。沼渣肥在露天堆放曬干,全氮損失65%左右,氨態(tài)氮損失87%[3]。所以,在施用沼肥后,應(yīng)作覆土處理或加入過磷酸鈣,以減少肥分的損失。取出的沼渣最好用草皮泥進(jìn)行堆制,以減少肥分散失。
圖5圖像輸入模塊界面
圖像處理模塊是本平臺(tái)的核心模塊,也是參與課程的學(xué)生唯一需要重點(diǎn)關(guān)注的軟件模塊。該模塊承接圖像輸入模塊導(dǎo)入的圖像,通過學(xué)生自行設(shè)計(jì)的圖像處理算法,得到對(duì)當(dāng)前圖像的判讀、處理結(jié)果,繼而向串口通信模塊發(fā)送指令,指揮執(zhí)行機(jī)構(gòu)進(jìn)行期望的操作。
軟件使用C++開發(fā),便于調(diào)用OpenCV等圖像處理類庫(kù)[9-11],方便學(xué)生不失效率地進(jìn)行圖像處理操作;使用如QT[12]、FFMPEG[13]等廣為人知的開源類庫(kù),方便學(xué)生查找相關(guān)資源;同時(shí)各個(gè)模塊各自獨(dú)立,編碼風(fēng)格統(tǒng)一,學(xué)生僅需關(guān)注圖像處理模塊即可實(shí)現(xiàn)整個(gè)系統(tǒng)功能,適合學(xué)生快速實(shí)現(xiàn)自己的想法,開發(fā)可以達(dá)到課程設(shè)計(jì)要求的項(xiàng)目。
實(shí)驗(yàn)平臺(tái)軟件依照GPL3.0協(xié)議開源,項(xiàng)目地址https://github.com/LostXine/qtCyberDIP。
依托本文介紹的實(shí)驗(yàn)平臺(tái)開展數(shù)字圖像處理課程設(shè)計(jì),伴隨圖像處理課程教學(xué)改革并作為成果導(dǎo)向教育的中最為重要的環(huán)節(jié),已經(jīng)投入了兩個(gè)學(xué)年的教學(xué)使用。在實(shí)際應(yīng)用過程中,該平臺(tái)以優(yōu)秀的性能,豐富的拓展性和極高的自由度,獲得了絕大多數(shù)參與課程學(xué)生的認(rèn)同與積極參與。學(xué)生基于該平臺(tái),應(yīng)用課堂上學(xué)到的甚至自學(xué)的圖像處理知識(shí),開發(fā)出了豐富多彩的游戲攻略軟件,實(shí)現(xiàn)了一批如色彩數(shù)獨(dú)、拼圖、植物大戰(zhàn)僵尸等游戲的自動(dòng)攻略項(xiàng)目。與此同時(shí),學(xué)生切實(shí)感受到了圖像處理技術(shù)的神奇,加深了對(duì)課程的理解,培養(yǎng)了自己的動(dòng)手能力與解決復(fù)雜系統(tǒng)問題的能力,在OBE理念[14-15]的指導(dǎo)下踐行了圖像處理課程對(duì)畢業(yè)能力的支撐。在平臺(tái)實(shí)際使用過程中,學(xué)生總結(jié)并分享了很多設(shè)備運(yùn)用的小技巧,也提出了一些設(shè)備改進(jìn)的意見與建議,這些不僅將作為實(shí)驗(yàn)課程持續(xù)改進(jìn)的重要來源,也從側(cè)面體現(xiàn)出學(xué)生對(duì)課程設(shè)計(jì)的積極參與,體現(xiàn)出本實(shí)驗(yàn)平臺(tái)對(duì)課程建設(shè)的價(jià)值。
針對(duì)傳統(tǒng)圖像處理實(shí)驗(yàn)形式單一、內(nèi)容抽象、不注重應(yīng)用等問題,本文從軟硬件兩個(gè)方向共同開發(fā)了基于觸屏交互的圖像處理實(shí)驗(yàn)平臺(tái)。通過該平臺(tái)學(xué)生可以實(shí)現(xiàn)對(duì)手機(jī)、平板電腦等觸屏設(shè)備的可控操作,整套平臺(tái)成本低廉,使用維護(hù)方便,可靠性高,依托該平臺(tái)開展的圖像處理游戲自動(dòng)攻略課程設(shè)計(jì),既提供了應(yīng)用圖像處理技術(shù)的契機(jī),使學(xué)生可以切實(shí)體會(huì)到圖像處理技術(shù)在實(shí)際工程中的應(yīng)用;又不失趣味性,不斷引導(dǎo)、激勵(lì)學(xué)生自主學(xué)習(xí)、合作溝通,在實(shí)驗(yàn)進(jìn)行中達(dá)到培養(yǎng)能力的目的。本實(shí)驗(yàn)平臺(tái)支撐圖像處理課程教學(xué)改革兩年時(shí)間,涌現(xiàn)出很多優(yōu)秀的學(xué)生作品,受到了學(xué)生廣泛認(rèn)可,很好地服務(wù)了教學(xué)改革的課程設(shè)計(jì)環(huán)節(jié),為今后課程教法的持續(xù)升級(jí)奠定了堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn)(References):
[1]袁小平, 王艷芬, 史良. 基于 Matlab 的《數(shù)字信號(hào)處理》 課程的實(shí)驗(yàn)教學(xué)[J]. 實(shí)驗(yàn)室研究與探索, 2002, 21(1): 58-60.
[2]肖龍飛, 李金龍, 楊凱, 等. 基于 MATLAB 的數(shù)字圖像處理教學(xué)軟件的設(shè)計(jì)[J]. 信息技術(shù), 2014, 38(12): 185-187.
[3]楊順遼, 李澤軍. 基于Visual C++的數(shù)字圖像處理實(shí)驗(yàn)軟件開發(fā)[J]. 國(guó)土資源高等職業(yè)教育研究, 2007(2):25-28.
[4]柏均, 閆紅梅, 張鳴. Matlab 在 “數(shù)字圖像處理” 課程教學(xué)中的利弊分析[J]. 電氣電子教學(xué)學(xué)報(bào), 2010, 32(2): 82-83.
[5]王漢萍, 于海生, 王英, 等. “數(shù)字圖像處理” 實(shí)驗(yàn)體系模塊化的研究[J]. 實(shí)驗(yàn)室研究與探索, 2008, 27(12): 31-33.
[6]韓智, 張振虹. “數(shù)字圖像處理” 實(shí)驗(yàn)課教學(xué)改革與實(shí)踐[J]. 實(shí)驗(yàn)室研究與探索, 2008, 27(9): 102-104.
[7]蔣偉, 官禮和, 劉亞威. 數(shù)字圖像處理創(chuàng)新實(shí)驗(yàn)的研究與實(shí)踐[J]. 實(shí)驗(yàn)室研究與探索, 2011, 30(7): 236-238.
[8]D'Ausilio A. Arduino: a low-cost multipurpose lab equipment[J]. Behavior Research Methods, 2012, 44(2):305-313.
[9]Bradski G. The opencv library[J]. Doctor Dobbs Journal, 2000, 25(11): 120-126.
[10]Bradski G, Kaehler A. Learning OpenCV: Computer vision with the OpenCV library[M]. O'Reilly Media, Inc., 2008.
[11]Baggio D L. Mastering OpenCV with practical computer vision projects[M]. Packt Publishing Ltd, 2012.
[12]Blanchette J, Summerfield M. C++ GUI Programming with Qt 4[M]. Prentice Hall PTR, 2008.
[13]Bellard F, Niedermayer M. FFmpeg[J]. Availabel from: http://ffmpeg. org, 2012.
[14]柏晶, 謝幼如, 李偉,等. “互聯(lián)網(wǎng)+”時(shí)代基于OBE理念的在線開放課程資源結(jié)構(gòu)模型研究[J]. 中國(guó)電化教育, 2017(1):64-70.
[15]程超, 劉詩(shī)瓊, 劉紅岐,等. 基于OBE理念修訂人才培養(yǎng)方案——以西南石油大學(xué)勘查技術(shù)與工程專業(yè)為例[J]. 中國(guó)地質(zhì)教育, 2016(1):41-44.