侯斐斐 王浩冉 王一軍 樊欣宇
摘?要:邊緣檢測算法是“現(xiàn)代數(shù)字圖像處理”這門課程中的基本問題和重要環(huán)節(jié),為提高這門課程的教學(xué)效果,以非微分邊緣檢測——Canny算子的教學(xué)為案例,并引入BOPPPS教學(xué)模型和理念來輔助設(shè)計教學(xué)過程,借助Matlab軟件平臺對算法進行編碼實現(xiàn),驗證方法有效性,能夠充分體現(xiàn)課堂理論與實踐結(jié)合,以此可以強化教師對教學(xué)的管控性和積極性,提升學(xué)生的學(xué)習(xí)興趣以及在課堂上與教師的互動性,最終達到提高課程教學(xué)質(zhì)量的目的。此教學(xué)案例能夠為“現(xiàn)代數(shù)字圖像處理”提供豐富的課改經(jīng)驗。
關(guān)鍵詞:BOPPPS模型;現(xiàn)代數(shù)字圖像處理;非微分邊緣檢測
“現(xiàn)代數(shù)字圖像處理”是借助計算機對圖像進行一系列處理的方法和技術(shù),是電子信息類、自動化專業(yè)的學(xué)科基礎(chǔ)平臺課[13],近年來隨著人工智能、計算機、通信等技術(shù)和設(shè)備的快速發(fā)展,“現(xiàn)代數(shù)字圖像”處理這門課程的教學(xué)內(nèi)容和形式也在不斷更新和優(yōu)化。傳統(tǒng)的教學(xué)模式局限在課堂上老師單方面教學(xué)與傳授知識點,且多以紙質(zhì)材料作為知識點的傳播媒介,偏向知識的單向傳遞而忽略了交互式學(xué)習(xí),在這種模式下長期培養(yǎng)的學(xué)生缺乏將書本知識在實際情況中靈活應(yīng)用的能力[4]。因此,對“現(xiàn)代數(shù)字圖像處理”這門課程進行教學(xué)改革是必要的。
在此發(fā)展趨勢和背景下,對教師提出了更高的要求,教師需要更好地把控整個課堂節(jié)奏,層次化講授課堂知識點。為了達到上述目標,考慮引入BOPPPS教學(xué)模式和理念,貫穿整個課堂,組織知識點拆分和教學(xué)過程[67],再搭配Matlab軟件將理論知識進行實踐[8],不僅能夠使學(xué)生強化對基礎(chǔ)知識的理解,還能充分感受到Canny算子的實際用處。
本文首先以數(shù)字圖像處理中的經(jīng)典算子——非微分邊緣檢測算子(即Canny算子)的教學(xué)為案例,介紹Canny算子的基本原理。然后搭建Matlab軟件平臺驗證算法,將每個步驟的可視化結(jié)果展示在學(xué)生面前。最后基于BOPPPS教學(xué)模型將整個邊緣檢測講授課程貫穿起來,突出與學(xué)生互動、知識點層層遞進等關(guān)鍵環(huán)節(jié)。
1?Canny算子基本原理
Canny算子是一種經(jīng)典的邊緣檢測算法,本質(zhì)上是一種通過信噪比與定位進行計算而得到的最優(yōu)化逼近算子。它的工作原理概括為四個步驟:
1.1?步驟1:高斯濾波器平滑圖像
首先計算二維高斯核G(x,y),見公式(1),假設(shè)一張圖像為I(x,y),圖像與高斯平滑濾波器的卷積為S(x,y),見公式(2):
G(x,y)=12πσ2e-x2+y22σ2(1)
S(x,y)=G(x,y;σ)I(x,y)(2)
其中,σ代表對圖像的平滑程度。
1.2?步驟2:計算圖像梯度
首先計算偏導(dǎo)數(shù)的兩個陣列,如公式(3)(4)所示,接著計算幅值和方位角,如公式(5)(6)所示:
Dx(x,y)≈(S(x+1,y)-S(x,y)+S(x+1,y+1)-S(x,y+1))/2(3)
Dy(x,y)≈(S(x,y+1)-S(x,y)+S(x+1,y+1)-S(x+1,y))/2(4)
M(x,y)=Dx(x,y)2+Dy(x,y)2(5)
θ(x,y)=arctan(Dy(x,y)/Dx(x,y))(6)
其中,M代表梯度幅值的大小,在存在邊緣的圖像位置處,M的值變大,圖像的邊緣特征被“增強”。
1.3?步驟3:非極大值抑制
對于梯度幅值圖像M(x,y),僅保留梯度方向上的極大值點。基于此,針對任一個像素點,具體操作步驟如下所示:(1)將0°~360°按照45°的間隔平均劃分為8個方向,然后將梯度方向近似為這8個方向中的一個。(2)將像素點和分布在其梯度正負方向的像素點進行比較,比較它們的梯度強度值大小,觀察比較結(jié)果,如果該像素點梯度強度最大,那么保留此梯度值,否則刪除該像素點處的梯度值。(3)接著針對上述得到的非極大值抑制結(jié)果,還需采取二值化操作,使用大的閾值則會得到少量的邊緣點和許多空隙,使用小的閾值則會得到大量的邊緣點和錯誤檢測。
1.4?步驟4:用雙閾值法檢測和連接邊緣
兩個閾值分別設(shè)置為T1,T2,兩者之間的關(guān)系一般滿足:T2>>T1。分以下三種情況考慮:(1)梯度值>T2,則處理為邊界;(2)T1<梯度值 2?基于Matlab的結(jié)果展示 基于Matlab平臺實現(xiàn)Canny算子,本節(jié)展示了四組圖像邊緣檢測的實驗,如圖1~圖4所示。實驗結(jié)果展示了每個步驟操作后的效果,有助于加深學(xué)生對整個算法過程的理解,可以在不同的應(yīng)用環(huán)境下,有目的地設(shè)計相應(yīng)的實驗步驟,并能夠在初步實現(xiàn)的前提下,對過程步驟進行修改和升級,不僅僅局限于原始的算法步驟。 2.1?實驗Ⅰ:Canny算子對圖像的邊緣檢測流程 (a)原始圖像;(b)Gauss平滑;(c)梯度幅值圖像;(d)非極大值抑制;(e)低閾值邊緣圖像;(f)高閾值邊緣圖像;(g)Canny輸出邊緣圖像 2.2?實驗Ⅱ:控制變量法——漸增高斯濾波模板的尺寸 固定雙閾值:低閾值0.04,高閾值0.1,改變高斯濾波模板的尺寸,從而觀察高斯濾波模板的選擇對Canny算子邊緣檢測的影響。一般情況下,閾值參數(shù)的選擇滿足T2=0.4·T1。 (a)高斯濾波模板=1;(b)高斯濾波模板=3;(c)高斯濾波模板=5;(d)高斯濾波模板=7;(e)高斯濾波模板=9;(f)高斯濾波模板=11 2.3?實驗Ⅲ:控制變量法——漸增雙閾值的大小 固定Gauss模板尺寸為1,改變低閾值和高閾值的大小,從而觀察雙閾值對邊緣檢測的影響。 (a)低0.04,高0.1;(b)低0.08,高0.2;(c)低0.12,高0.3;(d)低0.16,高0.4;(e)低0.2,高0.5;(f)低0.24,高0.6 2.4?實驗Ⅳ:更多的案例展示 3?BOPPPS教學(xué)模型的應(yīng)用 BOPPPS是一種新型的教學(xué)模型,它主導(dǎo)“平等性”“兩面一體”的教學(xué)理念,按照多層次、多元化的特點將教學(xué)準確劃分為六個階段。本課程教學(xué)設(shè)計以“非微分邊緣檢測算子”這一課堂教學(xué)為例,詳細闡述如何在課堂上引入BOPPPS模型以及教學(xué)設(shè)計思路。 3.1?B(Bridgein)導(dǎo)言階段 首先在課堂PPT上展示了兩幅灰度圖像,提問幾位同學(xué)對于灰度圖中建筑物對象的“多線條”“細節(jié)復(fù)雜”等主觀感受。 3.2?O(Objective)目標階段 明確本堂課程的學(xué)習(xí)目標,且導(dǎo)言階段的示例與學(xué)習(xí)目標相關(guān),即對原灰度圖進行處理,通過邊緣檢測算子——Canny算子處理圖像提高邊緣檢測精度,最關(guān)鍵的部分分別是學(xué)習(xí)Canny邊緣檢測算法的四個步驟。 3.3?P(Pretest)前測階段 建立了學(xué)習(xí)目標之后,向?qū)W生提問上節(jié)課學(xué)習(xí)的內(nèi)容,例如圖像分割的概念和分類,以及一些典型微分算子。學(xué)生回答后進行適當補充,鞏固所有學(xué)生的記憶。 3.4?P(Participation)參與階段 該階段鼓勵學(xué)生多多參與進課堂實踐中去。第一個課堂測試是讓學(xué)生針對第一幅給出的灰度圖像,討論如何增強其邊緣檢測效果。一些同學(xué)很快想到上節(jié)課學(xué)習(xí)的Laplacian算子和LOG算子可以被直接用來處理圖像,然后借助Matlab平臺進行相關(guān)代碼語句的編寫。第二個課堂測試是讓學(xué)生模仿第一個測試,對第二幅圖像進行代碼編寫和結(jié)果顯示,以此說明盡管增強了部分細節(jié)的邊緣檢測準確度,但對于整體圖像改變?nèi)耘f不足。再請這兩組同學(xué)使用本節(jié)課所講的Canny算子對兩幅圖像進行處理,采用Matlab程序驗證,并與一開始的Laplacian算子和LOG算子得到的結(jié)果進行對比,發(fā)現(xiàn)Canny的優(yōu)點并總結(jié)。 3.5?P(Posttest)后測階段 明確前面的方法都屬于邊緣檢測,是計算機視覺中最基本的問題之一,它是從數(shù)據(jù)矩陣到語義概念讓計算機理解圖像。在此要求學(xué)生深入理解Canny算子的基本原理,并在Matlab平臺上自行編程嘗試去實現(xiàn)算法并驗證效果。首先,將四個步驟進行拆分,分別演示每個步驟處理后的結(jié)果。其次,采用控制變量法,分別改變模板參數(shù)和雙閾值參數(shù),觀察差數(shù)的選擇對邊緣檢測結(jié)果的影響。 3.6?S(Summary)總結(jié)階段 進入本節(jié)課的末尾階段,需要對整個課程進行總結(jié),包括學(xué)習(xí)重點、要注意的問題,指出Canny算子的優(yōu)點及使用時需要注意的科學(xué)問題,即實際問題中邊緣檢測實施的復(fù)雜度,要面臨噪聲、光照、陰影等影響。課堂延伸環(huán)節(jié),列出一些目前先進的邊緣檢測技術(shù)及代碼的鏈接,拓展學(xué)生思維,有興趣、有精力的學(xué)生課后可以查閱。 結(jié)語 針對學(xué)生學(xué)習(xí)積極性不高、課堂教學(xué)質(zhì)量參差不齊等問題,以邊緣檢測教學(xué)為案例,在講授算法基本原理的同時,注重底層算法編程實現(xiàn)的講解,通過可視化實驗結(jié)果加深學(xué)生對邊緣檢測的理解。同時,在對課堂整體內(nèi)涵把握的前提下,引入BOPPPS理念對“現(xiàn)代數(shù)字圖像處理”課程中的一節(jié)Canny算子,進行教學(xué)案例設(shè)計,從問題本身出發(fā),分層次剖析了學(xué)習(xí)知識的結(jié)構(gòu)及原理,真正做到了理論與實踐的有效結(jié)合和互動。 參考文獻: [1]吳全玉,劉曉杰,潘玲佼,等.“數(shù)字圖像處理”課程實驗教學(xué)研究與探索[J].電氣電子教學(xué)學(xué)報,2016,38(1):121124. [2]范春年,馬利.“以學(xué)生為中心”的數(shù)字圖像處理課程在線教學(xué)設(shè)計與實施[J].計算機教育,2021(2):3540. [3]趙俊紅.數(shù)字圖像處理課程綜合性實驗教學(xué)設(shè)計——以圖像修復(fù)為例[J].黑龍江科學(xué),2021,12(11):3537. [4]張俊超.“數(shù)字圖像處理”邊緣檢測教學(xué)典型案例設(shè)計[J].電氣電子教育學(xué)報,2022,44(3):178181. [5]Higham?D?J,Higham?N?J.MATLAB?guide[M].3th?ed.Philadelphia:Society?for?Industrial?and?Applied?Mathematics,2017. [6]石蘊玉,韋鈺.基于BOPPPS模型的數(shù)字圖像處理教學(xué)設(shè)計[J].教育教學(xué)論壇,2018(5):168169. [7]梁建平.基于BOPPPS模型與O2O平臺的高職平面圖像處理課程教學(xué)設(shè)計[J].軟件導(dǎo)刊(教育技術(shù)),2018,17(3):3840. [8]寧志剛,尹軍利,李圣,等.基于Matlab數(shù)字圖像處理計算機輔助教學(xué)方法研討[J].教育現(xiàn)代化,2022,9(2):112114. 基金項目:本文系“中南大學(xué)學(xué)位與研究生教育教學(xué)改革項目資助”(項目編號:2023JGB107) 作者簡介:侯斐斐(1993—?),女,河南鄭州人,博士,講師,研究方向:數(shù)字圖像處理、深度學(xué)習(xí);王浩冉(2002—?),男,河南商丘人,本科生,研究方向:圖像識別、深度學(xué)習(xí);王一軍(1963—?),男,湖南長沙人,博士,二級教授,博士生導(dǎo)師,研究方向:思政教育、交通領(lǐng)域信息技術(shù)。 *通訊作者:樊欣宇(1988—?),男,湖南長沙人,博士,講師,研究方向:數(shù)字圖像處理。