姚隆興,韓江濤,張志毅
(西北農林科技大學信息工程學院,陜西 楊凌 712100)
將相機用于圖像三維重建時,需要事先明確圖像上點的位置與空間物體表面相應點幾何位置的關系。通過相機成像幾何模型,并借助空間物體表面某點的世界坐標系與其在圖像中對應點之間的相互關系來確定幾何模型參數的過程稱為相機標定。相機標定是計算機視覺研究中必不可少的步驟,相機標定結果的精度和標定過程操作難易度分別會影響到相機生產結果的準確性和方便性[1]。
自1971年至今,研究人員提出了多種相機標定算法。Horaud等[2]針對相機線性模型提出了一種相機標定算法,Zhuang等[3]在此基礎上引入畸變模型進行了改進。隨后研究人員又提出了靜態掃描成像標定算法和動態掃描成像標定算法,其中,Luna等[4]提出了一種由2個平行平面組成的標靶標定相機的算法,Li等[5]結合交比的性質提出了一種使用平面標靶標定相機的算法,Draréni等[6]針對線性相機提出了一種使用平面標靶估計相機內外參的算法,Donné等[7]在此基礎上通過重新求解內參的方式使該算法變得更穩健。另外,經典的基于Kruppa方程的自標定方法[8]利用了絕對二次曲線在圖像中的像與相機內參有關而與相機的剛體運動無關的性質,推導出Kruppa方程。求解Kruppa方程的方法通常有2種:第1種是將求解的Kruppa方程問題轉換為相應的數學規劃問題,在使用規劃方法時目標函數在最小點周圍呈現大范圍的平坦區,導致規劃方法很難獲得最小點,容易陷入局部最優值的境況中;第2種是直接求解Kruppa方程,由于數據誤差等原因,使用直接法求解Kruppa 方程在數學上往往無解。
Zhang[9]針對徑向畸變問題提出了一種用平面標靶求解相機內外參數的有效標定算法,標定的時候首先通過移動標定靶或者相機,獲得3個(或3個以上)不同方位的標定靶圖像,通過標定靶特征點在世界坐標系中的坐標和提取的標靶特征點在圖像坐標系中的坐標,計算出每幅圖像和標靶之間的單應性矩陣,從而進行相機標定。但是,該算法需要多幅圖像才能完成標定,這給使用者帶來了不便。孟曉橋等[10]提出了和文獻[9]標定算法類似的圓標定算法,在標定過程中同樣需要拍攝3幅以上不同方位的圖像,利用攝影不變性,可以計算出圓環點在每幅圖像上的坐標信息,這樣就得到了6個以上關于內參矩陣的方程,從而可以解出內參數。和文獻[9]標定算法相比,除所用標靶不同外,其優點是不需要進行特征點配對。Tsai等[11,12]給出了一種基于徑向約束的平面標靶標定兩步法標定算法,該算法具有精度高的優勢,但存在優化程序復雜,速度較慢,結果精度取決于圖像中心初始值的問題。
本文通過引入針孔相機的成像模型和鏡頭畸變模型,借鑒Tsai氏相機平面標定算法,提出了一種簡單快速的相機標定算法。
針孔相機成像過程坐標轉換如圖1所示,包括世界坐標系OwXwYwZw、相機坐標系OcXcYcZc、理想成像的物理坐標系OudXuYu、實際成像物理坐標系OudXdYd及實際圖像像素坐標系OIUV。為了確保測量所得到的深度值均為正值,本文以左手坐標系來設置相機坐標系,具體的坐標轉換關系如圖1所示。

Figure 1 Camera imaging mold圖1 相機成像模型
世界坐標系中的點Pw在相機坐標系中的坐標值Pc可以表示為式(1):
Pc=RtPw
(1)

