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