相機標定(三)-相機成像模型

>>>文章索引<<<

相機標定(一)-原理及內參、外參
相機標定(二)-畸變校正,張正友標定法
相機標定(三)-相機成像模型


1 人眼&相機結構

1.1 類比

在這裏插入圖片描述
類比來說,相機就是計算機的“眼睛”:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

1.2 成像

本質上來說,圖像是真實世界場景中在二維平面(成像平面)的投影,它記錄了兩類信息:

  • 幾何信息:位置、點、線等;
  • 光度信息:強度、色彩。

2 相機成像模型

  • 小孔成像模型(Pinhole camera model)
  • 正交投影(Orthographic projection)
  • 縮放正交投影(Scaled orthographic projection)
  • 透視投影(Perspective projection)

2.1 小孔成像模型(Pinhole camera model)

在這裏插入圖片描述
數學表示,具體也可參考博客
在這裏插入圖片描述
一般來說,我們使用右手座標系:
在這裏插入圖片描述
小孔成像模型實際上是透視投影(perspective projection)的一種最簡單的形式。假設我們要將真實世界中的三維點(X,Y,Z)T(X,Y,Z)^T投影爲二維圖像上的點p=(x,y)Tp=(x,y)^T,則有:

{XZ=xfYZ=yf{x=fXZy=fYZ(1) \begin{cases} \frac{X}{Z}=\frac{x}{f} \\ \frac{Y}{Z}=\frac{y}{f} \end{cases} \Rightarrow \begin{cases} x=f\frac{X}{Z} \\ y=f\frac{Y}{Z} \end{cases} \tag{1}

2.2 正交投影(Orthographic projection)

在這裏插入圖片描述

  • 3D場景距離相機無限遠;
  • 所有投影線均平行於光軸。

則有x=X,y=Yx=X, y=Y

2.3 縮放正交投影(Scaled orthographic projection)

在這裏插入圖片描述

  • 場景深度<<到相機的距離;
  • 場景中所有點的Z值均相同,如Z0Z_0

這種情況相當於對垂直於相機Z軸方向上的一個平面場景進行成像,則對於場景中所有的點有:x=sX,y=sY,s=fZ0x=sX, y=sY, s=\frac{f}{Z_0}

2.4 透視投影(Perspective projection)

在這裏插入圖片描述

3 相機參數

對於小孔成像模型中,有:

{x=fXZy=fYZ(2) \begin{cases} x=f\frac{X}{Z} \\ y=f\frac{Y}{Z} \end{cases} \tag{2}

3.1 相機內參

上述爲理想狀態下的公式,下面來分析幾種特殊情況。

3.1.1 像素不是正方形

當相機傳感器(CCD)上的像素不是正方形時有:

{x=kfXZy=lfYZ(3) \begin{cases} x=kf\frac{X}{Z} \\ y=lf\frac{Y}{Z} \end{cases} \tag{3}

  • x,y:座標(pixel);
  • k,l:縮放因子(pixel/mm)
  • f:焦距(mm)

令上式中:fx=kf,fy=lff_x=kf, f_y=lf,則有:

{x=fxXZy=fyYZ(4) \begin{cases} x=f_x\frac{X}{Z} \\ y=f_y\frac{Y}{Z} \end{cases} \tag{4}

3.1.2 相機主點(principal point)不在原點

即光軸與CCD中心有偏移。假設主點在圖像上的座標(像素)爲cx,cyc_x, c_y,則有:

{x=fxXZ+cxy=fyYZ+cy(5) \begin{cases} x=f_x\frac{X}{Z}+c_x \\ y=f_y\frac{Y}{Z}+c_y \end{cases} \tag{5}

那麼沿着相機的Z軸,有X=Y=0X=Y=0x=cx,y=cyx=c_x, y=c_y

3.1.3 x軸與y軸不垂直

理想情況下,x軸與y軸是相互垂直的,但一般情況下,x軸和y軸的夾角並不是90度。假設x軸和y軸之間的夾角爲θ\theta,則有:

{x=fxXZfxcotθYZ+cxy=fysinθYZ+cy(6) \begin{cases} x=f_x\frac{X}{Z}-f_x cot\theta \frac{Y}{Z}+c_x \\ y=\frac{f_y}{sin\theta}\frac{Y}{Z}+c_y \end{cases} \tag{6}

3.1.4 內參矩陣

組合所有參數,可以得到相機的內參矩陣KK

K=[fxfxcotθcx0fysinθcy001][fxscx0fycy001](7) K= \begin{bmatrix} f_x & -f_xcot\theta & c_x \\ 0 & \frac{f_y}{sin\theta} & c_y \\ 0 & 0 & 1 \end{bmatrix} = \begin{bmatrix} f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} \tag{7}

3.2 相機外參

相機外參反映了相機在世界座標空間中的位姿,可通過一個剛性變換來表示,通常包含平移TT和旋轉RR

平移矩陣:

T=[TXTYTZ](8) T= \begin{bmatrix} T_X \\ T_Y \\ T_Z \end{bmatrix} \tag{8}

旋轉矩陣:

R=[r11r12r13r21r22r23r31r32r33](9) R= \begin{bmatrix} r_11 & r_12 & r_13 \\ r_21 & r_22 & r_23 \\ r_31 & r_32 & r_33 \end{bmatrix} \tag{9}

旋轉矩陣是正交的,所以有:RTR=IR^TR=I

4 畸變

畸變是光學透鏡固有的透視失真特性,目前所有的鏡頭都存在畸變,只是程度不同。畸變又分爲徑向畸變和切向畸變,這裏只以徑向畸變爲例。常見的徑向畸變有桶形畸變、枕形畸變等:
在這裏插入圖片描述
徑向畸變可以被建模爲:
在這裏插入圖片描述
具體的畸變校正過程可以參考博客

5 相機標定

相機標定的目的就是獲取前文提到的相機內參、外參和畸變係數。通常,標定方法分爲兩步:(1)從不同角度捕獲棋盤格圖像;(2)檢測角點並計算相機參數。

在這裏插入圖片描述
在這裏插入圖片描述

可使用OpenCV或其他相機標定程序來完成參數計算。

參考

[1] 一個pdf,下載地址找不到了=_=

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章