朱春媚,張文康
(電子科技大學(xué)中山學(xué)院機(jī)電工程學(xué)院,中山 528403)
道路劃線(xiàn)是公路建設(shè)的重要組成部分,隨著公路的不斷興建和城市交通管理的智能化,道路劃線(xiàn)的工作量日益增多。目前道路劃線(xiàn)設(shè)備以手推劃線(xiàn)機(jī)和車(chē)載劃線(xiàn)機(jī)為主,兩種劃線(xiàn)機(jī)劃線(xiàn)時(shí)均需要提前人工劃好道路基準(zhǔn)線(xiàn),再以道路基準(zhǔn)線(xiàn)為參考基點(diǎn)劃出其它的道路標(biāo)線(xiàn)。人工繪制道路基準(zhǔn)線(xiàn)包含人工測(cè)量、標(biāo)位點(diǎn)和放樣線(xiàn)等環(huán)節(jié),勞動(dòng)強(qiáng)度大、效率低且繪制質(zhì)量容易受人為因素影響[1]。如果能夠自動(dòng)檢測(cè)到劃線(xiàn)噴頭與道路邊緣的距離,則可根據(jù)設(shè)定距離與實(shí)際距離的偏差,自動(dòng)調(diào)整劃線(xiàn)噴頭的位置劃出基準(zhǔn)水線(xiàn),省去原有的人工測(cè)量、標(biāo)位點(diǎn)和放樣線(xiàn)工序。因此,劃線(xiàn)噴頭與道路邊緣的距離檢測(cè)是實(shí)現(xiàn)自動(dòng)劃線(xiàn)的關(guān)鍵。目前道路邊緣測(cè)距主要有超聲波測(cè)距和機(jī)器視覺(jué)測(cè)距兩類(lèi)。楊慶鳳等[2]提出了一種超聲波測(cè)距技術(shù),通過(guò)超聲波實(shí)現(xiàn)劃線(xiàn)機(jī)與道路邊緣之間的距離測(cè)量;王珩[3]也采用超聲波測(cè)距技術(shù)獲得劃線(xiàn)機(jī)與道路邊緣的距離來(lái)實(shí)現(xiàn)定位。超聲道路邊緣測(cè)距一般以護(hù)欄或路緣石作為參考點(diǎn),測(cè)量劃線(xiàn)噴頭與護(hù)欄或路緣石的距離,該方法具有結(jié)構(gòu)簡(jiǎn)單、成本較低的優(yōu)點(diǎn),缺點(diǎn)是要求道路有連續(xù)的路緣石,且容易受溫度、汽車(chē)行駛產(chǎn)生的風(fēng)噪和發(fā)動(dòng)機(jī)噪聲的影響,因此適用面較小。機(jī)器視覺(jué)道路邊緣測(cè)距是通過(guò)圖像傳感器捕捉道路邊緣圖像,利用圖像處理的方法計(jì)算得到攝像頭與道路邊緣的距離,該方法受道路條件影響小,是目前主流的測(cè)距方法。如苑瑋琦等[4]、陳連勇[5]和李志鵬[6]等均采用圖像傳感器采集道路信息,通過(guò)Hough 變換檢測(cè)道路邊緣實(shí)現(xiàn)測(cè)距。機(jī)器視覺(jué)測(cè)距通常用到復(fù)雜的圖像處理方法,需要上位機(jī)進(jìn)行計(jì)算,硬件成本較高,不適用于嵌入式道路劃線(xiàn)定位控制裝置。鑒于此,本文提出一種基于雙目相機(jī)深度圖的道路邊緣測(cè)距方法,通過(guò)檢測(cè)深度圖中道路邊緣的中心點(diǎn)實(shí)現(xiàn)測(cè)距。
基于雙目相機(jī)深度圖的道路邊緣測(cè)距方法總體流程如圖1所示。采用張正友標(biāo)定法進(jìn)行雙目相機(jī)參數(shù)標(biāo)定,獲得相機(jī)的內(nèi)部參數(shù)和外部參數(shù),并通過(guò)調(diào)整標(biāo)定棋盤(pán)格的拍攝角度和距離來(lái)減少畸變系數(shù),達(dá)到畸變校正的效果;采用BM 算法計(jì)算左右圖像對(duì)中對(duì)應(yīng)匹配點(diǎn)對(duì)之間的視差值獲得深度圖;通過(guò)二值化、腐蝕膨脹和尋找最大色塊的方法檢測(cè)深度圖中的道路邊緣中心點(diǎn),最后通過(guò)坐標(biāo)轉(zhuǎn)換獲得雙目相機(jī)與道路邊緣的橫向距離。
為了計(jì)算圖像坐標(biāo)系與世界坐標(biāo)系之間的相對(duì)位置關(guān)系,需對(duì)雙目攝像頭進(jìn)行參數(shù)標(biāo)定以獲得攝像機(jī)的內(nèi)參數(shù)和外參數(shù)。攝像機(jī)標(biāo)定法主要有傳統(tǒng)標(biāo)定法、自標(biāo)定法、主動(dòng)視覺(jué)標(biāo)定法和張正友標(biāo)定法,其中張正友標(biāo)定法先通過(guò)線(xiàn)性模型求出攝像機(jī)內(nèi)外參數(shù)的最優(yōu)解,然后采用最大似然估計(jì)法精確非線(xiàn)性求解得到攝像機(jī)的內(nèi)外參數(shù),具有操作簡(jiǎn)單和精度高等優(yōu)點(diǎn),被廣泛用于雙目相機(jī)標(biāo)定[7]。
本文采用張正友標(biāo)定法,通過(guò)Matlab 內(nèi)置的Stereo Camera Calibrator APP 實(shí)現(xiàn)雙目相機(jī)標(biāo)定。首先用雙目相機(jī)獲取棋盤(pán)格標(biāo)定板圖像對(duì),然后提取每組圖像的角點(diǎn),在提取角點(diǎn)的過(guò)程中,應(yīng)盡量讓標(biāo)定棋盤(pán)格占據(jù)盡可能多的畫(huà)面,可以得到更多有關(guān)攝像頭畸變方面的消息。點(diǎn)擊Calibrate 進(jìn)行計(jì)算,可得到各組照片標(biāo)定結(jié)果的反投影誤差,點(diǎn)擊Export Camera Parameters 來(lái)獲取攝像頭的標(biāo)定參數(shù),得到的左右攝像頭單獨(dú)標(biāo)定參數(shù)如圖2 所示。其中IntrinsicMatrix 是攝像頭的內(nèi)參,RadialDistortion和TangentialDistortion 分別為徑向畸變系數(shù)和切向畸變系數(shù)。
為了獲得較好的標(biāo)定參數(shù),減少?gòu)较蚧兿禂?shù)和切向畸變,本文分別采用標(biāo)定紙和標(biāo)定板進(jìn)行標(biāo)定,得到標(biāo)定數(shù)據(jù)分別如圖3 和圖4 所示,可見(jiàn)標(biāo)定紙和標(biāo)定板的平均反投影誤差分別為0.28 像素和0.10 像素,標(biāo)定板的標(biāo)定效果明顯優(yōu)于標(biāo)定紙。
圖3 標(biāo)定紙的標(biāo)定數(shù)據(jù)
圖4 標(biāo)定板的標(biāo)定數(shù)據(jù)
在進(jìn)行攝像頭標(biāo)定時(shí),可以通過(guò)拍攝不同角度或者距離的棋盤(pán)格圖案來(lái)獲取攝像頭內(nèi)參和畸變系數(shù),選擇畸變系數(shù)最佳的一組,通過(guò)減少標(biāo)定誤差達(dá)到畸變校正的效果。
通過(guò)立體匹配計(jì)算左右圖像匹配點(diǎn)對(duì)之間的視差值獲得深度圖。立體匹配是立體視覺(jué)系統(tǒng)的關(guān)鍵步驟,也是核心技術(shù),其基本思想就是利用雙目圖像中的像素對(duì)應(yīng)關(guān)系來(lái)計(jì)算物體在空間中的位置和距離[8-9]。BM(block matching)算法[10],其本質(zhì)是一種塊匹配算法,使用的是SAD(sum of absolute differences)匹配代價(jià)計(jì)算方式,通過(guò)選定一個(gè)左像素,在右圖像范圍中尋找最佳像素點(diǎn)與之配對(duì),形成像素對(duì),然后計(jì)算絕對(duì)差值之和,SAD 的值越小,說(shuō)明匹配的效果越好[11]。BM 算法最大的優(yōu)點(diǎn)就是計(jì)算速度快,適合移植用于嵌入式系統(tǒng)。本文采用BM 算法計(jì)算深度圖,得到的深度圖如圖5所示。
圖5 BM算法深度圖、右視圖和左視圖
對(duì)BM 算法獲得的深度圖通過(guò)圖像處理的方法檢測(cè)道路邊緣的中心點(diǎn),包含二值化、腐蝕、膨脹和尋找最大色塊圖像運(yùn)算。
首先,通過(guò)全局閾值法實(shí)現(xiàn)圖像二值化,其思想是將整個(gè)圖像的像素值與一個(gè)設(shè)定的閾值進(jìn)行比較,將大于該閾值的像素設(shè)置為白色,小于該閾值的設(shè)置為黑色,如公式(1)所示。
其中,g(x,y)為運(yùn)算后像素值,f(x,y)為原像素值,T為閾值,本文取T= 125。
然后,對(duì)二值化后的深度圖先腐蝕后膨脹,腐蝕的作用是消除物體邊界點(diǎn),使目標(biāo)縮小,可以消除小于結(jié)構(gòu)元素的噪聲點(diǎn);膨脹的作用是將與物體接觸的所有背景點(diǎn)合并到物體中,使目標(biāo)增大,可添補(bǔ)目標(biāo)中的空洞。對(duì)深度圖進(jìn)行腐蝕膨脹運(yùn)算,可以消除二值化深度圖中高亮物體的孔洞,讓深度圖更加平滑、均衡。
最后,通過(guò)尋找最大色塊提取道路邊緣區(qū)域,把道路邊緣以外的像素全部置零后,計(jì)算得到道路邊緣中心點(diǎn)的像素坐標(biāo)(i,j)。道路邊緣中心點(diǎn)的繪制效果如圖6所示。
圖6 道路邊緣中心點(diǎn)檢測(cè)結(jié)果
根據(jù)深度圖中道路邊緣的中心點(diǎn)在相機(jī)坐標(biāo)系中的坐標(biāo)以及相機(jī)的內(nèi)部參數(shù)和外部參數(shù)計(jì)算攝像頭與道路邊緣中心點(diǎn)的距離。具體步驟如下:
首先,計(jì)算道路邊緣中心點(diǎn)在相機(jī)坐標(biāo)系的坐標(biāo)。設(shè)像素點(diǎn)(i,j)的深度值為D(i,j),相機(jī)的內(nèi)參(fx,fy,u0,v0)已經(jīng)通過(guò)相機(jī)標(biāo)定得知,則該像素點(diǎn)在相機(jī)坐標(biāo)系的計(jì)算公式如下:
然后,將相機(jī)坐標(biāo)系中的坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)系。設(shè)相機(jī)的外部參數(shù)為旋轉(zhuǎn)矩陣R和平移向量T,則該道路邊緣中心點(diǎn)在世界坐標(biāo)系中的坐標(biāo)為
(Xw,Yw,Zw)即是道路邊緣中心點(diǎn)的三維坐標(biāo)。設(shè)雙目相機(jī)中心與圖像道路邊緣中心點(diǎn)的實(shí)際距離為d,雙目相機(jī)中心與實(shí)際道路邊緣的橫向距離為h,相機(jī)與道路橫向的夾度為α,則有:
采用400萬(wàn)像素的雙目相機(jī)采集道路邊緣圖像,相機(jī)與道路橫向的夾度為α=30°。在Matlab2010進(jìn)行雙目攝像頭標(biāo)定,采用Python3.10.11 進(jìn)行圖像處理與計(jì)算。實(shí)驗(yàn)結(jié)果見(jiàn)表1,平均相對(duì)誤差為2.96%。
表1 測(cè)量結(jié)果及相對(duì)誤差
提出一種基于雙目相機(jī)深度圖的道路邊緣測(cè)距方法,包含雙目相機(jī)參數(shù)標(biāo)定、深度圖計(jì)算、道路邊緣中心點(diǎn)檢測(cè)和距離計(jì)算四個(gè)步驟。其中雙目相機(jī)參數(shù)標(biāo)定采用廣泛使用的張正友標(biāo)定法,獲得相機(jī)的內(nèi)部參數(shù)和外部參數(shù),并通過(guò)調(diào)整標(biāo)定棋盤(pán)格的拍攝角度和距離來(lái)減少畸變系數(shù),達(dá)到畸變校正的效果;為了兼顧計(jì)算精度與速度以適用于嵌入式系統(tǒng)使用,采用計(jì)算速度較快的BM 算法計(jì)算左右圖像匹配點(diǎn)對(duì)之間的視差值獲得深度圖;通過(guò)二值化、腐蝕膨脹和尋找最大色塊等圖像處理方法檢測(cè)得到道路邊緣中心點(diǎn),最后通過(guò)道路邊緣的中心點(diǎn)在相機(jī)坐標(biāo)系中的坐標(biāo),以及相機(jī)的內(nèi)部參數(shù)和外部參數(shù),計(jì)算攝像頭與道路邊緣中心點(diǎn)的距離,完成測(cè)距。本文方法可用于嵌入式道路劃線(xiàn)定位控制系統(tǒng),根據(jù)檢測(cè)的距離控制執(zhí)行裝置實(shí)現(xiàn)道路劃線(xiàn)噴頭的自動(dòng)定位。