原理:
成像模型的座標系爲:世界座標系 --> 相機座標系 --> 圖像座標系 --> 像素座標系學習
先說從相機座標系到圖像座標系的變換:
從針孔成像模型提及:
code
理想狀況如上所示,但實際上成像芯片的中心一般不在光軸上。orm
本來的焦距是f,這裏把f拆成2個不一樣的焦距,一個是x軸的焦距,一個是y軸的焦距ip
這種變換可使用齊次座標。ci
給q(x, y)增長了一個維度w,即爲q(x, y, w)io
下圖所示,網上一些資料中也有這種形式:
x0、y0爲在圖像平面上的主點座標,是Cx,Cy的另外一種形式,
其中s爲座標軸傾斜參數,理想狀況下爲0,其餘參數都是同樣的。form
—————————————————————————————————
咱們已經獲得了內參矩陣,可以從相機座標系轉換到圖像座標系上,
接下來講如何獲得外參矩陣,將其從世界座標系轉換到相機座標系上class
從世界座標系轉換到相機座標系上屬於剛體變換,即不會發生形變,也就是說只有旋轉和平移。原理
公式符號說明: 帶有下標 w 的是世界座標系 帶有下標 c 的是相機座標系 設旋轉矩陣爲 R, 平移矩陣爲 T
再把偏移矩陣T加上便可,
偏移矩陣T爲 [Tx, Ty, Tz]的轉置,是X、Y、Z方向上的平移。file
將旋轉矩陣R和偏移矩陣T合起來即得外參矩陣即爲:
——————————————————————————————————
圖像座標系和像素座標系之間的轉換:
像素座標系和圖像座標系都在成像平面上,只是各自的原點和度量單位不同。
圖像座標系的原點爲相機光軸與成像平面的交點,一般狀況下是成像平面的中點或者叫principal point。圖像座標系的單位爲mm,屬於物理單位,
而像素座標系的單位是pixel,咱們日常描述一個像素點都是幾行幾列。因此
這二者之間的轉換以下:其中dx和dy表示每一列和每一行分別表明多少mm,即1pixel = dx mm
點(u,v)爲像素座標系上的點,對應的圖像座標系上的點爲(x,y)
相機的內參和外參能夠經過張正友標定獲取。經過最終的轉換關係來看,
一個三維世界中的座標點,能夠在圖像中找到一個對應的像素點,
可是反過來,經過圖像中的一個點找到它在三維中對應的點就很困難,由於咱們並不知道等式左邊的Zc值。這個Zc可近似看作相機座標系中相機到物體的距離。
在我看來,二維圖像中的一個點,對應在三維空間中是一條線,所以若是不知道相機劇被測物體距離,是沒法從二維圖像上的點推導出三維空間中某個點的座標的。
————————————————————————————————
透鏡畸變:
(寫了這麼多,寫不動了,透鏡畸變原理能夠在《學習OpenCV》第11章找到相關內容,挺詳細的)