王正家,王思宇*,景嘉寶
(1.湖北工業(yè)大學 機械工程學院,湖北 武漢 430068;2.現(xiàn)代制造質量工程湖北省重點實驗室,湖北 武漢 430068)
隨著汽車的普及,人們的研究熱點已向無人駕駛汽車方面轉移。有許多公司,如國外的蘋果、特斯拉和谷歌;國內的小米、百度和樂視等都想在此領域更進一步。視覺感知作為汽車安全駕駛的首要手段已得到越來越多的研究[1],而利用視覺系統(tǒng)實現(xiàn)對車前行人的檢測,無論對駕駛者還是對行人的安全都起著至關重要的作用?;诳梢姽鈭D像中的行人檢測會受到障礙物遮擋、陰影、光照條件和行人姿態(tài)等因素的影響[2],繼而降低檢測的精度,以致于使用視覺系統(tǒng)實現(xiàn)較為準確的行人檢測變得困難重重。經(jīng)過長時間的研究,學者們對行人檢測提出了各種方法。
現(xiàn)有行人檢測視覺設備主要分為單目相機與雙目相機,利用單目相機實現(xiàn)行人檢測的過程主要是利用大量的特征信息訓練行人檢測分類器,如形狀特征、紋理特征、上下文特征和梯度特征[3]。使用梯度特征信息的單目相機有著較好的檢測效果,Dalal等[4]使用線性支持向量機(Support Vector Machine,SVM)和梯度直方圖(Histogram of Gradients,HOG)特征結合的方式實現(xiàn)了行人檢測;Dollár等[5]利用HOG與顏色信息相結合的方法,在Dalal等研究的基礎上進一步提高了單目相機對于行人檢測的精度。后續(xù)又有大量學者針對單目相機的算法進一步改進與創(chuàng)新,但是基于單目相機檢測獲取的行人特征信息較少,依靠標定后的單目相機并不能準確完成行人檢測,所以基于雙目相機的行人檢測也得到越來越多的研究[6]。雙目相機中最為多見的應用是利用景深圖獲取感興趣區(qū)域(Region of Interest,ROI)。Zhao等[7]通過對ROI進行聚類獲得車前區(qū)域,Labayrade等[8]基于視差圖提出了V-視差算法,V-視差算法能夠加深道路中幾何結構的表達。后續(xù)又有學者,如Broggi等[9]、Shashua等[10]在V-視差算法的基礎上,將采集后圖像劃分為x、y兩方向進行視差計算,可以獲得高于地面的物體信息。上述算法的缺點是需要對車前圖像內所有信息進行分析與處理,大大降低了算法的時效性。Benenson等[11]將重點轉移到行人檢測模型的訓練,縮短了算法針對行人檢測的時間,極大地提高了算法的時效性。此類算法的后續(xù)發(fā)展如Mitzel等[12]在進行多目標檢測時,更好地利用了景深圖獲取ROI,通過減少分類器的檢測區(qū)域來提高檢測效率。Hilado等[13]進一步改進分類器,基于HOG,分別訓練SVM和Adaboost,在實現(xiàn)過程中,首先將輸入信息經(jīng)過Adaboost,若判斷圖像中包含行人信息,則使用SVM檢查。上述算法的缺點是在獲取景深圖階段的處理較為簡略,難以獲取車前圖像中更優(yōu)的ROI。Franke等[14]結合光流信息和圖像幀間運動,通過分析運動軌跡與間隔時間獲取景深圖。此類算法的缺點是計算量較大,難以確保車前行人檢測的時效性。在使用雙目相機獲取景深圖的過程中,立體匹配算法是至關重要的,算法的優(yōu)劣決定著生成景深圖的好壞。常規(guī)的立體匹配算法分為3種:局部、全局和半全局立體匹配算法[15]。局部立體匹配算法側重達到局部最優(yōu)解,以犧牲全局為代價來提高匹配速率,缺點是未考慮全局信息,匹配效果較差;全局立體匹配算法集合了待處理圖像的全部像素,算法考慮了全局信息,以達到更好的匹配效果,缺點是計算量過大,降低了圖像匹配速率;半全局立體匹配(Semi-Global Matching,SGM)算法結合了局部、全局立體匹配算法的優(yōu)點,盡可能地確保了匹配的精度與匹配的速率。
綜上所述,本文使用改進后的SGM算法來更好地獲取ROI,提出了結合PatchMatch[16]的Census自適應窗口變換的SGM算法,在代價匹配階段使用自適應窗口Census計算,減少了圖像中像素信息較少區(qū)域的計算量,并提高了圖像中像素信息較多區(qū)域的計算量;在代價聚合階段,用PatchMatch與SGM結合的方法,使用順時針和逆時針相結合的方式替換了常規(guī)的8或16路徑聚合,提高了聚合效率;在視差優(yōu)化階段,利用左右一致性原則剔除誤差點,并通過高斯濾波實現(xiàn)視差優(yōu)化,生成景深圖。在獲取ROI后,針對圖像中的HOG進行降維處理,減少非行人信息對行人信息的干擾,并通過訓練SVM訓練器,最終實現(xiàn)行人檢測。實驗證明,本文方法可以實現(xiàn)車前行人檢測,在提高檢測精度的基礎上確保時效性,并能較好地克服外界(如光照、陰影等)影響因素。本文算法具備一定的實用價值。
雙目視覺的三維模型如圖1所示。圖1中的三維模型兩攝像頭光軸平行、成像平面共面、高度一致,是較為理想的成像模型。P點可通過左右視圖的點P′(u,v)、P″(u′,v′)計算得出三維坐標。將基準定為左相機,則點P(xc,yc,zc)計算如下:
(1)
圖1 雙目視覺三維模型Fig.1 3D model of binocular vision
式中:點P的視差大小為u-u′,相機參數(shù)為(u0,v0,ax,ay),左右相機基線距離為b。
通過式(1)分析,在獲取道路中行人信息的所有點的視差值以及相機參數(shù)的前提下,可以很輕松地完成對道路中行人的檢測。但由于相機本身的缺陷,如相機位置安裝有誤、鏡片工藝等因素,導致左右相機中光軸不平行、輸出圖像發(fā)生畸變,所以需要對左右相機實現(xiàn)立體標定和相機標定[17]。
本文采用張氏標定法[18]對左右相機實現(xiàn)立體標定,相機標定結果如表1和表2所示。
表1 立體標定結果Tab.1 Stereo calibration results
表2 左右相機標定結果Tab.2 Left and right camera calibration results
依照左右相機標定實現(xiàn)對車道行人圖像的立體校正。校正前行人圖像如圖2所示,通過水平線投影發(fā)現(xiàn)圖像中行人存在左右圖像不對齊及圖像畸形現(xiàn)象。校正后行人圖像如圖3所示,通過水平線投影發(fā)現(xiàn)左右圖像中行人處于同一水平線且觀感上無圖像畸變產(chǎn)生。
圖2 相機標定前行人圖像Fig.2 Pedestrian image before camera calibration
圖3 相機標定后行人圖像Fig.3 Pedestrian image after camera calibration
在行人檢測領域,行人檢測算法可以分為2個步驟:① ROI的提取;② 行人檢測算法。其中ROI的提取是依靠雙目視覺中立體匹配算法來完成的,利用立體匹配算法生成的視差圖中的干擾部分來劃分并提取ROI,通過減小被檢測區(qū)域來降低行人檢測的復雜度,同時避免檢測區(qū)域的錯誤信息的干擾。
立體匹配算法通過左相機生成的中心點像素及鄰域信息,在右相機尋找一致的特征點信息進行代價匹配,并通過視差計算和相機內固定參數(shù)的轉換來獲取視差圖。道路中的行人信息有著相似度高和紋理弱的特點,因此選用何種立體匹配算法對更為準確和高效地提取行人信息至關重要。
根據(jù)算法特點可以將立體匹配算法劃分為全局、半全局和局部匹配算法以及基于機器學習的匹配算法[19]。
全局匹配算法的優(yōu)點是通過對全圖的考量與計算,顯著提高了算法的匹配精度,缺點是計算量過大,不能保證算法實現(xiàn)的時效性;局部匹配算法的優(yōu)點是提高了計算的實時性,缺點是計算方式較為單一,針對弱紋理區(qū)域的匹配精度較低;深度學習算法的優(yōu)點是針對誤匹配率有著較大程度的降低,缺點是算法實現(xiàn)需要建立在大量的數(shù)據(jù)學習的基礎上,大大提高了算法實現(xiàn)的復雜度。綜上所述,本文選用融合全局、局部匹配優(yōu)點的半全局立體匹配算法,該算法在保證匹配時效性的基礎上,有著較好的匹配精度,但對應用環(huán)境進行分析后,該算法仍有一定的改進空間。
參考上述問題,提出了結合PatchMatch算法的Census自適應窗口變換的半全局立體匹配算法,算法流程如圖4所示。改進后算法在確保匹配時效性的基礎上,針對弱紋理以及無紋理區(qū)域有著較好的匹配精度。
圖4 改進后的半全局立體匹配算法流程Fig.4 Flowchart of improved semi-global stereo matching algorithm
使用雙目相機采集待匹配圖像,對待匹配圖像進行自適應窗口的Census代價匹配,在待匹配圖像的強紋理、較強紋理區(qū)域使用7 pixel×7 pixel、 9 pixel×9 pixel的窗口進行Census變換;使用0°、50°、100°和150°順時針方向的一次空間迭代和200°、250°、300°和350°逆時針方向的二次空間迭代結合的方式對代價匹配完的圖像進行代價的聚合;利用雙曲線擬合算法對處理后圖像進行現(xiàn)實化還原,將現(xiàn)實化還原后的深度圖借助左右一致性原則進行誤差點的剔除;使用高斯濾波算法減少環(huán)境噪聲對深度圖的干擾;輸出已匹配圖像。
2.1.1 代價匹配
SGM算法在代價匹配階段使用互信息算法,但是互信息算法由于自身機制的限制,針對某一像素點進行代價匹配時,無法考慮該像素點的臨近像素對代價匹配的影響,且對于不均勻光照的場景,無法確保匹配精度。因此,本文在代價匹配階段使用Census變換,該變換算法可以減少臨近像素點對中心像素點的影響,且不容易受到不均勻光照的干擾。Census算法的本質是對窗口內的所有像素進行Census變換,并采用漢明距離實現(xiàn)代價匹配。
但分析Census變換后,該算法仍有一定的局限性:
① 算法實現(xiàn)依賴窗口中心點的像素信息,如果中心點像素受到外界干擾則會導致誤匹配,降低匹配精度;
② 窗口中心點如果處在弱紋理及無紋理區(qū)域,則代價計算的值誤差較大,同時也會導致誤匹配。
針對上述算法的局限性,本文提出改進后的Census自適應窗口算法,在不明顯提高算法實現(xiàn)繁雜性的基礎上,首先,通過Census變換,將窗口內的中心點像素通過式(2)編碼成0和1構成的二進制比特串:
(2)
式中:TCensus(a)為由窗口變換產(chǎn)生的中心點像素a的比特串,Ma為像素a的領域,I(a)為窗口內中心點的灰度值,I(b)為領域內的像素點b的灰度值,?為按位連接符。判斷函數(shù)ζ[.]可展開為:
(3)
其次,使用中心像素點臨近的左、右、上、下4點的像素平均值來代替窗口中心點的灰度值。
IP(x,y)=(Ia(x,y+1)+Ia(x,y-1)+
Ia(x+1,y)+Ia(x-1,y))/4,
(4)
式中:(x,y)為窗口中心點,Ia(x,y)為窗口中心點灰度值,(x,y+1)、(x,y-1)為中心點上下臨近點,(x+1,y)、(x-1,y)為中心點左右臨近點。通過公式計算均值后,將中心點的灰度值與均值對比。最后,將閾值與比較的灰度值的絕對值進行對比,確定改進后中心點的灰度值信息。
(5)
式中:T?為式中自定義的閾值,通過對多幅圖像的實驗對比,閾值的合理區(qū)間為[10,20],本文選取的閾值大小為13。
基于以上計算,可以將式(3)更改為:
(6)
實現(xiàn)自適應窗口算法的思想是當前窗口中像素平均值較大時直接使用當前窗口,而當前窗口中像素平均值不夠大時,選擇增大匹配窗口來獲得更多像素信息,從而提高匹配精度。
在完成窗口中心點的灰度值計算后,通過窗口灰度值均方差確定窗口大小,均方差計算如下:
(7)
式中:M為初始窗口內像素的總數(shù),ai為領域內各個像素,I(ai)為領域內各個像素對應的灰度值,N(a)為初始窗口的灰度值。
通過對式(7)的結果判斷,假如結果較大,代表窗口內的灰度值變化明顯,則選用尺寸小的窗口;假如結果較小,代表窗口內的灰度值變化不明顯,則選用較大的窗口。由文獻[20]可知,9 pixel×9 pixel的窗口大小適用于Census變換,于是本文選擇9 pixel×9 pixel為初始窗口,同時設定3個閾值T1、T2和T3,其次選擇4種不同尺寸的變換窗口來實現(xiàn)窗口自適應。設定以像素點I(a)為中心的自適應窗口WAdopt(a):
(8)
最后,計算替換完窗口中心點像素和窗口大小后,利用式(9)完成代價匹配:
Ccen(a)=Hamming[CL(a),CR(a-d)],d∈[dmin,dmax],
(9)
式中:CL(a)為左圖比特串,CR(a-d)為視差為d的右圖比特串,[dmin,dmax]為視差范圍。
2.1.2 代價聚合
參考PatchMatch算法將待匹配圖像映射初始化、匹配傳遞和隨機搜索的核心思想,將常規(guī)的SGM算法8路徑或16路徑聚合更改為4角度(0°、50°、100°和150°)順時針和4角度(200°、250°、300°和350°)逆時針的2次空間迭代的方式進行路徑聚合。改進后的代價聚合算法能有效地降低立體匹配算法的視差候選數(shù)量,以此提高算法的實時性。
首先,在PatchMatch算法的初始化階段,將梯度信息和色彩空間的變化聚合為一類,避免了在同一匹配區(qū)域內,由于視差不連續(xù)導致匹配精度降低。接著,利用PatchMatch算法和SGM算法相結合的方式,針對n個最佳視差候選完成代價聚合,以此減少代價聚合的視差選擇。
① 給予已校正的圖像給定n個不同的視差隨機值drandom(x,y,n),該值為[dmin,dmax]。
② 使用2次順序相反的空間傳播更新每個像素n的隨機初始視差,第一次傳播采取從左上角到右下角的順序,先為像素點a(x,y)搭建視差候選集sum(d),此集合由drandom(x,y,n)和dreset(a-r,n)組成,dreset(a-r,n)代表a(x,y)在0°、50°、100°和150°路徑上a(x,y)臨近像素更新的n個最優(yōu)視差。剔除sum(d)的重復值后,利用遞歸的方法來計算視差d和各個路徑方位r的代價路徑Lr(a,d):
(10)
① 雙曲線擬合視差選擇
為了確保獲取的道路行人信息符合現(xiàn)實[21],在此階段選用拋物線擬合的算法,此算法的實質是由目前視差值的臨近視差組成一條拋物線,亞像素級視差則是拋物線的最低點。
② 視差優(yōu)化
在視差優(yōu)化階段,采用左右一致性檢測、高斯濾波對過程優(yōu)化視差。高斯濾波是為了圖像平滑,防止圖像鋸齒的產(chǎn)生:
Is+1=G*D*Is,
(11)
式中:G為高斯濾波,D為下采樣,方法為選取當前尺度圖像偶數(shù)行列像素點;Is為當前尺度圖像,Is+1為高斯采樣圖像。
為了更好地評估改進后的半全局立體匹配算法,檢驗改進后算法在弱紋理及無紋理區(qū)域的檢測準確性,選用middlebury樣本庫中不同紋理的圖像,分別使用SGM、PatchMatch、AD-Census[22]和PMSGM[23]進行對比實驗。不同匹配算法進成的視差圖如圖5所示,匹配誤差大于1的區(qū)域用黑點標記。通過實驗可證,本文算法在弱紋理及無紋理區(qū)域有著更好的匹配精度。
圖5 不同匹配算法生成的視差圖Fig.5 Parallax generated by different matching algorithms
為了更好地驗證本文算法的有效性,選擇10組視差圖進行算法的對比,其中包括弱紋理圖像Bowling2、Flowerpots,重復紋理圖像Cloth2和Wood2。從表3可以看出,本文算法誤匹配率僅為1.97%,優(yōu)于其他立體匹配算法。
表3 不同半全局立體算法在非遮擋區(qū)域的誤匹配率Tab.3 Mismatch rates of different semi-global stereo algorithms in non-occluded areas
通過middlebury樣本庫的實驗對比,并不能真實反映本文的立體匹配算法的有效性,因此,需要采集現(xiàn)實場景下的行人圖像進行對比實驗。
實驗選用的對比算法為SGM算法和PatchMatch算法,因為本文的立體匹配算法是基于上述二者的改進,需要使用同一場景下的行人圖像進行實驗對比,進一步體現(xiàn)本文算法的有效性。
對比實驗效果如圖6所示,圖6(a)為現(xiàn)實場景下的行人圖像原圖,圖6(b)為使用SGM算法立體匹配后的深度圖,圖6(c)為PatchMatch算法立體匹配后的深度圖,圖6(d)為本文立體匹配算法后的深度圖。
圖6 現(xiàn)實場景下的對比實驗Fig.6 Comparative experiment in a real scene
對原圖進行3種算法的立體匹配之后可以看出,相比于SGM算法和PatchMatch算法,本文算法生成的深度圖對于行人輪廓的還原效果更佳,能清晰地觀察到行人的輪廓與姿態(tài),且對圖像中的反光區(qū)域有著更好的處理效果。
進一步分析對比實驗結果,針對算法時效性的考量,PatchMatch算法的處理時間優(yōu)于SGM算法,本文算法在生成深度圖效果更佳的基礎上,處理時間比PatchMatch算法縮短了8.9%。
通過對現(xiàn)實場景下的實驗分析,證明了本文算法的有效性。
使用改進后的半全局立體匹配算法生成視差圖確定ROI后,利用優(yōu)化后的SVM算法完成對車道行人的提取。HOG特征[24]提取過程中幾乎不會受到大范圍光照的影響,車道行人在移動或是姿勢發(fā)生變化時,HOG仍能有效地提取特征信息,但HOG提取的特征中維度較高,會識別大量的非行人信息,因此本文選用PCA對HOG算法進行降低維度的處理。
① 輸入u個樣本u×v的矩陣,其中,v為3 800,
(12)
對此樣本進行預處理,計算每一列的均值:
(13)
式中:g取值[1,u]。
② 使用矩陣中每列的值減去均值,獲得含零的樣本矩陣X,對此求矩陣的協(xié)方差并求協(xié)方差矩陣的特征向量和特征值:
(14)
AθS=λSθS,
(15)
式中:A為協(xié)方差矩陣,λS為特征值,θS為特征向量。
③ 最后將v維矩陣降到k維(u>k),并將λS由大到小排列,最終輸出降維后的HOG特征:
X′=XSv×k,
(16)
式中:X′為降維后的樣本,Sv×k為前k個特征向量組成的矩陣。
④ 對輸入圖像利用Gamma算法進行顏色歸一。
⑤ 計算包含方向和大小的梯度信息。
⑥ 統(tǒng)計梯度直方圖。
⑦ 串聯(lián)特征描述子,輸入特征信息。
3.2.1 線性可分
將分開的樣本矩陣超平面敘述為式(17),并在此基礎上求最優(yōu)解為式(18),其約束條件為式(19):
式中:b為偏移向量,當樣本中包含行人頭肩信息時,β=1,當樣本中不包含行人頭肩信息時β=-1。
針對式(18)選用拉格朗日方法進行優(yōu)化得:
(20)
式中:α為拉格朗日系數(shù)。對X′和b求導并置零,將結果帶入式(20),若最優(yōu)解存在,則可得分類函數(shù)為:
式中:
(22)
3.2.2 線性不可分
針對線性不可分的問題,選取核函數(shù)為K(x·xj),此時的分類函數(shù)可寫為:
(23)
行人檢測算法的流程如圖7所示。本文對比實驗在Intel i7-7700CPU@3.60 GHz,內存16 GB,操作系統(tǒng)Windows 10,顯卡英偉達GTX1060的電腦上搭配實驗環(huán)境。使用OpenCV軟件編寫行人檢測系統(tǒng)。車前行人樣本圖庫選擇不同場景下的道路行人圖片建立。圖庫中包含完整行人樣本2 000張,不包含行人肩部以上圖片7 000張,將2種樣本統(tǒng)一到尺寸大小為64 pixel×128 pixel。首先利用降維的HOG對樣本庫進行行人特征采集,接著將特征樣本輸入SVM分類器進行訓練,得到訓練好的SVM分類器,最后使用改進后的立體匹配算法進行行人檢測,檢查是否能夠獲得精確的行人信息,如果未達到要求,重新訓練SVM分類器,檢測行人信息,并將完整的行人信息框選出來。
圖7 行人檢測系統(tǒng)整體算法流程Fig.7 Overall algorithm flowchart of pedestrian detection system
本文在對于提取ROI的立體匹配算法有了較大的改進,并在樣本學習階段使用了降維的HOG特征提取,大大減少了背景冗雜信息的提取,從而進一步提高了檢測精度和時效性。
為了驗證本文算法的有效性,選取傳統(tǒng)的HOG算法、改進的Adaboost結合幀間差分算法[25]、改進的HOG融合SVM算法[26]和多步態(tài)SVM算法[27]。對比實驗選用樣圖如圖8所示。
圖8 各算法行人檢測的效果Fig.8 Rendering of pedestrian detection of each algorithm
本文算法相比于HOG算法和改進的Adaboost結合幀間差分算法,在行人檢測的準確率上有著較大幅度的提高,對于緊密人群有著更高的識別率,且相比于上述2種算法,本文算法的時效性有了較大的提升;本文算法相比于改進的HOG融合SVM算法和多步態(tài)SVM算法,在確保行人檢測時間與上述算法無較大差異的前提下,在行人攜帶大物件或行人被與衣物相同顏色障礙物遮擋時,有著更優(yōu)的識別效果。
實驗結果可知,當車前道路行人較少時,每張圖片的平均檢測時間為18~25 ms;當車前道路行人較多時,每張圖片的平均檢測時間為75~82 ms,能夠基本達到車前行人檢測的時效性要求。在行人動作較小、未拿大件物品時,檢測正確率達到97%,而經(jīng)典的HOG算法檢測時效性差,文獻[25]的方法雖然相比于HOG算法檢測精度和時效性有了一定的提高,但仍需進一步改進;文獻[26-27]的方法相比于前2種算法,在行人檢測的識別率上有了大幅的提升,但是在行人攜帶大件物品或是被與衣物相同顏色障礙物遮擋的情況下,行人的檢測識別率仍需進一步改進。
為了進一步證明本文算法的有效性和魯棒性,實驗選用600張行人待檢測圖片進行3種算法的對比實驗,其中包含霧霾等惡劣天氣的道路行人圖片,如圖9~圖11所示,選用3幅霧天圖像進行展示,驗證本文算法的魯棒性。
圖9 魯棒性效果驗證圖1Fig.9 Robustness effect verification of figure 1
圖10 魯棒性效果驗證圖2Fig.10 Robustness effect verification of figure 2
圖11 魯棒性效果驗證圖3Fig.11 Robustness effect verification of figure 3
行人檢測算法結果比較如表4所示。
表4 行人檢測算法結果比較Tab.4 Comparison of pedestrian detection algorithm results
本系統(tǒng)適用于車輛起步階段或是行車中的車前行人檢測,系統(tǒng)中的SVM樣本包含的行人場景較為廣泛,所以分類器的魯棒性較強,在惡劣氣候影響光照、行人動作過大和障礙物遮擋行人的情況下,檢測精度和檢測時間都能基本達到要求。
實驗表明,本文提出的改進后立體匹配和優(yōu)化SVM算法針對車前行人有著較好的檢測效果,相比于實驗對比的其他幾類算法有著更高的檢測精度和更優(yōu)的檢測效率且魯棒性較好,對于車前復雜場景下的行人可以更為有效的檢測。本文算法可以實現(xiàn)行人的跟蹤與定位,適用于針對道路行車安全以及汽車安全的輔助駕駛系統(tǒng)。在下一步的研究中,將著重于檢測不同場景下的行人,進一步提高算法適用性,同時增強算法的實用度。