簡單介紹
攝像機標定(Camera calibration)簡單來說是從世界坐標系換到圖像坐標系的過程。也就是求終於的投影矩陣
基本的坐標系:
- 世界坐標系(world coordinate system)。
- 相機坐標系(camera coordinate system);
- 圖像坐標系(image coordinate system);
一般來說,標定的過程分為兩個部分:
- 第一步是從世界坐標系轉換為相機坐標系,這一步是三維點到三維點的轉換。包含
R ,t (相機外參)等參數; - 第二部是從相機坐標系轉為圖像坐標系。這一步是三維點到二維點的轉換,包含
K (相機內參)等參數;
相機坐標系 轉換到 圖像坐標系
坐標系介紹

如上圖所看到的(圖片來自UIUC計算機視覺課件)。是一個小孔成像的模型,當中:
-
C 點表示camera centre,即相機的中心點,也是相機坐標系的中心點; -
Z 軸表示principal axis,即相機的主軸; -
p 點所在的平面表示image plane,即相機的像平面。也就是圖片坐標系所在的二維平面。 -
p 點表示principal point。即主點。主軸與像平面相交的點; -
C 點到p 點的距離。也就是右邊圖中的f 表示focal length,即相機的焦距; - 像平面上的
x 和y 坐標軸是與相機坐標系上的X 和Y 坐標軸互相平行的。 - 相機坐標系是以
X 。Y 。Z (大寫)三個軸組成的且原點在C 點。度量值為米(m); - 像平面坐標系是以
x ,y (小寫)兩個軸組成的且原點在p 點,度量值為米(m); - 圖像坐標系一般指圖片相對坐標系,在這里能夠覺得和像平面坐標系在一個平面上,只是原點是在圖片的角上,並且度量值為像素的個數(
pixel)。
相機 轉換到 像平面
知道上面的簡單知識后,假設知道相機坐標系中的一個點
)觀察第二個圖,非常簡單的能夠得到這個轉換:
能夠表示為矩陣計算為(在這里用的是齊次坐標的表示方式,關於齊次坐標文章最以下有介紹):
能夠簡寫為(
增加偏移量
通過上面,能夠把相機坐標系轉換到像平面坐標系,可是像平面坐標系和圖像坐標系盡管在同一個平面上,可是原點並非同一個,而目標是要轉換到圖像坐標系下。所以還須要一步操作。例如以下圖:

如上圖所看到的(圖片來自UIUC計算機視覺課件),當中主點
相當於在上面的基礎上加了一個p點坐標的偏移量,同一時候能夠表示為矩陣計算為(在這里用的是齊次坐標的表示方式):
整理一下得:
所以最后能夠得到
Intrinsic parameters):
以及投影矩陣
像素坐標
前面也提到了在圖像坐標系中用的不是現實生活中的m來度量。而是用的 pixel 的個數,所以在上面轉換到圖像坐標系中還有個問題。就是坐標的表示還是m,並沒有轉換到像素坐標系統;在這里須要引入一個新概念就是:
-
mx 表示在水平方向1m的長度包含的像素的個數; -
my 表示在豎直方向1m的長度包含的像素的個數;
可能有人奇怪為啥不是一個值,還須要分別指定
m度量)為:
可是須要說明的是像素並不一定是一個正方形。有時候可能也是一個矩形。所以要分別指定。
所以能夠把上面相機內參
一般來說。在使用相機內參K計算坐標系轉換時,提供的都是已經變換后的值;比如會提供
世界坐標系 轉換到 圖像坐標系
坐標系介紹

如上圖所看到的(圖片來自UIUC計算機視覺課件)。從世界坐標系轉換到相機坐標系是三維空間到三維空間的變換。一般來說須要一個平移操作和一個旋轉操作就能夠完畢這個轉換。用公式表演示樣例如以下(能夠理解為世界坐標系原點先平移到相機坐標系的位置然后在做一次坐標系旋轉,使坐標軸對齊。):
-
R 表示旋轉矩陣; -
X˜ 表示X 點在世界坐標系中的位置; -
C˜ 表示相機原點C 在世界坐標系中的位置; -
X˜cam 表示X 點在相機坐標系中的位置;
世界 轉換到 相機
依據上面的公式能夠得到從一個三維點從世界坐標系轉換到相機坐標的變換公式例如以下(也是用的齊次坐標的表示方式):
世界 轉換到 圖像
依據上面的討論知道了如何從世界坐標系轉換到相機坐標系(平移和旋轉)以及從相機坐標系轉換到圖像坐標系(相機內參變換),所以帶入上面的矩陣計算,能夠得到:
這樣就得到了終於的投影矩陣
當中:
在這里,
intrinsic parameters),描寫敘述了相機的內部參數,包含焦距
extrinsic parameters)。
畸變參數(distortion parameters)
在幾何光學和陰極射線管(CRT)顯示中。畸變(distortion) 是對直線投影(rectilinear projection)的一種偏移。
簡單來說直線投影是場景內的一條直線投影到圖片上也保持為一條直線。那畸變簡單來說就是一條直線投影到圖片上不能保持為一條直線了。這是一種光學畸變(optical aberration)。可能由於攝像機鏡頭的原因,這里不討論。有興趣的能夠查閱光學畸變的相關的資料。
畸變一般能夠分為兩大類,包含徑向畸變和切向畸變。
基本的一般徑向畸變有時也會有輕微的切向畸變。
徑向畸變(Radial distortion)
徑向畸變的效應有三種。一種是桶形畸變(barrel distortion),還有一種是枕形畸變(pincushion distortion)。還有一種是兩種的結合叫做胡子畸變(mustache distortion),從圖片中能夠非常easy看出差別。詳細見下圖(圖片來自wikipedia):

徑向畸變能夠用例如以下公式修正:
切向畸變(tangential distortion)
切向畸變是由於透鏡與成像平面不嚴格的平行,其能夠用例如以下公式修正:
當中:
-
xdis 和ydis 表示有畸變的坐標; -
xcorr 和ycorr 表示修復后的坐標; -
k1 ,k2 。k3 表示徑向畸變參數; -
p1 ,p2 表示切向畸變參數。
所以終於得到5個畸變參數:
相機標定
那么能夠利用這些來進行終於的任務相機標定。簡單的過程能夠描寫敘述為通過標定板。例如以下圖。能夠得到n個相應的世界坐標三維點
如今就用這些相應關系來求解這些相機參數。最后就是用線性方法求解方程式。這里就不做討論了。

那為什么要做相機標定呢?
每一個鏡頭的畸變程度各不同樣,通過相機標定能夠校正這樣的鏡頭畸變。事實上能夠覺得用這樣的標定的方式來求解相機內參和畸變參數。相當於一種相機校准,然后這些參數就能夠用於后面的求解。
比如求解新拍的兩幅圖片相對的
齊次坐標
就是將一個原本是n維的向量用一個n+1維向量來表示。
很多圖形應用涉及到幾何變換。主要包含平移、旋轉、縮放。以矩陣表達式來計算這些變換時,平移是矩陣相加,旋轉和縮放則是矩陣相乘,綜合起來能夠表示為
x=R∗X+t (注:由於習慣的原因,實際使用時一般使用變化矩陣左乘向量)(R 旋轉縮放矩陣,t 為平移矩陣,X 為原向量,x 為變換后的向量)。引入齊次坐標的目的主要是合並矩陣運算中的乘法和加法,表示為
x=P∗X 的形式。即它提供了用矩陣運算把二維、三維甚至高維空間中的一個點集從一個坐標系變換到還有一個坐標系的有效方法。和上面的計算過程是相應的。
