相機標定方法綜述
相機標定技術繁多,總體上可以分爲三類:
基於標定板的輔助標定
基於世界屬性的半自動標定
相機的自標定(self-calibration)
1. 基於標定板的輔助標定
標定板標定方法的應用較爲常見,歷史早期得標定板爲立體標定板,一般爲兩到三個相互垂直的平面,每個平面上有一些標記點,通過3D-2D投影關係估計相機的內參,立體標定板成本高,不易得到,使用不方便;張正友博士提出利用一個平面標定板依靠單應模型實現求解相機內外參數(外參數指相機得位姿),精度穩定,易於實現,成爲最流行的相機標定技術,同時OpenCV採用該方法實現標定功能。本文着重論述此方法。
2. 基於世界屬性的半自動標定
通過獲取場景屬性,如建築物、道路等邊緣平行線、垂直線段,也可實現標定內參數,具體原理詳見下一篇介紹。
3. 相機的自標定
通過先驗約束條件,如相機的skew因數爲零,實現相機的內參數估計,此類方法在多視圖幾何有詳細論述,另一篇會總結該思路。
張氏標定算法詳解
三維空間平面上的特徵點與其像點存在單應關係(homography), 利用該約束可以構造關於內參得方程組求解未知參數。
1. 約束方程推導
採用齊次座標表達,設世界座標系原點在(標定板)平面上,xOy平面與平面重合
x = K [ R t ] X (1.1)
x=K
\left[
\begin{matrix}
R & t
\end{matrix}
\right]
X\tag{1.1}
x = K [ R t ] X ( 1 . 1 )
其中,
K = [ α γ u 0 β v 0 0 1 ] (1.2)
K=\left[\begin{matrix}\alpha&\gamma&u\\0&\beta&v\\0&0&1\end{matrix}\right]\tag{1.2}
K = ⎣ ⎡ α 0 0 γ β 0 u v 1 ⎦ ⎤ ( 1 . 2 )
R = [ r 1 r 2 r 3 ] (1.3)
R=\left[\begin{matrix}r_1&r_2&r_3\end{matrix}\right]\tag{1.3}
R = [ r 1 r 2 r 3 ] ( 1 . 3 )
由於X的第三個元素爲0,
x = K [ r 1 r 2 t ] [ a b 1 ] (1.4)
x=K\left[\begin{matrix}r_1&r_2&t\end{matrix}\right]\left[\begin{matrix}a\\b\\1\end{matrix}\right]\tag{1.4}
x = K [ r 1 r 2 t ] ⎣ ⎡ a b 1 ⎦ ⎤ ( 1 . 4 )
則存在,
x = H X ′ (1.5)
x=HX^{'}\tag{1.5}
x = H X ′ ( 1 . 5 )
其中,
X ′ = [ a b 1 ] (1.6)
X^{'}=\left[\begin{matrix}a\\b\\1\end{matrix}\right]\tag{1.6}
X ′ = ⎣ ⎡ a b 1 ⎦ ⎤ ( 1 . 6 )
由等式1.3與1.4
H = λ K [ r 1 r 2 t ] (1.7)
H=\lambda K\left[\begin{matrix}r_1&r_2&t\end{matrix}\right]\tag{1.7}
H = λ K [ r 1 r 2 t ] ( 1 . 7 )
λ \lambda λ 爲比例因子,設
H = [ h 1 h 2 h 3 ] (1.8)
H=\left[\begin{matrix}h_1&h_2&h_3\end{matrix}\right]\tag{1.8}
H = [ h 1 h 2 h 3 ] ( 1 . 8 )
r 1 r_1 r 1 與r 2 r_2 r 2 爲正交單位向量,則有
h 1 T K − T K − T h 2 = 0 (1.9)
h_1^TK^{-T}K^{-T}h_2=0\tag{1.9}
h 1 T K − T K − T h 2 = 0 ( 1 . 9 )
h 1 T K − T K − 1 h 1 = h 2 T K − T K − 1 h 2 (1.10)
h_1^TK^{-T}K^{-1}h_1=h_2^TK^{-T}K^{-1}h_2\tag{1.10}
h 1 T K − T K − 1 h 1 = h 2 T K − T K − 1 h 2 ( 1 . 1 0 )
2. 方程求解
令B = K − T K − 1 B=K^{-T}K^{-1} B = K − T K − 1 ,
B = [ 1 α 2 − γ α 2 β v γ − u β α 2 β − γ α 2 β γ 2 α 2 β 2 + 1 β 2 − γ ( v γ − u β ) α 2 β 2 − v β 2 v γ − u β α 2 β − γ ( v γ − u β ) α 2 β 2 − v β 2 ( v γ − u β ) 2 α 2 β 2 + v 2 β 2 + 1 ] (1.11)
B=\left[\begin{matrix}\frac{1}{\alpha^2}&-\frac{\gamma}{\alpha^2\beta}&\frac{v\gamma-u\beta}{\alpha^2\beta}\\-\frac{\gamma}{\alpha^2\beta}&\frac{\gamma^2}{\alpha^2\beta^2}+\frac{1}{\beta^2}&-\frac{\gamma(v\gamma-u\beta)}{\alpha^2\beta^2}-\frac{v}{\beta^2}\\\frac{v\gamma-u\beta}{\alpha^2\beta}&-\frac{\gamma(v\gamma-u\beta)}{\alpha^2\beta^2}-\frac{v}{\beta^2}&\frac{(v\gamma-u\beta)^2}{\alpha^2\beta^2}+\frac{v^2}{\beta^2}+1\end{matrix}\right]\tag{1.11}
B = ⎣ ⎢ ⎡ α 2 1 − α 2 β γ α 2 β v γ − u β − α 2 β γ α 2 β 2 γ 2 + β 2 1 − α 2 β 2 γ ( v γ − u β ) − β 2 v α 2 β v γ − u β − α 2 β 2 γ ( v γ − u β ) − β 2 v α 2 β 2 ( v γ − u β ) 2 + β 2 v 2 + 1 ⎦ ⎥ ⎤ ( 1 . 1 1 )
b = [ B 11 B 12 B 22 B 13 B 23 B 33 ] b=\left[\begin{matrix}B_{11}&B_{12}&B_{22}&B_{13}&B_{23}&B_{33}\end{matrix}\right] b = [ B 1 1 B 1 2 B 2 2 B 1 3 B 2 3 B 3 3 ] ,令式(1.5)中H的第i列爲h i = [ h i 1 h i 2 h i 3 ] T h_i=\left[\begin{matrix}h_{i1}&h_{i2}&h_{i3}\end{matrix}\right]^T h i = [ h i 1 h i 2 h i 3 ] T ,令v i j = [ h i 1 h j 1 h i 1 h j 2 + h i 2 h j 1 h i 2 h j 2 h i 1 h j 3 + h i 3 h j 1 h i 2 h j 3 + h i 3 h j 2 h i 3 h j 3 ] T v_{ij}=\left[\begin{matrix}h_{i1}h_{j1}&h_{i1}h_{j2}+h_{i2}h_{j1}&h_{i2}h_{j2}&h_{i1}h_{j3}+h_{i3}h_{j1}&h_{i2}h_{j3}+h_{i3}h_{j2}&h_{i3}h_{j3}\end{matrix}\right]^T v i j = [ h i 1 h j 1 h i 1 h j 2 + h i 2 h j 1 h i 2 h j 2 h i 1 h j 3 + h i 3 h j 1 h i 2 h j 3 + h i 3 h j 2 h i 3 h j 3 ] T
由式(1.9),(1.10),
[ v 12 T ( v 11 − v 22 ) T ] b = 0 (1.12)
\left[\begin{matrix}v_{12}^T\\(v_{11}-v_{22})^T\end{matrix}\right]b=0\tag{1.12}
[ v 1 2 T ( v 1 1 − v 2 2 ) T ] b = 0 ( 1 . 1 2 )
從1幀圖像估計的單應矩陣H可以獲得2個標定方程,設有n張標定板圖像,則可構成
V b = 0 (1.13)
Vb=0\tag{1.13}
V b = 0 ( 1 . 1 3 )
其中,V是2n x 6大小的矩陣
式(1.13)爲齊次方程,可採用SVD求得b,利用下式獲得內參:
進一步可以求得相機外參,即位姿參數:
3. 參數優化
上述推導過程假設相機是理想的針孔相機模型,沒有考慮鏡頭畸變問題,同時上述求解過程是一個代數解法,結果不是最優參數,可以相機內外參數、畸變係數爲待優化參數最小化重投影誤差,利用LM算法求得最優估計。