

相機標定目的:
獲取攝像機的內參和外參矩陣,同時也會得到每一副標定圖像的旋轉和平移矩陣。 內參和外參可以對之后相機拍攝的圖像就進行矯正,得到畸變相對很小的圖像。
原理:
成像模型的坐標系為:世界坐標系 --> 相機坐標系 --> 圖像坐標系 --> 像素坐標系
先說從相機坐標系到圖像坐標系的變換:
從針孔成像模型說起:



————————————————————————————
相機坐標系中實際的點坐標為Q(X, Y, Z)
對應的圖像(坐標系)平面上的點為 q(x, y , f)
理想情況如上所示,但實際上成像芯片的中心通常不在光軸上。


原本的焦距是f,這里把f拆成2個不同的焦距,一個是x軸的焦距,一個是y軸的焦距

因此最終計算的結果為:

將實際中的點Q(X, Y, Z)映射到投影平面上坐標為 (x , y)的點的過程稱為投影變換。
這種變換可以使用齊次坐標。



給q(x, y)增加了一個維度w,即為q(x, y, w)


下圖所示,網上一些資料中也有這種形式:
x0、y0為在圖像平面上的主點坐標,是Cx,Cy的另一種形式,
其中s為坐標軸傾斜參數,理想情況下為0,其他參數都是一樣的。

—————————————————————————————————
我們已經得到了內參矩陣,能夠從相機坐標系轉換到圖像坐標系上,
接下來說如何得到外參矩陣,將其從世界坐標系轉換到相機坐標系上
從世界坐標系轉換到相機坐標系上屬於剛體變換,即不會發生形變,也就是說只有旋轉和平移。
公式符號說明:
帶有下標 w 的是世界坐標系
帶有下標 c 的是相機坐標系
設旋轉矩陣為 R, 平移矩陣為 T


再把偏移矩陣T加上即可,
偏移矩陣T為 [Tx, Ty, Tz]的轉置,是X、Y、Z方向上的平移。

將旋轉矩陣R和偏移矩陣T合起來即得外參矩陣即為:

——————————————————————————————————
圖像坐標系和像素坐標系之間的轉換:
像素坐標系和圖像坐標系都在成像平面上,只是各自的原點和度量單位不一樣。
圖像坐標系的原點為相機光軸與成像平面的交點,通常情況下是成像平面的中點或者叫principal point。圖像坐標系的單位為mm,屬於物理單位,
而像素坐標系的單位是pixel,我們平常描述一個像素點都是幾行幾列。所以
這兩者之間的轉換如下:其中dx和dy表示每一列和每一行分別代表多少mm,即1pixel = dx mm
點(u,v)為像素坐標系上的點,對應的圖像坐標系上的點為(x,y)

——————————————————————————————————————
有了一系列參數后就能推導整個公式了。(這里借用一下別人的圖)

相機的內參和外參可以通過張正友標定獲取。通過最終的轉換關系來看,
一個三維世界中的坐標點,可以在圖像中找到一個對應的像素點,
但是反過來,通過圖像中的一個點找到它在三維中對應的點就很困難,因為我們並不知道等式左邊的Zc值。這個Zc可近似看做相機坐標系中相機到物體的距離。
在我看來,二維圖像中的一個點,對應在三維空間中是一條線,因此如果不知道相機劇被測物體距離,是無法從二維圖像上的點推導出三維空間中某個點的坐標的。
————————————————————————————————
透鏡畸變:
(寫了這么多,寫不動了,透鏡畸變原理可以在《學習OpenCV》第11章找到相關內容,挺詳細的)