矩陣Rt除具有正交性質外,還有如式(2)所示的性質:
(2)
若點Pc在成像平面上所成的理想像點Pu在坐標系OudXuYu中的坐標值分別為xu和yu,當主距為f時,可設Pu=[xu,yu,f]T。根據透視投影模型,應有:
(3)
理想的針孔模型不能準確描述實際映射關系,這是因為相機存在光學畸變,所以需要引入畸變校正模型。畸變模型主要包括切向畸變和徑向畸變,切向畸變是由整個相機的組裝過程造成的,而徑向畸變是由透鏡的形狀造成的,其中切向畸變對測量影響較小,所以本文僅考慮徑向畸變。Horn[13]指出,對非廣角相機的鏡頭畸變建模如果考慮高階分量,有時不僅不能提高測量精度,反而會造成測量結果不穩定。因此,通常只考慮一階或二階徑向畸變即可滿足系統測量精度要求,即:
(4)

(5)
(6)
實際上,Pu和Pd都是相機成像模型中的抽象概念,真正可觀測到的是實際圖像像素坐標系中各像素點的坐標值。而Pd與實際圖像像素坐標(u,v,f)之間滿足式(7):
(7)

由式(5)和式(7)可得到式(8):
(8)
在世界坐標系中設置已知點的集合{Pwi=(xwi,ywi,zwi,1)},它們在相機坐標系中可表示為{Pci=(xci,yci,zci)},投影成像后的對應像素坐標位置是可計測的{(ui,vi)},綜合以上各式可得式(9):
(9)
從式(9)可得到式(10):
(10)
在已知Pwi和(ui,vi)條件下,求解A和Rt中相關參數的過程稱為“相機標定”。從式(9)可見,畸變參數標定與內外參數標定可以分步進行。一種較好的策略是先進行畸變參數標定,然后再進行內外參數標定。
常用標定點設置方式有圓點和角點2種。圓點標靶被證明比角點標靶在檢測上更穩健和準確[14 - 16],所以本文采用圓點設置方式,所設計的平面標定圖案如圖2所示。

Figure 2 Patterns on the calibration target圖2 標靶上的圖案
由于存在鏡頭的非線性畸變,如果只考慮一階徑向畸變,參考賀俊吉等[17]的方法則只需要知道4個共線控制點即可求得其畸變系數k1,這符合多數工業應用場合的需求。
如圖2中Xw軸上Pw0,Pw1和Pw23點共線,以Pw0和Pw1為基礎點,Pw2為分點(該點為內分點或外分點),由分點與基礎點所確定的2條有向線段之比稱為簡比,如式(11)所示:
(11)
在幾何學中,交比是指4個共線點(尤其是透視投影上的點)中2個簡比的比值。圖2中Pw0,Pw1,Pw2,Pw3交比如式(12)所示:
(12)
其中,點Pw0和Pw1為基礎點對,點Pw2和Pw3為分隔點對,其交比可寫成如式(13)的形式:
(13)
根據透視投影的交比不變性,其理想圖像點的對應交比如式(14)所示:
(14)

