董大衛,陶翰中,寧業衍,張汝梟,方宇
(201620 上海市 上海工程技術大學)
在交通控制和管理中,對車流量進行有針對性的統計是一項艱巨的工作,通常需要通過檢測車輛尺寸實現各種車型的分類,進而達到統計車流量的目的[1-3],這對于有效地管理停車場及嚴密監視公共路段等都有著極其重要的意義。現階段,國內外汽車檢測機構以及汽車廠普遍采用卷尺、角度尺、外徑卡規、標桿,以及光學式及電磁式檢測儀等測量工具。傳統的三維測量方法多為人工檢測,不但勞動強度大,而且實時性較差。工業上使用的檢測設備主要有全站儀、三坐標測量機,但是這些設備結構復雜,價格昂貴,不利于大規模推廣[4-6]。針對這一現狀,有必要設計一套檢測系統,除了能對汽車的外觀尺寸進行精準測量,還能根據汽車的尺寸對車輛的類型進行自動分類,從而能夠讓交通管理部門獲得詳細的數據,提高公共路段的車流量統計效率。
隨著計算機技術、圖像處理技術和視覺技術的飛速發展,科學家們對計算機視覺技術進行了深入的研究并取得了顯著的成果,并將其應用于產品質量檢測、精密測量、振動檢測及機器人等領域[7-9]。為了能夠提高車流量統計效率以及公路交通系統的監控性能和車輛的管理水平,本文采用機器視覺檢測手段,研究與開發出一套快速檢測系統,實現了對汽車尺寸的準確測量。這個系統可以作為公共路段管理的技術支撐,以解決傳統檢測方法實時性差、結構復雜等問題。除此之外,還可以將這一系統應用在特定場合作為智能交通系統的一部分,以實現對車輛的有效監控。
如圖1 所示,本文采用的是雙目視覺系統,即所謂的兩個相機的光軸平行。圖1 中,P 為現實中的一點;p 和p'為點P 分別在左右成像平面中的成像點;f 表示焦距;or與ot之間的距離即為雙目相機的基線,用B 表示。x 軸上相應的坐標分別為xr和xt,則視差可以表示為d=xr-xt。通過相似三角形的知識可以求得點P 與相機之間的距離z 為


圖1 雙目視覺模型Fig.1 Binocular vision model
首先使用MATLAB 對雙目相機進行標定,獲取相機的內外參數;然后對拍攝的圖像進行預處理,得到汽車的灰度圖像并進行去噪;接著使用SGBM 算法進行匹配,得到被測車輛的視差圖以及車身的三維點坐標;最后通過兩點之間距離公式,最終實現汽車的尺寸測量。
所謂的相機標定,即獲得相機內外參數的過程。在相機標定中,主要是4 個坐標系的變換,即:像素坐標系、圖像坐標系、相機坐標系以及世界坐標系。其中,像素坐標系與圖像坐標系之間的轉換關系為

式中:(u,v)——像素坐標系下的坐標;(x,y)——圖像坐標系下的坐標;(u0,v0)——圖像平面中心的坐標點。
世界坐標系與相機坐標系轉換關系為

式中:(Xc,Yc,Zc,1)T——點P 在相機坐標系下的坐標;(Xw,Yw,Zw,1)T——點P 在世界坐標系下的坐標。R,t ——旋轉矩陣與平行向量。
相機坐標系與圖像坐標系之間的轉換關系可由相似三角形得到:

將式(2)與式(3)代入式(4)可得

標定方法有很多種,比較常見的是使用MATLAB 工具箱標定以及OpenCV 標定。由于MATLAB 標定有較高的精度并且方便快捷,因此本文選用MATLAB 工具箱進行標定。標定過程采用先單目,后雙目的原則,其大致過程如下:
(1)通過程序生成標定板圖像并打印出來,打印角點數為12×9;
(2)采集標定板圖像。保持雙目相機姿勢固定,不斷變換標定板相對于相機的位置,拍攝20 組圖片;
(3)提取角點,進行單目標定。在經過多次迭代后,得到單目相機的內外參數,并將其保存;
(4)雙目標定,對左右相機的標定結果進行立體標定,得到兩個相機坐標系之間的旋轉矩陣以及平行向量。
要通過兩幅圖像計算出物點到相機平面的距離即深度,就必須將兩幅圖像中的同一像點準確地匹配對應起來,這樣才能根據該物點在兩幅圖像之間的位置關系計算出物體的深度。為了減少立體匹配的復雜程度以及計算量,兩個相機的成像平面應處于同一平面,也就是兩個相機的光軸應該平行,但是如果僅僅通過仔細地擺放相機位置來達到這個目的是很困難的,而立體校正正是通過幾何圖像之間的變換關系,使原本不滿足上述位置關系的兩幅圖像平面滿足該條件。
本文使用Bouguet 方法進行立體校正以及畸變校正,校正后的圖像如圖2 所示。

