陳攀
(四川大學(xué)計算機(jī)學(xué)院,成都 610065)
隨著汽車保有量的增加及無人駕駛技術(shù)的發(fā)展,前車檢測及測距技術(shù)的研究,并廣泛應(yīng)用于汽車防撞系統(tǒng)中。當(dāng)今常用的車間測速方法有毫米波雷達(dá)測距、超聲波測距、激光雷達(dá)測距、紅外線測距及計算機(jī)視覺等。其中,超聲波測距實現(xiàn)簡單、成本較低,所以應(yīng)用較廣,但由于多普勒效應(yīng),這種方法無法測量正在高速行駛車輛下的車距,且測距范圍很低,所以其一般應(yīng)用在汽車的倒車防撞系統(tǒng)上;毫米波雷達(dá)測距系統(tǒng)測量精度高、范圍長,不易受外界條件干擾,但其也易受其他通信設(shè)施的電磁干擾,而且毫米波雷達(dá)測距系統(tǒng)成本較高,對于一般的駕駛輔助系統(tǒng)來說很難被廣泛使用;激光雷達(dá)測距系統(tǒng)可以快速、精確地獲得目標(biāo)位置和距離信息,但是易受環(huán)境干擾且實現(xiàn)成本高,很難用在車載駕駛輔助系統(tǒng)上。相較于以上各種方法,利用計算機(jī)視覺原理實現(xiàn)的測距系統(tǒng)能夠獲得圖像信息,可以對目標(biāo)進(jìn)行檢測和識別,還可以根據(jù)不同的場景實現(xiàn)各種不同的功能,如交通標(biāo)志牌檢測、車道線檢測等。這種方法也有其局限性,易受環(huán)境干擾,在雨雪、大霧等天氣下魯棒性較差,其精度和性能也取決于實現(xiàn)的算法,但因其上述及成本低廉等優(yōu)點,可以廣泛應(yīng)用于車載輔助系統(tǒng)上。一般,利用計算機(jī)視覺原理測距系統(tǒng)分為單目視覺測距系統(tǒng)和雙目視覺測距系統(tǒng)(立體視覺測距系統(tǒng))。目前國內(nèi)外都開展了基于視覺探測的汽車主動防護(hù)系統(tǒng)的相關(guān)研究工作,豐田汽車發(fā)布了雷克薩斯“LS460”配備的安全技術(shù),采用立體攝像頭及米波雷達(dá)檢測障礙物,實現(xiàn)車輛和行人的檢測[1]。
系統(tǒng)的攝像元件主要用兩塊水平放置的攝像頭組成,可以同時采集左右兩幅立體圖像。系統(tǒng)的總體流程如圖1所示。先將相機(jī)采集到的圖像進(jìn)行灰度化處理;根據(jù)車載相機(jī)的角度截取感興趣區(qū)域(ROI),通過截取ROI來消除天空及路邊等非相關(guān)物體的干擾;車輛檢測通過訓(xùn)練好的AdaBoost分類器,用矩形方框標(biāo)記檢測到的車輛;提出一種基于雙目系統(tǒng)的交叉檢測的方法,通過左圖的檢測結(jié)果去檢測和匹配右圖來保證兩幅圖像上檢測結(jié)果的準(zhǔn)確性和一致性;一旦檢測到有效車輛,利用雙目視覺原理對車輛進(jìn)行測距,獲得前方車輛的距離信息。
圖1 系統(tǒng)流程圖
車輛分類器使用Haar-like[2](類Haar)特征和Ada?Boost分類器,簡稱Haar分類器。類Haar特征值均以矩形框為單位,通過形框內(nèi)所有黑色區(qū)域的和減去矩形框內(nèi)所有白色區(qū)域的和即可計算得到,目前常用的矩形特征有15種[3],主要由以下四類:邊緣特征、線性特征、中心-環(huán)繞特征及特定方向特征。
類Haar特征可以描述該矩形圖像區(qū)域內(nèi)的灰度變化情況。在目標(biāo)檢測時我們需要有一個子窗口在待檢測的圖片窗口中不斷的移位滑動,子窗口每到一個位置,就會計算出該區(qū)域的類Haar特征,然后用我們訓(xùn)練好的級聯(lián)分類器對該特征進(jìn)行篩選,一旦該特征通過了所有強(qiáng)分類器的篩選,則判定該區(qū)域為目標(biāo)。類Haar特征最初由Papageorgiou提出,后來被Paul Vi?ola和Michael Jones改進(jìn),用來實現(xiàn)人臉檢測。類Haar特征適合于用來檢測“基本剛性的”物體,例如人臉、車輛等,此類物體表面包含了豐富的矩形特征。類Haar特征如圖2所示,本文中使用了垂直特征。
圖2 類Haar特征
本文使用AdaBoost進(jìn)行訓(xùn)練,一共使用了8873張汽車的圖片作為正樣本,使用了16676張負(fù)樣本圖片,示例如圖3、圖4。
圖3 正樣本示例
圖4 負(fù)樣本示例
在類Haar特征值的計算中,需要進(jìn)行大量的區(qū)域像素值的累加,所以使用積分圖[4]進(jìn)行加速。圖像積分圖中每個點的值是原圖像中該點左上角的所有像素值之和。也就是說,積分圖是一個和圖像尺寸大小相同的矩陣,其每個點的值代表的是圖像中該點左上角像素點值之和。文獻(xiàn)[5]提出了一種利用遞推關(guān)系來計算積分圖的算法:
其中,c(x,y)為圖像在列方向上求和,初始時 c(x,-1)=ii(-1,y)=0。
使用積分圖可以加速圖像矩形區(qū)域內(nèi)像素值累加操作,原理如下:圖像中矩形區(qū)域[x0,x1] × [y0,y1] 內(nèi)像素和可以通過積分圖中II4+II1-II2-II3的計算得來,如圖5所示。
圖5 積分圖
由于我們使用的Haar特征+AdaBoost分類器會有一定的誤檢率,效果如圖6、圖7所示??梢钥闯觯瑱z測結(jié)果中出現(xiàn)了相當(dāng)高的誤檢率。
圖6 左圖檢測結(jié)果
圖7 右圖檢測結(jié)果
由此導(dǎo)致最嚴(yán)重的問題就是左右圖像檢測結(jié)果的一致性問題。系統(tǒng)或者成功地檢測出兩幅圖像中的同一目標(biāo)車輛,或者同時漏檢同一目標(biāo)車輛。除此之外,則會導(dǎo)致距離測量的結(jié)果出現(xiàn)嚴(yán)重偏差。因此,提出了一種基于雙目系統(tǒng)的交叉檢測的策略以保證系統(tǒng)檢測結(jié)果的一致性。策略如下:
(1)對于在左圖中檢測到每個目標(biāo)車輛,根據(jù)左圖中目標(biāo)車輛的大小和位置在右圖中創(chuàng)建感興趣區(qū)域(ROI)。
(2)當(dāng)右側(cè)圖像的ROI建立后,在圖像中搜索確定此ROI中是否存在假定的車輛。
(3)如果上述ROI中只有一輛車輛,則認(rèn)為它是左側(cè)圖像中檢測到的車輛。然后從搜索候選者中移除該車輛。如果不止一個候選車輛符合上述條件,我們會根據(jù)假定的車輛的大小和坐標(biāo)選擇最佳匹配。
(4)如果上述ROI中未發(fā)現(xiàn)車輛,降低分類器的閾值來對這個區(qū)域進(jìn)行檢測。當(dāng)閾值降低,正確識別率降低,誤檢率升高。如果ROI內(nèi)有車輛,較低的閾值更容易識別出車輛;如果左邊的結(jié)果是假的(分類器誤將特定視角的某些東西認(rèn)定為車輛),即使是較低閾值的分類器也無法從另一個角度檢測到。
●如果檢測結(jié)果為正,則將右側(cè)和左側(cè)的新結(jié)果將標(biāo)記為同一車輛。如果找到多個結(jié)果,我們繼續(xù)根據(jù)假定的車輛的大小和坐標(biāo)選擇最佳匹配;
●如果檢測結(jié)果為陰,我們將左圖像的結(jié)果視為誤報,并將其從結(jié)果集中刪除。
(5)在左圖中搜索完所有假定的車輛之后,對于右圖,我們需要從左圖中找到其匹配結(jié)果。由于之前已經(jīng)先前搜索了所有左側(cè)結(jié)果,因此左圖中不存在任何可用的候選車輛,所以以較低閾值繼續(xù)前幾步。
直線方程(7)和(8)構(gòu)成對參數(shù)xA的線性約束。將點集SFA和SCD內(nèi)點的坐標(biāo)轉(zhuǎn)換成新坐標(biāo)系下的坐標(biāo),為簡化符號,在不引起歧義的情況下,這里仍用(xP,yP)表示點集內(nèi)的P點在新坐標(biāo)系下的坐標(biāo)。
通過交叉再檢測過程,進(jìn)一步降低了誤檢率,效果如圖8、圖9所示??梢钥闯?,誤檢率有很明顯的提高。
圖8 左圖交叉再檢測結(jié)果
圖9 右圖交叉再檢測結(jié)果
人對眼前的物體的立體感來源于物體在人雙眼中成像的視差,通過雙目產(chǎn)生的視差,人可以感知實體的三維信息以及到實體的距離信息。雙目視覺測距利用兩臺攝像機(jī)模擬人眼的成像原理,拍攝兩幅圖像經(jīng)過圖像校正、匹配等步驟可以計算出圖像像素點的視差信息,從而恢復(fù)出物體的深度信息。圖10顯示了雙目視覺原理。Pl和Pr分別為左右相機(jī)的成像平面,我們可以看到,原始雙目系統(tǒng)的成像平面都不是完全的行對準(zhǔn),不能直接計算視差,要先對圖像進(jìn)行立體校正,也叫做極線校正。立體校正可以對左右圖像進(jìn)行重投影,使它們精確地落在同一平面上。
圖10 雙目視覺原理圖
圖11顯示了經(jīng)立體校正后的雙目視覺原理,這時可以直接計算得到視差。ol和or分別為左右相機(jī)的光心,ol與or的連線T稱為基線,用來表示左右相機(jī)光心之間的距離,為定值,xl與xr分別表示實體點 p在兩相機(jī)中的成像,視差d=xl-xr,Z表示實體點 p到基線的距離,f為相機(jī)的焦距。由數(shù)學(xué)上三角形的相似關(guān)系可得出視差d與深度Z的數(shù)學(xué)關(guān)系表達(dá)式
圖11 立體校正后的雙目視覺原理圖
在車輛識別中,在一對立體圖像中找到相似部分的能力是至關(guān)重要的問題[6]。圖像立體匹配的目的是:在右圖中找到左圖中同一極線上指定像素點的最佳匹配。立體匹配的基本原理為:計算匹配代價函數(shù),搜索使得匹配代價函數(shù)值最小化的位置,確定為最佳匹配點。所以,代價函數(shù)的選取是立體匹配算法中至關(guān)重要的一環(huán)。常見的一些匹配代價函數(shù)如:SAD(Sum of Absolute Difference,灰度差絕對值之和)、SSD(Sum of Squared Difference,灰度差平方值之和)、MAD(Mean Absolute Difference,平均灰度差絕對值)以及ZNCC(Zero-mean Normalized Cross-Correlation,零均值歸一化互相關(guān))等。
采用了一種由粗到精的匹配策略:先采用跳躍式步長利用較大的窗口對圖像進(jìn)行抽樣式匹配計算出粗略的視差值,隨后,將上一步匹配得到視差值作為先驗知識,在對像素點逐個匹配時可以降低匹配的搜索范圍,在精度和時間性能上都有所提升。主要步驟如下:
粗匹配階段:此階段在計算代價函數(shù)時使用大窗口以減少錯誤匹配。在左相機(jī)采集到的圖像上設(shè)置跳躍步長,從起始像素點在右圖對應(yīng)行上尋找匹配點,得到由原圖抽樣匹配后的粗匹配視差圖,再采用左右一致性檢查(LRC)[7]提高匹配精度。左右一致性檢查即:在完成從左到右的匹配后,再進(jìn)行從右到左的匹配,檢查兩者匹配結(jié)果的一致性;若匹配結(jié)果一致則接受,反之,該點視差值則為空值。對于空值,采用雙線性插值填充。
我們感興趣的是前方車輛車距,因此在計算視差時只關(guān)心被交叉檢測到的車輛區(qū)域,只針對這一區(qū)域進(jìn)行立體匹配。
在得到圖像感興趣視差圖后,可根據(jù)前述視差和深度的計算公式得到深度圖,我們還需要一部分工作來推導(dǎo)出前車的距離信息。我們使用直方圖來表示深度圖,直方圖橫軸由相應(yīng)點的深度組成,縱軸由對應(yīng)深度的像素點個數(shù)組成。取直方圖峰值前三做加權(quán)平均,即,其中n代表為直方圖中峰值為前n,dn代表峰值前n的深度值,distance則為前方車輛的車距信息。
本文所使用的攝像機(jī)為3D雙目攝像機(jī),由兩只攝像頭組成,集成于同一塊電路板上,如圖12所示。它可以同時采集左右兩幅圖像,圖像的分辨率為640×480。本文實驗平臺的硬件設(shè)置為Intel Core i5-6400 2.70GHz,內(nèi)存為8.00GB,軟件配置為Windows 10操作系統(tǒng)、Visual Studio 2015以及OpenCV 3.2.4,編程語言采用C++。
圖12 3D雙目攝像機(jī)
由于在真實場景下我們無法獲得準(zhǔn)確的前車車距,所以我們在設(shè)置場景下進(jìn)行實驗。選取10-100m的10個間距進(jìn)行試驗,對圖所示車輛在不同距離進(jìn)行了實驗測量。在進(jìn)行立體匹配時,粗匹配階段的匹配窗口大小設(shè)置為20×20,精匹配階段的匹配窗口大小設(shè)置為5×5。實驗結(jié)果如表1所示。
表1 車距測量結(jié)果
本文基于雙目視覺原理,利用機(jī)器學(xué)習(xí)進(jìn)行車輛檢測,通過雙目系統(tǒng)進(jìn)行交叉再檢測,并采用一種由粗到精的匹配策略,在消除車輛誤檢、提高視差精度兩方面有了很大的提升。實驗結(jié)果表明,本文提出的方法具有較高的測距精度。當(dāng)然,該方法依然有所不足,現(xiàn)有方法車距越遠(yuǎn),測距誤差越大,這也是今后繼續(xù)努力提升的方向。