丁 進,施 秧,孫勇智
(浙江科技大學自動化與電氣工程學院 浙江 杭州 310023)
當前我國經濟處于從高速增長向高質量發展轉變的重要階段,以人工智能為代表的新一代信息技術將成為我國“十四五”期間推動經濟高質量發展、建設創新型國家,實現新型工業化、信息化、城鎮化和農業現代化的重要技術保障和核心驅動力之一。機器人作為新興技術的重要載體和現代產業的關鍵裝備,引領產業數字化發展、智能化升級,不斷孕育新產業新模式新業態。
“數字圖像處理”課程是人工智能、機器人、自動化等新工科專業人才培養方案中的核心課程,為其他一些主干課程,比如移動機器人導航、無人駕駛基礎、智能汽車制作等的順利開展奠定了技術基礎[1-2]。數字圖像處理課程主要講授數字圖像基礎,包括圖像的定義、表示和采樣、圖像的灰度級和顏色空間、圖像的統計特性和圖像的評價指標;圖像增強,包括圖像灰度變換、圖像空間濾波、圖像頻域濾波;圖像變換,包括幾何變換、灰度變換、彩色變換;圖像復原,包括圖像去噪、圖像反模糊、維納濾波;圖像壓縮,包括壓縮依據、無損壓縮方法、有損壓縮方法;圖像分割,包括閾值分割、區域分割、邊緣分割;圖像特征提取,包括紋理分析、形狀分析、顏色分析;機器視覺,包括目標識別、圖像匹配、三維重建等。然而,在當前的課程教學中,理論教學占了大部分學時,實踐教學學時少,僅有實驗部分面向實踐教學,無法全面徹底地培養學生的動手實踐能力,使之在實際工程項目中能夠通過編寫代碼解決圖像處理與分析的相關問題[3-4]。因此,“數字圖像處理”課程的實踐教學亟待改革。而如何為學生搭建合適的實踐教學體系,為其建立平滑的學習曲線是關鍵。
本文組織如下:在第二部分,首先簡要介紹了OpenCV開源圖像算法庫,其次重點闡述了“課堂—作業—實驗—大作業”四層階梯式實踐教學體系。在第三部分,對基于OpenCV的“數字圖像處理”課程階梯式實踐教學體系進行了總結。
OpenCV 是Open Source Computer Vision Library 的縮寫,是一個跨平臺的計算機視覺庫,提供圖像處理、圖像分析和機器視覺的各種功能和算法[5]。它由C 和C++編寫,同時也支持Python 和Java 等其他編程語言。OpenCV 提供的功能非常豐富,包括圖像處理、圖像分析和機器視覺。圖像處理是計算機視覺的基礎,OpenCV 提供了各種圖像處理算法,包括圖像濾波、圖像分割、圖像變換、圖像特征提取等。圖像分析是指從圖像中提取信息,OpenCV 提供了各種圖像分析算法,包括圖像識別、圖像分類、圖像跟蹤等。機器視覺是指利用計算機來模擬人的視覺功能,Open-CV 提供了各種機器視覺算法,包括物體檢測、目標跟蹤、運動分析等。OpenCV 是開源的,可以用于商業和研究領域,具有跨平臺特性,支持多種操作系統和硬件平臺。Open-CV 的算法經過優化,可以實現實時處理。OpenCV 已經被廣泛應用于計算機視覺研究、圖像處理和編輯、機器視覺和自動化、醫學圖像處理以及視頻分析和監控等領域。
“數字圖像處理”課程選用岡薩雷斯、伍茲著的《數字圖像處理》教材,阮秋琦、阮宇智譯,第4 版,電子工業出版社出版。該書比較適合作為講授數字圖像處理內容的入門教材,它從圖像處理的起源發展講起,依次講授圖像處理基礎、空間域圖像增強方法、頻率域圖像增強方法、圖像復原基本方法、彩色圖像處理、形態學基本操作、圖像壓縮基本概念、圖像分割基本方法、特征描述和物體識別基礎知識。這些章節的知識點包含了大量的圖像處理方法和技巧,如果僅靠課堂講授和少量實驗學時,難以培養學生的動手實踐能力,使得他們在實際工程項目中能夠靈活運用并編寫代碼解決相關圖像處理與分析的問題。
本文提出了“課堂―作業―實驗―大作業”四層階梯式實踐教學體系,目的是為學生建立“算法函數講解―單個算法簡單應用―多個算法融合應用―工程問題綜合運用”的平滑學習曲線,由淺入深、由點及面地訓練他們在實際工程項目中編寫圖像算法的能力。
在“課堂”這一層次中,教師不僅要講授每個圖像處理方法的原理和必要的數學推導,更要結合OpenCV 給學生介紹該方法的編程實現、對應的OpenCV 函數、函數的參數等具體實現細節。比如圖像處理基礎中的連通域概念,教師介紹完它的理論知識后,緊接著介紹OpenCV 中與之對應的函數connectedComponents 和connectedComponentsWithSt ats,以及這兩個函數的每個參數(比如image、label、connectivity等)的意義,可以結合OpenCV的講解頁面進行介紹。這兩個函數講解完之后,為了讓學生有更加直觀的體會,教師可以在機器上面運行這兩個函數,并試驗不同的參數輸入,讓學生觀察運行結果和中間變量變化情況。在講解空間域濾波時,教師首先介紹空間域濾波的種類,其次介紹OpenCV的相關函數及其參數,比如平滑函數Gaussian-Blur(參數sigmaX,gigmaY,ksize 等)和銳化函數Sobel(參數dx,dy,ksize,scale 等)。講解完函數細節后,教師運行演示例子給學生們以感性的認識。
在“作業”這一層次中,由于學生在課堂上已經對圖像處理方法的理論和OpenCV 函數有了深入的認識,接下來通過課后作業令其通過編程進一步加深對這些知識點的理解與實踐。每章的課后作業可以有多個,每個作業都是對本章的單個圖像處理方法的編程練習。比如,在第二章數字圖像基礎中,可以作為作業的知識點包括讀取一幅圖片的寬和高、對一幅圖片進行采樣、標記出一幅圖像的連通區域等。在頻率域圖像增強一章中,可以設置兩幅圖像的譜圖和相角交叉重構的作業來加深學生對譜圖和相角在重構中的角色的理解。
在“實驗”這一層次中,由于學生已經在作業中對單個圖像處理知識點有了動手實踐的經歷,教師將各章的知識點整合一下,設計實驗題目,對學生綜合利用圖像處理知識點的能力進行訓練。比如,在空間域圖像增強一章,可以將圖像去噪、銳化、灰度值變換綜合起來考查。筆者為空間域圖像增強一章布置的實驗題目為:通過空間域圖像處理方法去除噪聲并突出病灶。在形態學圖像處理一章,可以將膨脹、腐蝕、開運算、閉運算等形態學操作綜合起來進行出題。筆者為形態學圖像處理一章設計的實驗題目為:為指紋圖像去噪并將斷裂的部分連接起來。
在“大作業”這一層次中,由于學生已經對每章的知識點進行了綜合編程練習,教師可以嘗試使用實際項目中的圖像處理問題進一步訓練其靈活運用圖像算法的能力。工程項目問題往往綜合了多個章節的圖像處理知識點,在大作業環節布置面向實際工程項目的問題,既能激發學生的學習興趣,又可以更深入地訓練學生的動手實踐能力。比如,對高速鐵路接觸網系統中關鍵部件——絕緣子位置的準確識別有助于學生對其分割,進而判斷其有無缺陷。在該大作業中,首先需要對絕緣子圖像進行預處理,進行去噪、對比度拉伸等操作,其次進行邊緣檢測和閾值分割,提取出圖像中物體的邊緣,可能包括絕緣子、桿柱、腕臂等。根據絕緣子輪廓特征,采用Hough 變換的方法,檢測絕緣子邊緣進而實現定位。可以看到,在該大作業中,用到了空間域圖像增強章節的直方圖均衡化和平滑濾波,數字圖像基礎章節的連通區域檢測,形態學圖像處理章節的開運算和閉運算,以及圖像分割章節的Canny 邊緣檢測算法、Hough 變換和Otsu 二值化算法。
可以看出,“課堂―作業―實驗―大作業”四層階梯式實踐教學體系能夠由淺入深、由點及面地培養學生的圖像處理編程實踐能力。課堂環節講授圖像處理知識點以及對應的OpenCV單個函數,作業環節使用MS Visual Studio練習OpenCV函數,實驗環節對各章的知識點進行了Open-CV 綜合編程,大作業環節使用實際工程例子對學生靈活運用圖像處理知識進行訓練。調查問卷顯示大多數學生認可這種階梯式實踐教學體系,表示在該體系訓練下,自己動手編寫圖像算法的能力和分析問題的能力得到了很大的提高。
數字圖像處理技術在人工智能和機器人領域有著重要的應用。在人臉識別中,數字圖像處理技術可以用于提取人臉特征,并將其與數據庫中的已知人臉進行匹配,從而實現人臉識別。在目標跟蹤中,數字圖像處理技術可以用于提取目標的特征,并將其與數據庫中的已知目標進行匹配,從而實現目標跟蹤。在圖像分割中,數字圖像處理技術可以用于將圖像分割成不同的區域,以便于提取圖像中的感興趣區域。在機器人導航中,數字圖像處理技術可以幫助機器人識別周圍的環境,實時建圖并規劃行進路線。然而,在當前的課程教學中,理論學時占了絕大部分,實踐學時偏少,僅有少數幾次實驗被用來培養學生的動手實踐能力,因此,設計一種全新的、能夠充分全面地培養學生動手能力的課程實踐教學體系至關重要。本文提出一種點面結合、深入淺出的階梯式實踐教學體系。該體系包括“課堂―作業―實驗―大作業”四個層次,對應于“算法函數講解―單個算法簡單應用―多個算法融合應用―工程問題綜合運用”四個內容,可以為學生建立起平滑的學習曲線。學生的作業、實驗、大作業完成情況顯示,大多數學生的任務完成質量超過預期。課程結課后的問卷調查顯示,大多數學生認可這種全新的實踐教學體系,認為該體系能夠有效地培養其動手能力。