圖2 校正后的左右圖像Fig.2 Left and right images after correction
使用雙目相機采集汽車的圖像,并對其進行預處理,將其作為系統的輸入。由于原始圖像存在噪音等不利因素,因此需要進行預處理。經常使用的預處理方法有灰度化、圖像平滑等。
本文使用的是彩色相機,采集的圖像直接使用RGB 數據來表示顏色。彩色圖像中的每個像素均由顏色、亮度、飽和度等信息分量構成。在進行圖像處理時,由于彩色圖像擁有眾多分量因素導致數據量大、計算時間長,為了計算方便,提高效率,需要將彩色圖像轉換為數據量小的灰度圖像。所謂的灰度化處理,就是把彩色圖像轉換為灰度圖像,即將三通道圖像信息經過一系列變換后轉換為單一通道圖像信息。本文采用加權平均法對圖像進行灰度化處理,該方法的公式為

式中:Y ——像素點灰度;R,G,B——像素點的RGB 值。將圖像灰度化可以有效降低后續圖像預處理的計算量,使程序處理速度大大提升,后續實驗表明,對灰度圖像進行處理后,視差圖的質量更好。圖像灰度化后如圖3 所示。

圖3 汽車灰度化圖像Fig.3 Car gray image
圖像濾波是為了減少圖像在獲取過程中產生的噪聲。如果一幅圖像中的噪聲種類較多,就會嚴重影響圖像的質量以及后續的處理。因此,為了消除噪聲,必須根據實際情況進行處理。一般來說,圖像濾波的方法有領域平均法、加權重值濾波法以及中值濾波法,將三種算法性能進行比較,針對尺寸檢測系統而言,中值濾波法的處理效果較好,同時也滿足實時性的要求。濾波后的圖像如圖4 所示。

圖4 汽車濾波圖像Fig.4 Automobile filtered image
立體匹配過程可類比為人眼通過不同視角觀察物體,使物體在視網膜上成像,以此獲得物體空間信息的過程。利用雙目相機拍攝的汽車圖像,尋找兩幅圖像對應的匹配點,進而較為精準地計算出這點的世界坐標,這就是立體匹配的過程。
立體匹配的重點在于算法,立體匹配的精度在很大程度上由匹配算法的優劣決定。科學家們在對雙目視覺研究過程中,提出了大量匹配算法,根據最優化理論方法的不同,可以分為局部、基全局和半全局這三類匹配算法。盡管局部匹配算法匹配精度較低,但是匹配速度較快,效率較高;全局匹配算法恰恰相反,匹配精度較高,但是匹配效率較低。因此,為了兼顧匹配效率和匹配精度,打算采用半全局匹配算法。本文采用的是半全局匹配算法中的SGBM 算法。
SGBM 算法的核心步驟為:選取匹配基元;構建能量代價和函數;求取能量代價和函數的最優解。SGBM 算法所求的視差圖如圖5 所示。
為了驗證以上提出的汽車尺寸檢測方法,搭建了檢測平臺,如圖6 所示。試驗主要硬件設備有:一臺USB3.0 接口的萊娜雙目相機,型號為HNY-CV-003C,分辨率為2 560×960,幀率為60 f/s,像素尺寸為3.75 μm×3.75 μm,鏡頭焦距為3.6 mm,工作電壓為5 V,基線距離為6 cm;標定板選用12×9 的棋格板;一臺配有MATLAB2017b 以及OpenCV 的筆記本電腦。
使用MATLAB 工具箱進行“先單目,后雙目”標定,雙目相機標定結果如下:

式中:Pl,Pr——左右攝像機的內參;Dl,Dr——左右攝像機的畸變系數;R,t——旋轉向量和平移向量。
假設目標點在左視圖中的坐標為(u,v),計算的視差為d,目標點在以左相機光心為原點的世界坐標系中的坐標為(Xw,Yw,Zw),根據式(8)可得該目標點到相機平面的距離信息為

式中:Tx——校正后的雙目相機光心距離。
又因為

式中:W——非零常數。當u0=時,由式(8)和式(9)可得:

空間點坐標可表示為[Xw/W,Yw/W,Zw/W]T。在OpenCV中,目標的距離信息可由reprojectImageTo3D 函數獲得,SGBM 算法最終獲得的三維點坐標以及尺寸檢測結果如表1、表2所示。

表1 SGBM 算法檢測結果Tab.1 SGBM algorithm detection results

表2 測量數據對比Tab.2 Comparison of measurement data
利用校正后的圖片以及標定好的相機參數,通過SGBM 算法獲取汽車頭尾在左相機坐標系當中的世界坐標,通過兩點之間距離公式,即可對汽車的長度進行檢測。由表2 可知,利用本文提出的測量方法,測得汽車尺寸的最大誤差是9.460 mm,最小誤差是7.810 mm。通過雙目視覺檢測系統進行汽車尺寸檢測,可以減少人為測量時間,提高了效率。在測量過程中,相機的標定結果、光照、對基線距離的控制等因素對實驗結果影響較大,因此這將是以后繼續研究與改進的方向。
設計了一種基于MATLAB 與OpenCV 相結合的雙目立體視覺尺寸檢測系統,通過在C++的環境下,基于雙目測距的基本原理,利用MATLAB標定工具箱對雙目相機進行標定,將得到的攝像機內外參數等結果導入到OpenCV 進行后續的圖像預處理與立體匹配等,最終得到實際場景中汽車的三維信息,進而實現汽車尺寸的測量。根據試驗結果可知,該系統較好地完成了圖像的立體匹配以及視差圖的獲取,有較好的穩定性和較高的魯棒性,對現實場景中檢測出的汽車尺寸誤差在10 mm 之內,可以應用于實際檢測中。