摘自知乎https://zhuanlan.zhihu.com/p/389653208
相機成像主要有4個坐標系:
成像的過程實質(zhì)上是幾個坐標系的轉(zhuǎn)換始绍。首先空間中的一點由世界坐標系轉(zhuǎn)換到 攝像機坐標系 瞳购,然后再將其投影到成像平面 ( 圖像物理坐標系 ) ,最后再將成像平面上的數(shù)據(jù)轉(zhuǎn)換到圖像平面 (圖像像素坐標系 ) 亏推。
對應(yīng)的左乘矩陣公式
1 相機內(nèi)參
相機內(nèi)參的作用是把坐標從[相機坐標系]轉(zhuǎn)換到[像素坐標系]中
在左圖中学赛,我們把相機看作是針孔,現(xiàn)實世界中的點P經(jīng)過相機的光心O吞杭,投影到物理成像平面上盏浇,變?yōu)辄cP'。
在右圖中芽狗,對這個模型進行了一個簡化绢掰,將其看作是一個相似三角形。
下面我們來對這個模型進行建模童擎。
設(shè)(O-x-y-z)為相機坐標系滴劲,習(xí)慣上我們把z軸指向相機前方,x向右顾复,y向下班挖。O為攝像機的光心,也是針孔模型中的針孔捕透。
設(shè)真實世界點中的P的坐標為[X,Y,Z]T聪姿,成像的點P'的坐標為[X', Y', Z']T, 物理成像平面和光心的距離為f(即為焦距)乙嘀。
根據(jù)右圖中的三角形相似關(guān)系末购,有:
其中,有負號是因為坐標軸方向虎谢,也就表示了成的像是倒立的盟榴。
為了表示起來更方便,我們把成像平面從相機的后面對稱到前面去婴噩,如下圖所示擎场。這樣羽德,負號就沒有了。
在對稱后迅办,有:
整理解出P'的坐標:
上面兩個式子就描述了P點與它所成像的坐標關(guān)系宅静,可以看到,X對應(yīng)的X'與焦距f有關(guān)站欺,與距離Z有關(guān)姨夹。
映射到成像平面上還不夠,我們還需要將這個像給放到像素坐標系內(nèi)矾策。
我們設(shè)在物理成像平面上固定著像素平面o-u-v磷账。
設(shè)P'在像素平面坐標系上的坐標是[u, v]T。
像素坐標系通常定義方式是:原點o'位于圖像的左上角贾虽,u軸向右與x軸平行逃糟,v軸向下與y軸平行。
我們設(shè)像素坐標在u軸上縮放α倍蓬豁,在v軸上縮放了β倍绰咽。同時,原點平移了[cx, cy]T庆尘。
因此可以得到P'與像素坐標的關(guān)系:
代入P與P'的關(guān)系式可得:
其中剃诅,我們用fx,fy替換了αf 和 βf巷送。fx,fy的單位是像素驶忌。
用齊次坐標,把上式寫出矩陣的形式:
也可以把Z寫到等式左邊去笑跛,就變成了:
上式中付魔,K即為相機的內(nèi)參矩陣(Intrinsics)。通常來說飞蹂,相機的內(nèi)參在出廠之后就是固定的了几苍。
2 相機外參
相機外參的作用是把坐標從【世界坐標系】轉(zhuǎn)換到【相機坐標系】中
在上面的推導(dǎo)中,我們用的是P在相機坐標系的坐標(也就是以相機為O點)陈哑,所以我們應(yīng)該先將世界坐標系中的Pw給變換到相機坐標系中的P妻坝。
相機的位姿由旋轉(zhuǎn)矩陣R和平移向量t來描述,因此:
再代入之前的內(nèi)參的式子惊窖,得到:
后面一個等號蘊含了一個齊次坐標到非齊次坐標的轉(zhuǎn)換刽宪。其中,R, t為相機的外參(Extrinsics)界酒。
3 鏡頭畸變
透鏡由于制造精度以及組裝工藝的偏差會引入畸變圣拄,導(dǎo)致原始圖像的失真。鏡頭的畸變分為徑向畸變和切向畸變兩類毁欣。
- 徑向畸變
顧名思義庇谆,徑向畸變就是沿著透鏡半徑方向分布的畸變岳掐,產(chǎn)生原因是光線在原理透鏡中心的地方比靠近中心的地方更加彎曲,這種畸變在普通廉價的鏡頭中表現(xiàn)更加明顯饭耳,徑向畸變主要包括桶形畸變和枕形畸變兩種串述。以下分別是枕形和桶形畸變示意圖:
成像儀光軸中心的畸變?yōu)?,沿著鏡頭半徑方向向邊緣移動寞肖,畸變越來越嚴重剖煌。畸變的數(shù)學(xué)模型可以用主點(principle point)周圍的泰勒級數(shù)展開式的前幾項進行描述逝淹,通常使用前兩項耕姊,即k1和k2,對于畸變很大的鏡頭栅葡,如魚眼鏡頭茉兰,可以增加使用第三項k3來進行描述,成像儀上某點根據(jù)其在徑向方向上的分布位置欣簇,調(diào)節(jié)公式為:
公式里(x0规脸,y0)是畸變點在成像儀上的原始位置,(x熊咽,y)是畸變較真后新的位置莫鸭,下圖是距離光心不同距離上的點經(jīng)過透鏡徑向畸變后點位的偏移示意圖,可以看到横殴,距離光心越遠被因,徑向位移越大,表示畸變也越大衫仑,在光心附近梨与,幾乎沒有偏移。
- 切向畸變
切向畸變是由于透鏡本身與相機傳感器平面(成像平面)或圖像平面不平行而產(chǎn)生的文狱,這種情況多是由于透鏡被粘貼到鏡頭模組上的安裝偏差導(dǎo)致粥鞋。畸變模型可以用兩個額外的參數(shù)p1和p2來描述:
下圖顯示某個透鏡的切向畸變示意圖瞄崇,大體上畸變位移相對于左下——右上角的連線對稱的呻粹,說明該鏡頭在垂直于該方向上有一個旋轉(zhuǎn)角度。
徑向畸變和切向畸變模型中一共有5個畸變參數(shù)苏研,在Opencv中他們被排列成一個5*1的矩陣等浊,依次包含k1、k2楣富、p1凿掂、p2、k3,經(jīng)常被定義為Mat矩陣的形式庄萎,如Mat distCoeffs=Mat(1,5踪少,CV_32FC1,Scalar::all(0))糠涛;這5個參數(shù)就是相機標定中需要確定的相機的5個畸變系數(shù)援奢。求得這5個參數(shù)后,就可以校正由于鏡頭畸變引起的圖像的變形失真忍捡,下圖顯示根據(jù)鏡頭畸變系數(shù)校正后的效果: