劉 昶,劉 青
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
相機標(biāo)定的目的是確定三維空間到二維圖像平面的映射關(guān)系,是計算機視覺領(lǐng)域中的關(guān)鍵問題之一,標(biāo)定精度會在很大程度上影響到視覺測量、三維重建等應(yīng)用的準(zhǔn)確性。目前,較為主流的標(biāo)定方法主要有傳統(tǒng)的相機標(biāo)定、自標(biāo)定和基于主動視覺的標(biāo)定方法。傳統(tǒng)的相機標(biāo)定需要利用精度較高的標(biāo)定物,如一維靶標(biāo)[1-3]、平面靶標(biāo)[4]和立體靶標(biāo)[5]等。其中,一維靶標(biāo)制作容易,但標(biāo)定精度難以保證,而立體靶標(biāo)的制作要求較高,平面靶標(biāo)相對來說制作簡單,也可以保證精度。最具代表性的標(biāo)定方法是基于共面點特征的張氏標(biāo)定法[6],可利用棋盤格平面標(biāo)定板,或帶有十字交叉特征點[7]或圓形標(biāo)志點[8]的標(biāo)定板。由于單一標(biāo)定板圖像提供的信息有限,該方法需要拍攝多幅不同位姿下的標(biāo)定板圖像,不適合應(yīng)用于需要現(xiàn)場標(biāo)定且不易移動標(biāo)定板的場合;文獻(xiàn)[9]利用了柱體和結(jié)構(gòu)光進(jìn)行相機標(biāo)定,標(biāo)定過程需要額外的設(shè)備;文獻(xiàn)[10]應(yīng)用虛擬像平面相機模型,利用一幅標(biāo)定板圖像構(gòu)造目標(biāo)的虛擬圖像,實現(xiàn)畸變矯正,再通過最小二乘方法估計模型參數(shù),同樣需要多幅標(biāo)定板圖像。相機自標(biāo)定方法主要分為基于場景約束的標(biāo)定方法和基于幾何約束的標(biāo)定方法,前者主要通過場景中的平行或正交特征得到消失點或消失線信息,從而求出相機參數(shù)[11-12];后者利用絕對二次曲線或絕對二次曲面提供約束,通過Kruppa方程求解相機參數(shù)[13]?;谥鲃右曈X的標(biāo)定方法是在相機的運動參數(shù)已知的情況下對相機進(jìn)行標(biāo)定,這要求相機能做出某些特定的運動,因此需要特定的運動機構(gòu),在無法控制相機運動的場合不適用。
本文提出一種虛擬像平面相機模型下利用一個高度已知的圓柱體的標(biāo)定方法,采用基于三角面片的方法生成圓柱體在虛擬像平面上的無畸變的投影圖像,根據(jù)圓柱體本身具有的上下兩底面相互平行、側(cè)面與底面互相垂直的特性,得到關(guān)于光心位置的約束關(guān)系,實現(xiàn)光心在虛擬像平面坐標(biāo)系下的定位。
本文采用虛擬像平面相機模型,利用平面標(biāo)定板進(jìn)行相機標(biāo)定。如圖1所示,設(shè)目標(biāo)點P在真實像平面上的無畸變像點為q′,真實的成像點,即有畸變像點為q,由針孔模型,目標(biāo)點P、無畸變像點q′和光心Oc共線,該直線與虛擬像平面的交點為P′。根據(jù)透視投影關(guān)系,可認(rèn)為像點q′也是點P′在像平面上的成像,或者點P′是目標(biāo)點P在虛擬像平面上的虛擬像點。本文將標(biāo)定平面作為虛擬像平面,考慮到目標(biāo)在虛擬像平面上的投影也能形成一幅圖像,首先由原始圖像構(gòu)造目標(biāo)在虛擬像平面上的投影圖像,再由光心Oc和虛擬像點P′的連線確定投影射線。于是,光心Oc和虛擬像平面構(gòu)成了一個理想的針孔模型,光心到虛擬像平面的垂直投影點為虛擬主點,光心到虛擬像平面的距離為虛擬焦距,該模型的核心內(nèi)容包括虛擬圖像生成和確定光心在虛擬像平面坐標(biāo)系下的坐標(biāo)。
圖1 虛擬像平面相機模型
拍攝一幅平面標(biāo)定板圖像,并以其為虛擬像平面,記圖像中有畸變像點q坐標(biāo)為(u,v),對應(yīng)的在虛擬像平面坐標(biāo)系中的虛擬像點P′的坐標(biāo)為(x,y),當(dāng)僅考慮一階徑向畸變、切線畸變和薄棱鏡畸變時,P′與q滿足以下關(guān)系[14]
(1)
式中參數(shù)ci,j、di,j(0≤i+j≤3)和ei,j(0
(2)
該方法由于參數(shù)較多,計算精度并不十分理想,可根據(jù)文獻(xiàn)[10]提出的改進(jìn)方法,將圖像坐標(biāo)原點移動到(u,v),于是公式(2)演變?yōu)?/p>
(3)
公式(3)僅包含29個參數(shù)中的2個,有利于提高計算精度。
目標(biāo)在虛擬像平面上的投影圖像由其原始圖像按以下步驟生成:(1)在標(biāo)定平面上人為劃分一些等間隔網(wǎng)格,網(wǎng)格的位置和大小由人為設(shè)定;(2)利用上述方法計算每個原始像點對應(yīng)的投影點坐標(biāo);(3)利用距離每個網(wǎng)格點最近的k個投影點的原始像點的灰度計算該網(wǎng)格點的灰度值,則所有的網(wǎng)格點形成標(biāo)定平面上的一幅虛擬圖像,該虛擬圖像是無畸變的。
由于與真實像點對應(yīng)的虛擬像點的分布并不均勻,因此,虛擬圖像的生成是一個基于散亂點的圖像生成問題。網(wǎng)格點灰度值的估計一般采用k-NN方法[10],本文采用三角面片擬合法來計算。將虛擬圖像點的坐標(biāo)值(x,y)和灰度值I寫成一個三維坐標(biāo)的形式(x,y,I),坐標(biāo)原點Ow并構(gòu)成三維空間,選擇虛擬像平面上距離網(wǎng)格點最近的3個投影點,其坐標(biāo)值和其對應(yīng)的原始像點的灰度值構(gòu)成采樣點Si(xi,yi,Ii),i=1、2、3,構(gòu)成一個三角面片,以網(wǎng)格點在該三角面片上的灰度值作為該點的灰度的近似值。為了盡量避免3個采樣點構(gòu)成的三角形不包含目標(biāo)位置點而導(dǎo)致較大誤差,本文選擇距離網(wǎng)格點P′最近的4個投影點P1、P2、P3和P4參與運算,記Pi對應(yīng)的原始像點的灰度值為Ii,對應(yīng)的采樣點為Si,如圖2所示,4個投影點可組成4個三角形ΔP1P2P3、ΔP1P2P4、ΔP1P3P4和ΔP2P3P4,對應(yīng)4個三角面片分別為ΔS1S2S3、ΔS1S2S4、ΔS1S3S4和ΔS2S3S4。
圖2 平面擬合示意圖
依次判別4個三角形是否包含P′點。記ΔPiPjPk是第一個包含P′點的三角形,設(shè)對應(yīng)的三角面片ΔSiSjSk的平面法向量為
(4)
平面可表示為
(x-xi)n1+(y-yi)n2+(I-Ii)n3=0
(5)
根據(jù)網(wǎng)格點坐標(biāo)(x,y)求取對應(yīng)的灰度值I。
若4個三角形均不包含網(wǎng)格點,則采用k-NN(k=4)方法計算灰度值。設(shè)投影點Pi到網(wǎng)格點P′的距離為di,則網(wǎng)格點的灰度估計值為
(6)
性質(zhì)1:線段AD、BC與圓ω1、ω2相切,線段的端點即為切點;
性質(zhì)2:AD、BC和Q1Q2相交于點G;
性質(zhì)3:ΔQ0Q1Q2與ΔOcQ1G是相似三角形。
圖3 圓柱體投影示意圖
圖4 虛擬像平面上圓柱體投影輪廓
由性質(zhì)1可得,Q1D⊥AD,Q2A⊥AD,根據(jù)性質(zhì)2可得,ΔGDQ1~ΔGAQ2,故有
(7)
由(7)式可得
(8)
可得點G,即虛擬主點的坐標(biāo)為
(9)
再由性質(zhì)3,利用三角形相似原理,有
(10)
得到光心Oc到虛擬像平面的距離OcG,即為虛擬焦距。至此,光心在虛擬像平面坐標(biāo)系下的坐標(biāo)完全確定。
以上方法中影響光心定位精度的主要因素是兩個圓特征的提取精度。由于圓柱體是三維結(jié)構(gòu),柱體上不同物理點到相機的深度不同,受相機景深的影響,圓柱上下兩個截面的圓弧邊緣在像平面上的成像清晰度可能不同,對于小景深的相機,有可能造成對虛擬圖像中的圓弧特征的提取出現(xiàn)誤差,導(dǎo)致圓擬合的偏差,進(jìn)而影響到光心定位的精度。因此,在實際應(yīng)用時,應(yīng)盡量保證圓柱兩截面邊緣圓弧的成像盡可能清晰,并通過增加柱體表面與支撐平面的色差、合理設(shè)計光源、避免柱體表面反光等手段減小圓弧特征的提取誤差。
實驗驗證所提出的三角面片擬合法對虛擬圖像生成的有效性,并對其與k-NN方法[10]在精度上的差異進(jìn)行對比。采用Basler piA640-210gm工業(yè)相機,配備Pentax 4.2mm定焦鏡頭,拍攝一幅棋盤格標(biāo)定板圖像,圖像尺寸為640pixel×480pixel,棋盤格每行、每列內(nèi)角點數(shù)量為10×10,棋盤格大小為10mm×10mm。以此標(biāo)定板平面作為虛擬像平面,用OpenCV的角點提取算法提取圖像中的角點坐標(biāo),分別用k-NN(k=4)方法和本文所提的三角面片擬合方法恢復(fù)出該標(biāo)定板在虛擬像平面上的投影圖像。虛擬圖像的像素距為0.2mm,尺寸為550pixel×550pixel。圖5是虛擬圖像的生成結(jié)果,其中圖5a為原始圖像,圖5b、圖5c分別為用k-NN法和本文的三角面片擬合方法所得標(biāo)定板虛擬圖像,圖5d、圖5e分別為上述兩幅圖像的局部效果圖。
對比圖5d和圖5e,可以看出用本文方法恢復(fù)的圖像邊緣更加平滑,邊緣信息更加明顯。為了更直觀地比較兩種方法的效果,用OpenCV中的角點提取算法分別提取兩幅虛擬圖像中的角點坐標(biāo),計算其對應(yīng)的世界坐標(biāo),再根據(jù)其真值計算誤差,在圖5b和圖5c描述了角點誤差的分布情況,圖中每個角點周圍的圓的直徑表示該角點的誤差的大小(為顯示清楚將誤差進(jìn)行等倍數(shù)放大),圓的直徑越大則誤差越大。表1列舉了兩幅虛擬圖像中角點的平均誤差和最大誤差統(tǒng)計結(jié)果,從表1中可以看到,采用本文方法的平均誤差與最大誤差均比k-NN(k=4)方法的小,由此可見,在使用相同數(shù)據(jù)的條件下,本文方法比k-NN方法更具優(yōu)勢。
圖5 虛擬圖像生成結(jié)果
表1 虛擬圖像角點提取誤差結(jié)果 mm
實驗用于對比本文所提在虛擬像平面上的光心定位方法與當(dāng)前主流方法在精度上的差異。實驗中采用鋁圓管代替圓柱體標(biāo)定塊,高為72.34mm。實驗所用裝置如圖6所示,仍然采用Basler piA640-210gm工業(yè)相機,實驗配備4-18mm變焦鏡頭來拍攝圖像。
圖6 實驗裝置
光心標(biāo)定實驗的步驟如下:首先拍攝一幅標(biāo)定板圖像,如圖7a所示,將此標(biāo)定板平面作為虛擬像平面;然后將圓柱體置于標(biāo)定平面上并拍照,再用本文的三角面片擬合法生成該圓柱體在虛擬像平面上的虛擬圖像,如圖7b所示,虛擬圖像尺寸為900pixle×600pixle,像素距為0.2mm;用第2節(jié)的方法對光心進(jìn)行定位。圖7c和圖7d分別展示了由虛擬圖像中提取出的圓柱體的投影輪廓和圓弧的擬合效果。為便于對比,再拍攝15幅標(biāo)定板在不同位姿下的圖像(為節(jié)省篇幅,在此不對其他15幅圖像進(jìn)行展示),利用OpenCV方法和共16幅標(biāo)定板圖像對相機參數(shù)進(jìn)行標(biāo)定,以O(shè)penCV的標(biāo)定結(jié)果作為真值。表2列出了本文方法和OpenCV方法的標(biāo)定結(jié)果,從結(jié)果可見,用本文方法和OpenCV方法得到的光心坐標(biāo)的誤差在0.6%以內(nèi),說明本文方法的標(biāo)定精度達(dá)到了與主流方法相當(dāng)?shù)乃健?/p>
圖7 光心定位實驗圖像
表2 標(biāo)定結(jié)果 mm
在虛擬像平面相機模型下,提出了一種利用高度已知的圓柱體標(biāo)定塊的光心定位方法,利用三角面片擬合法生成圓柱體在虛擬像平面上的投影圖像,采用最小二乘方法對圖像中的圓弧進(jìn)行圓擬合,進(jìn)一步求得模型的虛擬主點,再根據(jù)相似三角形原理和圓柱的高度,求得模型的虛擬焦距,從而對光心進(jìn)行定位。本文方法利用一個高度已知圓柱體標(biāo)定塊就能確定光心的位置信息,不需要已知圓柱直徑,標(biāo)定裝置容易制造,且標(biāo)定精度達(dá)到了主流方法的水平。