楊慧聞 張嘉琪
1(中核地礦科技集團有限公司 北京 100013) 2(天津理工大學環境科學與安全工程學院 天津 300384)
當前,車輛駕駛技術已經由L2輔助駕駛技術(包括碰撞預警、車道偏離預警、行車記錄、倒車雷達等)向L3受條件約束的自動駕駛技術(主動干預、主動剎車、行人識別、車距檢測)方向發展。統計資料顯示,若在公路交通事故發生前的1.5 s給駕駛員發出預警,則可避免90%的人類車輛事故[1]。
為使車輛主動安全預警系統發出有效預警信息,對于行車障礙物的準確識別及距離檢測則顯得尤為重要。在距離檢測的研究中,有利用脈沖飛行時間原理的激光雷達測距,有利用單孔成像原理的單目測距,也有利用雷達、超聲波等傳感器通過監測車輛的自身狀態預測汽車碰撞情況,進行輔助駕駛。初期的輔助技術以被動式預警為主,當監測到車輛遇到潛在危險時,會發出報警聲提醒駕駛者注意車輛周邊狀況,但是當前的ADAS(高級輔助駕駛技術)[2]為了實現車輛的主動式安全,即識別障礙物使車輛進行主動剎車,采用較多的是基于雙目視覺技術的測距系統,相較于人眼只能取得主觀的判斷,該技術可以利用計算機讀出精確的數據,更加客觀地反映三維世界中的距離;對比于早年提出的單目系統,雙目立體視覺所需的對比樣本數據更少,只需要通過兩幅圖像就能讀取出視差信息,從而測量物體的遠近,精度高、實時性強因而泛用性也更強;相較于傳統的測距工具(如雷達、激光),雙目測距系統從安裝到標定再到投入使用所需要的工序少,更少的環節變相提高了系統的使用精度(人為操作的誤差率降低),而且雙目測距系統的養護頻率低,從而避免了人力物力的浪費。因此,本文設計一種基于LabVIEW的雙目測距系統,并在軟件平臺編寫圖像的立體匹配程序,獲取圖像深度信息,并對多組數據分析誤差率,驗證了可以在特征明顯的ROI區域測距誤差率保持在2%左右,證明了所設計的基于LabVIEW的雙目測距系統的可靠性。
雙目視覺測距基于相似三角形原理,即在理論成像模型中空間一點P在左右相機的像面上成像關系如圖1所示,右成像點Pr經過對稱在另一個成像面上的成像點為Pr1,則Pl到左像面左側距離Xl與Pr到右像面左側距離Xr的差值(Xl-Xr)即為視差d,兩相機光心為Ol、Or,利用兩個三角形(△PPlPr和△POlOr)相似,設Pl到Pr的距離為dis,可以得出所求深度(即距離)Z的公式如下:

圖1 空間點p在成像面的成像點
dis=T-(Xl-Xr)
(1)
d=Xl-Xr
(2)
(3)
(4)
式中:d為視差,單位為像素尺寸pixel,在計算時需要乘以pixelsize(像素尺寸),要求得像素尺寸,則需要建立像素坐標與圖像坐標系的關系;f為相機焦距;T為兩臺相機光心距離。
在世界坐標系與相機坐標系的轉換中屬于剛體轉換,涉及到的轉換為旋轉和平移,可以用旋轉轉矩R和平移矩陣T來描述,設轉換前空間一點P的坐標為P(Xw,Yw,Zw),轉換后的P點坐標為P(Xc,Yc,Zc),轉換公式如下:
(5)
轉換為矩陣式為:
(6)
式中:旋轉矩陣R為3×3矩陣;平移矩陣T為3×1矩陣。
像素坐標系和圖像坐標系都在成像平面上,只是各自的原點和度量單位不一樣,兩個坐標系間的關系如圖2所示[3]。

