付慧 陳志泊

摘要:針對目前軟件工程專業工程碩士與工學碩士在培養方案上有很大區別,但培養課程卻大量重復的問題,以數字圖像處理課程為例,結合工程碩士的培養目標,提出需要培養其應用型研究能力和應用型技能的觀點,并給出具體實現方法。
關鍵詞:數字圖像處理;工程碩士;應用型研究;應用型技能;軟件工程
軟件工程專業工程碩士研究生與傳統的學術型研究生有所不同,前者主要面向企業人才需求和應用軟件開發需求進行培養,因此在課程內容選取、授課方法設計和實驗環節設計上都需要進行思考和調整,這也是北京林業大學在申請到軟件工程專業的工程碩士學科后重點研究的問題。
數字圖像處理課程屬于圖形圖像應用領域的重要基礎理論課,長久以來課程內容主要介紹基本的圖像處理算法以及少部分圖像分割和圖像識別,對于圖像處理在實際生活中所涉及的很多前沿科研領域介紹較少,因此很多研究生無法將課堂講授的理論知識與其后續從事的研究課題有效地關聯起來,感到課堂中講授的很多內容看起來毫無用處,從而喪失了學習的積極性。
很多教師認為把圖像處理中的算法研究透徹、把基礎打好對研究生非常重要,但是這忽視了研究生是有著極強的科研探索精神和豐富想象力的年輕一代。如果將一些在生活中涉及圖像處理的問題交給他們進行探索,將會激起他們濃厚的學習精神和創造力,這種沒有標準答案的應用題目可以進一步鍛煉他們的思考能力。
為此,在課程的教學方法和實驗內容設計上,我們重點培養學生以下兩方面能力。
(1)應用型研究能力,包括發現問題、分析問題和解決問題的能力;
(2)應用型技術能力,包括編程設計能力和項目合作能力。
下面筆者分別從教學大綱、教學方法設計和實驗內容設計3個方面進行介紹。
1.數字圖像處理課程教學大綱
我們在設定教學大綱時,重點參考了多本數字圖像處理方面的經典教材,如楊枝靈和岡薩雷斯編寫的教材。結合之前的教學經驗,同時注意與本科生課程相區別,制訂了兩個原則:加強中高級圖像處理算法的介紹;增加利用圖像處理算法的應用案例的介紹。中高級圖像處理算法主要指圖像分割算法、圖像特征提取方法和運動檢測方法。同時我們還在課堂上給出一些應用案例,進一步幫助學生將理論知識與實踐相結合。
數字圖像處理課程目前作為北京林業大學研究生的專業必修課,總學時為32,其中課堂講授24學時,實驗8學時。相對于其他學校,這門課程的總學時和實驗學時數不多,我們設計的教學內容如表1所示。
2.數字圖像處理教學方法設計
針對培養學生應用型研究能力的目標,我們在教學方法設計上本著激發學生的學習興趣,開闊學生眼界,給學生提供更自由的思考空間的原則,通過下面兩個措施來實現我們的目標。
2.1精心選擇案例
選擇的案例要貼近實際生活,并與課堂上講授的方法緊密銜接。例如,在講解圖像增強和復原這兩章之后,我們引入在實際生活中常見的“圖像去霧”問題,通過如下方法,培養學生研究能力。
(1)要求學生先嘗試用學過的算法來解決這個問題,并在課堂進行算法討論,給出算法結果。
(2)要求學生針對具體問題,查閱文獻資料,了解別人的解決方法。通過查閱國內外的文獻資料,同學們知道了如何根據關鍵詞查詢科研論文,了解哪些電子數據庫中有與專業相關資料,知道了文獻的級別有SCI、EI、核心期刊、一般期刊等。
(3)學生將查到的算法進行分類和總結,撰寫文獻綜述。
(4)每位學生都需要編程實現“圖像去霧”算法,這個算法是結合自己的思考、實踐以及查閱文獻的結果。
通過自己動手,同學們發現如果圖像的清晰度不好,有噪聲,或者沒有歸一化,結果就完全不同。通過自己動手驗證,同學們會發現圖像處理領域的一個最為重要的特點——任何算法主要都是針對一類圖像或是針對一類問題而設計的,因此在算法的適應性上需要有所考慮。
2.2全面介紹圖像處理的各個應用領域
老師在課堂上介紹幾個圖像處理涉及的較為重要的應用方向(如視頻監控、圖像檢索、人臉識別、運動檢測、車牌檢測等)后,將同學們進行分組,每組負責查找一個應用方向的相關資料,討論和匯報自學的結果。匯報內容主要包括:①應用方向的介紹;②涉及的主要問題;③目前的解決方法及應用成果。
通過查找文獻,同學們不僅對課上學習過的經典算法有進一步了解,同時還接觸到很多新算法。通過聽取各組匯報,同學們在較短的時間里,了解了圖像處理涉及的多個主要的應用領域。針對每個應用研究領域,老師引導學生分析該領域的難點和重點,提出問題,再讓學生思考解決方案,沒有標準答案,只希望能夠鍛煉學生的思考能力。以“人臉識別”為例,有很多經典的或較新穎的算法,老師會結合應用領域對其中常用的或比較重要的算法,如PCA方法和Adaboost算法,進行詳細講解,使學生全面了解圖像處理算法的應用領域。
3.數字圖像處理實驗內容設計
針對培養學生的應用技術能力的目標,同時考慮到本課程實驗學時數較少,我們設計了兩個實驗——基礎性實驗和綜合性實驗。
3.1基礎性實驗
目前很多經典的圖像處理算法是用vC++程序實現的,我們要求大家學會讀程序,能夠看懂已有的算法實現程序,并在此基礎上能開發新的功能。
實驗一:實現對多種圖像格式的支持(2學時)
實驗內容:采用VC++編碼實現,基于CDib類,添加支持打開,并保存多種圖像格式的功能。包括JPEG和GIF。
實驗要求:利用學習的圖像壓縮的知識,利用現有的編碼解碼庫實現對IPEG和GIF圖像的打開和保存。
實驗目的:了解多種圖像格式,編寫針對多種圖像格式的讀寫程序,能夠進一步理解針對圖像的編程的特點,同時也進一步了解開發圖像應用程序的適應性問題。
老師在課程初期會向大家介紹圖像處理的一個公開庫——CDib類。該類很好地封裝了圖像的數據結構,涉及很多圖像的基本操作。我們知道現實生活中的圖像常常都是壓縮格式的,如BMP、JPEG、PNG、GIF等。因此在講完圖像的壓縮格式后,對照講過的BMP圖像結構,老師要求學生為CDib類添加能夠支持多種圖像格式的功能。以GIF圖像為例,它不同于如JPEG、PNG等格式,GIF采用的是LZW壓縮算法,使用的是無損壓縮技術。GIF圖像的特點是可以一次壓縮多幅圖像,圖像顏色表控制為256色,使用漸顯方式。
3.2綜合性實驗
針對綜合性實驗,我們會擬定多個題目讓學生選擇,如樹葉提取、花朵提取、車牌識別等。
實驗二:數字號碼圖像的識別(6學時)
實驗內容:采用VC++編碼實現,基于CDib類,針對數字號碼圖像,識別出數字,給出文本顯示結果。
實驗要求:將該題目進行分解,劃分任務;組內每個同學負責一部分任務的編程工作;每個人針對自己負責的工作至少提供兩種實現方法,并放入整個項目流程中驗證這兩種方法的有效性;最后總結出兩種方法的異同以及適應的范圍。
實驗目的:考查學生對數字圖像處理應用中每個步驟的掌握程度和項目合作溝通能力。
上述實驗涉及以下幾個步驟。
①圖像的預處理;
②圖像的分割;
③圖像的特征提取;
④圖像的分類。
組中每個學生負責一個步驟,所有步驟都需要盡心設計,這樣整體的效果才可能最好。同時大家需要協商各自負責模塊的人口和出口的數據結構,保證數據能夠在模塊之間順利流轉。這種協商和分工合作的能力是軟件工程專業最需要的技術能力之一。
以“數字號碼圖像識別”為例,該題目可以分割成4個步驟:預處理、數字圖像切分、數字圖像特征提取和數字識別。在每個步驟中都有分別需要注意的問題,如在預處理階段,需要對圖像進行去噪聲,增強對比度,甚至需要進行膨脹和腐蝕將圖像中斷裂的數字部分連通起來;在數字圖像切分階段需要制定適應性廣泛的切分策略來應對各種情況,如數字排列可以呈現任意的傾斜角度,或數字字符相連等;在數字圖像特征提取階段,我們可以考察每個數字圖像的自相關系數特征,或者每個數字圖像的頻譜特征,也可以考察數字圖像的幾何拓撲特征,如將數字圖像分成2個洞的(8),1個洞的(4,6,9,0),沒有洞的(1,2,3,5,7),針對每個類別再提取新的幾何特征;在數字圖像識別階段,可以采用神經網絡的分類器,或者利用制定的一些分類策略來分類,或者采用主成份分析(PCA)的方法來識別。
4.結語
兩年多的教學實踐表明,新的教學大綱、授課方法和實驗內容有利于激發學生的興趣,使他們帶著問題去學習,從而加深了對圖像處理應用領域的了解,鍛煉了編寫程序和協作開發的能力。下一步我們將設計更多合理有效的案例和綜合性實驗,力圖通過這門課激發學生的創造力。
參考文獻:
[1]楊枝靈,王開,Visual C++數字圖像獲取、處理及實踐應用[M],北京:人民郵電出版社,2002:31-73,338-409.
[2]岡薩雷斯,數字圖像處理[M],2版,阮秋琦,譯,北京:電子工業出版社,2003:460-560.
(編輯:彭遠紅)