張漢欣
(中國(guó)刑事警察學(xué)院 遼寧 沈陽(yáng) 110854)
邊緣檢測(cè)優(yōu)化算子在輪胎痕跡識(shí)別中的應(yīng)用
張漢欣
(中國(guó)刑事警察學(xué)院 遼寧 沈陽(yáng) 110854)
本文以快速準(zhǔn)確識(shí)別輪胎痕跡為目的,針對(duì)道路交通事故現(xiàn)場(chǎng)輪胎痕跡圖像,主要應(yīng)用了Sobel算子、Roberts算子、Prewitt算子、Laplacian算子、馬爾算子(Log)算子和Canny算子等算法對(duì)輪胎圖像痕跡邊緣識(shí)別。根據(jù)傳統(tǒng)的多種優(yōu)化算子的圖像處理算法比較,實(shí)驗(yàn)結(jié)果表明,Canny算子算法處理的圖像空稀少,內(nèi)容豐富,輪胎花紋邊緣清晰。
輪胎痕跡 識(shí)別 邊緣檢測(cè) 優(yōu)化算子
常用的、最簡(jiǎn)單的邊緣檢測(cè)方法是對(duì)原始圖像按像素的某鄰域構(gòu)造邊緣檢測(cè)算子,檢驗(yàn)圖像的每個(gè)像素在某個(gè)鄰域內(nèi)灰度的變化,利用邊緣鄰近一階或二階方向?qū)?shù)變化規(guī)律來(lái)實(shí)現(xiàn)檢測(cè)。由于原始圖像一般含有噪聲,而邊緣和噪聲在空間域反應(yīng)為灰度有幅度起伏,在頻域表現(xiàn)為高頻分量,這就給邊緣檢測(cè)帶來(lái)困難。傳統(tǒng)的邊緣提取方法是邊緣的種類(lèi)可分為兩類(lèi):一類(lèi)稱(chēng)為階躍性邊緣,它兩邊像素的灰度值有著顯著的不同;另一類(lèi)稱(chēng)為屋頂狀邊緣和凸緣邊緣,它位于灰度值從增加到減少的變化轉(zhuǎn)折點(diǎn)。對(duì)于階躍性邊緣,二階方向?qū)?shù)在邊緣處呈零交叉;而對(duì)于屋頂狀邊緣和凸緣邊緣,二階方向?qū)?shù)在邊緣處取極值。由于利用一階導(dǎo)數(shù)進(jìn)行邊緣檢測(cè)時(shí),如果所求的一階導(dǎo)數(shù)高于某一閉值,則可確定該點(diǎn)為邊緣點(diǎn)。這樣就會(huì)導(dǎo)致檢測(cè)的邊緣點(diǎn)太多。而利用一階導(dǎo)數(shù)的局部最大值對(duì)應(yīng)的二階導(dǎo)數(shù)的零交叉點(diǎn)能夠找到精確邊緣點(diǎn)。優(yōu)化的邊緣檢測(cè)應(yīng)當(dāng)準(zhǔn)確解決邊緣的虛實(shí)、交接、棱邊等問(wèn)題。
邊緣檢測(cè)算法目前多集中在對(duì)灰度圖像的處理,通過(guò)構(gòu)造對(duì)像素灰度級(jí)階躍變化敏感的微分算子,例如梯度算子,其邊緣檢測(cè)速度快,但得到的常是不連續(xù)的、不完整的結(jié)構(gòu)信息。這類(lèi)方法對(duì)噪聲較為敏感。為了有效抑制噪聲,一般都先對(duì)原圖像進(jìn)行平滑,再進(jìn)行邊緣檢測(cè)就能成功地檢測(cè)到真正的邊緣。本文應(yīng)用的邊緣檢測(cè)算子有索伯爾(Sobel) 算子、羅伯特(Roberts)算子、普瑞威特(Prewitt)算子、拉普拉斯(Laplacian) 算子,馬爾(Log) 算子及Canny算子等。
一幅數(shù)字圖像一般是圖像灰度連續(xù)函數(shù)的離散化取樣點(diǎn)數(shù)組,圖像灰度值的明顯變化可用梯度的離散逼近函數(shù)來(lái)識(shí)別。
索伯爾算子的表達(dá)式為:
索伯爾(Sobel) 算子屬于梯度算子的一種,具有兩個(gè)突出的優(yōu)點(diǎn):一是由于引入了平均因素,對(duì)圖像中的隨機(jī)噪聲具有一定的平滑作用;二是由于它是相隔兩行或兩列的差分,因此邊緣兩側(cè)的元素得到加強(qiáng),使邊緣顯得粗而亮。
羅伯特算子的表達(dá)式為:
max{|f(i,j)-f(i-1,j-1)|+|f(i-1,j)-f(i,j-1)|}
羅伯特(Roberts)算子對(duì)于陡峭的低噪聲圖像具有最良好的響應(yīng),利用局部差分算子尋找邊緣算子。
普瑞威特算子的表達(dá)式為:
普瑞威特(Prewitt)算子與索伯爾算子的區(qū)別僅是模板不同、其原理相同且效果相當(dāng);與羅伯特算子又類(lèi)似。
上述三種算子都屬于梯度算子。梯度的大小代表圖像邊緣的強(qiáng)度,梯度方向與圖像邊緣幅度走向垂直。由于梯度算子僅計(jì)算相鄰象素的灰度差,對(duì)噪聲敏感,難以抑制噪聲的影響。由此還演變出方向算子,但增多的模板使計(jì)算趨于復(fù)雜。
如果在計(jì)算一階導(dǎo)數(shù)求梯度的方法中把大于某值的點(diǎn)取為邊界點(diǎn),就會(huì)出現(xiàn)檢測(cè)出的邊緣點(diǎn)繁多現(xiàn)象,則在理論上更有效的方法是求梯度局部最大值對(duì)應(yīng)的點(diǎn),將其確認(rèn)為真實(shí)邊緣點(diǎn)。這樣消除了一階導(dǎo)數(shù)中的非局部最大值,可檢測(cè)出更準(zhǔn)確的邊緣。一階導(dǎo)數(shù)的局部最大值對(duì)應(yīng)著二階導(dǎo)數(shù)的零交叉點(diǎn)。通過(guò)確定圖像灰度的二階導(dǎo)數(shù)的零交叉點(diǎn)就可確定真是的邊緣點(diǎn)。
對(duì)于階躍狀邊緣,其二階導(dǎo)數(shù)在邊緣點(diǎn)就有零交叉,并且邊緣點(diǎn)兩旁象素的二階導(dǎo)數(shù)不同號(hào)。這樣對(duì)數(shù)字圖像的每個(gè)像素計(jì)算關(guān)于X、Y兩軸的二階偏導(dǎo)數(shù)之和,就可得拉普拉斯(Laplacian)算子。拉普拉斯算子表達(dá)式為:
已知拉普拉斯算子是滿(mǎn)足二維圖像不同走向的輪廓銳化要求。由于梯度算子在利用圖像灰度二階導(dǎo)數(shù)的零交叉點(diǎn)來(lái)求邊緣點(diǎn)的算法對(duì)噪聲相當(dāng)敏感,拉普拉斯算子一般不以其原始形式用于邊緣檢測(cè),希望在邊緣增強(qiáng)之前去噪,即圖像進(jìn)行高斯濾波平滑處理。Marr和Ildreth將高斯濾波和拉普拉斯邊緣檢測(cè)結(jié)合在一起,形成馬爾算子,通常被稱(chēng)為L(zhǎng)og—Laplacian of Gaussian算子。該方法先對(duì)圖像進(jìn)行平滑處理,即是利用高斯函數(shù)平滑圖像后,用拉普拉斯(Laplace)算子檢測(cè)邊緣,從而降低了圖像的噪聲。這一算法稱(chēng)為高斯拉普拉斯(Log)算法,馬爾算子的近似5×5模板及檢測(cè)效果。
其中:*為卷積,r2=x2+y2,r是離中心點(diǎn)的徑向距離;▽2h為高斯拉普拉斯濾波算子,是軸對(duì)稱(chēng)函數(shù),且各向同性。
函數(shù)在r=±σ處有過(guò)零點(diǎn),在|r|<σ時(shí)取正值,在|r|>σ時(shí)取負(fù)值。且算子在定義域內(nèi)的平均值為零,因此將它與圖像卷積并不會(huì)改變圖像的整體動(dòng)態(tài)范圍,但由于它相當(dāng)光滑,所以卷積結(jié)果使圖像變得模糊,其模糊程度正比于σ。
馬爾方法的特點(diǎn)是圖像先與高斯濾波器進(jìn)行卷積,這樣在平滑了圖像的同時(shí)可以去噪,孤立的點(diǎn)噪聲和較小的結(jié)構(gòu)組織將被消除。由于平滑導(dǎo)致邊緣的延展,因此邊緣檢測(cè)只考慮那些具體局部梯度最大值的點(diǎn)為邊緣點(diǎn)。
Canny邊緣檢測(cè)算子是John.F.Canny于 1986年開(kāi)發(fā)出來(lái)的一個(gè)多級(jí)邊緣檢測(cè)算法。Canny創(chuàng)立了邊緣檢測(cè)計(jì)算理論 (Computational theory of edge detection)。Canny算子(或者這個(gè)算子的變體)是最常用的邊緣檢測(cè)方法。在Canny創(chuàng)造性的工作中,他研究設(shè)計(jì)了一個(gè)用于邊緣檢測(cè)最優(yōu)平滑濾波器,這個(gè)濾波器能夠很好地被一階高斯導(dǎo)數(shù)優(yōu)化。另外,Canny引入了非最大抑制概念,它是說(shuō)邊緣定義為在梯度方向具有最大梯度值的點(diǎn)。
Canny算子應(yīng)滿(mǎn)足的信噪比準(zhǔn)則是不丟失重要的邊緣,不出現(xiàn)虛假的邊緣,表達(dá)式為:
其中:f(x)是邊界濾波器的脈沖響應(yīng);G(x)是邊緣;n0是高斯噪聲的均方根。
Canny算子滿(mǎn)足定位精度準(zhǔn)則,即真實(shí)邊緣與別的邊緣位置之間的誤差最小,即
其中G′(-x)和f′(x)分別是G(-x)和f(x)的一階導(dǎo)數(shù)。
Canny算子應(yīng)滿(mǎn)足的單邊緣響應(yīng)準(zhǔn)則是在有噪聲的情況下,邊緣附近會(huì)有多個(gè)過(guò)零點(diǎn)。兩個(gè)檢測(cè)到的過(guò)零點(diǎn)的平均距離為
平均距離越大,過(guò)零點(diǎn)間距越大,越容易檢測(cè)。
Canny算子實(shí)現(xiàn)的具體步驟如下:
(1)對(duì)原始數(shù)據(jù)用二維高斯濾波模板進(jìn)行卷積,得到的圖像與原始圖像相比有些輕微的模糊(blurred)。這樣,單獨(dú)的一個(gè)像素噪聲在經(jīng)過(guò)高斯平滑的圖像上變得幾乎沒(méi)有;
(2)利用微分算子(如普瑞威特算子、索伯爾算子等)找到圖像灰度沿著兩個(gè)方向的導(dǎo)數(shù)Gx,Gy,并求出梯度的大?。?/p>
(3)利用梯度大小計(jì)算出梯度的方向,求出邊緣的方向,就可把邊緣的梯度方向大致分為4種(水平、垂直、對(duì)角線方向45度和135度)方向的邊緣,將原始圖像與每個(gè)所作的卷積都保存起來(lái),對(duì)于每個(gè)點(diǎn)都確定在這個(gè)點(diǎn)上的最大值以及生成的邊緣的方向,這樣就從原始圖像生成了圖像中每個(gè)點(diǎn)亮度梯度圖以及亮度梯度的方向;
(4)某個(gè)像素的灰度值在其梯度方向上來(lái)比較梯度幅度,前后兩個(gè)像素的灰度值之差不是最大時(shí),就將這個(gè)像素值置為零,即不是邊緣;較高的亮度梯度比較有可能是邊緣;
(5)使用累計(jì)直方圖計(jì)算兩個(gè)滯后閾值。凡是大于高值閾值的一定是邊緣;凡是小于低值閾值的一定非邊緣。如果檢測(cè)數(shù)據(jù)在兩個(gè)閾值之間,則根據(jù)這個(gè)像素的周?chē)徑酉袼刂惺欠裼谐^(guò)高閾值的邊緣像素,如果存在,它就是邊緣,否則不是。
將對(duì)以上常見(jiàn)算子進(jìn)行圖像實(shí)驗(yàn)仿真,對(duì)所采集的圖像分別應(yīng)用Sobel算子、Roberts算子、Log算子及Canny算子進(jìn)行邊緣檢測(cè),如圖1所示。
由MATLAB工具處理結(jié)果可見(jiàn),Sobel算子檢測(cè)范圍小,平滑噪聲的作用一般,邊緣粗而亮;對(duì)圖像可抑制噪聲,檢測(cè)出的邊緣較細(xì),但邊緣不夠明顯;Log的檢測(cè)效果比Roberts算子好,邊緣更清晰;Canny算子同樣具有抑制噪聲的能力,其檢測(cè)出邊緣較寬,信息豐富,邊緣明顯。通過(guò)比較可知,Canny算子的邊緣檢測(cè)最好。
圖1 各種邊緣算子比較
1.Rafael C Gonzalez,Richard E Woods.Digital Image Processing[M].Addison Wesley Publishing Company,2002
2.FreemanH,DavisLS.Acorne-finding algorithm for chain code curves[J].IEEE Transactions on Computers,1977,C-26(3):297-303
5.Rosenfeld A,Johnson E.Angle detection on digital curves[J].IEEE Transactions on Computers,1973,22(9):875-878
6.HarrisC G,StephensM J.A combined corner on edge detector.In 4th AlveyVision Conference[C]. Manchester 1988:147-151,189-192