圖2 像素坐標系與圖像坐標系
相機的光心在成像面上的投影點為圖像坐標系的原點,如圖2中的O-XY坐標系,而像素坐標系的原點為成像面的左上角邊緣點,即O-UV坐標系,單位分別為mm和pixel,前者為物理單位,后者為像素單位。圖2中p為空間任一點,其在坐標系中為p(x,y)。兩個坐標系間的轉換關系如下:設dx和dy分別表示每個像素點的行和列代表的實際尺寸為多少mm,即1pixel=dxmm。假設像素點坐標(u0,v0)為圖像坐標中心,可以列出方程組:
(7)
(8)
從相機坐標系到圖像坐標系,屬于透視投影關系,從3D坐標系轉換到2D坐標系。如圖3所示,利用△ABOc與△OCOc相似和△PBOc與△pCOc相似可以得到:

圖3 相機坐標系與圖像坐標系

(9)
(10)
(11)
通過以上四個坐標系的轉換就可以得到一個點從世界坐標系與像素坐標系的轉換關系如下:
(12)
式中:第一個矩陣內為像素坐標系與圖像坐標系間關系,為相機內參,第二個矩陣內為世界坐標系與相機和圖像坐標間的關系,為相機外參,相機內外參通過相機標定即可得到。由式(12)可求出空間一點P的理論三維坐標及深度Z計算公式如下[4]:
(13)
式中:x、y、z即為空間一點P的理論三維信息,通過圖像匹配獲取視差d和雙目相機的內參矩陣和外參矩陣,從而計算出x、y、z的值。
在LabVIEW平臺編寫軟件用到的圖像匹配算法為灰度值金字塔算法[5],該算法使用歸一化相關度作為核心特征。圖像匹配過程分為學習和匹配兩個階段。在學習階段,算法會從模板圖像中獲取該圖像的灰度值和邊緣梯度信息,將學習到的信息進行暫時存儲[6]。在匹配階段,灰度值圖像匹配算法會從被匹配圖像中獲取該圖像的灰度值,通過在檢測圖像中定位歸一化相關度最高的區域來開始匹配。
基于灰度值的歸一化相關度算法[7](Normalized Cross Correlation,NCC)是在圖像中尋找匹配模板的最常用方法,利用子圖與模板圖的灰度,通過歸一化的相關性度量公式來計算二者之間的匹配程度。為了提高匹配過程的速度,需要減小圖像的大小并限制匹配的圖像區域,采用金字塔匹配算法是提高匹配速度的一種常用方法。當圖像中的圖案沒有縮放或旋轉時,歸一化相關度法可以檢測到相同大小的圖案甚至最大旋轉角度為5°到10°的圖案[8],當匹配圖像方式旋轉之后,圖像匹配會變得更加復雜,此時如果可以從圖像中提取有關圖像旋轉的參數,則可以簡單地旋轉模板再進行相關匹配會簡單很多,在軟件設計時,增加圖片旋轉操作,以保證在匹配的開始,兩幅圖像在理論上沒有旋轉角度,降低匹配時間。設S為k×l的實時圖,T為m×n的模板圖,模板T在圖像S上遍歷,將在(i,j)位置覆蓋的子圖記作Si,j,則子圖Si,j與模板T之間的歸一化相關度RN(i,j)計算式如下:
RN(i,j)=
(14)
式中:E(Si,j)、E(T)分別表示(i,j)處子圖、模板的平均灰度值;Si,j(m,n)和T(m,n)分別為搜索子圖和模板在位置(m,n)處的灰度值。在對實時圖按一定順序遍歷搜索后,計算每一個子圖位置的相關度,具有最大相關值的子圖位置即為最佳匹配位置。
金字塔搜索算法是通過減小圖像和模板的大小,以提高ROI(手動框選的圖像匹配區域)圖像匹配的時間[9]。該算法使用了高斯金字塔的方法將圖像和模板取樣到較小的空間分辨率,這種方法每隔一個像素采樣一次,因此圖像和模板在每個連續的金字塔級別上都可以減小到其原始大小的四分之一,如圖4所示。

