李耀南,周 星,夏修浩
(寧夏大學(xué) 機(jī)械工程學(xué)院,銀川 750021)
目前,汽車(chē)普遍安裝倒車(chē)影像系統(tǒng),車(chē)前影像系統(tǒng)尚未大面積運(yùn)用。倒車(chē)軌跡的確定是通過(guò)計(jì)算汽車(chē)的運(yùn)動(dòng)學(xué)方程,求解其運(yùn)動(dòng)軌跡方程,根據(jù)相對(duì)應(yīng)的運(yùn)動(dòng)學(xué)模型,對(duì)攝像頭采集到的數(shù)據(jù)作處理變換,最終得到可整合在顯示屏上的倒車(chē)軌跡。文獻(xiàn)[1]基于最小二乘法的曲線(xiàn)擬合理論,實(shí)現(xiàn)了對(duì)倒車(chē)軌跡的預(yù)測(cè),但是由于其采樣點(diǎn)數(shù)少,對(duì)標(biāo)定軌跡的有效信息利用也就越少,擬合的軌跡方程的精確度低,且其運(yùn)行速度較低。文獻(xiàn)[2]利用攝像機(jī)標(biāo)定理論,推導(dǎo)出實(shí)時(shí)倒車(chē)軌跡方程算法,通過(guò)讀取倒車(chē)運(yùn)動(dòng)車(chē)輛方向盤(pán)的旋轉(zhuǎn)角度值,可將在世界坐標(biāo)系下推導(dǎo)的倒車(chē)軌跡算法經(jīng)過(guò)攝像機(jī)坐標(biāo)系、成像坐標(biāo)系和圖像坐標(biāo)系的坐標(biāo)變換得到倒車(chē)預(yù)測(cè)軌跡,但是在攝像機(jī)標(biāo)定算法理論上需要一個(gè)純二維標(biāo)定板,而標(biāo)定紙的取材不同往往會(huì)帶來(lái)誤差,而坐標(biāo)之間的多次變換,運(yùn)算速度低。文獻(xiàn)[3]提出的實(shí)時(shí)預(yù)測(cè)倒車(chē)軌跡線(xiàn)的計(jì)算是通過(guò)將CAN總線(xiàn)上的角度傳感器的實(shí)時(shí)信息作為輸入,用實(shí)時(shí)倒車(chē)軌跡算法計(jì)算出來(lái),這種計(jì)算的運(yùn)算速度較慢。文獻(xiàn)[4]提出了一種在特征點(diǎn)匹配的基礎(chǔ)上,根據(jù)測(cè)距原理對(duì)特征點(diǎn)進(jìn)行了深度信息恢復(fù),完成測(cè)距目的,根據(jù)車(chē)輛運(yùn)動(dòng)模型,推導(dǎo)出倒車(chē)運(yùn)動(dòng)軌跡方程,并且軌跡方程高度參數(shù)化,方便了平臺(tái)的遷移。文獻(xiàn)[5]提出一種嵌入式汽車(chē)?guó)B瞰全景圖拼接算法,可獲得近距離道路環(huán)境的圖像,更好的消除了盲區(qū),提高行駛的安全性,但是由于其價(jià)格昂貴,普通汽車(chē)消費(fèi)者無(wú)法承擔(dān)。
受以上研究啟發(fā),本文提出了一種基于SVD(Singular Value Decomposition)算法的車(chē)前影像軌跡提取方法。軌跡線(xiàn)由動(dòng)態(tài)輔助線(xiàn)和靜態(tài)輔助線(xiàn)構(gòu)成,其中動(dòng)態(tài)輔助線(xiàn)與車(chē)輛行車(chē)軌跡保持一致,輔助司機(jī)判斷車(chē)輛在道路中的行駛情況。靜態(tài)輔助線(xiàn)為安全預(yù)警線(xiàn),它反映車(chē)輛在道路中的位置,反饋給司機(jī)直觀的圖像顯示,避免車(chē)輛剮蹭并減少在狹窄路況行駛時(shí)司機(jī)的誤判幾率,通過(guò)仿真實(shí)驗(yàn)及誤差分析,基于SVD算法對(duì)車(chē)前影像軌跡的提取可靠性較高,效果良好。
按照阿克曼轉(zhuǎn)向定律[7],得到車(chē)前影像原始圖像坐標(biāo)點(diǎn),通過(guò)SVD(Singular Value Decomposition)算法求出透視變化矩陣,將運(yùn)動(dòng)軌跡經(jīng)透視變化后得到車(chē)前影像軌跡的采樣點(diǎn)。根據(jù)得到的采樣點(diǎn),繪制靜態(tài)和動(dòng)態(tài)輔助線(xiàn)。對(duì)陀螺儀轉(zhuǎn)向角進(jìn)行設(shè)置,使動(dòng)態(tài)輔助線(xiàn)能夠較為準(zhǔn)確的與陀螺儀采集的數(shù)據(jù)做出相應(yīng)的軌跡變化,進(jìn)而預(yù)測(cè)車(chē)輛行駛時(shí)的運(yùn)動(dòng)軌跡。微處理器把攝像頭實(shí)時(shí)傳輸?shù)囊曨l經(jīng)過(guò)處理后,將靜態(tài)輔助線(xiàn)和動(dòng)態(tài)輔助線(xiàn)與攝像頭實(shí)時(shí)視頻疊加后在人機(jī)界面中呈現(xiàn)。具體方法設(shè)計(jì)如圖1所示。
透視變換(Perspective Transformation)是將一個(gè)圖像經(jīng)過(guò)投影變換后,得到一個(gè)新的視平面。透視矩陣的一般表達(dá)形式[8]如式(1)所示。
圖1 車(chē)前影像軌跡提取方法
將該透視變換矩陣進(jìn)行處理后得到透視變換矩陣如下:
A2= [m′2m′5]表示圖像的平移,A3=[m′6m′7]T表示對(duì)圖像進(jìn)行透視變換。
根據(jù)該透視變換的原理運(yùn)用如下公式對(duì)運(yùn)動(dòng)軌跡點(diǎn)進(jìn)行透視變換:
即:
其中為(u′,v′,z′)齊次坐標(biāo)[9],原始圖像坐標(biāo)為(x,y),其齊次坐標(biāo)為(x,y,1)。變換后圖像的圖像坐標(biāo)為(u,v),[m′6,m′7]T表示透視變換矩陣的透視參數(shù)[10],m′0-m′5為該透視變換矩陣的畸變參數(shù)[11]。這里所述的原始圖像坐標(biāo)指的是經(jīng)過(guò)阿克曼轉(zhuǎn)向定律得到的車(chē)前影像運(yùn)動(dòng)軌跡點(diǎn),而變換后的圖像坐標(biāo)即為所求的車(chē)前影像軌跡采樣點(diǎn)。
SVD(奇異值分解)算法的物理意義是:能將任何形式的矩陣用幾個(gè)子矩陣相乘表示,而這幾個(gè)子矩陣皆比原矩陣簡(jiǎn)單,能起到降低維數(shù)的作用,其定義[12]如下:
其中Σ是非負(fù)對(duì)角矩陣,且∑=diag(σ1,σ2,…,σn),σ1≥σ2≥…≥σn≥0,是S的非零奇異值。
通過(guò)SVD算法求解對(duì)應(yīng)的透視變換矩陣,其在本文中具體方法如圖2所示。
步驟1:任意構(gòu)建出一個(gè)透視變換矩陣作為基本變換。
步驟2:判斷所構(gòu)建出的矩陣是否滿(mǎn)足特定功能,如構(gòu)建出的矩陣能否實(shí)現(xiàn)圖形變換的功能,即平移、旋轉(zhuǎn)、比例變換,以及實(shí)現(xiàn)透視投影變換等。主要是判斷獨(dú)立透視參數(shù)的數(shù)量,多于或者少于應(yīng)有的數(shù)量,會(huì)使繪制的輔助線(xiàn)雜亂無(wú)章或者縮成一個(gè)點(diǎn),違背透視變換矩陣的原理,應(yīng)該重新構(gòu)建。
步驟3:SVD算法求解透視變換矩陣,具體的算法如下:
SVD 算法步驟:
1)首先定義一個(gè)m×n實(shí)矩陣,U為m×m的左奇異矩陣,V為n×n的右奇異矩陣,S奇異值向量。并規(guī)定奇異值在S矩陣的對(duì)角線(xiàn)上,其他值為0。
圖2 SVD算法流程圖
2)對(duì)該實(shí)矩陣進(jìn)行奇異值分解。取n個(gè)奇異值,并對(duì)該n個(gè)奇異值分別進(jìn)行判斷,若σn<1.0E-9d將該奇異值舍棄。
3)輸出U、S、V矩陣。
4)判斷返回值,其大于0則分解成功。若其返回值小于0,則重復(fù)上述步驟。
步驟4:判斷求出的A3中的參數(shù)是否小于零。透視參數(shù)小于零,則能夠增強(qiáng)其透視感,使繪制的輔助線(xiàn)具有層次感。
步驟5:得到透視變換矩陣。
步驟6:結(jié)束。
依據(jù)阿克曼轉(zhuǎn)向定律[7],確定車(chē)前影像運(yùn)動(dòng)軌跡原始坐標(biāo)點(diǎn),本文構(gòu)建全局坐標(biāo)系Xi0Yi和車(chē)輛局部坐標(biāo)系XtMbYt,如圖3所示。
圖3 車(chē)輛局部坐標(biāo)系與全局坐標(biāo)系
Mf為前軸的中點(diǎn)坐標(biāo),Mb為局部坐標(biāo)系原點(diǎn),θ為局部和全局參考系之間的角度差,0′為瞬時(shí)中心點(diǎn),汽車(chē)轉(zhuǎn)向時(shí)繞著該點(diǎn)做圓周滾動(dòng)。且前內(nèi)輪與前外輪轉(zhuǎn)角應(yīng)滿(mǎn)足定義[13]:ctgβ-ctgɑ=K/L式中β表示汽車(chē)前外輪轉(zhuǎn)角,ɑ表示汽車(chē)前內(nèi)輪轉(zhuǎn)角,K表示兩主銷(xiāo)中心距,L表示軸距。在進(jìn)行軌跡點(diǎn)的采取時(shí),本文將這些參數(shù)分別進(jìn)行初始化設(shè)置:內(nèi)輪最大轉(zhuǎn)角ɑ=42°,因?yàn)橐话阕畲笃D(zhuǎn)角大約在(34°-42°)[14],前外輪轉(zhuǎn)角β=40°,要求其轉(zhuǎn)角最大誤差為2°,K/L=0.43,本文以K=1420mm,L=3300mm的汽車(chē)為例。全局坐標(biāo)點(diǎn)與局部坐標(biāo)點(diǎn)之間應(yīng)滿(mǎn)足關(guān)系式[15]:
通過(guò)Matlab R2013a處理后,其采集到的軌跡原始坐標(biāo)如表1所示。
本文對(duì)SVD算法中參數(shù)進(jìn)行了初始化設(shè)置,即m=n=3,表示為一個(gè)3×3的實(shí)矩陣。則奇異值個(gè)數(shù)n=3。
調(diào)用Matlab R2013a中的SVD算法指令求出U、S、V矩陣分別為:
根據(jù)SVD算法原理,即H=USV′,V′是指V的逆矩陣,得到透視變換矩陣H:
將該透視矩陣進(jìn)行變換后可得:
其中該透視變換矩陣中的透視參數(shù)(-0.3288,-0.0365)小于0,該透視變換矩陣能滿(mǎn)足要求。
表1 原始坐標(biāo)點(diǎn)
分別把原始點(diǎn)的坐標(biāo)x和坐標(biāo)y生成一組9×3的矩陣,用該坐標(biāo)矩陣乘以透視變換矩陣H,即可得一組采樣點(diǎn)坐標(biāo),如表2所示。
表2 采樣點(diǎn)坐標(biāo)
續(xù)(表2)
根據(jù)透視變換求解得到的采樣點(diǎn)繪制車(chē)前影像軌跡,如圖4所示,用實(shí)線(xiàn)繪制靜態(tài)輔助直線(xiàn),虛線(xiàn)繪制動(dòng)態(tài)軌跡線(xiàn)。
圖4 車(chē)前影像軌跡線(xiàn)
圖中的1號(hào)線(xiàn)為安全線(xiàn),它向車(chē)輛兩側(cè)各延伸一定的相同的距離,當(dāng)前方的障礙物落在此線(xiàn)以外,車(chē)輛處于絕對(duì)安全的行駛狀態(tài),車(chē)輛可以順利行駛。2號(hào)線(xiàn)是根據(jù)車(chē)輛自身的寬度所繪制的靜態(tài)輔助線(xiàn),當(dāng)障礙物出現(xiàn)在紅線(xiàn)之內(nèi),車(chē)輛不能自由通過(guò)前方的道路,此時(shí)司機(jī)應(yīng)該做出相應(yīng)的調(diào)整。3號(hào)線(xiàn)是動(dòng)態(tài)輔助線(xiàn),它與車(chē)輪的轉(zhuǎn)向角保持一致,能較準(zhǔn)確的預(yù)測(cè)車(chē)輛行駛軌跡。通過(guò)該車(chē)前輔助線(xiàn)進(jìn)行輔助判斷,有助于司機(jī)更好的掌握車(chē)輛在復(fù)雜路況下的行車(chē)位置,降低狹窄路況對(duì)車(chē)輛磨損剮蹭的發(fā)生。
基于SVD算法對(duì)車(chē)前影像軌跡的提取,使得繪制出的靜態(tài)輔助線(xiàn)較為平滑,動(dòng)態(tài)輔助線(xiàn)也較為精確的反應(yīng)出車(chē)輛的偏轉(zhuǎn)角度,同時(shí)能對(duì)車(chē)輛偏轉(zhuǎn)軌跡進(jìn)行較精準(zhǔn)的預(yù)測(cè),抗干擾能力強(qiáng)。
根據(jù)車(chē)前輔助線(xiàn)的生成原理,若使動(dòng)態(tài)輔助線(xiàn)能夠?qū)崟r(shí)預(yù)測(cè)車(chē)前影像的運(yùn)動(dòng)軌跡,需要對(duì)陀螺儀轉(zhuǎn)向角進(jìn)行設(shè)置,將其集成到影像圖中,再經(jīng)過(guò)圖像的實(shí)時(shí)處理,便可準(zhǔn)確的將車(chē)前輔助線(xiàn)顯示在顯示屏。實(shí)時(shí)處理的主要內(nèi)容是處理攝像頭采集到的圖像,實(shí)時(shí)傳輸?shù)饺藱C(jī)界面上,該過(guò)程包括了對(duì)圖像的校正處理,對(duì)靜態(tài)、動(dòng)態(tài)輔助線(xiàn)的集成。
為驗(yàn)證系統(tǒng)的可行性,本文制作小車(chē)模型,選擇微雪Raspberry Pi 3 Model B樹(shù)莓派作為微處理器,開(kāi)發(fā)板運(yùn)算能力滿(mǎn)足畫(huà)線(xiàn)要求。攝像頭型號(hào)為Raspberry Pi Camera OV5647;顯示器型號(hào)為微雪5寸HDMI LCD顯示屏:角度傳感器型號(hào)L3G4200D:其最終呈現(xiàn)在顯示屏上的效果如圖5所示。
圖5 實(shí)際效果圖
實(shí)驗(yàn)結(jié)果:圖中在地面上的兩條黑線(xiàn)為模擬實(shí)際路況所畫(huà),動(dòng)態(tài)輔助線(xiàn)能夠較為準(zhǔn)確的與陀螺儀采集的數(shù)據(jù)做出相應(yīng)的軌跡變化,來(lái)預(yù)測(cè)車(chē)輛前進(jìn)的運(yùn)動(dòng)軌跡。靜態(tài)輔助線(xiàn)也更直觀的表示出車(chē)輛在道路上的行駛位置。
與傳統(tǒng)的倒車(chē)影像不同,該車(chē)前影像能夠幫助司機(jī)在行駛中對(duì)前方路況做出更好的判斷。在狹窄路段,該系統(tǒng)可給予司機(jī)一個(gè)本車(chē)車(chē)寬是否適合通過(guò)前方路況的清晰認(rèn)識(shí)。在轉(zhuǎn)彎路段,動(dòng)態(tài)輔助線(xiàn)可較為準(zhǔn)確的預(yù)測(cè)車(chē)輛偏轉(zhuǎn)角度,司機(jī)做出相應(yīng)的調(diào)整,降低隱患。
為檢驗(yàn)車(chē)前影像軌跡系統(tǒng)的可靠性,本文在PC端進(jìn)行了仿真模擬,由于在PC端進(jìn)行仿真時(shí),無(wú)天氣、能見(jiàn)度、光照、行人、路況等因數(shù)的影響,可近似的認(rèn)為PC端呈現(xiàn)出來(lái)的靜態(tài)與動(dòng)態(tài)輔助線(xiàn)是理想軌跡。通過(guò)小車(chē)模型上呈現(xiàn)的車(chē)前影像軌跡與PC端呈現(xiàn)的理想軌跡進(jìn)行對(duì)比,分析該模擬軌跡的相似率,此相似率是指通過(guò)對(duì)比模擬軌跡與理想軌跡的相似程度。
由于汽車(chē)的前輪最大偏轉(zhuǎn)角因車(chē)型而異,一般最大偏轉(zhuǎn)角大約在(34°-42°)之間。通過(guò)角度傳感器可以快速準(zhǔn)確的測(cè)出前輪的轉(zhuǎn)向角度[16]。本文選取的轉(zhuǎn)向角度值分別是 0°、8°、-8°、15°、-15°、30°、-30°、40°,規(guī)定負(fù)號(hào)表示方向盤(pán)向右偏轉(zhuǎn)。通過(guò)Matlab分別將小車(chē)模型采集的不同偏轉(zhuǎn)角度下的模擬軌跡與理想軌跡進(jìn)行軌跡線(xiàn)提取與細(xì)化處理,如圖6所示,并進(jìn)行相似度對(duì)比。對(duì)比結(jié)果如表3所示。基于文獻(xiàn)[1]中所描述的最小二乘法對(duì)軌跡擬合的相似度如圖7所示。
圖6 誤差分析圖
圖7 兩種軌跡提取方式相似度對(duì)比圖
表3 基于SVD算法的軌跡提取的相似度結(jié)果
通過(guò)對(duì)以上實(shí)驗(yàn)數(shù)據(jù)的對(duì)比分析后發(fā)現(xiàn),基于SVD算法對(duì)車(chē)前影像軌跡的提取比文獻(xiàn)[1]基于最小二乘法擬合出的輔助線(xiàn)準(zhǔn)確度高,且多項(xiàng)式擬合的軌跡,其運(yùn)算量隨擬合精度增高而增大,而本文的方法則無(wú)此弊端。
基于SVD算法提取的模擬軌跡與理想軌跡的相似度結(jié)果在0.90~0.92的原因如下:
1)相機(jī)拍攝照片時(shí)由于拍攝高度不同,拍攝光線(xiàn)的不同都會(huì)使得在對(duì)照片進(jìn)行處理的時(shí)候帶來(lái)誤差。
2)對(duì)照片進(jìn)行細(xì)化處理時(shí),我們只選擇了其中一條動(dòng)態(tài)輔助線(xiàn)進(jìn)行相似度對(duì)比處理。
3)在對(duì)偏轉(zhuǎn)角進(jìn)行選取的時(shí)候,忽略了小車(chē)與地面的摩擦,使得在同一角度下的模擬軌跡與理想軌跡本身就存在了誤差。
本文提出的基于SVD算法對(duì)車(chē)前影像軌跡的提取,能對(duì)動(dòng)態(tài)軌跡實(shí)現(xiàn)較為精確的預(yù)測(cè)。相比于最小二乘法擬合的車(chē)前影像軌跡,該法繪制的軌跡具有更高的可靠性。以一種更加直觀的方式降低司機(jī)對(duì)車(chē)輛能否通過(guò)狹窄路況的誤判。如何將該系統(tǒng)推廣到無(wú)人駕駛技術(shù)中,是進(jìn)一步研究的方向。