Camera Calibration 相機校正

Moris
Computer Vision Note
15 min readDec 9, 2022

--

攝像機標定(Camera calibration)簡單來說是從世界座標系換到影象座標系的過程,也就是求最終的投影矩陣的過程。

在圖像測量過程以及機器視覺應用中,爲確定空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關係,必須建立相機成像的幾何模型,這些幾何模型參數就是相機參數。

Outline

  1. 張氏標定法
  2. Homography (單應性)
  3. Homography 推導

1. 張氏標定法

「張氏標定法」是張正友博士在1999年發表在國際頂級會議ICCV上的論文《Flexible Camera Calibration By Viewing a Plane From Unknown Orientations》中,提出的一種利用平面棋盤格進行相機標定的實用方法。

其後2000的這篇《A flexible new technique for camera calibration》引用數更是達到了恐怖的13885次,江湖地位可見一斑。

張氏標定法使用二維方格組成的標定板進行標定,採集標定板不同位姿圖片,提取圖片中角點像素坐標,通過單應矩陣計算出相機的內外參數初始值,利用非線性最小二乘法估計畸變係數,最後使用極大似然估計法優化參數。

該方法介於攝影標定法和自標定法之間,既克服了攝影標定法需要的高精度三維標定物的缺點,又解決了自標定法魯棒性差的難題。標定過程僅需使用一個打印出來的棋盤格,並從不同方向拍攝幾組圖片即可,任何人都可以自己製作標定圖案,不僅實用靈活方便,而且精度很高,魯棒性好。因此很快被全世界廣泛採用,極大的促進了三維計算機視覺從實驗室走向真實世界的進程。

世界坐標系(world coordinate system):用戶定義的三維世界的坐標系,為了描述目標物在真實世界裡的位置而被引入。單位為m。

相機坐標系(camera coordinate system):在相機上建立的坐標系,為了從相機的角度描述物體位置而定義,作為溝通世界坐標系和圖像/像素坐標系的中間一環。單位為m。

圖像坐標系(image coordinate system):為了描述成像過程中物體從相機坐標係到圖像坐標系的投影透射關係而引入,方便進一步得到像素坐標系下的坐標。單位為m。

像素坐標系(pixel coordinate system):為了描述物體成像後的像點在數字圖像上(相片)的坐標而引入,是我們真正從相機內讀取到的信息所在的坐標系。單位為個(像素數目)。

先引入「棋盤」的概念:

棋盤是一塊由黑白方塊間隔組成的標定板,我們用它來作為相機標定的標定物(從真實世界映射到數字圖像內的對象)。之所以我們用棋盤作為標定物是因為平面棋盤模式更容易處理(相對於復雜的三維物體),但與此同時,二維物體相對於三維物體會缺少一部分信息,於是我們會多次改變棋盤的方位來捕捉圖像,以求獲得更豐富的坐標信息。如下圖所示,是相機在不同方向下拍攝的同一個棋盤圖像。

下面將依次對剛體進行一系列變換,使之從世界坐標系進行仿射變換、投影透射,最終得到像素坐標系下的離散圖像點,過程中會逐步引入各參數矩陣。

1、從世界坐標係到相機坐標系

剛體從世界坐標系轉換到相機坐標系的過程,可以通過旋轉和平移來得到,我們將其變換矩陣由一個旋轉矩陣和平移向量組合成的齊次坐標矩陣(為什麼要引入齊次坐標可見後續文章)來表示:

其中,R為旋轉矩陣,t為平移向量,因為假定在世界坐標系中物點所在平面過世界坐標係原點且與Zw軸垂直(也即棋盤平面與Xw-Yw平面重合,目的在於方便後續計算),所以zw=0,可直接轉換成式1的形式。其中變換矩陣

即為前文提到的外參矩陣,之所稱之為外參矩陣可以理解為只與相機外部參數有關,且外參矩陣隨剛體位置的變化而變化。

下圖表示了用R,t將上述世界坐標系轉換到相機坐標系的過程。

2、從相機坐標係到理想圖像坐標系(不考慮畸變)

這一過程進行了從三維坐標到二維坐標的轉換,也即投影透視過程(用中心投影法將物體投射到投影面上,從而獲得的一種較為接近視覺效果的單面投影圖,也就是使我們人眼看到景物近大遠小的一種成像方式)。我們還是拿針孔成像來說明(除了成像亮度低外,成像效果和透鏡成像是一樣的,但是光路更簡單)。

成像過程如圖二所示:針孔面(相機坐標系)在圖像平面(圖像坐標系)和物點平面(棋盤平面)之間,所成圖像為倒立實像。

但是為了在數學上更方便描述,我們將相機坐標系和圖像坐標系位置對調,變成圖三所示的佈置方式(沒有實際的物理意義,只是方便計算):

此時,假設相機坐標系中有一點M,則在理想圖像坐標系下(無畸變)的成像點P的坐標為(可由相似三角形原則得出):

