国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

車輛行駛中的前方車輛檢測(cè)方法研究

2022-07-07 12:42:34李楊
電子技術(shù)與軟件工程 2022年5期
關(guān)鍵詞:矩形框矩形分類器

李楊

(天津商務(wù)職業(yè)學(xué)院 天津市 300350)

1 前言

對(duì)于自己駕乘的車輛而言,前方馬路上存在著各種各樣的障礙物,最常見的就是前方正常行駛的車輛。如果可以正確、高效的檢測(cè)行駛在前方的車輛,在前方車輛距本車過近時(shí)給駕駛員以提醒,駕駛員采取減速、避讓等措施,這樣可以減少追尾等一系列交通事故。

車輛檢測(cè)的必要性,分析大量交通事故數(shù)據(jù),百分之八十以上的交通事故是由于駕駛員反應(yīng)不及時(shí)引起的。研究車輛安全輔助駕駛技術(shù),進(jìn)而減少車輛交通事故發(fā)生的概率,在車輛行駛中保護(hù)車內(nèi)、外人員生命財(cái)產(chǎn)安全,為車輛提供智能技術(shù)保障迫在眉睫!

2 車輛檢測(cè)

2.1 感興趣區(qū)域設(shè)定

拍攝機(jī)架設(shè)在車輛前面擋風(fēng)玻璃內(nèi)側(cè),出于盲區(qū)等方面的考慮,一般攝像機(jī)會(huì)設(shè)有一定的俯仰角度。拍攝的圖像上部分會(huì)有天空,且本車左前方和右前方的車輛幾乎不會(huì)跟本車發(fā)生碰撞,據(jù)此在本文中設(shè)定感興趣區(qū)域。

為了減小圖像處理的面積且確保前方可能發(fā)生碰撞的車輛均在感興趣區(qū)域內(nèi),本文將圖像從縱向上均分為上、中、下三個(gè)部分,在攝像機(jī)采集圖像時(shí)保證其俯角不超過5°,這樣前方的車輛將成像在圖像的中間部分和下面部分,本文將上部分的圖像全部置黑,下面部分的圖像全保留;本文考慮到采集的圖像會(huì)發(fā)生形變、馬路成像有傾斜角度、馬路在圖像下面部分寬度遠(yuǎn)大于馬路在圖像中間部分的寬度、攝像機(jī)的俯仰角和攝像機(jī)高度、拍攝場(chǎng)景等信息,本文將馬路的傾斜角設(shè)置為30°,這樣確保有可能發(fā)生碰撞的前方車輛均在感興趣區(qū)域內(nèi)。

2.2 基于陰影特征的車輛檢測(cè)

本文根據(jù)車輛下方存在陰影這一特征可將車輛檢測(cè)出來。通常路面上的灰度值分布是連續(xù)的,或者均勻的,但是在陰影區(qū)域灰度值就會(huì)發(fā)生突變,據(jù)此來判斷是否出現(xiàn)車輛。

在檢測(cè)是否有灰度突變行時(shí)是從圖像的下端逐行向上掃描的過程,因?yàn)閳D像上三分之一被完全置黑,所以只需要從圖像下端掃描到圖像下三分之二處即可。理論上,如果某一行的灰度值比其下面行小很多,就認(rèn)為發(fā)生了灰度突變。在實(shí)際中,突變的條件不僅僅是本行灰度平均值比本行下面一行灰度平均值小很多,為了嚴(yán)謹(jǐn)起見,還要比本行下面的第五行、下面的第十行的灰度平均值要小20以上。

2.3 基于AdaBoost算法的車輛檢測(cè)

Adaboost算法正是“三個(gè)臭皮匠賽過諸葛亮”在應(yīng)用中的靈活體現(xiàn)。

2.3.1 AdaBoost算法概述

AdaBoost算法是一種迭代過程,其本質(zhì)是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來,就形成了一個(gè)更強(qiáng)的最終分類器。

