黃琬婷,胡小平
(國(guó)防科技大學(xué),長(zhǎng)沙410073)
近年來(lái),基于視覺(jué)傳感器的導(dǎo)航定位方法逐漸成為研究的熱點(diǎn),視覺(jué)信息被廣泛應(yīng)用于地面機(jī)器人、小型飛行器等無(wú)人系統(tǒng)導(dǎo)航中的三維重構(gòu)。相機(jī)參數(shù)的標(biāo)定作為實(shí)現(xiàn)安全準(zhǔn)確視覺(jué)導(dǎo)航的前提和關(guān)鍵,對(duì)提高導(dǎo)航的精度有著十分重要的意義。設(shè)計(jì)適用于高精度視覺(jué)測(cè)量的靈活、穩(wěn)健的相機(jī)標(biāo)定算法,仍是視覺(jué)導(dǎo)航領(lǐng)域研究工作的重點(diǎn)之一。
根據(jù)視覺(jué)傳感器數(shù)目的不同,現(xiàn)有的相機(jī)標(biāo)定方法可被分為:?jiǎn)文恳曈X(jué)相機(jī)標(biāo)定、雙目視覺(jué)相機(jī)標(biāo)定和多目視覺(jué)相機(jī)標(biāo)定。根據(jù)標(biāo)定方式的不同,相機(jī)標(biāo)定方法又可被分為:傳統(tǒng)相機(jī)標(biāo)定法、基于主動(dòng)視覺(jué)的相機(jī)標(biāo)定法和相機(jī)自標(biāo)定法[1]。
所謂傳統(tǒng)相機(jī)標(biāo)定法,是利用一個(gè)結(jié)構(gòu)已知、精度很高的標(biāo)定物作為空間參照,通過(guò)空間點(diǎn)和圖像點(diǎn)之間的對(duì)應(yīng)關(guān)系來(lái)建立相機(jī)模型參數(shù)間的約束,根據(jù)優(yōu)化算法求解這些參數(shù)的方法。典型代表方法有 DLT 方法[2]和 Tsai兩步法[3]等。傳統(tǒng)相機(jī)標(biāo)定法可以獲得比較高的標(biāo)定精度,但其標(biāo)定物的加工和維護(hù)較為復(fù)雜,而且在危險(xiǎn)、惡劣的實(shí)際環(huán)境中,往往很難設(shè)置標(biāo)定物?;谥鲃?dòng)視覺(jué)的相機(jī)標(biāo)定法是指把相機(jī)安裝在一個(gè)可以精確控制的平臺(tái)上,通過(guò)主動(dòng)控制相機(jī)做某些特殊運(yùn)動(dòng)來(lái)獲取多幅圖像,利用圖像和可控制相機(jī)的運(yùn)動(dòng)參數(shù)來(lái)確定相機(jī)參數(shù),其代表性方法是馬頌德提出的基于兩組三正交運(yùn)動(dòng)的線(xiàn)性方法[4]。后來(lái),楊長(zhǎng)江、李華等人提出了改進(jìn)方案,即分別基于4組平面正交及5組平面正交運(yùn)動(dòng),利用圖像中的極點(diǎn)信息來(lái)線(xiàn)性標(biāo)定相機(jī)[5?6]。這種標(biāo)定法計(jì)算簡(jiǎn)單,通??梢跃€(xiàn)性求解且魯棒性較好,但系統(tǒng)成本高且不適用于相機(jī)運(yùn)動(dòng)參數(shù)未知或無(wú)法精確控制相機(jī)運(yùn)動(dòng)的場(chǎng)合。近年來(lái)提出的相機(jī)自標(biāo)定方法,不依賴(lài)于標(biāo)定參照物,僅利用相機(jī)在自然運(yùn)動(dòng)過(guò)程中對(duì)周?chē)h(huán)境多視圖之間的對(duì)應(yīng)關(guān)系,對(duì)相機(jī)進(jìn)行標(biāo)定,靈活性大,實(shí)用性強(qiáng),常用基于絕對(duì)二次曲線(xiàn)或其對(duì)偶絕對(duì)二次曲面的方法進(jìn)行相機(jī)參數(shù)擬合[7]。但該方法屬于非線(xiàn)性標(biāo)定,標(biāo)定結(jié)果的精度欠佳,魯棒性不高。
受張正友平面標(biāo)定方法[8]的啟發(fā),本文綜合運(yùn)用相機(jī)傳統(tǒng)標(biāo)定法與自標(biāo)定方法的優(yōu)勢(shì),主要針對(duì)單目相機(jī)徑向畸變誤差,通過(guò)對(duì)采集到的棋盤(pán)格圖像進(jìn)行加權(quán)平均法灰度化的圖像預(yù)處理、Harris角點(diǎn)檢測(cè)和亞像素精確化等方法,在角點(diǎn)提取精度等方面進(jìn)行改進(jìn),有效地提高了相機(jī)標(biāo)定結(jié)果的精度,對(duì)畸變圖像進(jìn)行了有效校正,并且對(duì)多種攝像頭傳感器實(shí)驗(yàn)均有效,適用性強(qiáng)。
由于圖像采集設(shè)備的性能差異、棋盤(pán)格本身的平整性、復(fù)雜多變的外界環(huán)境及圖像采集過(guò)程中的偶然因素影響,直接采集到的棋盤(pán)格圖像往往并不適合直接進(jìn)行標(biāo)定。因此,需要對(duì)采集到的棋盤(pán)格圖像先進(jìn)行圖像預(yù)處理、Harris角點(diǎn)檢測(cè)和亞像素精確化,再進(jìn)行參數(shù)標(biāo)定,具體流程如圖1所示。
圖1 單目視覺(jué)相機(jī)標(biāo)定改進(jìn)算法的基本流程圖Fig.1 Basic flow chart of improved calibration algorithm for monocular vision camera calibration
由相機(jī)直接采集到的棋盤(pán)格圖像是RGB格式的彩色圖像,每個(gè)像素點(diǎn)由紅(Red)、綠(Green)、藍(lán)(Blue)3種基本顏色分量的變化及它們相互之間的疊加得到[9]。其中,每個(gè)分量用8位數(shù)據(jù)表示,數(shù)據(jù)范圍為0~255,占用了大量的存儲(chǔ)空間。由于棋盤(pán)格本身是黑白的,不需要顏色信息,所以在相機(jī)標(biāo)定過(guò)程中,可先把彩色圖像轉(zhuǎn)化為灰度圖像。這樣不僅可以大大降低圖像后續(xù)處理的內(nèi)存開(kāi)銷(xiāo)和運(yùn)算復(fù)雜度,還可以提高相機(jī)標(biāo)定的效率。
對(duì)RGB圖像進(jìn)行灰度化,通俗地說(shuō)就是對(duì)圖像的R、G、B 3個(gè)分量進(jìn)行不同加權(quán),得到最終的灰度值。由于人眼對(duì)綠色的敏感度最高,對(duì)紅色次之,對(duì)藍(lán)色敏感度最低[10],所以本文采用從人體生理學(xué)角度所提出的一種權(quán)值——加權(quán)平均法,得到最為合理的灰度圖,即
(1)Harris角點(diǎn)檢測(cè)
目前,數(shù)字圖像處理中的角點(diǎn)檢測(cè)的方法大致可以劃分為3類(lèi):基于灰度圖像的角點(diǎn)檢測(cè)、基于二值圖像的角點(diǎn)檢測(cè)和基于輪廓曲線(xiàn)的角點(diǎn)檢測(cè)[11]。本文采用了具有很高魯棒性的基于灰度圖像的Harris角點(diǎn)檢測(cè)算法。
Harris角點(diǎn)檢測(cè)算法主要利用圖像的灰度變化,其檢測(cè)過(guò)程為:根據(jù)實(shí)際需求設(shè)定1個(gè)固定大小的模板,以每個(gè)像素點(diǎn)為中心,沿任意方向移動(dòng),記錄每次移動(dòng)后模板內(nèi)所有像素點(diǎn)的灰度值總和的變化量。如果在某點(diǎn)的變化值比預(yù)先設(shè)定的閾值高,則判定該點(diǎn)為角點(diǎn)[12]。據(jù)此可得到Harris矩陣M,并定義角點(diǎn)響應(yīng)函數(shù)R
其中,w(x,y)為Gauss核函數(shù),IX和IY分別表示圖像在X和Y2個(gè)方向上的灰度梯度。k是經(jīng)驗(yàn)系數(shù),一般取值為0.04~0.06,trace(M)表示矩陣的跡,det(M)表示矩陣的行列式。當(dāng)某個(gè)像素的角點(diǎn)響應(yīng)R高于預(yù)先設(shè)定的閾值時(shí),判定該像素點(diǎn)為角點(diǎn)。
(2)亞像素精確化
通過(guò)Harris角點(diǎn)檢測(cè)算法獲得的角點(diǎn)坐標(biāo)是整像素級(jí)別的坐標(biāo)(整數(shù)),對(duì)相機(jī)標(biāo)定而言并不夠精確[13]。因此,本文對(duì)角點(diǎn)坐標(biāo)進(jìn)行了亞像素精確化,將其坐標(biāo)位置精確到亞像素級(jí)別的浮點(diǎn)值。
在實(shí)際圖像中,邊緣兩側(cè)的灰度變化是緩慢過(guò)渡的,并非理想的階躍變化。利用這一特性,對(duì)像素的基本單位再進(jìn)行細(xì)分,以提高圖像的分辨率。角點(diǎn)即2個(gè)邊緣的交點(diǎn),亞像素角點(diǎn)通常位于圖像中灰度發(fā)生過(guò)渡變化的區(qū)域,利用邊緣點(diǎn)兩側(cè)的相關(guān)信息和向量的點(diǎn)積理論,即1個(gè)向量和其正交向量的點(diǎn)積為0,可將角點(diǎn)坐標(biāo)值精確到亞像素級(jí)[10]。
如圖2所示,先假設(shè)起始角點(diǎn)Q′在實(shí)際亞像素角點(diǎn)Q附近,角點(diǎn)Q附近的點(diǎn)可分為在邊緣上的點(diǎn)與不在邊緣上的點(diǎn)兩大類(lèi)。其中,點(diǎn)Q與其附近在邊緣上的點(diǎn)Pi之間的灰度梯度關(guān)系為
在實(shí)際圖像中,由于受到噪聲的影響,式(4)往往并不等于0。于是,可將其轉(zhuǎn)化為求最小誤差和的方程形式,即
對(duì)式(5)進(jìn)行一系列整理變換,得到實(shí)際亞像素角點(diǎn)Q的迭代式為
其中,上標(biāo)k代表第k次的迭代值。求解時(shí),取起始角點(diǎn)Q′的坐標(biāo)為初始值Q0,然后通過(guò)式(6)進(jìn)行迭代計(jì)算,即可得到更加精確的亞像素級(jí)別的角點(diǎn)坐標(biāo)。
張氏標(biāo)定法是張正友教授于1999年在文獻(xiàn)[8]中提出的基于單平面棋盤(pán)格的相機(jī)標(biāo)定方法。此方法綜合了傳統(tǒng)標(biāo)定法與自標(biāo)定法的優(yōu)勢(shì),不需要額外的輔助器材,僅需一張打印的棋盤(pán)格,操作簡(jiǎn)單且實(shí)用性強(qiáng),既克服了傳統(tǒng)標(biāo)定法需要高精度標(biāo)定物、操作繁瑣等缺點(diǎn),又較自標(biāo)定方法精度更高,且已經(jīng)作為封裝好的工具箱函數(shù),被廣泛應(yīng)用于視覺(jué)導(dǎo)航的攝像頭標(biāo)定中。
將世界坐標(biāo)系的X-Y平面建立在棋盤(pán)格平面上,即Z=0,式(7)可簡(jiǎn)化為
H即為單應(yīng)性矩陣。將H矩陣定義為
由于r1和r2標(biāo)準(zhǔn)正交,可得如下約束
令
B矩陣是一個(gè)對(duì)稱(chēng)矩陣,其未知量可表示為一個(gè)六維向量b
設(shè)H矩陣的第i列為hi,hi=[hi1hi2hi3]T,根據(jù)b的定義可以推導(dǎo)出如下公式
因此,2個(gè)基本約束式(10)和式(11)可被改寫(xiě)為方程組
V矩陣是2×6矩陣,即每個(gè)單應(yīng)性矩陣可建立起2個(gè)方程組,而內(nèi)參矩陣包括5個(gè)未知參數(shù),要對(duì)其進(jìn)行求解,至少需要使用3張棋盤(pán)格圖片進(jìn)行標(biāo)定。計(jì)算得到矩陣b后,相機(jī)的內(nèi)參矩陣A即可通過(guò)b求解出,從而R、t可根據(jù)式(7)得到。
重投影法可以有效反映相機(jī)標(biāo)定精度,通常被用作對(duì)標(biāo)定結(jié)果進(jìn)行評(píng)估的手段。
利用標(biāo)定所得相機(jī)參數(shù),計(jì)算某個(gè)角點(diǎn)反向投影所得的像點(diǎn)坐標(biāo),再與實(shí)際檢測(cè)到的像點(diǎn)坐標(biāo)作差,得到總體平均誤差[14]。這一方法可以定量、直觀地對(duì)標(biāo)定結(jié)果進(jìn)行評(píng)估,以評(píng)定相機(jī)標(biāo)定算法的好壞。重投影法的誤差計(jì)算公式為
其中,M代表標(biāo)定所得到的相機(jī)參數(shù)矩陣,利用角點(diǎn)的三維空間坐標(biāo) [XwYwZw]T反向投影到像素坐標(biāo)系,Q代表重投影點(diǎn)坐標(biāo)與角點(diǎn)實(shí)際檢測(cè)的像坐標(biāo)的向量差,S即為這兩點(diǎn)的標(biāo)量距離。
對(duì)在一幅圖像中檢測(cè)到的多個(gè)角點(diǎn)進(jìn)行重投影,分別求得誤差Si,再進(jìn)行均值處理,即可求得一幅圖像的平均誤差。在實(shí)驗(yàn)中,使用總體平均誤差評(píng)價(jià)標(biāo)定結(jié)果,即所有有效圖像的平均誤差的均值為
(1)標(biāo)定板
選用平整性良好的印有10×10黑白棋盤(pán)格圖像的標(biāo)定板,如圖3所示。
圖3 10×10黑白棋盤(pán)格標(biāo)定板Fig.3 Calibration board of 10×10 black-andwhite checkerboard
(2)攝像頭
本文選用5個(gè)型號(hào)相同的攝像頭傳感器(型號(hào)為 RER?USBFHD01),分別編號(hào) 209、301、302、305和307。通過(guò)對(duì)多個(gè)攝像頭進(jìn)行標(biāo)定,檢驗(yàn)本文標(biāo)定算法的適用性。
在光線(xiàn)均勻明亮的環(huán)境中,利用5個(gè)攝像頭分別從不同角度對(duì)標(biāo)定板進(jìn)行拍攝,采集不同姿態(tài)的圖像各40張。為保證所拍攝的圖像較為清晰,需將標(biāo)定板置于畫(huà)面中央,占圖像1/2以上。如圖4所示,利用Matlab對(duì)采集圖像進(jìn)行加權(quán)平均法灰度化,最后將圖像設(shè)為.bmp格式文件 (數(shù)據(jù)采集時(shí)間為2017年12月14日)。
圖4 采集圖像加權(quán)平均法灰度化(攝像頭209)Fig.4 Grayscale the weighted average method for collected images(Camera 209)
分別將5個(gè)攝像頭拍攝的經(jīng)過(guò)圖像預(yù)處理的.bmp圖片,添加到本文在OpenCV的標(biāo)定程序文件夾下。通過(guò)Harris角點(diǎn)檢測(cè)、亞像素精確化和張氏標(biāo)定法,完成相機(jī)標(biāo)定任務(wù)。每幅圖像提取6×8個(gè)角點(diǎn),如無(wú)法提取成功,則視該圖為無(wú)效。
以攝像頭209為例,可得相機(jī)內(nèi)參矩陣及畸變向量如下
內(nèi)參矩陣:
畸變向量:
[-0.4596802777437611 0.307237431144763-0.002709521158450577-0.001103777488967206-0.5369128000898185]
利用所得相機(jī)參數(shù)對(duì)原畸變圖像進(jìn)行校正,如圖5所示。
作為對(duì)比,利用 Matlab相機(jī)標(biāo)定工具箱Toolbox_calib分別對(duì)5個(gè)攝像頭拍攝的圖片進(jìn)行標(biāo)定。以攝像頭209為例,得到結(jié)果如下
圖5 畸變圖像校正前后對(duì)比圖Fig.5 Contrast picture before and after the correction for a distorted image
(1)重投影法對(duì)比本文標(biāo)定算法與Matlab標(biāo)定工具箱
通過(guò)重投影法對(duì)本文的標(biāo)定算法和Matlab相機(jī)標(biāo)定工具箱Toolbox_calib所得的標(biāo)定結(jié)果進(jìn)行評(píng)估。仍以攝像頭209為例,因圖像清晰度等問(wèn)題,本文標(biāo)定算法實(shí)際采用了40張圖像中的20張有效圖像,得到各有效圖像的像素平均誤差如表1所示。
通過(guò)計(jì)算可得,本文標(biāo)定算法對(duì)攝像頭209的標(biāo)定結(jié)果的像素總體平均誤差約為S=0.19。
在相同條件下,Matlab相機(jī)標(biāo)定工具箱Toolbox_calib所得標(biāo)定結(jié)果的像素平均誤差如圖6所示,總體平均誤差為S′=0.58。
表1 攝像頭209標(biāo)定結(jié)果的圖像像素平均誤差Table 1 Image pixel mean error of camera 209 calibration results
圖6 Matlab標(biāo)定工具箱的像素平均誤差直方圖(攝像頭 209)Fig.6 Histogram of pixel mean error of Matlab Toolbox_calib (Camera 209)
另外4個(gè)攝像頭所得標(biāo)定結(jié)果經(jīng)重投影法所得像素總體平均誤差如表2所示。
表2 兩種標(biāo)定算法的重投影誤差Table 2 Re-projection error of two calibration algorithms
通過(guò)對(duì)比可知,本文標(biāo)定算法取得的標(biāo)定結(jié)果明顯優(yōu)于Matlab相機(jī)標(biāo)定工具箱,誤差更小,精度更高,且本文標(biāo)定算法對(duì)多個(gè)攝像頭均適用,標(biāo)定算法的穩(wěn)定性良好。
(2)實(shí)驗(yàn)存在的不足
分析標(biāo)定原理、實(shí)驗(yàn)過(guò)程和實(shí)驗(yàn)結(jié)果,本文標(biāo)定算法仍存在一些不足:
1)易受拍攝圖像亮度不均的影響。盡管拍攝環(huán)境光線(xiàn)均勻,但所得圖像仍存在亮度不均、局部過(guò)曝等現(xiàn)象,造成部分角點(diǎn)坐標(biāo)提取誤差較大,如圖7所示。
圖7 局部過(guò)曝圖像角點(diǎn)提取圖Fig.7 Corner extraction of local overexposed image
2)只考慮了單目相機(jī)的徑向畸變。相機(jī)的畸變主要可分為徑向畸變、薄棱畸變和偏心畸變?nèi)?lèi)[15]。想要進(jìn)一步提高標(biāo)定算法的精度,應(yīng)建立畸變模型,考慮多種畸變。
本文在張正友平面標(biāo)定法的基礎(chǔ)上,利用Matlab和OpenCV設(shè)計(jì)了基于張氏標(biāo)定法的單目相機(jī)改進(jìn)標(biāo)定算法。通過(guò)對(duì)直接采集到的棋盤(pán)格圖像進(jìn)行圖像預(yù)處理、Harris角點(diǎn)檢測(cè)和亞像素精確化等,有效提高了角點(diǎn)提取的精度,并通過(guò)重投影法對(duì)標(biāo)定結(jié)果的精度進(jìn)行了評(píng)估。實(shí)驗(yàn)結(jié)果表明,本文標(biāo)定算法的標(biāo)定結(jié)果明顯優(yōu)于Matlab標(biāo)定工具箱Toolbox_calib的標(biāo)定結(jié)果,對(duì)畸變圖像進(jìn)行了有效的校正,并且對(duì)多個(gè)攝像頭傳感器均適用,體現(xiàn)了算法的有效性和穩(wěn)定性。同時(shí),通過(guò)觀察在實(shí)驗(yàn)過(guò)程中出現(xiàn)的問(wèn)題,分析相機(jī)標(biāo)定原理及實(shí)驗(yàn)結(jié)果,仍發(fā)現(xiàn)一些不足??赏ㄟ^(guò)數(shù)字圖像處理技術(shù)改善圖像局部過(guò)曝和噪聲現(xiàn)象,并考慮相機(jī)的多種畸變,進(jìn)一步提高標(biāo)定算法的精度和穩(wěn)定性。