將上式化為齊次坐標表示形式為:

3、從理想圖像坐標係到實際圖像坐標系(考慮畸變)

透鏡的畸變主要分為徑向畸變和切向畸變,還有薄透鏡畸變等等,但都沒有徑向和切向畸變影響顯著,所以我們在這裡只考慮徑向和切向畸變。

在相機的成像矩陣當中,並沒有包含 lens distortion(透鏡扭曲),這是因為一個理想的 Pinhole Camera 是不需要 透鏡(lens) 的;但在實際的相機中,Camera model 則包含了 radial lens distortion 以及 tangential lens distortion。

Radial Distortion(徑向畸變)

Radial Distortion 發生的原因在於當光線經過透鏡的邊緣時,其彎曲的程度比在透鏡的中心為大,distortion 的情況在透鏡愈小時,會愈明顯。

對某些透鏡,光線在遠離透鏡中心的地方比靠近中心的地方更加彎曲,產生“筒形Pincushion”或“魚眼Barrel”現象,稱為徑向畸變。

Source: https://pic.pimg.tw/silverwind1982/1469173581-599740956.png

Radial Distortion Coefficients 為 Radial Distortion 對相機座標影像的影響強度,一般來講,成像儀中心的徑向畸變為0,越向邊緣移動,畸變越嚴重。不過徑向畸變可以通過下面的泰勒級數展開式來校正:

X_distorted = x(1 + k1*r2 + k2*r4 + k3*r6)
Y_distorted = y(1 + k1*r2 + k2*r4 + k3*r6)x, y:經過相機外部參數矩陣處理後,所得到的相機座標影像
(X_distorted, Y_distorted):經過 distortion 後的影像座標
k1, k2, k3:Radial Distortion Coefficients
r2:x2 + y2

一般來說,求 k1, k2 已經可以滿足大部分作 calibration 的需求,除非 distortion 的情況很嚴重,才需要求到 k3。

Tangential Distortion(切向畸變)

當成像儀被貼上在攝像機的時候,會存在一定的誤差,使得影象平面和透鏡不完全平行,從而產生切向畸變。也就是說,如果一個矩形被投影到成像儀上時,可能會變成一個梯形。Tangential Distortion 發生的情況為相機的成像平面與針孔之間,並不是平行:

Source: https://pic.pimg.tw/silverwind1982/1469173581-3740628882.png

Tangential Distortion Coefficients 為 Tangential Distortion 對相機座標影像的影響強度,如果一個矩形被投影到成像儀上時,可能會變成一個梯形。切向畸變可以通過如下公式來校正::

X_distorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]
Y_distorted = y + [p1 * (r2 + 2 * y2) + 2 * p2 * x * y]x, y:經過相機外部參數矩陣處理後,所得到的相機座標影像
(xdistorted, ydistorted):經過 distortion 後的影像座標
p1, p2:Tangential Distortion Coefficients
r2:x2 + y2Distortion Coefficients 共有 5 個,包含:k1, k2, k3, p1, p2。
Distortion Matrix:[k1, k2, p1, p2, k3]

由此可知對於切向畸變,我們有2個畸變參數需要求解。

綜上,我們一共需要5個畸變參數(k1、k2、k3、p1和p2 )來描述透鏡畸變。

4、從實際圖像坐標係到像素坐標系

由於定義的像素坐標係原點與圖像坐標係原點不重合,假設圖像坐標係原點在像素坐標系下的坐標為(u0,v0),每個像素點在圖像坐標系x軸、y軸方向的尺寸為:dx、dy,且像點在實際圖像坐標系下的坐標為(xc,yc),於是可得到像點在像素坐標系下的坐標為:

化為齊次坐標表示形式可得:

公式2中(xp, yp)與公式5中(xc, yc)相同,都是圖像坐標系下的坐標。

若暫不考慮透鏡畸變,則將式2與式5的轉換矩陣相乘即為內參矩陣M:

之所以稱之為內參矩陣可以理解為矩陣內各值只與相機內部參數有關,且不隨物體位置變化而變化。

最後用一幅圖來總結從世界坐標係到像素坐標系(不考慮畸變)的轉換關係:

2. Homography (單應性)

平面的單應性被定義為一個平面到另外一個平面的投影對映。因此一個二維平面上的點對映到攝像機成像儀上的對映就是平面單應性的例子。如果點Q到成像儀上的點q的對映使用齊次座標,這種對映可以用矩陣相乘的方式表示。若有一下定義:

這裡引入引數s,它是任意尺度的比例(目的是使得單應性定義到該尺度比例)。通常根據習慣放在H的外面

H有兩部分組成:用於定位觀察的物體平面的物理變換和使用攝像機內參數矩陣的投影。

物理變換部分是與觀測到的影象平面相關的部分旋轉R和部分平移t的影響之和,表示如下