圖4 金字塔算法將圖像縮小到原先1/4的效果圖
在金字塔算法的學習階段,該算法自動計算給定模板的最大金字塔級別,并儲存表示模板所需的數據及其在所有金字塔級別上的版本。該算法會試圖找到一個最佳的金字塔層次(基于對模板數據的分析),這將提供最快和最準確的匹配,同時可以使用灰度值(基于像素強度)作為特征。該方法利用歸一化像素灰度值作為特征,這樣做可以確保不遺漏任何信息,這在模板不包含結構化信息,但具有復雜紋理或密集邊緣時非常有用。
金字塔算法在匹配階段使用從粗到細的方法[10],以盡可能低的分辨率(最高的金字塔級別)開始搜索,即從實時圖Sk和模板圖Tk開始進行匹配,在Sk所有的搜索位置上與Tk進行相關運算,得到粗匹配位置(xk,yk)。由于在該分辨率下,搜索的圖像和模板的大小已經顯著減小,因此計算速度很快且可以執行基于窮舉的相關性搜索,相對而言從粗到細的匹配已經消除大量的冗余計算。但此時相關度值較低,可能會產生多個粗匹配位置,然后將具有較高分辨率即較低一層金字塔層的圖像Sk-1和Tk-1進行進一步匹配,即只需在粗匹配位置進行相關運算即可,確定相對精確的匹配位置(xk-1,yk-1)。以此類推,直到在最高分辨率的實時圖S0和模板T0上找到精確匹配位置為止[11]。這種方法將所有后續搜索限制在最佳匹配候選對象周圍的小的局部區域,從而顯著提高了速度。
為使金字塔算法匹配中獲得最佳性能,通常可以進行以下調整。
(1) 搜索旋轉模式時,使用“角度范圍”設置將搜索限制為最小角度范圍,以提高性能并減少內存消耗。例如,如果已知匹配僅從基準位置略微旋轉,則-10°到10°的角度范圍就足夠了。
(2) 該算法會根據請求的匹配次數和最小匹配分數自動處理從粗到細的匹配。配置以獲得程序速度和準確性的最佳組合。
(3) 最小對比度設置指定一個區域必須顯示的最小對比度值,才能被視為候選區域。在圖像背景中存在顯著的低對比度或零對比度區域(均勻區域)時,使用此功能可提高速度。
基于灰度值金字塔算法的雙目測距系統的軟件設計[12]是利用NI公司的LabVIEW工程可視化編程軟件。軟件程序包括圖像旋轉、圖像查找、圖像提取、圖像匹配[13]、像素坐標系、相似度值、立體視覺工作臺(即步進電機控制程序)、圖像ROI拾取及ROI區域像素值、x和y像素差等功能。軟件中的匹配參數包含有相似度閾值(即低于此相似度時,認為圖像匹配未成功)[14]、圖像匹配的相似度值(從0~1 000,0為不匹配,1 000為完美匹配);同時程序右下角單獨顯示有手動選取的圖像ROI,也有圖像ROI的匹配簇[15](以像素坐標表示,位置對應圖像的左上角的角點坐標為初始零點坐標),ROI圖像匹配的x、y坐標的像素差(此像素差和像素坐標即為雙目測距計算深度信息的數據),圖像匹配采用屏幕ROI拾取方式,基于以上功能設計的LabVIEW測距軟件的程序前后面板如圖5-圖9所示[16]。

圖5 雙目視覺測距系統軟件程序前面板(操作界面)

圖6 步進電機驅動程序前面板(操作界面)

圖7 LabVIEW軟件編寫圖像匹配及測距程序框圖

圖8 LabVIEW程序for循環中的for結構截圖

圖9 LabVIEW軟件編寫步進電機驅動程序框圖
雙目測距系統硬件由步進電機、兩臺海康威視Smart265 4K相機、行程開關、USB轉R485轉換器、筆記本電腦(Windows 10操作系統、i55處理器、8 GB內存)構成。相機平移控制程序由LabVIEW中編寫的立體視覺平臺子VI控制,將左目相機固定右目相機由步進電機控制移動,可以操縱步進電機在任意位置停止進行拍攝,實物搭建圖如圖10所示。