下面舉一個(gè)簡(jiǎn)單的例子來看看AdaBoost的實(shí)現(xiàn)過程:圖1為分類之前的原圖,圖中“+”和“-”分別表示兩種類別,每類5個(gè)點(diǎn),總共10個(gè)點(diǎn)。

圖1:分類之前的原圖

第一步進(jìn)行第一次劃分,劃分結(jié)果如圖2所示。

圖2:第一次劃分后得到的結(jié)果

在右圖D中,比較大的“+”是對(duì)該樣本做了加權(quán)處理。也許上面的加權(quán)誤差率ε1,權(quán)重系數(shù)α的由來表示不是很清晰。下面具體算一下:算法最開始給了一個(gè)均勻分布D(如圖1所示),h里總共10個(gè)點(diǎn),所以每個(gè)點(diǎn)的概率是百分之十。經(jīng)過第一次當(dāng)劃分后,其中有三個(gè)點(diǎn)劃分不正確,ε1=(0.1+0.1+0.1)=0.3,而α根據(jù)公式1(公式1是第t個(gè)弱分類器在訓(xùn)練集上的加權(quán)誤差率的計(jì)算)可以計(jì)算為0.42。根據(jù)算法把分錯(cuò)的點(diǎn)權(quán)值增加。完成迭代后,最終實(shí)現(xiàn)AdaBoost算法。

第二步進(jìn)行第二次劃分,劃分結(jié)果如圖3所示。

圖3:第二次劃分結(jié)果

第三步進(jìn)行第三次劃分,劃分結(jié)果如圖4所示。

圖4:第三次劃分結(jié)果

第三次劃分之后得到一個(gè)子分類器h。整合所有子分類器,整合所有分類器結(jié)果如圖5所示。

圖5:整合所有子分類器

從整合所有子分類器的效果得知,簡(jiǎn)單的分類器組合起來能夠取得良好的分類效果。

2.3.2 基于AdaBoost算法的分類器訓(xùn)練

利用AdaBoost算法生成的分類器檢測(cè)前方車輛,主要分為三步:

第一步:創(chuàng)建正負(fù)樣本;

第二步:訓(xùn)練分類器;

第三步:利用訓(xùn)練好的分類器檢測(cè)車輛。

訓(xùn)練樣本分為正樣本和負(fù)樣本,其中正樣本是指包含檢測(cè)目標(biāo)的樣本,即包含車輛的圖像;負(fù)樣本指其他任意不包含目標(biāo)的樣本,即不包含車輛的任意圖像。

首先需要制作正、負(fù)樣本的描述文件。本文中共收集了1198個(gè)正樣本圖像,并將其都放入名為pos_img的文件夾中,打開cmd命令窗口,進(jìn)入pos_img文件夾內(nèi),鍵入命令“dir/b >pos_image.txt”,生成名為pos_image.txt的文本文件。

為了下一步訓(xùn)練分類器,需要標(biāo)出每幅圖像中目標(biāo)的數(shù)量、目標(biāo)在圖像內(nèi)的區(qū)域,為了方便起見將正樣本圖像統(tǒng)一成100*80的大小。用editplus軟件可批處理文件文本的每一行內(nèi)容。

文件每行開始為圖像所在的文件夾名稱,接下來是符號(hào)“/”、圖像名稱,空格后的數(shù)字表示這幅圖像中包含目標(biāo)的數(shù)量,例如1代表本幅圖像中包含1輛車,接下來的四個(gè)數(shù)字代表目標(biāo)在圖像內(nèi)的矩形區(qū)域位置,例如“0 0 100 80”表示汽車在本幅圖像內(nèi)矩形區(qū)域的始末點(diǎn)坐標(biāo)為(0,0),(100,80)。就文本文件的第一行來說,其代表的意思是:文件夾pos_img內(nèi)的圖像0.jpg上包含1輛車,這輛車在圖像內(nèi)可用一個(gè)矩形區(qū)域來表示,若矩形區(qū)域可用對(duì)角線始末點(diǎn)的坐標(biāo)來表示,那么能表示矩形區(qū)域的兩個(gè)點(diǎn)坐標(biāo)為(0,0)和(100,80)。若圖像中包含有2個(gè)目標(biāo),則就需2個(gè)矩形區(qū)域來表示。如第一行改寫為:

pos_img/0.jpg 2 0 0 100 80 101 0 200 80

這就意味著:文件夾pos_img內(nèi)的圖像0.jpg上包含2輛車,這2輛車在圖像內(nèi)可各用兩個(gè)矩形區(qū)域來表示,若矩形區(qū)域可用對(duì)角線始末點(diǎn)的坐標(biāo)來表示,那么能表示其中一個(gè)矩形區(qū)域的兩個(gè)點(diǎn)坐標(biāo)為(0,0)和(100,80),令一個(gè)矩形區(qū)域的兩個(gè)坐標(biāo)為(101,0)和(200,80)。當(dāng)然,在本文中這么寫是不合理的,因?yàn)閳D像只有100*80的大小,根本就不存在點(diǎn)(200,80)。制作描述負(fù)樣本的文本文件相對(duì)簡(jiǎn)單,負(fù)樣本不包含目標(biāo),無需指出目標(biāo)的數(shù)量和在圖像上的位置,只需打開cmd命令窗口,進(jìn)入存放負(fù)樣本的neg_img文件夾內(nèi),敲入命令“dir /b >neg_image.txt”。

接下來需要制作訓(xùn)練分類器所需要的vec文件。執(zhí)行此步驟后在pos_image.txt同一地址中生成pos.vec文件。

最后使用opencv_haartraining.exe文件進(jìn)行訓(xùn)練。在pos.vec目錄下輸入cmd命令“Opcnv_haartraining.exe –data xml–vec pos.vec –bg neg_image.txt –nsplits 1 –sym –w 35 –h 30 –mem 1280”。其中-data為輸出存放xml中間文件的文件夾名稱,中間文件存放在剛剛建立的xml文件夾內(nèi),-nsplits 1表示使用簡(jiǎn)單的stump classfier分類,-sym表示訓(xùn)練的目標(biāo)為垂直對(duì)稱,-mem 1280表示允許使用計(jì)算機(jī)的1280M內(nèi)存,占用的內(nèi)存越大訓(xùn)練越快所需的時(shí)間越短。

2.3.3 分類器測(cè)試

依照上面的方法,本文訓(xùn)練了三個(gè)分類器,為了比較三個(gè)分類器的性能,分別用三個(gè)分類器分別測(cè)試了相同200幅圖像。三個(gè)分類器測(cè)試結(jié)果如表1所示。

表1:三個(gè)分類器測(cè)試結(jié)果

綜合來看,car.xml分類器的性能最優(yōu),為了進(jìn)一步降低誤檢率,本文采用結(jié)合基于車輛尾部紅色特征的排誤檢方法。

2.3.4 基于車尾燈顏色的誤檢排除

由于分類器的不完備性,車輛檢測(cè)的誤檢率高于實(shí)驗(yàn)預(yù)期,可以通過再加一種特征的方法排除誤檢,降低誤檢率。由于車輛尾部的剎車燈為紅色,根據(jù)這一特征,可以排除誤檢。本文認(rèn)為,AdaBoost檢測(cè)的矩形框內(nèi)如果有紅色像素點(diǎn),則認(rèn)為是車輛;如果AdaBoost檢測(cè)的矩形框內(nèi)沒有紅色像素點(diǎn),則認(rèn)為此矩形框內(nèi)沒有車輛,這個(gè)框是AdaBoost的誤檢,給與排除。

2.3.5 合并矩形框