這裡R為3*3大小的矩陣,t表示一個一個3維的列向量。攝像機內參數矩陣用M表示,那麼我們重寫單應性如下:

那麼上述公式中的~Q,就可以簡化為平面座標中的~Q’,即我們使Z=0。即物體平面上的點我們用x,y表示,相機平面上的點,我們也是用二維點表示。我們去掉了Z方向的座標,那麼相對於旋轉矩陣R,R可以分解為R=[r1 r2 r3],那麼r3也就不要了,參考下面的推導:

單應性研究的是一個平面上到另外一個平面的對映,那麼上述公式中的~Q,就可以簡化為平面座標中的~Q’,即我們使Z=0。即物體平面上的點我們用x,y表示,相機平面上的點,我們也是用二維點表示。我們去掉了Z方向的座標,那麼相對於旋轉矩陣R,R可以分解為R=[r1 r2 r3],那麼r3也就不要了,參考下面的推導:

其中H是一個3×3大小的矩陣,可表示如下:

故最終的單應性矩陣可表示如下:

OpenCV就是利用上述公式來計算單應性矩陣。它使用同一物體的多個影象來計算每個視場的旋轉和平移,同時也計算攝像機的內參數。我們知道旋轉和平移共6個引數,攝像機內參數為4個引數。對於每一個視場有6個要求解的新引數和4個不變的相機內參數。對於平面物體如棋盤,能夠提供8個方差,即對映一個正方形到四邊形可以用4個(x,y)來描述。那麼對於兩個視場,我們就有8*2=16=2*6+4,即求解所有的引數,至少需要兩個視場。

為什麼正方形到四邊形的四個點的對映可以確定8個方程呢,結果是顯然的,我們假設物體平面上的正方形的一個頂點座標為(u,v),成像儀與該點對應的點座標為(x,y),我們假設它們之間的關係如下:

u=f(x,y);

v=g(x,y);

顯然,我們把四點的對應座標帶入到上述公式可以得到8個方程。

這裡我們會想物體平面上正方形的四個頂點座標如何確定,其實我們就可以理解為角點的個數,對於尺度的話,我們有s進行控制。對於影象平面上的角點的位置,我們可以可以通過尋找角點來定位他們的位置。其實對於具體的操作,由於還沒細讀程式碼和相關原理,在這裡只能大體猜測一下。等日後學習了,再來糾正。

單應性矩陣H把源影象平面上的點集位置與目標影象平面上(通常是成像儀平面)的點集位置聯絡起來:

3. Homography 推導

Step 1:

在相機模型中, 假設三維世界點~Q

二維相機像素座標~q

在棋盤格上我們可以當成是 Z = 0 的平面,其中 s 是尺度因子, K 是內參:

而K[r1,r2,t]稱為 單應性矩陣(Homography matrix) H
如此可以用 H 來約束內參和外參
而 H 可以透過棋盤和成像平面上的點對應計算出來

H等效為intrisic matrix(K)和外參矩陣[r1 r2 t]的乘積

Step 2:

展開h,h2,h3,推導λ以及向量h1及h2

Step 3:

因為r1 和 r2 是旋轉矩陣, 也因為 r1 和 r2 是 正交單範基底(orthonormal basis),所以r1和 r2的內積為0 且向量長度均相同為 1

λ 是一個任意係數,根據 r1 和 r2 是正交單範 (orthonormal),可以有以下式子:

Orthonormal向量性質
1. 長度為1
2. r1 與 r2 的 Dot Product = 0

Step 4:

求 Intrisic Parameters,因為 intrinsic matrix 是相機本身參數,所以每張照片都會一樣。接下來都跳過論文證明過程,直接看如何求 intrinsic matrix,令 對稱矩陣B:

發現 B 是斜對稱矩陣, 所以有效元素 6 個, 寫成上三角矩陣b:

根據對稱矩陣B的假設,令 hi 指 H 的第 i 個直欄,所以 hi表示如下,並定義:

展開推導後可得到:

回到我們一開始得到的約束式,寫成矩陣:

Step 5:

V 其實就是由 H 組成, b 由內參組成,V 是一個 2n×6 的矩陣。
每張校正板可以求出一個 H 矩陣, 得到一個 Vb=0 的式子
可以提供兩個方程式, 內參有五個變數, 所以理論上當我們有至少 3 張照片 ( n>=3) 時,我們就能求得 b 的解。
我們可以將這些方程式組成一個大線性系統
求解出 b 後就能得到內參的各個參數

接著只要透過下式求解

使用Homogeneous Linear Least Squares求解,對V做SVD分解

Step 6:

接著從 B 找出各項參數,就可以得到 intrinsic matrix K,根據定義代回去就好:

Step 7:

接著從先前Homography的條件式,就可以得到 extrinsic matrix W,其中 λ 是比例係數

--

--

Moris
Computer Vision Note

An AI engineer who loves deep learning technology and is willing to share resources and learn new technologies