吳房勝,朱煉,杜香寒
(1.安徽工商職業(yè)學院 信息工程學院,安徽 合肥231131 ;2.合肥師范學院 電子信息與電氣工程學院,安徽 合肥 230001)
高速公路路坑很大程度上影響行車安全,危及駕駛員生命安全,道路路坑檢測裝置必不可少,該裝置對路坑的圖像處理能力和效果,直接決定了路坑識別的檢測精度,圖像處理效果較差會直接影響到路坑面積的計算。故要得到精確的路坑面積,必須保證路坑圖像的邊緣檢測效果,本文基于OpenCV開發(fā)平臺,利用數(shù)字圖像處理技術,對道路路坑輪廓進行提取,改變了傳統(tǒng)的canny邊緣檢測算法,提出了一種將PCNN算法與數(shù)學形態(tài)學濾波算法相結合的改進算法,突出路坑的邊緣信息,提高邊緣檢測精度。
OpenCV是機器學習與計算機視覺相結合的軟件庫,包含了計算機視覺與數(shù)字圖像處理方面的很多算法,canny算法就是其中一種。由于道路路坑圖像相對復雜,充分發(fā)揮Open CV及其所帶的函數(shù)庫的優(yōu)勢,按照以下四步,完成道路路坑圖像的檢測,道路路坑圖像的原圖如圖1所示[1]。
圖1 原圖
(1)圖像信息采集:本裝置采用SICK的ranger3系列相機采集圖像信息,該相機像素大小可達到6μm×6μm,傳感器分辨率可達到2560px×832px。相機采集到信息后,調用OpenCV中函數(shù)cvCreateCameraCapture(int index),index參數(shù)表示所使用的硬件相機,硬件設備信息讀取到之后,將返回一個指針,隨后即可讀入圖像幀數(shù)據(jù)。
圖2 Canny算法
(2)采集圖像中的序列幀數(shù)據(jù):調用OpenCV庫中的cvQueryFrame(cvCapture*capture)函數(shù),序列幀數(shù)據(jù)獲取成功返回1,不成功返回0,并將序列幀數(shù)據(jù)復制到OpenCV空間中存儲。
(3)圖像灰度化處理:為降低圖像數(shù)據(jù)量,加快圖像處理進度,滿足快速、精準的實時性檢測需求,對圖像進行8位的灰度化處理,調用了庫中的cvCvtColor()函數(shù)來完成。
(4)道路路坑檢測:canny算法是目前比較常見且較成熟的邊緣檢測算法,該算法對邊緣提取效果較好,故優(yōu)先利用canny算法對道路路坑進行邊緣檢測,調用OpenCV中的CVCanny()函數(shù)進行邊緣檢測。該函數(shù)利用canny算子算法檢測路坑圖像的邊緣,檢測結果如圖2所示。
從圖2中可以看出,傳統(tǒng)的canny檢測算法確實檢測出了道路坑洞的邊緣,但是受到柏油、光線、碎石子等其他因素的影響,出現(xiàn)了大量的虛假邊緣及干擾信息,對道路路坑的檢測及面積的計算產(chǎn)生了不利的影響。下面對傳統(tǒng)canny算法在路坑邊緣提取中進行分析研究,尋找canny算法存在的問題,并將其解決。
Canny算法是先利用高斯函數(shù)與輸入圖像進行卷積計算,對路坑原始圖像平滑濾波,再利用一階有限差分近似代替偏導數(shù),計算梯度幅度和方向,然后進行非極大抑制,獲取單像素邊緣點的強度和方向,最后使用高、低兩個閾值,檢測出圖像的強弱邊緣,實現(xiàn)邊緣二值化。其算法按如下執(zhí)行[2]:
fs(x,y)=f(x,y)*G(x,y)
(1)
(2)
第三步:細化邊緣,通過非最大抑制,找到與α(x,y)最接近的方向值dk,如果沿dk的兩個鄰居的值,其中有一個比M(x,y)大,則使gN(x,y)=0(抑制);否則使gN(x,y)=M(x,y),得出最大非抑制后的幅度值gN(x,y)。
第四步:gN(x,y)進行閾值處理,Canny算法選取了TH高閾值和TL低閾值兩個閾值,高低閾值比通常設為2∶1或3∶1。gNH={gN(x,y)≥TH}
(3)
gNL={gN(x,y)≥TL}
(4)
gNH=gNL(x,y)-gNH(x,y)
(5)
式中,gNH(x,y)為強邊緣像素,gNL(x,y)為弱邊緣像素,故gNH(x,y)和gNL(x,y)各自為候選點和邊緣點,如果這兩個點鄰近,就標記為邊緣點。
根據(jù)Canny算法步驟可發(fā)現(xiàn),高斯濾波針對高斯噪聲有較好的濾波效果,但對于道路路坑圖像中產(chǎn)生的外界噪聲,濾波效果不太理想。另外隨著σ取值的變化,道路路坑圖像邊緣有模糊現(xiàn)象,不能很好地對圖像邊緣數(shù)據(jù)進行保護,而且Canny算法是X軸和Y軸兩個垂直方向進行檢測,很容易檢測出道路路坑圖像中的一些偽邊緣。并且在高低閾值設定時,均是人為設定,這往往依賴于個人經(jīng)驗,很容易出現(xiàn)偏差。一旦閾值設定過高,道路路坑圖像會出現(xiàn)大量的邊緣裂縫和斷裂;反之,道路路坑圖像會出現(xiàn)大量的偽邊緣,因此,Canny算法對道路路坑圖像的適應性較低,邊緣檢測時有局限性。
針對前面所述的Canny算法的步驟,結合道路路坑的特征,傳統(tǒng)Canny檢測算子對路坑邊緣檢測效果不好,本系統(tǒng)根據(jù)道路路坑圖像特征,采用PCNN算法代替Canny檢測算法;同時結合數(shù)學形態(tài)學的濾波算法對分割后的二值化圖像優(yōu)化處理,使路坑邊緣輪廓變光滑,提高邊緣檢測效果,使其更好地服務于路坑邊緣的檢測及路坑面積的計算。
PCNN算法在進行數(shù)字圖像處理時,是將圖像中每個像素點當作一個神經(jīng)元,神經(jīng)元和其相對應的每個像素點相連接,并與附近的其他神經(jīng)元相連接,共同構成一個二維的局部的神經(jīng)網(wǎng)絡。該算法結合了仿生視覺技術,具有較好的脈沖傳播特性,在圖像識別及邊緣提取等方面,具有廣泛的應用。
PCNN基本神經(jīng)元模型中參數(shù)比較多,參數(shù)設定起來比較復雜。針對此問題,本系統(tǒng)以改進的脈沖耦合神經(jīng)元模型對道路路坑圖像的邊緣進行檢測,該模型的數(shù)學公式如下[3]:
(6)
(7)
Uij(n)=Fij(n)(1+βLij(n))
(8)
(9)
Eij(n)=e-ɑEEij(n-1)+VEYij(n)
(10)
式中,F(xiàn)ij(n)為反饋通道輸出,Lij(n)為耦合通道輸出,Uij(n)為內(nèi)部活動項,Yij(n)為PCNN的脈沖發(fā)生器輸出;Eij(n)為Uij(n)是否可以激發(fā)脈沖所產(chǎn)生的閾值信號。VF和αF為反饋輸入域的放大系數(shù)及其衰減時間常數(shù),VL和αL為耦合連接域的放大系數(shù)及其衰減時間常數(shù),VE和αE為動態(tài)門限E的放大系數(shù)及其衰減時間常數(shù),β為連接強度系數(shù),Sij為外部輸入激勵(輸入圖像f(i,j)的灰度值),Mijkl與Wijkl各自為反饋通道輸入域與耦合通道輸入域的連接加權系數(shù)。
采用PCNN算法進行道路路坑圖像邊緣檢測時,準確判斷出路坑圖像的邊緣信息是最核心的問題。原PCNN模型邊緣點類型如圖3所示,將中心神經(jīng)元設為邊緣點,其中黑色圓點為1,白色圓點為0,灰色圓點不作考慮,并用Yij(n)表示PCNN的脈沖發(fā)生器輸出,當內(nèi)部活動項U>閾值信號E時,則輸出為1(脈沖激發(fā)),如果小于則輸出為0(脈沖抑制)。
圖3 邊緣點類型
道路路坑圖像因受周邊外部因素的影響,易產(chǎn)生椒鹽噪聲,這對圖像邊緣檢測算法的抗噪性及自適應性有較高要求。本系統(tǒng)采用局域窗口內(nèi)邊緣值計算算法,計算圖像的邊緣值,并用該邊緣值來調制PCNN的脈沖發(fā)生器的輸出值,使脈沖發(fā)生器輸出Yij(n)在[0.1]范圍內(nèi),則(公式9)將變成:
(11)
式中,Eij(n)是第(i,j)個路坑圖像像素的邊緣值,maxE(n)是經(jīng)過第n次迭代之后,所有路坑圖像像素中邊緣值的最大值。
Eij[n]=2×(|P1-P5|+|P2-P6|+|P3-P7|+|P4-P8|)-(|P1-P2|+|P2-P3|+|P3-P4|+|P4-P5|+|P5-P6|+|P6-P7|+|P7-P8|+|P8-P1|)
(12)
P1到P8分別是路坑圖像像素點(i,j)周圍的對應像素點的像素值,如圖4所示。
圖4 領域像素編號示意圖
該算法是利用給定的結構元素,提取道路路坑圖像中相對應的信息。對道路路坑圖像實現(xiàn)填充、去噪、分割等處理,主要通過腐蝕和膨脹兩種方法處理。腐蝕是讓邊界點向內(nèi)收縮,一些較小且沒用的細小輪廓將被消除,從而突出路坑的邊緣信息,實現(xiàn)邊界點消除。該算法分開運算和閉運算兩種,其中開運算是先對道路路坑圖像腐蝕,再膨脹道路路坑圖像;閉運算是先對道路路坑圖像進行膨脹處理,再腐蝕道路路坑圖像。通過閉運算處理,道路中小的碎石的孔洞等干擾信號、碎邊緣等均可被
消除,路坑缺陷邊緣也有效得到改善。通過開運算或者閉運算,均可使道路路坑圖像邊緣檢測變得更加清晰連續(xù),對路坑面積的計算起到很大的幫助[4-5]。
設(x,y)為路坑灰度圖像f中的像素坐標,設B(m,n)為該濾波算法中給定的結構元素,則道路路坑圖像的膨脹與腐蝕算法如下:
f被B膨脹表示為:
(f⊕B)(x,y)=max[f(x+m,y+n)+B(m,n)]
(13)
f被B腐蝕表示為:
(f⊕B)(x,y)=min[f(x+m,y+n)-B(m,n)]
(14)
灰度圖像開運算與閉運算各自表示為:
f°B=(fΘB)⊕B
(15)
f·B=(f⊕B)ΘB
(16)
根據(jù)以上公式,可得到多尺度灰度圖像數(shù)學形態(tài)學濾波公式
Ki={[(f°Bi)·Bi]°Bi}·Bi…i=1,2……n,
(17)
式中Ki為形態(tài)學濾波后的道路路坑圖像,其中i是結構元素B的半徑。經(jīng)該方法濾波后,道路路坑圖像的邊緣細節(jié)得到有效保留,降噪平滑效果也得到有效改善。
本系統(tǒng)編程環(huán)境是采用OpenCV+VS2010開發(fā)環(huán)境。在開發(fā)環(huán)境中首先對道路路坑圖像進行預處理,其次采用PCNN 算法對路坑圖像進行分割處理,同時結合數(shù)學形態(tài)學濾波算法對分割處理后的路坑圖像實施優(yōu)化和邊緣的提取,最終完成道路路坑圖像的邊緣檢測,檢測后的結果如圖5所示。
圖5 改進PCNN算法檢測結果
將圖5和圖2兩種算法結果比較可看出,一些經(jīng)典的邊緣檢測算法如 Canny 算法,對道路路坑圖像的檢測效果不太理想,所檢測出的路坑邊緣信息完全不能用,還會檢測出很多不需要的小碎石的邊緣信號,同時出現(xiàn)了多處碎邊緣、多重邊、不連續(xù)等現(xiàn)象,對路坑面積的計算有很大影響。而采用PCNN算法與數(shù)學形態(tài)學濾波算法相結合的改進算法,能有效突出出路坑邊緣信息,消除了部分碎邊緣、不連續(xù)等現(xiàn)象,路坑周圍的小碎石信號也得到有效抑制,檢測效果比之較好,路坑邊緣變得更加連續(xù)、清晰、完整可用,提高了邊緣檢測精度。