王焱焱,胡 貴,梁樹宇,李達(dá)明
1(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)
2(阿波羅智能技術(shù)(北京)有限公司,北京 100193)
近年來,隨著國家經(jīng)濟(jì)與科學(xué)技術(shù)的不斷發(fā)展,人們物質(zhì)生活水平不斷提升的同時(shí),我國的汽車相關(guān)行業(yè)也在蓬勃發(fā)展.汽車普及給人們帶來便利的同時(shí),也產(chǎn)生了交通安全問題.根據(jù)國家統(tǒng)計(jì)局最近數(shù)據(jù)顯示,截至2020年末,共計(jì)發(fā)生24.47 萬起交通事故,造成6.17 萬人死亡和25.07 萬人受傷,經(jīng)濟(jì)損失達(dá)到13.136 1億元[1].很多交通事故的發(fā)生,并不是因?yàn)轳{駛員駕駛技術(shù)不過關(guān).汽車盲區(qū)使得駕駛員無法準(zhǔn)確了解到汽車周圍環(huán)境.汽車視野盲區(qū)示意圖[2],如圖1 所示.有調(diào)查顯示,由汽車視野盲區(qū)造成的事故占比高達(dá)32%[3].因此,汽車廠商紛紛使用各類手段解決此痛點(diǎn),車載環(huán)視影像應(yīng)運(yùn)而生.隨著環(huán)視影像系統(tǒng)技術(shù)的成熟與成本的下降,越來越多的汽車廠商愿意在新款車型中裝載環(huán)視影像系統(tǒng).針對(duì)9 個(gè)自主品牌代表企業(yè)旗下車型的駕駛輔助系統(tǒng)應(yīng)用情況進(jìn)行分析,產(chǎn)品布局?jǐn)?shù)量占比已經(jīng)超過50%[4].
圖1 汽車視野盲區(qū)示意圖
全景環(huán)視最早由Kato 等人在2006年提出[5].該概念的提出立即得到了各方的關(guān)注.次年日產(chǎn)公司發(fā)布首個(gè)商用產(chǎn)品[6],環(huán)景監(jiān)視系統(tǒng)AVM (around view monitor).后續(xù)本田、福爾德、奔馳以及邁隆等公司也推出了相似產(chǎn)品.該系統(tǒng)也由圖像直接堆疊過渡到圖像融合拼接.2013年富士通公司提出三維全景環(huán)視[7,8],從此環(huán)視影像由只有鳥瞰圖的二維過渡到三維.
車載環(huán)視影像,在增加透明底盤功能后,消除了汽車周圍的所有盲區(qū),發(fā)展為車載全息透明影像.近幾年來,高級(jí)輔助駕駛前裝載量逐漸上升,環(huán)視影像作為高級(jí)輔助駕駛的主要功能之一,也迎來了快速發(fā)展.松下[9]、現(xiàn)代汽車[10]、LG 電子[11]、華為[12]、百度[13]、廣汽[14]等企業(yè); 北京交通大學(xué)[15]、同濟(jì)大學(xué)[16,17]、普渡大學(xué)[18,19]等國內(nèi)外高校以及研究機(jī)構(gòu)都開始從理論方面入手,結(jié)合實(shí)踐進(jìn)行深入研究.
圖像拼接技術(shù)中圖像配準(zhǔn)是核心技術(shù),根據(jù)大量學(xué)者的研究,將圖像配準(zhǔn)算法分為兩類,包括基于特征的圖像配準(zhǔn)算法、基于區(qū)域的圖像配準(zhǔn)算法[20-22].由于基于特征的圖像配準(zhǔn)算法具有計(jì)算量小、速度快等優(yōu)勢,該方式在車載環(huán)視影像中應(yīng)用最廣泛[23-25],例如SIFT、SURF 等算法.
首先,車載全息透明影像使用的是視角很大的魚眼鏡頭,得到的圖像存在明顯的畸變,特征值計(jì)算比較困難.傳統(tǒng)的解決方案先對(duì)原圖去畸變,然后再對(duì)圖像裁剪,最后計(jì)算特征值.這些操作極大地增加了后續(xù)渲染的復(fù)雜度.其次,在渲染過程中,每一幀圖像都需要有矩陣乘運(yùn)算,運(yùn)算量大.再次,相鄰兩路攝像頭的中心軸夾角接近90°,通過特征值求得的仿射變換矩陣存在很大誤差,導(dǎo)致車載環(huán)視影像在圖像拼接處,存在拼接縫的問題,尤其是相對(duì)于汽車距離較近的4 個(gè)車角處.
針對(duì)傳統(tǒng)解決方案存在的缺陷和問題,提出了基于距離的Alpha 圖像拼接算法,該算法只需在程序啟動(dòng)時(shí)計(jì)算一次,極大地減小了計(jì)算量.并且根據(jù)該拼接算法的特性,重新設(shè)計(jì)了三維模型.對(duì)透明底盤功能做了如下3 方面優(yōu)化: 改進(jìn)自行車模型算法,達(dá)到了減小計(jì)算復(fù)雜度,提高計(jì)算效率的目的; 利用查表法,解決透明底盤與周圍拼接錯(cuò)位問題; 采用分層渲染的方法,優(yōu)化透明底盤功能拼接縫問題.
全息透明影像的硬件系統(tǒng),主要包括四路魚眼攝像頭、自動(dòng)駕駛計(jì)算平臺(tái)、車載視頻顯示器、整車動(dòng)力底盤、車身及關(guān)鍵零部件等幾部分.自動(dòng)駕駛計(jì)算平臺(tái)與汽車電子器件的連接結(jié)構(gòu),如圖2 所示.
圖2 自動(dòng)駕駛計(jì)算平臺(tái)與汽車電子器件的連接結(jié)構(gòu)
(1)傳感器接入四路魚眼攝像頭通過GMSL 接入、12 路超聲波雷達(dá)采用12 路硬線的方式接入.
(2)HMI 顯示交互: 視頻數(shù)據(jù)通過一路LVDS 輸出給中控車機(jī),交互類軟開關(guān)等信息通過網(wǎng)關(guān)路由的CANFD 總線傳輸.
(3)整車交互: 整車動(dòng)力底盤、車身等關(guān)鍵零部件通過網(wǎng)關(guān)路由的CANFD 總線實(shí)現(xiàn)控制和狀態(tài)報(bào)文的實(shí)時(shí)交互.
四路魚眼攝像頭的視場角為190°-200°; 安裝角度為20°-35°; 有效覆蓋范圍為3-6 m; 前魚眼攝像頭安裝在車頭前部中央(前格柵附近); 左魚眼攝像頭安裝在左后視鏡下方; 右魚眼攝像頭安裝在右后視鏡下方;后魚眼攝像頭安裝在車尾后部中央(后備箱把手附近).自動(dòng)駕駛計(jì)算平臺(tái)的安裝位置示意圖,如圖3 所示.
圖3 計(jì)算平臺(tái)安裝位置示意圖
軟件系統(tǒng)結(jié)構(gòu)主要分為3 層,依次為硬件層、中間件層和應(yīng)用層.軟件系統(tǒng)結(jié)構(gòu)示意圖,如圖4 所示.
圖4 軟件系統(tǒng)結(jié)構(gòu)示意圖
全息透明影像位于應(yīng)用層,它通過消息中間件獲得攝像頭圖像、車速、方向盤轉(zhuǎn)角以及檔位等信息.消息中間件屏蔽硬件差異,向上提供統(tǒng)一接口,提供一致化的服務(wù)能力.ABS、EPS 以及TCU 分別將車速、方向盤轉(zhuǎn)角、檔位等車身信息通過CANFD 總線傳遞到消息中間件.顯示器通過消息中間件獲得需要顯示的圖像.
全息透明影像使用OpenGL 進(jìn)行圖形渲染.OpenGL是一個(gè)包含了一系列可以操作圖形、圖像的API[26].OpenGL 做渲染時(shí)自身是一個(gè)巨大的狀態(tài)機(jī),首先需要給狀態(tài)機(jī)設(shè)置繪畫的屬性,其次使用當(dāng)前屬性進(jìn)行渲染.
OpenGL 的基本屬性分別為: 坐標(biāo)點(diǎn)、紋理和紋理坐標(biāo).當(dāng)用OpenGL 渲染簡單三角形時(shí),需要3 個(gè)頂點(diǎn)坐標(biāo)、一張紋理和每個(gè)頂點(diǎn)坐標(biāo)點(diǎn)對(duì)應(yīng)的紋理坐標(biāo).頂點(diǎn)確定三角形的形狀,紋理確定三角形的顏色,紋理坐標(biāo)則確定使用紋理什么位置的顏色.渲染三角形的數(shù)據(jù)格式為{X,Y,Z,U,V},其中(X,Y,Z)為頂點(diǎn)坐標(biāo);(U,V)為頂點(diǎn)坐標(biāo)對(duì)應(yīng)的紋理坐標(biāo).三角形渲染流程圖如圖5 所示.
圖5 三角形渲染流程圖
全息透明影像渲染使用的三維模型是由很多小三角形組成的.全息透明影像渲染使用的紋理是四路魚眼攝像頭的圖像.利用基于距離的Alpha 圖像拼接算法,可以求得三維模型中每個(gè)坐標(biāo)點(diǎn)對(duì)應(yīng)的紋理坐標(biāo).全息透明影像的渲染示意圖如圖6 所示.
圖6 全息透明影像渲染示意圖
無論使用什么方法做圖像拼接,圖像配準(zhǔn)的主要任務(wù)是找到圖像中具有相同特征的物體.也就是在世界坐標(biāo)系下,同一點(diǎn)體在兩張圖象上的位置.如果通過計(jì)算可以求得世界坐標(biāo)下的一點(diǎn),在兩張圖像上的位置,那么將這兩個(gè)位置上的像素做融合即可.
相機(jī)的成像過程是三維坐標(biāo)點(diǎn)在世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系和像素坐標(biāo)系中的轉(zhuǎn)換[27].世界坐標(biāo)系以汽車正中心的地面投影點(diǎn)為原點(diǎn)建立,車頭方向?yàn)閄 軸的正方向,垂直于X 軸向汽車左側(cè)為Y 軸正方向,向上為Z 軸正方向.為了不同車型相機(jī)標(biāo)定的準(zhǔn)確,增加了汽車坐標(biāo)系.汽車坐標(biāo)系是以后軸中點(diǎn)在地面上的投影點(diǎn)作為原點(diǎn)建立的.
下面將介紹世界坐標(biāo)系下的點(diǎn)(x,y,z)到對(duì)應(yīng)相機(jī)圖像紋理坐標(biāo)(u,v)的計(jì)算過程.該過程需要用到相機(jī)的內(nèi)外參數(shù)[28].相機(jī)的內(nèi)外標(biāo)定參數(shù),如表1 所示.
表1 四路魚眼攝像頭內(nèi)外標(biāo)定參數(shù)
首先,需要將頂點(diǎn)坐標(biāo)從世界坐標(biāo)系轉(zhuǎn)換到對(duì)應(yīng)相機(jī)坐標(biāo)系.然而相機(jī)坐標(biāo)系是以汽車坐標(biāo)系為基礎(chǔ)建立的,所以首先需要將頂點(diǎn)坐標(biāo)轉(zhuǎn)到汽車坐標(biāo)系下.計(jì)算公式如下:
其中,(x_car,y_car,z_car)為頂點(diǎn)坐標(biāo)在汽車坐標(biāo)系下的位置;length為汽車中心到后軸的距離.
利用相機(jī)外參中繞Z 軸旋轉(zhuǎn)角度、繞Y 軸旋轉(zhuǎn)角度、繞X 軸旋轉(zhuǎn)角度和位移向量,可以求得3 個(gè)旋轉(zhuǎn)矩陣和1 個(gè)位移矩陣.通過仿射變換就可以求得頂點(diǎn)坐標(biāo)在相機(jī)坐標(biāo)系下的位置.計(jì)算公式如下:
其中,(xc,yc,zc)為頂點(diǎn)在相機(jī)坐標(biāo)系下的位置;rota_x為繞X 軸旋轉(zhuǎn)矩陣;rota_y為繞Y 軸旋轉(zhuǎn)矩陣;rota_z為繞Z 軸旋轉(zhuǎn)矩陣;trans為位移矩陣;k為常量.
此時(shí)已經(jīng)轉(zhuǎn)換到相機(jī)坐標(biāo)系.頂點(diǎn)由相機(jī)坐標(biāo)系通過計(jì)算轉(zhuǎn)換到像素坐標(biāo)系,此時(shí)需要用到相機(jī)的內(nèi)參.魚眼攝像頭是一種特殊的攝像頭,首先闡述小孔成像模型的求解過程.在小孔成像模型下,首先需要將攝像機(jī)坐標(biāo)系下的點(diǎn)(xc,yc,zc)轉(zhuǎn)換為歸一化平面上的點(diǎn).如式(3)所示:
其中,(x′,y′)為歸一化平面上的點(diǎn).
其次將歸一化平面上的點(diǎn)轉(zhuǎn)換為像素坐標(biāo)系下的紋理坐標(biāo):
其中,(u,v)為紋理坐標(biāo);fx,fy為uv方向焦距.cx,cy為光軸中心像素坐標(biāo).相機(jī)坐標(biāo)系到像素坐標(biāo)系計(jì)算過程原理圖,如圖7 所示.
圖7 相機(jī)坐標(biāo)系到像素坐標(biāo)系計(jì)算過程原理圖
魚眼攝像頭圖像存在明顯的畸變.因此需要在公式中增加去畸變處理和Z 軸光心偏移系數(shù).具有超大視場角的魚眼相機(jī),由于其球狀鏡頭結(jié)構(gòu),以及制造工藝的問題,小孔成像的經(jīng)典模型不適用于魚眼相機(jī)的成像模型,因此需要增加新的參數(shù)[29].魚眼相機(jī)成像模型,如圖8 所示.
圖8 魚眼相機(jī)成像模型
魚眼相機(jī)歸一化平面的計(jì)算方法如式(5)所示:
其中,xi為光心Z 軸偏移系數(shù).
魚眼鏡頭成像存在的幾何失真稱為畸變.根據(jù)Brown 畸變模型,畸變主要分為徑向畸變和切向畸變[30].徑向畸變是從圖像中心向外發(fā)散分布的畸變,產(chǎn)生原因是光線在魚眼透鏡邊緣光線的折射角比靠近中心的地方更大.畸變的數(shù)學(xué)模型可以用主點(diǎn)周圍的泰勒級(jí)數(shù)展開式的前幾項(xiàng)進(jìn)行描述,通常使用前兩項(xiàng),即k1和k2.切向畸變是由于透鏡本身與相機(jī)傳感器平面(成像平面)或圖像平面不平行而產(chǎn)生的,畸變模型可以用兩個(gè)額外的參數(shù)p1和p2來描述.去畸變公式如下:
其中,k1為徑向畸變系數(shù)1;k2為徑向畸變系數(shù)2;p1為切向畸變系數(shù)1;p2為切向畸變系數(shù)2.
魚眼鏡頭紋理坐標(biāo)的計(jì)算公式如下:
其中,u,v為紋理坐標(biāo);fx,fy為uv方向的焦距.cx,cy為光軸中心像素坐標(biāo).
通過上述公式可以求得頂點(diǎn)(x,y,z),由世界坐標(biāo)系到像素坐標(biāo)系(u,v)的變換.
渲染車載全息透明影像就是在渲染一個(gè)3D 物體.三維模型相當(dāng)于是車載環(huán)視影像的一個(gè)“墻壁”,將四路魚眼圖像按照一定的規(guī)則貼合到這個(gè)墻壁上,就形成了具有立體效果的影像.三維模型功能示意圖,如圖9 所示.
圖9 三維碗狀模型功能示意圖
根據(jù)基于距離的Alpha 融合算法特性,我們對(duì)三維模型的需求有如下3 點(diǎn):
(1)可以快速得找到拼接線,并且可以簡單地在拼接線附近找到圖像融合區(qū)域.
(2)減少點(diǎn)的數(shù)量.以TDA4 為核心的開發(fā)板,索引的數(shù)據(jù)類型為unsigned short,占2 個(gè)字節(jié),數(shù)值范圍為[0,65 535].在同一個(gè)索引緩沖對(duì)象中,最多可以索引65 536 個(gè)頂點(diǎn),21 845 個(gè)三角形.因此三維碗狀模型點(diǎn)的數(shù)量很多時(shí),需要對(duì)頂點(diǎn)數(shù)據(jù)進(jìn)行分塊,再將數(shù)據(jù)拷貝進(jìn)頂點(diǎn)緩沖對(duì)象中,這樣會(huì)生成多個(gè)內(nèi)存ID.在渲染時(shí)就需分開渲染,浪費(fèi)資源.
(3)三維碗狀模型渲染結(jié)果需要平滑柔順,不能產(chǎn)生黑邊、拼接縫明顯等問題.在汽車的4 個(gè)角落處,很容易由于三維碗狀模型,導(dǎo)致在相鄰的兩張紋理上不能采樣到正確的顏色,最終在做圖像融合時(shí)產(chǎn)生明顯的黑線.
通過調(diào)研發(fā)現(xiàn),根據(jù)幾何模型的不同,可以將三維模型分為經(jīng)緯度三維模型[31-33]、立方體三維模型[34,35]和柱面三維模型3 類[36,37].
經(jīng)緯度三維模型及其改進(jìn)方式模型可以滿足如上需求.通過控制經(jīng)線,就可以找到拼接線,控制角度找到拼接區(qū)域.經(jīng)緯度三維模型整體與細(xì)節(jié),如圖10 所示.該模型的鳥瞰視圖與3D 視圖渲染結(jié)果,如圖11 所示.
圖10 經(jīng)緯度三維模型
圖11 經(jīng)緯度三維模型渲染結(jié)果
通過觀察可以發(fā)現(xiàn),汽車周圍有一圈不規(guī)則的黑邊,這是由于在經(jīng)緯度三維模型中,汽車周圍三角形的邊與汽車底盤不平行,導(dǎo)致有些三角形的部分點(diǎn)在汽車下方.但是魚眼鏡頭無法拍攝到汽車底部,這些點(diǎn)在紋理采樣時(shí)就會(huì)得到錯(cuò)誤的RGB 值,就變?yōu)楹谏?OpenGL 的特性會(huì)在三角形中間做線性插值處理,會(huì)導(dǎo)致三角形從有顏色逐漸過渡為黑色.解決此問題可以通過增加三維模型中三角形的密度,但這會(huì)增加三維模型中點(diǎn)的數(shù)量.通過實(shí)驗(yàn)測試發(fā)現(xiàn),將點(diǎn)增加為之前的3 倍,效果依舊不明顯.
根據(jù)問題,重新設(shè)計(jì)三維模型,在原有經(jīng)緯度三維模型中間,嵌入一個(gè)汽車大小的長方形,確保三角形的所有頂點(diǎn)都位于汽車外部.內(nèi)嵌長方形三維模型整體與細(xì)節(jié)展示,如圖12 所示.該模型的3D 視圖渲染結(jié)果,如圖13 所示.
圖12 內(nèi)嵌長方形三維模型
圖13 內(nèi)嵌長方形三維模型渲染結(jié)果
通過觀察可以發(fā)現(xiàn),有些地方存在明顯的畸變.這是因?yàn)?只有頂點(diǎn)處做了去畸變處理,三角形內(nèi)部只做了線性插值,并沒有去畸變.內(nèi)嵌長方形與外接圓之間的三角形過大,這會(huì)導(dǎo)致渲染結(jié)果存在畸變.
鑒于此,重新優(yōu)化三維模型.將內(nèi)嵌長方形更換為正方形網(wǎng)格,并在正方形與外接圓之間插入點(diǎn),減小三角形的大小.內(nèi)嵌正方形三維模型整體與細(xì)節(jié),如圖14所示.該模型的鳥瞰視圖與3D 視圖渲染結(jié)果,如圖15所示.
圖14 內(nèi)嵌正方形三維模型
圖15 內(nèi)嵌正方形三維模型渲染結(jié)果
通過觀察可以發(fā)現(xiàn),在汽車的4 個(gè)角落產(chǎn)生了橫向黑色細(xì)線.車頭前的兩條黑線,是由于靠近車角的正方形在前鏡頭的圖像中無采樣到正確的RGB 值,變?yōu)楹谏?與其他顏色融合后變?yōu)橐粭l黑色細(xì)線.后側(cè)同理.
綜合上述所有問題,結(jié)合前幾個(gè)模型各自的優(yōu)點(diǎn),重新設(shè)計(jì)三維模型.
(1)經(jīng)緯度三維模型的優(yōu)點(diǎn)在于,可以用快速找到拼接線的位置,并且可以方便地在拼接線周圍找到圖像融合區(qū).因此在圖像拼接區(qū)域使用經(jīng)緯度三維模型的方案.
(2)嵌入長方形三維模型的優(yōu)點(diǎn)在于,可以讓渲染流程簡單結(jié)果整齊.因此在正中間使用汽車大小的長方形.
(3)長方形外接圓會(huì)產(chǎn)生畸變,因此長方形周邊用直線代替弧線.
按上述方案構(gòu)建三維模型,首先在模型中間使用汽車大小的長方形.其次在長方形的4 個(gè)角落處,以角為圓心畫四分之一圓弧.最后長方形周圍,將相鄰兩個(gè)圓弧用直線連接.拼接區(qū)三維模型構(gòu)建過程示意圖,如圖16 所示.該模型的渲染結(jié)果如圖17 所示.
圖16 拼接區(qū)三維模型構(gòu)建過程示意圖
圖17 拼接區(qū)三維模型渲染結(jié)果
在相鄰兩個(gè)圖像之間做拼接融合,需要找到一條拼接線.首先在三維模型中確定一條拼接線.拼接線示意圖,如圖18 所示.
圖18 拼接線示意圖
魚眼鏡頭的視角很大,這樣會(huì)導(dǎo)致任意兩個(gè)相鄰的攝像頭圖像,會(huì)有很大圖像重合的部分.為了使得渲染結(jié)果更加完美,需要在兩幅圖像相接的地方做圖像融合.在拼接縫兩側(cè)尋找適量列數(shù)的點(diǎn),作為圖像融合區(qū).在該區(qū)域進(jìn)行圖像的融合.圖像融合區(qū)示意圖,如圖19 所示.
圖19 圖像融合區(qū)示意圖
圖像融合區(qū)的頂點(diǎn),可以在拼接線的左右兩張紋理上分別求得一個(gè)紋理坐標(biāo)(U1,V1)和(U2,V2).利用著色器語言GLSL (OpenGL shading language)中的texture(ourTexture,vec2(U,V))函數(shù)可以得到紋理ourTexture中紋理坐標(biāo)為vec2(U,V)的顏色.由此可得到頂點(diǎn)在兩張圖像上的對(duì)應(yīng)的顏色.公式如式(8):
其中,outColor1rgb為頂點(diǎn)在拼接線左側(cè)圖像上對(duì)應(yīng)顏色的RGB 值;outColor2rgb為頂點(diǎn)拼接線右側(cè)圖像上對(duì)應(yīng)顏色的RGB 值.將兩個(gè)顏色進(jìn)行疊加則完成圖像融合.圖像融合示意圖,如圖20 所示.
圖20 圖像融合示意圖
不做圖像融合的數(shù)據(jù)格式為{X,Y,Z,U,V};圖像融合區(qū)的數(shù)據(jù)格式為{X,Y,Z,U1,V1,U2,V2,Alpha}.紋理坐標(biāo)的計(jì)算只需在程序啟動(dòng)時(shí)計(jì)算一遍,并將坐標(biāo)點(diǎn)與紋理坐標(biāo)按照數(shù)據(jù)格式組合.將組合好的數(shù)據(jù)拷貝到GPU 緩存中供渲染時(shí)使用.
由于Lens Shading 問題導(dǎo)致圖像中間亮,邊緣逐漸變黑.因此需要為邊緣增加亮度,防止拼接區(qū)域出現(xiàn)黑色細(xì)線.Lens Shading 問題補(bǔ)償公式如下:
其中,a為常量.
透明底盤功能是將車底盲區(qū)進(jìn)行填補(bǔ),讓駕駛員可以清楚地了解到汽車底部的情況.魚眼鏡頭無法照射到汽車底部的物體,所以傳統(tǒng)的方案就無法實(shí)現(xiàn)透明底盤功能.但是,汽車運(yùn)動(dòng)起來后,前幾幀魚眼圖像存在當(dāng)前幀車底圖像信息.所以,透明底盤功能可以利用前一幀部分圖像信息填充當(dāng)前幀汽車底部盲區(qū).
透明底盤功能實(shí)現(xiàn)過程,首先預(yù)測汽車的行駛軌跡,計(jì)算出汽車底部長方形4 個(gè)點(diǎn)在上一幀鳥瞰圖中的紋理坐標(biāo).其次,用4 個(gè)點(diǎn)作為頂點(diǎn)、上一幀鳥瞰圖作為紋理和求得的紋理坐標(biāo)進(jìn)行渲染.透明底盤功能渲染示意圖如圖21 所示.
圖21 透明底盤功能渲染示意圖
車輛運(yùn)動(dòng)學(xué)模型與動(dòng)力學(xué)模型的建立是出于車輛運(yùn)動(dòng)的規(guī)劃與控制考慮的.此模型廣泛應(yīng)用于自動(dòng)駕駛汽車軌跡規(guī)劃模塊中[38,39].該模型可以精準(zhǔn)的推測汽車的行駛軌跡.
自行車模型需做如下假設(shè):
(1)車輛只在二維平面上做運(yùn)動(dòng),即只在XY 水平面的運(yùn)動(dòng).
(2)車的兩側(cè)車輪轉(zhuǎn)角一致.即將車模從兩側(cè)壓扁為二維.
(3)車輛行駛速度變化緩慢,忽略前后軸載荷的轉(zhuǎn)移.
(4)車身及懸架系統(tǒng)是剛性的.
假設(shè)結(jié)果如圖22 所示.
圖22 自行車模型
其中,O為OA、OB的交點(diǎn),是車輛的瞬時(shí)轉(zhuǎn)動(dòng)中心,線段OA、OB分別垂直于兩個(gè)滾動(dòng)輪的方向; β為車輛速度方向和車身朝向兩者間所成的角度,ψ為車身與X 軸的夾角.V為質(zhì)心速度;R為 轉(zhuǎn)向半徑; ?r為后懸長度; ?f為前懸長度; δr為后輪偏角; δf為前輪偏角.自行車模型的動(dòng)力學(xué)關(guān)系為:
聯(lián)立可得:
當(dāng)速度很慢時(shí),車輛的轉(zhuǎn)彎半徑幾乎不變,此時(shí)可以假設(shè)車輛的方向變化率與車輛的角速度相等,則車輛的角速度為:
在慣性坐標(biāo)系XY 下,可得車輛運(yùn)動(dòng)學(xué)模型:
其中,有3 個(gè)輸入: δf、 δr、V.汽車的轉(zhuǎn)向有兩種模式[40],分為前輪轉(zhuǎn)向與后輪轉(zhuǎn)向兩種類型.當(dāng)車輛為前輪轉(zhuǎn)向時(shí),則車輛只有前輪轉(zhuǎn)角 δf,后輪轉(zhuǎn)角δr=0.因此可以假設(shè)前輪轉(zhuǎn)向自行車模型如圖23 所示.
圖23 前輪轉(zhuǎn)向自行車模型
前輪轉(zhuǎn)向自行車模型總結(jié)規(guī)律.由正弦法則求得車輛旋轉(zhuǎn)半徑R,計(jì)算公式如下:
前輪轉(zhuǎn)向自行車模型如下:
此方程,每一幀都需要計(jì)算,為了能夠更少計(jì)算量,簡化該計(jì)算公式.由于單針耗時(shí)時(shí)長很短、汽車速度很慢并且汽車電器件傳入渲染引擎的數(shù)據(jù)本身就存在很大誤差,所以采用離散的方法.改進(jìn)自行車模型公式如下:
式(16)中各參數(shù),如表2 所示.
表2 各參數(shù)及意義
利用dx與dy可以求得位移矩陣trans; 利用dθ可以求得Z 軸旋轉(zhuǎn)矩陣rota_z.當(dāng)前幀汽車坐標(biāo)系下的點(diǎn),在經(jīng)歷一幀圖像時(shí)間后,在上一幀汽車坐標(biāo)系下位置的計(jì)算公式如下:
其中,(X_car,Y_car,Z_car)為當(dāng)前幀汽車坐標(biāo)系的坐標(biāo)點(diǎn); (X_car1,Y_car1,Z_car1)為坐標(biāo)點(diǎn)在上一幀汽車坐標(biāo)系的位置;k為常量.
結(jié)合鳥瞰圖的相機(jī)矩陣,就可以求得在鳥瞰圖中的紋理坐標(biāo)(U,V).計(jì)算過程如式(18):
消息中間件傳送到渲染引擎的角度是方向盤角度,而計(jì)算公式需要的是汽車的輪轉(zhuǎn)角.所以需要一步方向盤角度轉(zhuǎn)輪轉(zhuǎn)角的操作.如果采用正比例關(guān)系,當(dāng)方向盤角度比較小時(shí),不會(huì)有明顯問題.但當(dāng)方向盤角度特別大時(shí),隨著時(shí)間的積累,物體預(yù)測位置就會(huì)存在誤差.為此提出查表法來解決此問題.
經(jīng)過多次的測試得到方向盤角度與輪轉(zhuǎn)角的原始數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行處理處理,得到一組很準(zhǔn)確的方向盤角度與輪轉(zhuǎn)角關(guān)系對(duì)應(yīng)表,如圖24 所示.
圖24 中可以看出當(dāng)方向盤角度較小時(shí),方向盤角度與輪轉(zhuǎn)角,基本呈正比例關(guān)系.但當(dāng)方向盤角度過大時(shí),方向盤角度與輪轉(zhuǎn)角,不再成正比例關(guān)系.這也印證了最初的猜想.通過查表找到方向盤角度所對(duì)應(yīng)的輪轉(zhuǎn)角.方向盤角度位于兩項(xiàng)數(shù)據(jù)之間的,將這兩項(xiàng)數(shù)據(jù)對(duì)應(yīng)的輪轉(zhuǎn)角,做加權(quán)平均,從而次求得更為準(zhǔn)確的輪轉(zhuǎn)角.如圖25 所示.
圖24 方向盤角度與輪轉(zhuǎn)角關(guān)系曲線
圖25 輪轉(zhuǎn)角優(yōu)化效果對(duì)比圖
通過觀察,發(fā)現(xiàn)渲染圖像中汽車周圍與汽車底部拼接縫極其明顯,并且汽車底部像格柵一樣.拼接縫與拼接格柵問題示意圖,如圖26 所示.
圖26 拼接縫與拼接格柵問題示意圖
汽車底部的格柵化,是由于透明底盤功能拼接縫明顯.透明底盤的渲染方案會(huì)導(dǎo)致明顯的拼接縫在車底積累,形成格柵.所以,優(yōu)化掉拼接縫問題,格柵問題也將解決.
世界坐標(biāo)系位置相同的點(diǎn),不同幀間亮度可能存在不同,并且車輛動(dòng)態(tài)模型對(duì)行駛軌跡的推測存在誤差,導(dǎo)致透明底盤功能拼接縫明顯.
解決此問題,采用分層渲染的方法.將底部長方形周圍區(qū)域在上一幀頂視圖的圖像,渲染在當(dāng)前幀圖像渲染結(jié)果的上層.首先找到底部長方形外側(cè)適量圈數(shù)坐標(biāo)點(diǎn).其次利用自行車模型計(jì)算出坐標(biāo)點(diǎn)對(duì)應(yīng)的紋理坐標(biāo).最后,Alpha 值由長方形邊緣向外逐漸由1 變?yōu)?.輸出像素四通道的計(jì)算公式如下:
其中,outrgba為渲染輸出值;L為向外選擇點(diǎn)的圈數(shù);l為當(dāng)前點(diǎn)所在圈數(shù).透明底盤拼接縫優(yōu)化效果圖,如圖27所示.
圖27 透明底盤拼接縫優(yōu)化效果圖
(1)為了方便展示,所有三維模型都進(jìn)行了稀疏化處理.實(shí)際工程應(yīng)用的拼接區(qū)三維模型共有36 000 個(gè)面和18 848 個(gè)點(diǎn).
(2)四路魚眼鏡頭圖像進(jìn)入系統(tǒng)后進(jìn)行了亮度均衡處理.亮度均衡不是本論文的研究內(nèi)容,不展開討論.實(shí)驗(yàn)所使用的亮度均衡算法主要借鑒于文獻(xiàn)[41].
(3)在TDA4 為核心的開發(fā)板,上車進(jìn)行測試,實(shí)驗(yàn)結(jié)果表明,在輸出圖像分辨率為1440×720,左右視圖均為3D 模式時(shí),可以達(dá)到30 幀,CPU 占用率低于20%.
本文基于距離的Alpha 圖像拼接算法、優(yōu)化了三維模型、改進(jìn)了透明底盤功能.該技術(shù)可有效提高渲染效果,減少計(jì)算復(fù)雜度.該研究技術(shù)對(duì)于車載全息透明影像有很大意義.該系統(tǒng)仍然存在許多問題,例如近處物體畸變嚴(yán)重、在拼接處存在物體消失等問題.相信這些問題日后都會(huì)得到解決.