圖10 雙目測距系統實物搭建圖
仿真實驗在實驗室進行,為避免實驗偶然性,均采用實驗室普通常見物件作為雙目測距的標志物,所選用的標志物有筆筒、3D耗材盒子、工控機盒子、自制標定板、502膠水瓶2個、小藍盒子及收納盒,均為隨機選取進行測距實驗。取左目相機一臺固定于滑軌一側上,使用步進電機進行驅動,保證右目相機在同一水平線上平移,且兩臺相機同一型號保證相機內參相同,滑軌經過標定后測得,步進電機每驅動1 000個單位,相機平移8 cm,取5幅連續照片(第一幅為右目拍攝照片,第二至第五幅照片為右目每平移8 cm所拍攝的圖像)進行雙目測距仿真實驗并進行數據分析,軟件運行及圖像匹配時程序如圖11所示,通過式(5)進行計算,匯總結果如圖12-圖15所示。

圖11 仿真實驗右目相機連續平移4次,每次8 cm拍攝的標識物圖像

圖12 雙目測距系統軟件運行時的實時系統界面截圖

圖13 理論測距實驗數據及與實際距離對比圖

圖14 測距系統測距誤差率匯總

圖15 測距系統左右目圖像匹配相似度圖
針對雙目視覺測距系統的軟件設計,通過仿真實驗對測得五組數據進行統計分析,實驗結果表明:
(1) 在圖像相似度值上,本文匹配結果與蔡秀梅等[17]關于匹配方法研究中的結果相比較,其中魯棒精確匹配算法匹配值達到982.4,其他魯棒LBP算法、改進的harris算法、harris算法匹配值分別為902.7、888.7和638.2,本文的相似度匹配值在特征清晰、紋理復雜的標志物時均能達到950以上,在其他較弱紋理區域匹配值在900左右,表明本文系統基于灰度值金字塔雙目圖像匹配結果可以用來計算視差值。
(2) 在軟件測試中通過進行自身對照,圖像匹配相似度數據顯示,程序設計存在系統誤差,系統像素誤差為0.5 pixel,可以在計算過程中進行提前消去以避免影響結果。此外,出現一組匹配相似度結果為614的偶然誤差,可能是選擇ROI區域時選擇不當,屬于操作失誤,在考慮誤差率時可以不考慮該組數據。
(3) 由圖13-圖15實驗數據可得出,從右目平移8 cm到32 cm的4組數據中,隨著相機間距離T的增加,像素差ΔX也在增加,符合式(3)的正相關情況。在焦距不變情況下,隨著相機間光心距T增加,誤差率也隨之增加,誤差率與光心距符合正相關關系。
(4) 由圖15可知,相似度值與特征點選取有關,本次實驗隨機選取的8樣常見標志物各自區域灰度值紋理復雜度相差較為明顯,其中墻面為無紋理或弱紋理區域接近純白,灰度值接近255(灰度等級0~255,0為黑色,白色為255),匹配難度最大,相似度值均在900以下,匹配誤差率明顯最大。其次小藍盒子由于數量較多及灰度值相差并不明顯,故匹配誤差率僅次于白色墻面。此外標定板和502盒子灰度值最小,特征最為明顯,匹配相似度值最高,誤差率最小。由此可知,在雙目測距選取測量標志物時,選擇接近于標定板這樣紋理明顯且復雜度較高的物體時圖像匹配相似值較高,誤差較低。
(5) 本次仿真實驗雖然每組數據選擇標志物的ROI區域不完全相同(右目相機移動圖像識別區域產生遮擋和每次所選區域不能100%相同),但是誤差率均能達到5%以下,甚至對于特征點明顯的標志物測距誤差率低至了2%左右,且保證圖像匹配的相似度值均達到了900以上,充分檢驗了灰度值金字塔算法在圖像匹配ROI處理時的可靠性,且驗證了基于LabVIEW的雙目視覺測距系統設計達到預期效果,未來在更多場景的測試后有可能實現車載系統的應用,用來解決行車障礙物及車距的精確測量。
本文通過設計雙目視覺測距系統及進行仿真實驗,論證基于灰度值金字塔算法的圖像匹配程序的可靠性,未來在更多場景的測試后有可能實現車載系統的應用,用來解決行車障礙物及車距的精確測量問題,為未來車輛L3級自動駕駛的主動安全系統提供一種解決方案。