汪永超,耿麗清
(天津職業(yè)技術(shù)師范大學天津市信息傳感與智能控制重點實驗室,天津 300222)
隨著計算機視覺技術(shù)的快速發(fā)展,計算機視覺技術(shù)已應(yīng)用于社會的各個領(lǐng)域。其中,雙目標定是立體視覺系統(tǒng)的基礎(chǔ),立體匹配和三維重建的準確性是由標定結(jié)果的準確性和速度決定的。因此,在雙目立體視覺系統(tǒng)中,雙目標定的準確性非常重要。攝像機標定可簡單分為單目標定和雙目標定,這是機器視覺的重要內(nèi)容之一[1],相機標定有3 種常用的方法,分別為傳統(tǒng)標定法、自標定法以及張正友標定法[2]。目前,傳統(tǒng)標定法需要高精度的標定物,但在攝像機數(shù)學模型下計算十分復雜,標定速度慢;自標定法不需要借助參考物,但標定的精度和魯棒性較低[3];而張正友標定法克服了傳統(tǒng)標定法在標定物上的嚴格要求,并對自標定法進行了優(yōu)化,具有標定精度高、操作簡單、魯棒性好等優(yōu)點,被廣泛應(yīng)用[4-7]。本文在張正友標定法的基礎(chǔ)上介紹利用OPENCV 軟件實現(xiàn)的標定法,將該方法與MATLAB 軟件雙目標定進行對比,驗證其標定法精度的準確性。
在計算機視覺技術(shù)中,只有確定空間幾何物體和它在圖像中某一具體點和對應(yīng)點之間的關(guān)系,才可以進行計算機視覺系統(tǒng)的下一步,因此建立幾何數(shù)學模型是必要的,幾何模型中的參數(shù)就是相機參數(shù)[8]。在一般情況下,相機參數(shù)的獲取是由實驗和相關(guān)數(shù)學計算得到的,而攝像機標定就是獲得相機參數(shù)的過程,這個過程也被稱為相機標定[9-10]。在幾何數(shù)學模型下,實現(xiàn)將三維空間的某一個物體的坐標轉(zhuǎn)化為二維圖像下的坐標,需用到4 種坐標系,分別是世界坐標系、圖像物理坐標系、像素坐標系和攝像機坐標系。相機標定中常用的坐標系如圖1所示。
圖1 相機標定中常用的坐標系
在圖1中,像素坐標系(XfOfYf)和圖像物理坐標系(XOY)之間的數(shù)學變化關(guān)系是以矩陣的形式實現(xiàn),即:
式中:u,v 分別為像素坐標系中像素的橫、縱坐標;1/dx、1/dy分別為圖像物理坐標系中橫、縱坐標的單位長度上的像素個數(shù)。
而世界坐標系(XwOwYw)和攝像機坐標系(xoy)之間的數(shù)學變化關(guān)系式為:
式中:T 為平移向量;R 為旋轉(zhuǎn)矩陣。滿足的約束條件為:
圖像坐標系與攝像機坐標系之間的變化為:
式中:Zc為攝像機坐標系(xoy)中的光軸,與x 軸和y軸互相垂直[3];X、Y 分別為某一點p 的攝像機坐標系在圖像物理坐標系中的坐標;f 為相機的焦距。
將式(4)變化到像素坐標系,就可以得到點p 和像素坐標系下的像點pf之間的數(shù)學變化關(guān)系,從而可得到圖像坐標系和世界坐標系之間的數(shù)學轉(zhuǎn)換關(guān)系式[11]:
式中:M1為相機的內(nèi)部參數(shù),包含5 個,分別為1/dx、1/dx、f、u0、v0;M2為相機的外部參數(shù),分別為旋轉(zhuǎn)矩陣R 和平移向量T,共包含了6 個參數(shù)。
本文所用到的標定原理是利用相機成像的幾何數(shù)學模型,分別在MATLAB 和OPENCV 軟件上進行標定實驗。實驗臺如圖2所示,標定的流程如圖3所示。
圖3 標定的流程
采用張正友棋盤格雙目標定法,使用MATLAB 的標定工具箱和棋盤格標定板對左右相機進行雙目標定,獲得相機的內(nèi)部參數(shù)和外部參數(shù)。
在張正友棋盤格雙目標定法中,通過選擇不同方向、不同角度的棋盤格角點的2 個或多個圖像,便可得出與成像平面對應(yīng)的三維空間下的棋盤平面的坐標,然后就能得到2 個平面的單應(yīng)矩陣H[12]。由式(5)與針孔成像可得:
式中:p 為成像平面的某一點的坐標;P 為三維空間下的坐標。將棋盤格轉(zhuǎn)換到成像平面,可得:
根據(jù)式(6)和(7)推導出:
式中:H 為棋盤格與成像平面之間的單應(yīng)矩陣,繼而求出相機的內(nèi)部參數(shù)M1、外部參數(shù)中的旋轉(zhuǎn)矩陣R 和平移向量T。
基于MATLAB 的雙目標定實驗采用張正友標定法原理,其算法實現(xiàn)過程如下:
(1)在MATLAB 的命令行中輸入stereo Camera Calibrator。
(2)選擇上面的“Skew”“Tangential Distortion”以及“2 Coefficients”等選項,將“3 Coefficients”選項去掉。
(3)將采集到的圖片信息進行標定。
(4)將標定后的結(jié)果進行保存[13]。
實驗操作過程為:
(1)選擇標定板:本實驗所采用的的校準板為高精度浮法玻璃,如圖2所示,其大小為340 mm×260 mm,每個方格的尺寸均為25 mm,圖案陣列為12×9,其精度達到0.02 mm。
(2)采集圖像:在系統(tǒng)過程中,相機保持靜止的狀態(tài),采集校準板多組不同方向、不同位置的圖像,同時將采集到的圖像保存在項目目錄下的toolbox_calib,保存的格式是bmp。
(3)角點提?。涸贛ATLAB 工具箱中通過單擊“提取網(wǎng)格角”提取每一個圖像中的特征點,即每一個圖像中的黑白棋格的交叉點。
(4)雙目標定:對相機進行雙目校準程序,用來獲取相機相應(yīng)的內(nèi)部參數(shù)和外部參數(shù)。
(5)輸出結(jié)果:內(nèi)部參數(shù)采用矩陣的形式,如式(9),而外部參數(shù)采用旋轉(zhuǎn)矩陣R 和平移向量T 形式。
基于OPENCV 的雙目標定實驗同樣采用的是張正友標定法原理,其算法實現(xiàn)過程如下:
(1)錄入棋盤格的詳細信息,包括棋盤格的橫向和縱向的數(shù)目以及總的角點數(shù)目[14]。
(2)計算標定板上的實際物理坐標,通過采集到的圖像信息進行亞像素角點檢測。
(3)進行攝像機標定和校正。
(4)將標定后的相機的內(nèi)部參數(shù)和外部參數(shù)進行保存[15]。
實驗操作過程如下:
(1)選擇標定板:選擇、使用與MATLAB 校準板規(guī)格相同的校準板。
(2)采集圖像:在系統(tǒng)過程中,相機保持靜止的狀態(tài),采集校準板多組不同方向、不同位置的圖像,同時將采集到的圖像保存在項目目錄下的calibdata,保存的格式是txt。
(3)角點提?。涸贠PENCV 中校準板中每個圖像的角點由函數(shù)find Chessboard Corners 獲得。
(4)雙目標定:通過函數(shù)camera Matrix 和dist Coeffs獲得相機的外部參數(shù)和內(nèi)部參數(shù)[16]。
(5)輸出結(jié)果:所獲得的內(nèi)部參數(shù)矩陣方程,如式(10)和外部參數(shù)平移向量和旋轉(zhuǎn)矩陣。
在實驗中,采用的均是張正友標定法,相機的焦距為4 mm,相機的水平距離為20 cm,通過選取14 幅同一個相機、同一個校準板圖像,獲得相機的內(nèi)部參數(shù)和外部參數(shù)。內(nèi)部參數(shù)矩陣可以理解為焦距相關(guān),它是一個從平面到像素的轉(zhuǎn)換,焦距不變,內(nèi)部參數(shù)也不變,所以確定后可以重復使用?;儏?shù),一般也包含在內(nèi)部參數(shù)矩陣中。而外部參數(shù)矩陣反映的是攝像機坐標系與世界坐標系的轉(zhuǎn)換。從作用上來看,內(nèi)部參數(shù)矩陣是為得到相機的信息并消除畸變,使得到的圖像更為準確,外部參數(shù)矩陣是為了得到相機相對于世界坐標的聯(lián)系,也是為了最終的測距。因此,通過式(9)和式(10)的相機內(nèi)部參數(shù)比較得知,在外部環(huán)境一致的條件下,可以明顯看到基于OPENCV 的雙目標定比基于MATLAB 的雙目標定結(jié)果更接近于實際相機的焦距,而且OPENCV 的雙目標定結(jié)果更加精確。通過比較2 種標定結(jié)果的外部參數(shù)中平移向量T可以看出,基于OPENCV 的雙目標定比基于MATLAB的雙目標定結(jié)果更接近于實際相機的水平距離。
本文研究基于MATLAB 軟件和OPENCV 軟件,采用張正友標定法原理,對攝像機的標定系統(tǒng)結(jié)果進行準確性分析,得出攝像機的標定是為得到相機的內(nèi)部參數(shù)和外部參數(shù),內(nèi)部參數(shù)主要是獲得相機的焦距,外部參數(shù)主要是獲得平移向量T 和旋轉(zhuǎn)矩陣R,用來描述2 個坐標系之間的相對位置,所以相機標定結(jié)果的準確性影響雙目立體視覺中測距的準確性。實驗結(jié)果表明,在相同的外部實驗環(huán)境、相同的標定法原理下,基于OPENCV 軟件的雙目標定的精度比基于MATLAB 軟件的雙目標定的精度更高,誤差更小。