對式(14)中的Jx進行推導可得到一個關于k1的一元二次方程式,如式(15)所示:
(15)
其中,
cx=Jx(xd1-xd2)(xd0-xd3)-
(xd0-xd2)(xd1-xd3)
同理,對式(14)中的Jy進行推導可得到一個關于k1的一元二次方程式,如式(16)所示。
(16)
其中,
cy=Jy(yd1-xd2)(yd0-yd3)-
(yd0-yd2)(yd1-xd3)
為了使求解出的k1更準確,本文采用殘差最小約束進行求解。因為每一條直線都能得到2個關于k1的一元二次方程式,將n條直線得到的2n個方程左邊平方后進行求和,得到式(17):
(17)
現在求解k1的問題就轉換成了求f(k1)的最小值的問題。f(k1)的展開形式如式(18)所示:
(18)
其中,
對f(k1)求導可得式(19):
(19)
令g′(k1)=0,使用泰勒方法解出k1的值,求解過程如下:
由求導公式可知:
(20)
由式(20)可得式(21):
g(k1+Δk1)=g′(k1)Δk1+g(k1)
(21)
令k1=0,則式(22)成立:
g(0+Δk1)=g′(0)Δk1+g(0)
(22)
因為g(0+Δk1)=0,所以式(23)成立:
(23)
當k1=0+Δk1時,g(k1)=0,即k1=Δk1時g(k1)=0成立,如式(24)所示:
(24)
當然,利用求根公式對式(19)進行求解也是一種方法,但直接求根公式計算復雜,且是多解,需要判斷哪個根更接近于k1的真實值,而泰勒方法可直接快速簡單地解出k1的值。
首先,給圖像中心點(Cx,Cy)設置一個合理的估計,該點通常在CCD或CMOS傳感器中間附近,所以取圖像中心點處的對應值。結合式(10)可得式(25):
(25)
其中,
由式(5)和式(8)可知,使用xci/yci可以天然地消除畸變對方程的影響,當設s=dx/dy并用旋轉平移矩陣Rt的分量展開后,可得式(26):
(26)
其中,mi=pi/qi。
當標靶是平面的時候,式(26)簡化為式(27):
(27)
Tsai氏相機平面標定算法中在平面標靶情況下無法求比例因子s[11],因此,在最開始假設s=1,在本文中s依然被當作未知數來處理。式(26)經過交叉變化后得到式(28):
xwir11+ywir12+xt)-
(xwir21+ywir22+yt)mis=0
(28)
式(28)是含有未知數r11,r12,sr21,sr22,xt和syt的線性齊次方程。
因為方程是齊次的,所以存在未知的比例因子,也就是說,如果存在方程的一組解,那么該解的任何倍數也是它的解。為了求解,Tsai氏相機平面標定算法將未知數syt設置為1后[13],將齊次方程轉換為非齊次方程,在這個過程中并沒有考慮到數值運算誤差,本文為了使數值計算更加準確,對|u0-Cx|和|v0-Cy|的大小進行了分類討論,通過比較|u0-Cx|和|v0-Cy|的大小來決定采取哪種解法。
當|u0-Cx|>|v0-Cy|時,方程兩邊同時除以syt,可以使方程最右邊矩陣中的數值較大,以此來減少極小值的出現,從而減小數值計算誤差對計算結果的影響,經過推導可得方程式(29):
(29)
結合式(10)由透視投影變換關系,旋轉變換關系和平移變換關系可得式(30):
(30)

(31)
其中,

Tsai氏相機平面標定算法只用到了旋轉矩陣的正交性,故解的過程比較復雜,在確定r13,r23的正負號時,需將計算出的結果代回到相機模型中才能確定其正確的正負號。本文除了用到旋轉矩陣的正交性還用到了式(2)的性質,可以直接確定r13,r23的正負號,避免了復雜的運算。

(32)
(33)
(34)
(35)
(36)
(37)
結合式(36)、式(32)和式(34)可以求出(yts)2,進而求出s。Tsai氏相機平面標定算法中由于沒有用到式(2)的性質,故未能求出s的值。
結合式(35)、式(33)和式(34)可以求出(zt)2,進而求出zt。

同理,當|u0-Cx|≤|v0-Cy|時,方程兩邊同時除以xt,經過推導可得式(38):
(38)

(39)
其中,

(40)
(41)
(42)
(43)
(44)
(45)
結合式(41)~式(43)可以求出(zt)2,進而求出zt。

本文實驗使用2臺不同相機進行標定對比,各相機參數如表1所示,其中,MV-UBS300C-T相機的鏡頭是生產廠家原配的,華谷動力WP-UT530相機的鏡頭非廠家原配。所用標靶如圖2所示,靶面中有20個標定圓點。各圓點直徑16 mm,垂直和水平方向相鄰圓點間距24 mm,且假設(Cx,Cy)取的是圖像中心點。為了驗證本文算法的準確性和效率,主要從重投影誤差、圖像中心誤差、距離誤差以及運行時間進行評估。