訓(xùn)練好的分類器就可以用來檢測(cè)目標(biāo)了,并利用基于車輛尾燈存在紅色區(qū)域的特征來排除誤檢,但在檢測(cè)的過程中會(huì)出現(xiàn)矩形框重疊的現(xiàn)象,為了解決這一問題,需要做矩形框的合并。合并后的矩形框是包含了原來兩個(gè)矩形的最小外接矩形框。

2.4 實(shí)驗(yàn)結(jié)果與分析

比較上面基于陰影特征的車輛檢測(cè)方法和基于AdaBoost算法的兩種車輛檢測(cè)方法,基于陰影特征的方法對(duì)光照依賴度比較高,如果光照的影響導(dǎo)致陰影特征不明顯,或者距本車最近的陰影不是車輛的陰影而是樹木、建筑物或者行人造成的陰影,將給結(jié)果造成干擾,而且遠(yuǎn)距離的車輛檢測(cè)效果不夠理想。相比較之下,基于AdaBoost算法的車輛檢測(cè)對(duì)環(huán)境依賴度不高,即使天氣情況不好也可以準(zhǔn)確地檢測(cè)出車輛。

3 結(jié)束語

本文運(yùn)用了兩種方法檢測(cè)前方的車輛。第一種根據(jù)公路上陰影特征來檢測(cè)前方車輛,在感興趣區(qū)域內(nèi)對(duì)圖像灰度化,計(jì)算圖像每行的灰度平均值,若其中某一行的灰度值發(fā)生了突變,就認(rèn)為這個(gè)位置有車輛存在。實(shí)際路況下,馬路上不單有車輛陰影,還存在行人、樹木、高大建筑物、指示牌等的陰影,單純利用陰影檢測(cè)車輛,誤檢率太高。接著本文嘗試第二種車輛檢測(cè)方法,基于AdaBoost的車輛檢測(cè),AdaBoost算法對(duì)光照以及其他路況信息依賴性小,魯棒性好,但誤檢率高。為了降低算法的誤檢率,提出了基于車輛尾部紅色區(qū)域的誤檢排除算法,根據(jù)車輛尾部的剎車燈是紅色這一特征,判定AdaBoost檢測(cè)到的矩形框里面是否包含車輛,對(duì)沒有紅色分量的矩形框予以排除。若矩形框有重疊部分,則通過求重疊矩形框最小外接矩形的方式合并矩形框。

基于AdaBoost算法的車輛檢測(cè)率可達(dá)到98.5%,誤檢率不足3%,檢測(cè)每幀圖像需要40ms,每秒鐘可檢測(cè)25幀圖像,實(shí)時(shí)性也滿足系統(tǒng)需求。

猜你喜歡
矩形框矩形分類器
兩矩形上的全偏差
多模態(tài)卷積神經(jīng)網(wǎng)絡(luò)的物體抓取檢測(cè)
化歸矩形證直角
一種汽車式起重機(jī)防傾翻方法的研究
BP-GA光照分類器在車道線識(shí)別中的應(yīng)用
從矩形內(nèi)一點(diǎn)說起
加權(quán)空-譜與最近鄰分類器相結(jié)合的高光譜圖像分類
結(jié)合模糊(C+P)均值聚類和SP-V-支持向量機(jī)的TSK分類器
PowerPoint 2013圖片裁剪技巧兩則
基于LLE降維和BP_Adaboost分類器的GIS局部放電模式識(shí)別
西昌市| 鄢陵县| 澄迈县| 屏山县| 河池市| 徐州市| 府谷县| 桐柏县| 永昌县| 鄂州市| 铁力市| 安陆市| 海南省| 平乡县| 舟山市| 竹山县| 昭觉县| 嘉黎县| 襄汾县| 信丰县| 进贤县| 明水县| 石柱| 巧家县| 新宁县| 洪湖市| 芜湖县| 尚义县| 河池市| 涡阳县| 灵丘县| 六盘水市| 郸城县| 民和| 南城县| 忻州市| 临洮县| 衡水市| 富川| 简阳市| 剑阁县|