牛苗苗 孫燦 熊海涵
【摘要】在基于tsai一階徑向畸變標(biāo)定方式的基礎(chǔ)上,提出了一種改進(jìn)算法。算法結(jié)合傳統(tǒng)標(biāo)定原理首先線性求解攝像機(jī)模型內(nèi)外參數(shù),作為初值,應(yīng)用于帶有二階徑向畸變,偏心畸變和薄棱鏡畸變的圖像矯正模型,通過最小二乘法求解6項(xiàng)畸變尺度因子。充分利用OpenCV視覺函數(shù)庫對(duì)圖像分步校正,避免了重復(fù)計(jì)算并判斷透鏡非線性映射。實(shí)驗(yàn)結(jié)果表明,改進(jìn)算法提高了系統(tǒng)標(biāo)定精度,降低了計(jì)算時(shí)間復(fù)雜度,可以實(shí)現(xiàn)較高精度的單目視覺標(biāo)定及立體視覺匹配的應(yīng)用需求。
【關(guān)鍵詞】單目標(biāo)定;畸變校正;立體匹配;tsai方法
計(jì)算機(jī)立體視覺技術(shù)的實(shí)現(xiàn)主要包括圖像獲取,攝像機(jī)標(biāo)定,特征提取,立體匹配和三維重建五部分[1]。攝像機(jī)標(biāo)定作為空間三維圖景到成像二維平面的首要條件,是立體視覺系統(tǒng)圖像深度測(cè)量的基礎(chǔ)部分。而夾角,都不可避免的作用在攝像機(jī)透視成像過程上。對(duì)于以上鏡頭徑向,切向畸變,目前標(biāo)定方法主要分制造中所引起的光學(xué)鏡頭徑向曲率變化,裝配中導(dǎo)致 的多鏡頭光軸不同軸以及鏡頭與攝像機(jī)像平面存在的為傳統(tǒng)標(biāo)定方法[2],自標(biāo)定方法[3]以及基于主動(dòng)視覺的標(biāo)定方法。典型的傳統(tǒng)標(biāo)定方法主要有abdel-aziz和karara提出的直接線性變換法(DLT),hallert提出的非線性優(yōu)化法,tsai的兩步法以及張正友的平面模板法[4]。這其中tsai[5]兩步標(biāo)定法的主要貢獻(xiàn)是在RAC條件下,用DLT方法求解透鏡矩陣系統(tǒng)參數(shù),并以此作為初始迭代值,非線性優(yōu)化估計(jì)畸變參數(shù),減少了求解參數(shù)空間維數(shù),提高了線性求解速度和非線性求解精度,并廣泛應(yīng)用于實(shí)時(shí)性較高的機(jī)器視覺場(chǎng)合。tsai的方法中只引入了一級(jí)徑向畸變,對(duì)于一些精度要求高的場(chǎng)合,往往需要引入切向畸變。本文在tsai方法基礎(chǔ)上,引入二級(jí)徑向畸變,偏心畸變,薄棱鏡畸變,全面分析攝像機(jī)透鏡模型,結(jié)合OpenCV視覺函數(shù)庫標(biāo)定攝像機(jī)內(nèi)外參數(shù),并給出畸變校正后的棋盤格圖像。
1.透鏡成像及畸變校正
圖1為廣泛應(yīng)用于工業(yè)非接觸尺寸測(cè)量的基于徑向畸變的攝像機(jī)針孔模型[6],O-XWYWZW為全局坐標(biāo)系,攝像機(jī)透鏡光心與坐標(biāo)系O-XCYCZC的原點(diǎn)重合,xc軸和yc軸分別與xw軸yw軸平行,zc軸與zw軸平行,O-XY為像平面坐標(biāo)系,以mm為單位,O-UV為像素坐標(biāo)系,以pixels為單位,點(diǎn)P在像素坐標(biāo)系O-UV下的離散坐標(biāo)(u,v)恒為整數(shù)值,?表示攝像機(jī)焦距,標(biāo)定點(diǎn)P的成像過程由以下幾步坐標(biāo)系轉(zhuǎn)換完成:(1)全局坐標(biāo)系到攝像機(jī)坐標(biāo)系的剛體變換;(2)像平面坐標(biāo)系到像素坐標(biāo)系的變換;(3)攝像機(jī)坐標(biāo)系到像平面坐標(biāo)系的變換;經(jīng)過上述坐標(biāo)系齊次變換,得到點(diǎn)P全局坐標(biāo)與像素坐標(biāo)關(guān)系如下[7]:
式(1)中,M1為攝像機(jī)內(nèi)參數(shù)矩陣,ax,ay分別為x軸y軸上尺度焦距,單位為pixels,u0,v0為圖像中心坐標(biāo),M2為攝像機(jī)外參數(shù)矩陣,為3×3正交旋轉(zhuǎn)矩陣,平移矩陣,M為攝像機(jī)投影矩陣。攝像機(jī)標(biāo)定的目的就是精確求解內(nèi)參數(shù)?x,?y,u0,v0和外參數(shù)矩陣R,T。由于無法避免透鏡畸變,(1)式中的待求解參數(shù)并不能代表實(shí)際的透鏡參數(shù),因此需要引入非線性畸變校正攝像機(jī)投影矩陣各項(xiàng)參數(shù)。成像點(diǎn) 的坐標(biāo)畸變轉(zhuǎn)換如下[8]:
式中,(xu,yu)和(xd,yd)表示點(diǎn)p在像平面坐標(biāo)系O-XY下的無畸變坐標(biāo)和畸變坐標(biāo),ζx,ζy為投影畸變?cè)谙衿矫鎥軸和y軸上的映射,tsai的標(biāo)定方法中只考慮了一階徑向畸變,限制了復(fù)雜背景下對(duì)攝像機(jī)標(biāo)定的高精度要求,擴(kuò)展帶有二階徑向畸變,偏心畸變和薄棱鏡畸變的校正模型如下:
式中r2=xd2+yd2,k1,k2為徑向畸變尺度,p1,p2為切向畸變尺度,ε1,ε2為薄棱鏡畸變尺度在成像平面上的徑向和切向分量。通過求解(1),(3)式攝像機(jī)參數(shù),空間點(diǎn)的三維坐標(biāo)得以重建。
2.改進(jìn)的標(biāo)定方法
首先線性求解攝像機(jī)投影矩陣M,然后以M各項(xiàng)投影參數(shù)為初始迭代值,結(jié)合三項(xiàng)畸變模型,求解畸變系數(shù),最后以中心點(diǎn)坐標(biāo)區(qū)域局部最小值為數(shù)據(jù)擬合函數(shù),全局優(yōu)化所求攝像機(jī)內(nèi)外參數(shù)初值和畸變因子。具體求解方法如下:(1)求解攝像機(jī)內(nèi)外參數(shù)。對(duì)于空間i=1,2,3...n個(gè)標(biāo)定坐標(biāo)點(diǎn),由式(1)可以得到:
其中,(Xwi,Ywi,Zwi,1)表示標(biāo)定靶第i個(gè)點(diǎn)的三維坐標(biāo)的齊次坐標(biāo), 表示第(ui,vi,1)個(gè)點(diǎn)的圖像坐標(biāo)的齊次坐標(biāo),為投影元素。為了消除攝像機(jī)坐標(biāo)Zci的影響,可以將(4)式用線性方程表示如下:
根據(jù)線性模型的成像原理,每個(gè)已知的空間點(diǎn)全局坐標(biāo)和像素坐標(biāo)都不同的對(duì)應(yīng)一個(gè)式(5)所表示的兩個(gè)線性方程,由(5)式可知,線性方程一共有12個(gè)待求投影參數(shù),通常認(rèn)為空間兩坐標(biāo)系的變換并不受相乘系數(shù)的影響,因此對(duì)于(5)式,可令m12=1,當(dāng)有足夠數(shù)量的對(duì)應(yīng)點(diǎn)個(gè)數(shù)i,滿足2i≥11時(shí),用最小二乘法對(duì)上述線性方程組求解,可在迭代過程中得到投影矩陣參數(shù)mj。為了進(jìn)一步求解攝像機(jī)內(nèi)參數(shù),旋轉(zhuǎn)矩陣和平移矩陣,將式(1)所表示的投影矩陣與攝像機(jī)內(nèi)外參數(shù)矩陣的關(guān)系擴(kuò)展如下:
(6)
r3作為上述正交單位矩陣的第三行元素,|r3|=1。由等式兩邊左右對(duì)應(yīng)關(guān)系可知,m12m3=r3,可以求出m12=1/|m3|,并結(jié)合(5)式所求投影參數(shù),可以得到圖像中心坐標(biāo)點(diǎn),,透鏡尺度焦距在像平面坐標(biāo)系X軸上的分量,在y軸上的分量,得到上述四項(xiàng)內(nèi)部參數(shù)后,旋轉(zhuǎn)矩陣和平移矩陣的各向量參數(shù)可以線性求出:
(2)求解畸變系數(shù)
綜合(1),(2),(3)式可以得到下式畸變坐標(biāo)到全局坐標(biāo)的轉(zhuǎn)換方程組:
對(duì)于圖1中的共面標(biāo)定靶,Zw=0,式中旋轉(zhuǎn)及平移參數(shù)均已由第一步線性求出,將式(7)中的上下兩方程相除可得:
式中包含有限個(gè)畸變參數(shù),其中A1=r11Xw+r12Yw+tx,A2=r21Xw+r22Yw+ty,標(biāo)定理想狀態(tài)下的n個(gè)非共線圖像坐標(biāo)點(diǎn)和對(duì)應(yīng)的全局坐標(biāo)點(diǎn),可知式(3)是一個(gè)關(guān)于各項(xiàng)畸變參數(shù)的線性方程組,畸變尺度因子可用最小二乘法通過某次的迭代求得。(3)標(biāo)定過程程序化。利用 OpenCV(Open Source Computer Vision Library)強(qiáng)大的圖像處理和矩陣運(yùn)算能力,考慮上述攝像機(jī)透鏡模型和三項(xiàng)畸變校正多項(xiàng)式,對(duì)攝像機(jī)標(biāo)定過程進(jìn)行深入研究,算法框圖如圖2。第一步處理采集到的多幅平面棋盤格圖像,方法主要調(diào)用開放函數(shù)庫中的cvFindChessboardCorners()角點(diǎn)提取函數(shù),用cvFindCornerSubPix()函數(shù)結(jié)合Bouguet算法[9],再對(duì)提取到的角點(diǎn)進(jìn)行亞像素求精。第二步調(diào)用cvCalibrateCamera2()函數(shù)可以得到各項(xiàng)標(biāo)定參數(shù)。第三步分兩步調(diào)用cvInitUndistortMap()和cvRemap(),其中cvInitUndistortMap()函數(shù)計(jì)算非線性映射,cvRemap()應(yīng)用于映射結(jié)果校正圖像。如果畸變映射不變,則直接利用cvRemap()矯正棋盤格圖像。
3.實(shí)驗(yàn)與結(jié)果分析
3.1實(shí)驗(yàn)配置。由于3D標(biāo)定物的精度難以保證,這里采用多個(gè)空間方位角度不同黑白交替排列棋盤格平面標(biāo)定模板,如圖3所示。目標(biāo)棋盤格標(biāo)定板尺寸270mm×210mm,每個(gè)棋盤格尺寸為30mm×30mm,中心距30mm,陣列9×7,攝像機(jī)與標(biāo)定靶面距離控制在100mm以內(nèi)
3.2實(shí)驗(yàn)數(shù)據(jù)與分析。實(shí)驗(yàn)時(shí),攝像頭一共采集6副不同空間方位的圖像,應(yīng)保證獲取的棋盤格占據(jù)成像平面大部分區(qū)域。提取成功的圖像如圖4所示,前一行的最后一個(gè)角點(diǎn)與后一行的第一個(gè)角點(diǎn)由彩色直線相連,以判斷是否找到所有角點(diǎn),每一行角點(diǎn)都用不同顏色的圓圈區(qū)別。為了驗(yàn)證本文標(biāo)定方法的可行性,實(shí)驗(yàn)對(duì)比tsai標(biāo)定法,使用立體視覺系統(tǒng)左攝像機(jī)計(jì)算兩種方法的攝像機(jī)內(nèi)外參數(shù)以及畸變尺度系數(shù),如表1所示??梢钥闯龈倪M(jìn)算法得到的光學(xué)中心坐標(biāo)(u0,v0)與tsai的方法相近,而?x,?y的值比tsai的標(biāo)定結(jié)果更接近真實(shí)值,標(biāo)定算法的精度評(píng)價(jià)用空間真實(shí)坐標(biāo)點(diǎn)與重建后對(duì)應(yīng)的世界坐標(biāo)點(diǎn)的均方差平均值表示:
由(9)得到的標(biāo)定誤差范圍為±0.8mm,滿足實(shí)際應(yīng)用標(biāo)定的精度需求。
3.3校正畸變圖像。在驗(yàn)證了上述角點(diǎn)提取以及精確標(biāo)定過程的可靠性之后,圖像的枕形畸變,偏心畸變和薄棱鏡畸變得到了適當(dāng)?shù)某C正,圖5為經(jīng)過修正后的圖4棋盤標(biāo)定格圖像,與圖4相比可以看出,算法可以顯著糾正透鏡成像時(shí)發(fā)生在圖像邊緣的徑向畸變和切向畸變。
4.結(jié)論
試驗(yàn)方案結(jié)合參數(shù)對(duì)比,驗(yàn)證了改進(jìn)算法的魯棒性,試驗(yàn)設(shè)備及場(chǎng)合容易搭建,標(biāo)定過程無需人工參與。算法在引入多項(xiàng)畸變參數(shù)的同時(shí),充分考慮了OpenCV函數(shù)庫最小二乘法的特性,通過對(duì)畸變圖像分步校正,避免了重復(fù)計(jì)算并判斷透鏡非線性映射,降低了算法迭代次數(shù),是一種簡單,有效的標(biāo)定算法,適用于各類視覺標(biāo)定工程及立體視覺匹配中。
參考文獻(xiàn)
[1]Stephen T. Barnard, Martin A. Fishchler. Computational stereo [J]. ACM Computing Surveys, 1982, 14(4): 553-572.
[2]Peter F. Sturm, Stephen J. Maybank. On plane-based camera calibration: a general algorithm, singularities, applications [C].// IEEE Conference on Computer Vision and Pattern Recognition. Fort Collins, USA, IEEE, 1999: 432-437.
[3]Ma S. D.. A self-calibration technique for active vision system [J]. IEEE Transactions on Robotics and Automation, 1996, 12(1): 114-120.
[4]Z. Zhang A flexible new technique for camera calibration [J]. IEEE Transactions on Pattern Analysia and Machine Intelligence, 2000, 22(11): 1330-1334.
[5]TSAI R Y. An effcient and accurate camera calibration technique for 3D machine visio [C].//IEEE Conference on Computer Vision and Pattern Recongnition Miami Beach: FL, 1986: 364-374.
[6]馬頌德,張正有.計(jì)算機(jī)視覺—計(jì)算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,1997:52-56.
[7]趙宣銘.一種基于Tsai法的攝像機(jī)改進(jìn)標(biāo)定法.西安工程大學(xué)學(xué)報(bào)[J]. 2011,25(4):560-561.
[8]趙雪峰,仲曉敏,蘭義華.標(biāo)定靶面平行成像平面時(shí)Tsai算法的改進(jìn). 計(jì)算機(jī)工程與設(shè)計(jì)[J].2011,32(3):1019-1021.
[9]http:// www.vision.caltech.edu/bouguetj/calib_doc.