本發(fā)明涉及用于智能汽車的高級(jí)駕駛輔助系統(tǒng)領(lǐng)域,特別地,涉及一種汽車上的3d全景圖像生成系統(tǒng)和方法。
背景技術(shù):
近年來,隨著機(jī)動(dòng)車行業(yè)的飛速發(fā)展,交通事故也日益增多,使得人們?cè)絹碓疥P(guān)心汽車的安全問題,其中汽車安全技術(shù)更是備受關(guān)注。傳統(tǒng)的車載全景大都是2d全景,只是簡單的對(duì)采集的圖像進(jìn)行拼接,采用2d的拼接技術(shù)會(huì)丟失很多的圖像數(shù)據(jù),并不能很好的利用廣角鏡頭的優(yōu)勢,對(duì)駕駛員而言就是生成的全景圖像視野較小,而且基于dsp的處理平臺(tái)難以實(shí)現(xiàn)功能拓展。
高級(jí)駕駛輔助系統(tǒng)(advanceddriverassistantsystem,adas)是利用安裝在車上的各種傳感器,在汽車行駛的過程中隨時(shí)獲取環(huán)境數(shù)據(jù),進(jìn)行系統(tǒng)的運(yùn)算與分析,從而預(yù)先讓駕駛者察覺到可能發(fā)生的危險(xiǎn)。高級(jí)駕駛輔助系統(tǒng)包括全景駕駛輔助系統(tǒng),其基于全景圖象的生成,提供了汽車周圍全景圖像,為智能泊車、車道偏離、車道輔助、車距檢測等提供了數(shù)據(jù)支持。
在現(xiàn)有技術(shù)中,存在全景圖像生成的方法,比如申請(qǐng)?zhí)枮?01210590533.0的發(fā)明專利申請(qǐng)描述了一種多攝像機(jī)全景系統(tǒng)的曲面投影裝置和方法,該方法獲取廣角攝像機(jī)的畸變圖像,對(duì)其進(jìn)行畸變矯正后投影到三維曲面上進(jìn)而生成全景圖像。然而,該申請(qǐng)的3d全景生成方法存在以下缺點(diǎn):1.需要對(duì)圖像進(jìn)行畸變矯正,時(shí)間復(fù)雜度較高;2.在融合區(qū)域的圖像拼接效果較差;3.沒有充分利用嵌入式平臺(tái)的優(yōu)勢。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了克服上述現(xiàn)有技術(shù)中的技術(shù)缺陷,提出一種3d全景圖像生成裝置。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的。
一種3d全景圖像生成系統(tǒng),該系統(tǒng)包括:電子控制單元(ecu)、顯示單元和分別安裝在車輛前后左右四處的四路攝像機(jī),該四路攝像機(jī)包括安裝在車輛前側(cè)的前置攝像頭模塊、安裝在車輛后側(cè)的后置攝像頭模塊、安裝在車輛左側(cè)的左置攝像頭模塊、安裝在車輛右側(cè)的右置攝像頭模塊,分別用于采集前后左右四個(gè)方向上的圖像,并將圖像發(fā)送到電子控制單元,電子控制單元用于根據(jù)四個(gè)攝像頭模塊所采集的圖像數(shù)據(jù),構(gòu)建360度全景圖像,并將所構(gòu)建的360度全景圖像發(fā)送給顯示單元;顯示單元用于將全景圖像進(jìn)行顯示。
一種3d全景圖像生成方法,其采用上述的系統(tǒng)實(shí)現(xiàn),該方法包括:s11對(duì)所述四路攝像機(jī)進(jìn)行標(biāo)定;s12采用四路攝像頭采集圖像;s13建立三維曲面模型并對(duì)其進(jìn)行三角剖分,將圖像的紋理元素和位置坐標(biāo)映射到所述三維曲面模型上;s14輸出顯示3d全景圖像。
優(yōu)選地,其中s13包括如下步驟:
s131在三維曲面模型中建立世界坐標(biāo)系;
s132將車身四路攝像頭模塊獲得的原始圖像的紋理元素和位置坐標(biāo)映射到三維曲面模型上,得到原始圖像的3d重構(gòu),實(shí)現(xiàn)全景生成。
優(yōu)選地,其中s132包括如下步驟:
s1320將三維曲面模型分為八個(gè)區(qū)域,前、后、左、右、左前、左后、右前、右后;其中前、后、左、右四個(gè)區(qū)域?yàn)榉侨诤蠀^(qū)域,左前,左后,右前,右后四個(gè)區(qū)域?yàn)槿诤蠀^(qū)域;
s1321非融合區(qū)域生成;
s1322融合區(qū)域生成。
一種終端系統(tǒng),包括存儲(chǔ)器、一個(gè)或多個(gè)處理器,以及一個(gè)或多個(gè)計(jì)算機(jī)程序,其中所述一個(gè)或多個(gè)計(jì)算機(jī)程序被存儲(chǔ)在存儲(chǔ)器中,并且被配置成由所述一個(gè)或多個(gè)處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行該方法的步驟。
一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括與終端系統(tǒng)結(jié)合使用的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序可被處理器執(zhí)行以完成該方法的步驟。
本發(fā)明有如下優(yōu)點(diǎn):本發(fā)明通過四個(gè)攝像頭模塊實(shí)現(xiàn)了全景圖像的輸出,系統(tǒng)簡單,便于安裝;方法上不需要對(duì)圖像進(jìn)行畸變矯正,時(shí)間復(fù)雜度低,在融合區(qū)域的圖像拼接效果好,充分利用了嵌入式平臺(tái)的優(yōu)勢。該系統(tǒng)和方法結(jié)構(gòu)簡單易行,運(yùn)行速度快,圖像精確度高,可用性強(qiáng),適用范圍廣,同時(shí)降低了計(jì)算量,降低了硬件、軟件成本。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
附圖1示出了本發(fā)明的3d全景圖像生成系統(tǒng)結(jié)構(gòu)圖;
附圖2示出了本發(fā)明的3d全景圖像生成方法流程圖;
附圖3示出了本發(fā)明的3d全景圖像生成方法中的三維曲面模型示意圖;
附圖4示出了本發(fā)明的3d全景圖像生成方法中的將三維曲面模型分為了八個(gè)區(qū)域的示意圖;
附圖5示出了本發(fā)明的3d全景圖像生成方法輸出顯示的全景圖像。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施方式。雖然附圖中顯示了本公開的示例性實(shí)施方式,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
根據(jù)本發(fā)明的實(shí)施方式,圖1示出了一種3d全景圖像生成系統(tǒng),該系統(tǒng)包括電子控制單元(ecu)、顯示單元和分別安裝在車輛前后左右四處的攝像頭模塊,即圖1所示的前置攝像頭模塊、后置攝像頭模塊、左置攝像頭模塊、右置攝像頭模塊。其中,四個(gè)攝像頭模塊用于采集前后左右四個(gè)方向上的圖像,將圖像發(fā)送給電子控制單元,電子控制單元用于根據(jù)四個(gè)攝像頭模塊所采集的圖像數(shù)據(jù),構(gòu)建360度全景圖像,并將所構(gòu)建的360度全景圖像發(fā)送給顯示單元進(jìn)行顯示;圖像數(shù)據(jù)由攝像頭模塊采集并發(fā)送到電子控制單元。
圖2示出了根據(jù)本發(fā)明實(shí)施方式的3d全景生成方法,其采用上述的3d全景圖像生成系統(tǒng)實(shí)現(xiàn),該方法的主要步驟包括:s11對(duì)攝像機(jī)進(jìn)行標(biāo)定;s12四路攝像頭采集圖像;s13建立三維曲面模型并對(duì)其進(jìn)行三角剖分,將圖像的紋理元素和位置坐標(biāo)映射到模型上;s14輸出顯示。具體地,
s11、對(duì)攝像機(jī)進(jìn)行標(biāo)定包括:標(biāo)定攝像機(jī),獲得世界坐標(biāo)系到攝像機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣和平移向量,以及攝像機(jī)的畸變參數(shù),即建立世界坐標(biāo)系和圖像坐標(biāo)系之間的聯(lián)系,實(shí)現(xiàn)外參和內(nèi)參的計(jì)算。
s12、采用四路攝像頭采集圖像包括:采用分別安裝在車輛前后左右四處的攝像頭模塊,分別從車身的前、后、左、右四個(gè)方向拍攝并采集圖像。
優(yōu)選地,位于前后左右四處的前置攝像頭模塊、后置攝像頭模塊、左置攝像頭模塊、右置攝像頭模塊都是魚眼鏡頭。
s13、建立三維模型及紋理映射(建立三維模型以及對(duì)模型進(jìn)行三角剖分),將圖像的紋理元素和位置坐標(biāo)映射到模型上。
通常地,在渲染一個(gè)帶紋理的球面時(shí),首先將球面用三角剖分,計(jì)算三角剖分上每個(gè)頂點(diǎn)的世界坐標(biāo)系位置坐標(biāo)和紋理坐標(biāo),將紋理圖像放入opengl中,當(dāng)渲染時(shí),根據(jù)頂點(diǎn)的世界坐標(biāo)系位置坐標(biāo)和攝像頭內(nèi)參外參,得到該頂點(diǎn)在最終圖像中的投影位置,并根據(jù)該頂點(diǎn)的紋理坐標(biāo),從紋理圖像中采樣得到頂點(diǎn)對(duì)應(yīng)的像素值。其中,三角剖分頂點(diǎn)之間的頂點(diǎn)像素值可以由opengl插值實(shí)現(xiàn)。
本發(fā)明的3d全景生成方法的s13包括采用s12從車身的前、后、左、右四個(gè)方向采集的圖像來生成最終的3d全景圖像,該3d全景圖像可以用于3d車載環(huán)視輔助駕駛?cè)皥D像。采用車身的前、后、左、右四個(gè)方向采集的圖像來生成該3d全景圖像是通過三維曲面模型(該三維曲面為碗狀曲面)的渲染來實(shí)現(xiàn)的,即s13包括如下步驟:
s131在三維曲面模型中建立世界坐標(biāo)系。
在圖3中,以車輛中點(diǎn)為原點(diǎn),車輛右側(cè)方向?yàn)閤軸方向,車輛前側(cè)方向?yàn)閥軸方向,垂直于地面平面向上為z軸方向,由此可以得到三維曲面模型中的每一個(gè)點(diǎn)的頂點(diǎn)坐標(biāo)。
s132將車身四路攝像頭模塊獲得的原始圖像的紋理元素和位置坐標(biāo)映射到三維曲面模型上,得到原始圖像的3d重構(gòu),實(shí)現(xiàn)全景生成。
通常地,通過s131獲得了曲面的頂點(diǎn)坐標(biāo),只是得到了一個(gè)沒有上色的曲面而已,觀察這個(gè)曲面不會(huì)獲取任何的車輛周圍場景信息。因此,需要給曲面上色,色彩的來源即為四路攝像頭采集到的四路原始圖像,將四路攝像頭模塊采集到圖像像素值“貼”到曲面上(即,將原始圖像像素值反映到三維曲面模型上),觀察這個(gè)曲面,可以獲取到原始圖像的3d重構(gòu)。
優(yōu)選地,s132包括對(duì)原始圖像的紋理元素進(jìn)行渲染,將原始圖像像素值反映到三維曲面模型上(即,曲面上的點(diǎn)找到原始圖像中的對(duì)應(yīng)點(diǎn)(可能為浮點(diǎn)數(shù)),并用該對(duì)應(yīng)點(diǎn)的像素值填充到曲面上的該點(diǎn)),包括如下步驟:
s1320將三維曲面模型分為八個(gè)區(qū)域,前、后、左、右、左前、左后、右前、右后。,如圖4所示,類似橢圓形的區(qū)域中央為汽車本體,周圍被分為8個(gè)區(qū)域,其中前、后、左、右四個(gè)區(qū)域?yàn)榉侨诤蠀^(qū)域,如圖4的略淺灰色區(qū)域所示,左前,左后,右前,右后四個(gè)區(qū)域?yàn)槿诤蠀^(qū)域,如圖4略深灰色區(qū)域所示。
s1321非融合區(qū)域生成
對(duì)于前、后、左、右四個(gè)區(qū)域,分別可以投影到前后左右四個(gè)方向的攝像頭上。
以前側(cè)區(qū)域?yàn)槔皞?cè)區(qū)域中的一個(gè)點(diǎn)p,那么p在前側(cè)攝像頭oc圖像像素坐標(biāo)系下的坐標(biāo)pc(u,v)和世界坐標(biāo)系下坐標(biāo)pw(xw,yw,zw)的關(guān)系為:
其中,λ表示歸一化參數(shù),r和t為世界坐標(biāo)系到前側(cè)攝像機(jī)坐標(biāo)系的旋轉(zhuǎn)矩陣和平移向量(r是一個(gè)3*3矩陣,t是3*1的向量,即,外參和內(nèi)參)。cx,cy為前側(cè)魚眼鏡頭圖像的形變中心。
后側(cè)區(qū)域、左側(cè)區(qū)域、右側(cè)區(qū)域均參照前側(cè)區(qū)域的坐標(biāo)生成方法,由此,前后左右四個(gè)區(qū)域的四路原始圖像作為紋理圖像,根據(jù)上述的方法,通過獲取到前后左右四個(gè)區(qū)域曲面上的每一個(gè)點(diǎn)的世界坐標(biāo)到前后左右四路原始圖像坐標(biāo)的投影,可以獲取到曲面上每一個(gè)點(diǎn)的紋理坐標(biāo)。
s1232非融合區(qū)域生成
對(duì)于左前,左后,右前,右后四個(gè)區(qū)域,這四個(gè)區(qū)域?yàn)橄嘟粎^(qū)域,左前區(qū)域,該區(qū)域中的每一個(gè)點(diǎn)都可以投影到前側(cè)和左側(cè)攝像頭圖像中,需要從前側(cè)圖像中取得一個(gè)像素坐標(biāo),從左側(cè)圖像中取得一個(gè)像素坐標(biāo),并采用式(4-2)的接縫處融合算法,將從前側(cè)獲取到的像素值和左側(cè)獲取到的像素值融合起來,得到一個(gè)全新的像素值。
具體地,以左前側(cè)區(qū)域?yàn)槔瑢?duì)于左前側(cè)區(qū)域中的一點(diǎn)p,首先得到在前側(cè)圖像中的投影點(diǎn)p1′和左側(cè)圖像中的投影點(diǎn)p2′,采用加權(quán)融合的方法,得到p點(diǎn)的像素值為:
pixel(p)=λpixel(p′1)+(1-λ)pixel(p′2)式(4-2)
其中,λ∈[0,1]為融合參數(shù),越靠近左側(cè)區(qū)域和左前區(qū)域的相交線,λ越小。
左后區(qū)域、右前區(qū)域、右后區(qū)域均參照左前區(qū)域的坐標(biāo)生成方法,由此,獲取到左前,左后,右前,右后四個(gè)區(qū)域到曲面上每一個(gè)點(diǎn)的紋理坐標(biāo)。
在一個(gè)具體實(shí)施例中,采用opengl實(shí)現(xiàn)上述s1231和s1232。opengl是一套程序庫,提供了渲染3d模型的一些工具。在該具體實(shí)施方式中,包括如下方面:
仿照球面模型的渲染,我們將曲面模型進(jìn)行三角剖分,計(jì)算每一個(gè)頂點(diǎn)的位置坐標(biāo)和紋理坐標(biāo),曲面三角剖分內(nèi)部的點(diǎn)的像素值由opengl自動(dòng)插值實(shí)現(xiàn)。三角剖分越密,生成得到的全景圖像質(zhì)量越高。
對(duì)于非融合區(qū)域中的三角剖分頂點(diǎn),我們需要傳入世界坐標(biāo)系坐標(biāo)和紋理坐標(biāo):
如上所示,第一到三列為頂點(diǎn)的世界坐標(biāo)系坐標(biāo),第四到五列為頂點(diǎn)的紋理坐標(biāo)。
對(duì)于融合區(qū)域中的三角剖分點(diǎn),我們需要傳入世界坐標(biāo)系坐標(biāo),兩個(gè)紋理坐標(biāo)和融合參數(shù)λ。
如上所示,第一到三列為頂點(diǎn)的世界坐標(biāo)系坐標(biāo),第四到五列為頂點(diǎn)的第一個(gè)紋理坐標(biāo)(例如前側(cè)圖像紋理坐標(biāo)),第六到七列為第二個(gè)紋理坐標(biāo)(例如左側(cè)圖像紋理坐標(biāo)),最后一列為融合參數(shù)λ。
如果采用opengles1.0固定編程管線,對(duì)于融合區(qū)域的兩個(gè)紋理坐標(biāo)和一個(gè)融合參數(shù)的傳入,都會(huì)帶來很大的困難,我們可能需要依靠模板圖像等方法取巧生成,但對(duì)于opengles2.0可編程管線來說,帶入多個(gè)頂點(diǎn)數(shù)組和多個(gè)紋理圖像都是非常容易的問題。
對(duì)于非融合區(qū)域,相應(yīng)的頂點(diǎn)著色器為:
這里aposition為頂點(diǎn)坐標(biāo),atexcoord為紋理坐標(biāo),uprojmatrix為世界坐標(biāo)系到opengl虛擬攝像機(jī)的變換矩陣。
相應(yīng)的片元著色器為:
這里vtexcoord為紋理坐標(biāo),stexture為當(dāng)前某一路原始圖像,texture2d(stexture,vtexcoord)即為在stexture中得到vtexcoord對(duì)應(yīng)的像素值,賦值給最終顯示的片元顏色變量gl_fragcolor。
對(duì)于融合區(qū)域,相應(yīng)的頂點(diǎn)著色器為:
atexcoord1和atexcoord2為兩個(gè)紋理坐標(biāo),aweight為融合參數(shù)λ,aposition和uprojmatrix同上所示。
相應(yīng)的片元著色器為:
如上所示,stexture1和stexture2為兩路原始圖像,通過采樣函數(shù),我們得到在第一路原始圖像中的像素值color1和第二路原始圖像中的像素值color2,將兩個(gè)顏色值通過融合參數(shù)vweight融合得到最終的片元顏色。
由于四個(gè)攝像頭的光照不同,生成的原始四路圖像的的亮度也不一致,我們需要在全景圖像中平衡四路原始圖像的亮度,為此,我們需要給四路原始圖像分配不同的亮度補(bǔ)償值,并將其傳入到片元著色器中,如下,非融合區(qū)域片元著色器中的ucompensation,首先通過texture2d(stexture,vtexcoord)得到vtexcoord對(duì)應(yīng)的像素值,再將其由rgb轉(zhuǎn)換為yuv,將ucompensation加到y(tǒng)uv中的y分量中,之后,再將變換之后的yuv轉(zhuǎn)換為rgb,亮度調(diào)整的代碼如下所示:
s14輸出顯示
將處理后得到的全景圖像通過顯示單元進(jìn)行顯示輸出。
在一個(gè)具體實(shí)施例中,采用opengl實(shí)現(xiàn)該方法時(shí),如上述代碼所示,當(dāng)在main函數(shù)里寫入了gl_fragcolor時(shí),opengl框架隨機(jī)會(huì)進(jìn)行顯示輸出,所輸出的全景圖像如圖5所示。
根據(jù)本發(fā)明的一種實(shí)施方式,還公開了一種終端系統(tǒng),包括存儲(chǔ)器、一個(gè)或多個(gè)處理器,以及一個(gè)或多個(gè)計(jì)算機(jī)程序,其中所述一個(gè)或多個(gè)計(jì)算機(jī)程序被存儲(chǔ)在存儲(chǔ)器中,并且被配置成由所述一個(gè)或多個(gè)處理器執(zhí)行,所述計(jì)算機(jī)程序包括用于執(zhí)行前述的3d全景生成方法的各步驟(特別地,s132中包括的各步驟,更特別地,上述實(shí)施例中采用opengl所實(shí)現(xiàn)的上述s1231和s1232步驟)。
根據(jù)本發(fā)明的一種實(shí)施方式,還公開了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括與上述的終端系統(tǒng)結(jié)合使用的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序可被處理器執(zhí)行以完成前述的3d全景生成方法的各步驟(特別地,s132中包括的各步驟,更特別地,上述是實(shí)施例中采用opengl所實(shí)現(xiàn)的上述s1231和s1232步驟)。
本發(fā)明的3d全景圖像生成裝置以飛思卡爾的i.mx6平臺(tái)作為硬件平臺(tái),將采集到的圖像利用opengl技術(shù)映射到事先建立好的三維模型上,再通過顯示設(shè)備進(jìn)行顯示輸出。本發(fā)明通過四個(gè)攝像頭模塊實(shí)現(xiàn)了全景圖像的輸出,系統(tǒng)簡單,便于安裝;方法穩(wěn)定,簡單易行,運(yùn)行速度快,圖像精確度高,可用性強(qiáng),適用范圍廣,同時(shí)降低了計(jì)算量,降低了硬件、軟件成本。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。