張俊超
(中南大學(xué) 航空航天學(xué)院, 長沙 410083)
“數(shù)字圖像處理”是電子信息類與電氣類專業(yè),和人工智能研究方向的基礎(chǔ)課程,該課程具有較強(qiáng)的理論性和實踐性[1]。傳統(tǒng)的授課型教學(xué)往往注重知識的傳授和完成練習(xí)作業(yè),這樣培養(yǎng)的學(xué)生只會做題和考試考高分,缺乏實際工程問題的分析與解決能力。為了激發(fā)學(xué)生的學(xué)習(xí)興趣和培養(yǎng)其實踐能力,增加了相應(yīng)的實踐教學(xué)環(huán)節(jié)[2]。
然而,通過近幾年的本科教學(xué)和自身輔導(dǎo)本科生畢業(yè)設(shè)計的經(jīng)歷,我們發(fā)現(xiàn)大多數(shù)本科生對圖像處理算法的理解浮于表面,且對本領(lǐng)域的前沿算法了解甚少。此外,在處理實際問題時,僅會調(diào)整庫函數(shù)的輸入?yún)?shù)和拼湊不同的庫函數(shù),不了解算法的底層思想,無法從根本原理上分析問題,極大程度地抑制了底層創(chuàng)新的培養(yǎng)。
本文首先簡要介紹一些常見的邊緣檢測算子,然后以邊緣檢測-Canny算子的教學(xué)為案例,在傳授Canny算子基礎(chǔ)理論的同時,注重培養(yǎng)學(xué)生的動手實踐、分析問題和自主學(xué)習(xí)的能力。此外,本案例注重底層算法編程實現(xiàn)的講解,加深學(xué)生對Canny算子底層原理的理解,并鼓勵學(xué)生開展原始性的底層創(chuàng)新,這將對“數(shù)字圖像處理”課程教學(xué)改革具有良好的借鑒意義。
邊緣是指圖像中像素的值有突變的地方,如圖1所示:圖像的邊緣存在于一階導(dǎo)數(shù)的極值處和二階導(dǎo)數(shù)的過零點處,接下來簡要介紹一些常見的基于梯度的邊緣檢測算子。
圖1 圖像邊緣模型及其一階二階導(dǎo)數(shù)
基于圖像導(dǎo)數(shù)的邊緣檢測算子主要有:Roberts算子、Prewitt算子、Sobel算子和Laplace算子等。這些算子均是基于設(shè)計的導(dǎo)數(shù)求解模板(如圖2所示),通過與圖像進(jìn)行卷積操作,獲得梯度的幅值。根據(jù)邊緣處的梯度幅值是極大值,可以實現(xiàn)邊緣的檢測。其中,基于二階導(dǎo)數(shù)的邊緣檢測Laplace算子無方向性,且常產(chǎn)生雙像素寬的邊緣。
圖2 基于圖像梯度的邊緣檢測算子
Canny算子是一種經(jīng)典的邊緣檢測算法,它是Canny于1986年提出的。該算子包括四個步驟,具體如下:
步驟一:高斯低通濾波器平滑圖像,抑制噪聲對邊緣檢測結(jié)果的影響。圖像f經(jīng)過高斯濾波器h平滑濾波得到圖像g,表示如下:
(1)
g(x,y)=h(x,y)?f(x,y)
(2)
步驟二:用一階偏導(dǎo)的有限差分計算梯度的幅值和方向?;赟obel算子計算的結(jié)果如圖3所示。
圖3 計算梯度的幅值和方向
步驟三:對梯度幅值進(jìn)行非極大值抑制??梢圆捎没谧罱徍突诓逯档牟呗赃M(jìn)行非極大值的抑制。這里只簡要介紹基于鄰域的方法,如圖4所示。首先,將梯度方向角的變化范圍平均分成4個扇區(qū);其次,根據(jù)目標(biāo)像素的梯度方向角所在扇區(qū),確定鄰域的像素;最后,比較目標(biāo)像素和鄰域像素的梯度幅值,若目標(biāo)像素的梯度幅值不是最大的,則進(jìn)行抑制。比如,梯度方向在第3扇區(qū),則需比較當(dāng)前像素(i,j)的梯度幅值,與對角鄰域像素(i-1,j+1)和(i+1,j-1)的梯度幅值。若當(dāng)前像素的梯度幅值小于其中任意一個,則當(dāng)前像素的梯度幅值被置為0。
圖4 非極大值抑制
步驟四:用雙閾值法檢測和連接邊緣,即高閾值T2和低閾值T1,常設(shè)置T2=2*T1。梯度幅值超過T2的稱為強(qiáng)邊緣,小于T2且大于T1的稱為弱邊緣,小于T1的不是邊緣。當(dāng)弱邊緣的周圍8鄰域有強(qiáng)邊緣點存在時,就將該弱邊緣點變成強(qiáng)邊緣點,以此來實現(xiàn)對強(qiáng)邊緣的補(bǔ)充。
以上就是Canny算子的基本原理,大部分本科生熟練運(yùn)用Matlab自帶的edge函數(shù),實現(xiàn)圖像的邊緣檢測。針對不同的應(yīng)用問題,只會調(diào)整函數(shù)的輸入?yún)?shù),不能從底層對算法做改進(jìn)。為此,我們在課程教學(xué)中增加了底層代碼編程實現(xiàn)的講解和訓(xùn)練,旨在培養(yǎng)學(xué)生動手實踐和自主創(chuàng)新的能力。
Canny算子的Matlab代碼實現(xiàn)如圖5所示:4個子函數(shù)(Gau_Filter、Sobel_Edge_Detection、NMS、ThresholdSeg)分別對應(yīng)四個步驟。通過對比代碼和理論公式,讓學(xué)生們?nèi)グl(fā)現(xiàn)其中的區(qū)別,并體會如何將所學(xué)理論代碼化。比如,高斯低通濾波器的理論表示如公式(1)所示,需要指定方差的大??;而在編程實現(xiàn)時,還需要設(shè)定濾波器窗口的大小,且最后的歸一化操作保障濾波后像素灰度值不會出現(xiàn)奇值(大于255或者過小)。此外,在對圖像做濾波處理和求解梯度時,均用到了卷積操作,為了保證卷積后圖像大小不改變,在編程實現(xiàn)時首先對圖像做了邊界填充的處理。
圖5 Canny算子的Matlab代碼實現(xiàn)
基于Cameraman圖像的邊緣檢測結(jié)果如圖6所示,學(xué)生們可以直觀感受每一步處理的結(jié)果,加深對算法步驟設(shè)計的理解,可以針對不同的應(yīng)用,針對性地優(yōu)化其中對應(yīng)的步驟,不再是僅僅調(diào)整庫函數(shù)的輸入?yún)?shù)。最后,通過和Matlab的edge庫函數(shù)檢測結(jié)果進(jìn)行對比,引導(dǎo)學(xué)生發(fā)現(xiàn)問題和激發(fā)學(xué)生自主學(xué)習(xí)的能力,自主查閱相關(guān)的文獻(xiàn),對算法做進(jìn)一步地改進(jìn)和優(yōu)化。
圖6 Canny算子的邊緣檢測結(jié)果
最后,引導(dǎo)學(xué)生分析Canny算子涉及到的參數(shù)變量:高斯低通濾波器的方差σ和窗口大小、低閾值T1。不同參數(shù)設(shè)置下Canny算子的邊緣檢測結(jié)果如圖7所示,根據(jù)第一行的檢測結(jié)果,引導(dǎo)學(xué)生分析高斯低通濾波器的窗口大小對邊緣檢測結(jié)果的影響;根據(jù)第二行的檢測結(jié)果,引導(dǎo)學(xué)生分析高斯低通濾波器的方差大小對邊緣檢測結(jié)果的影響;根據(jù)第三行的檢測結(jié)果,引導(dǎo)學(xué)生分析低閾值大小對邊緣檢測結(jié)果的影響。通過上述的引導(dǎo)和分析,加深學(xué)生對Canny算子的理解,并體會Canny算子存在的不足,激發(fā)學(xué)生自主對Canny算子做優(yōu)化和改進(jìn)。
圖7 不同參數(shù)設(shè)置下Canny算子的邊緣檢測結(jié)果
車道線檢測是是自動駕駛領(lǐng)域的重要技術(shù)之一,在輔助駕駛、車道偏移預(yù)警和車輛防碰撞系統(tǒng)中得到廣泛應(yīng)用。Canny算子是圖像處理領(lǐng)域經(jīng)典的邊緣檢測算法,該算法可以應(yīng)用到車道線檢測中[3-4]。文獻(xiàn)[4]所采用的車道線檢測流程如圖8所示:首先,進(jìn)行ROI區(qū)域的裁剪,減少無關(guān)信息的干擾;其次,利用Canny算子對ROI圖像進(jìn)行邊緣檢測;然后,根據(jù)概率Hough變換,擬合邊界;最后,根據(jù)斜率約束篩選車道線、同車道線邊界合并和左右兩側(cè)車道線約束篩選等疊加約束,檢測車道線?;谠摴こ虇栴},布置相應(yīng)的小組實踐作業(yè),以提升學(xué)生的自學(xué)和動手實踐能力。
圖8 車道線檢測算法流程圖
近些年來,深度學(xué)習(xí)技術(shù)在圖像識別、圖像復(fù)原、目標(biāo)檢測與跟蹤等領(lǐng)域得到了廣泛應(yīng)用。“數(shù)字圖像處理”是一門實踐性較強(qiáng)的課程,課堂中除了講授經(jīng)典的邊緣檢測算法,目前最新的和前沿的方法也需要做簡要介紹,便于學(xué)生們理解該研究方向的發(fā)展動態(tài)。如圖9所示是基于SegNet的邊緣檢測網(wǎng)絡(luò)結(jié)構(gòu)[5],該網(wǎng)絡(luò)是將圖像做為輸入,端到端地輸出檢測到的邊緣。
圖9 基于深度學(xué)習(xí)的圖像邊緣檢測(SegNet)
針對學(xué)生過于依賴庫函數(shù)編程,對底層算法理解浮于表面等問題,本文以邊緣檢測教學(xué)為案例,在講授算法基本原理的同時,注重底層算法編程實現(xiàn)的講解,加深學(xué)生對Canny算子底層原理的理解。
此外,該案例還結(jié)合車道線檢測的工程應(yīng)用,幫助學(xué)生理解該算法的應(yīng)用范圍。最后,介紹了邊緣檢測問題的前沿技術(shù),開闊學(xué)生的視野和培養(yǎng)學(xué)
生對知識的探索興趣。課堂實踐結(jié)果表明,該教學(xué)模式使學(xué)生提升學(xué)習(xí)的積極性和動手實踐的能力,同時培養(yǎng)了科研興趣。