Table 1 Parameters of each camera
重投影誤差是指世界坐標系中的點在圖像平面上的投影位置與原始圖像中相應點的實際位置之間的距離平方和。所用評估方法是將計算得到的內參和外參帶入式(9),計算出標靶中圓心在圖像平面上的投影位置(u′,v′),與原始圖像中相應圓心實際位置(u,v)之間的平均距離,記為E1,如式(46)所示:
(46)
其中n為標定點的數量。
圖像中心誤差是指已知的圖像中心和計算出的圖像中心之間的差值。將計算出的相機內參和外參代入式(47),計算出的圖像中心記為(C′x,C′y):
(47)
則已知的圖像中心(Cx,Cy)和計算出的(C′x,C′y)的誤差記為E2,如式(48)所示:
(48)
E1和E2反映了標靶的平面度、特征點提取精度及數值計算的精確度。
距離誤差是指實際距離D與計算出的距離D′之間的差值,它反映的是標定算法在相對運動情況下的測量精度。本文將計算出的相機內參和外參代入式(9),計算出世界坐標系中的點Pwi在相機坐標系中的點Pci,通過控制軸將標定板移動一定的距離,再次計算出移動后世界坐標系中的點Pwi在相機坐標系中的點:P′ci,此時的誤差記為E3,如式(49)所示:
E3=|D′-D|
(49)
其中,
表2和表3分別是用本文標定算法和Tsai氏相機平面標定算法標定2個相機10次所獲得標定結果平均值。經比較可見,2種算法所得到的結果比較接近。其中,本文標定算法和Tsai氏相機平面標定算法標定2個相機時所計算出的E1和E2的平均值分別相等,MV-UBS300C-T相機E1平均值為1.573 95,E2平均值為0.413 33。華谷動力WP-UT530相機E1平均值為0.790 10,E2平均值為1.115 65。
表4為實驗所得距離誤差E3和運行時間。由表4可知,在使用同一種標定算法時,相機的分辨率越高,所需要的運行時間就越長,這是因為相機的分辨率越高,數值計算越多,所消耗的時間就越長。當使用同一幅圖像,但使用不同算法標定同一個相機時,本文的相機標定算法在精度上比Tsai氏相機平面標定算法更高,而且標定速度更快。這是因為Tsai氏相機平面標定算法在計算時包含復雜的迭代計算,消耗的時間比較多,而且計算過程中沒有對數值計算進行優化,且假設比例因子s=

Table 2 MV-UBS300C-T camera parameter calibration results

Table 3 Huagu Power WP-UT530 camera parameter calibration results
1,也導致最后的計算誤差比較大。而本文算法線性求解出相機的內參和外參,并且對數值計算進行了優化,從而提高了相機標定的速度、精度和穩定性。通過比較2個相機的E3值,在使用同一種標定算法時,MV-UBS300C-T相機的E3值比華谷動力WP-UT530相機的E3值小。這是因為MV-UBS300C-T相機使用的鏡頭是廠家原配,而華谷動力WP-UT530相機使用的鏡頭非廠家原配,MV-UBS300C-T相機的(Cx,Cy)相對于華谷動力WP-UT530相機的(Cx,Cy)更加接近圖像中心點[18]。

Table 4 Distance error and running time experiment results
與Tsai氏相機平面標定算法相比,本文算法需要的已知條件少,計算簡單,并且計算過程完全是非迭代的,因此降低了計算復雜度,提高了標定速度及標定精度,標定過程簡單易于操作,而且可以避免其他非線性優化方法中可能遇到的不穩定性。與文獻[9]相機標定算法相比,本文算法只需1幅圖像就能完成相機標定,對實時計測動態標靶的位姿[19]有一定的參考價值。與其他相機標定算法類似,本文算法的標定結果依賴于圖像中心坐標值的選取。