从像素坐标到相机坐标_相机标定方法
在圖像測量過程以及機器視覺應(yīng)用中,為確定空間物體表面某點的三維幾何位置與其在圖像中對應(yīng)點之間的相互關(guān)系,必須建立相機成像的幾何模型,這些幾何模型參數(shù)就是相機參數(shù)。在大多數(shù)條件下這些參數(shù)(內(nèi)參、外參、畸變參數(shù))必須通過實驗與計算才能得到,這個求解參數(shù)的過程就稱之為相機標(biāo)定(或攝像機標(biāo)定)。無論是在圖像測量或者機器視覺應(yīng)用中,相機參數(shù)的標(biāo)定都是非常關(guān)鍵的環(huán)節(jié),其標(biāo)定結(jié)果的精度及算法的穩(wěn)定性直接影響相機工作產(chǎn)生結(jié)果的準(zhǔn)確性。因此,做好相機標(biāo)定是做好后續(xù)工作的前提,提高標(biāo)定精度是科研工作的重點所在。
? ?標(biāo)定的目的主要為解決兩個問題:
? ?a、確定世界坐標(biāo)系下三維空間點與像素平面像素點間的轉(zhuǎn)換關(guān)系(內(nèi)外參);
? ?b、確定相機成像過程中的畸變系,用于圖像矯正。
1 針孔相機模型
相機將三維世界中的坐標(biāo)點(單位:米)映射到二維圖像平面(單位:像素)的過程能夠用一個幾何模型來描述,其中最簡單的稱為針孔相機模型 (pinhole camera model),其框架如下圖所示:
其中,涉及到相機標(biāo)定涉及到了四大坐標(biāo)系,分別為:
像素坐標(biāo)系:為了描述物體成像后的像點在數(shù)字圖像上(相片)的坐標(biāo)而引入,是我們真正從相機內(nèi)讀取到的信息所在的坐標(biāo)系。單位為個(像素數(shù)目)。
成像平面坐標(biāo)系:為了描述成像過程中物體從相機坐標(biāo)系到圖像坐標(biāo)系的投影透射關(guān)系而引入,方便進一步得到像素坐標(biāo)系下的坐標(biāo)。單位為m。
相機坐標(biāo)系:在相機上建立的坐標(biāo)系,為了從相機的角度描述物體位置而定義,作為溝通世界坐標(biāo)系和圖像/像素坐標(biāo)系的中間一環(huán)。單位為m。
世界坐標(biāo)系:用戶定義的三維世界的坐標(biāo)系,為了描述目標(biāo)物在真實世界里的位置而被引入。單位為m。
下面,我們來詳細推導(dǎo)從世界坐標(biāo)系到像素坐標(biāo)的過程。
1.1 世界坐標(biāo)系到相機坐標(biāo)系
從世界坐標(biāo)系到相機坐標(biāo)系, 這是一個剛體變換,只需對世界坐標(biāo)系的三維點作用一個旋轉(zhuǎn)R和平移t(R,t即為相機的外參),變換過程可以通過一下公式完成:
1.2 相機坐標(biāo)系到成像平面坐標(biāo)系
這一過程進行了從三維坐標(biāo)到二維坐標(biāo)的轉(zhuǎn)換,也即投影透視過程(用中心投影法將物體投射到投影面上,從而獲得的一種較為接近視覺效果的單面投影圖,也就是使我們?nèi)搜劭吹骄拔锝筮h小的一種成像方式)。
成像過程如下圖所示:針孔面(相機坐標(biāo)系)在圖像平面(圖像坐標(biāo)系)和物點平面(棋盤平面)之間,所成圖像為倒立實像。
但是為了在數(shù)學(xué)上更方便描述,我們將相機坐標(biāo)系和圖像坐標(biāo)系位置對調(diào),變成下圖所示的布置方式(沒有實際的物理意義,只是方便計算):
此時,假設(shè)相機坐標(biāo)系中有一點M,則在理想圖像坐標(biāo)系下(無畸變)的成像點P的坐標(biāo)為(可由相似三角形原則得出):
f為焦距,整理,得:
1.3 成像平面坐標(biāo)系到像素坐標(biāo)系
如上圖,成平面坐標(biāo)系和像素坐標(biāo)系之間存在一個縮放和平移
整理得:
以fx、fy的方式表示為:
其中
α、β的單位為像素/米;
fx、fy為x、y方向的焦距,單位為像素;
(cx,cy)為主點,圖像的中心,單位為像素。
那么,相機坐標(biāo)系到像素坐標(biāo)系的最終形式可寫成:
將 Zc移到左邊:
所以,在世界坐標(biāo)系中的三維點M=[X,Y,Z]T 和像素坐標(biāo)系中二維點m=[u,v]T的關(guān)系為:
即:
其中,s為縮放因子,A為相機的內(nèi)參矩陣,[R t]為相機的外參矩陣,和分別為m和M對應(yīng)的齊次坐標(biāo)。
2 畸變模型
我們在攝像機坐標(biāo)系到圖像坐標(biāo)系變換時談到透視投影。攝像機拍照時通過透鏡把實物投影到像平面上,但是透鏡由于制造精度以及組裝工藝的偏差會引入畸變,導(dǎo)致原始圖像的失真。因此我們需要考慮成像畸變的問題。
透鏡的畸變主要分為徑向畸變和切向畸變,還有薄透鏡畸變等等,但都沒有徑向和切向畸變影響顯著,所以我們在這里只考慮徑向和切向畸變。
2.1 徑向畸變
顧名思義,徑向畸變就是沿著透鏡半徑方向分布的畸變,產(chǎn)生原因是光線在原理透鏡中心的地方比靠近中心的地方更加彎曲,這種畸變在普通廉價的鏡頭中表現(xiàn)更加明顯,徑向畸變主要包括桶形畸變和枕形畸變兩種。以下分別是枕形和桶形畸變示意圖:
實際情況中我們常用r=0處的泰勒級數(shù)展開的前幾項來近似描述徑向畸變,矯正徑向畸變前后的坐標(biāo)關(guān)系為:
2.2 切向畸變
切向畸變是由于透鏡本身與相機傳感器平面(像平面)或圖像平面不平行而產(chǎn)生的,這種情況多是由于透鏡被粘貼到鏡頭模組上的安裝偏差導(dǎo)致。畸變模型可以用兩個額外的參數(shù)p1和p2來描述:
其中,
所以,我們一共需要5個畸變參數(shù)(k1,k2,k3,p1,p2)來描述透鏡畸變。
綜上所述,相機標(biāo)定實際上就是確定相機的內(nèi)外參數(shù)、畸變參數(shù)的過程。
以上是對于單個相機進行標(biāo)定,那么對于多目相機系統(tǒng)或者RGBD 相機的標(biāo)定呢?
3 立體標(biāo)定
對于多目相機系統(tǒng)或者RGBD 相機除了要對每個相機進行以上標(biāo)定以外,還需要求傳感器之間的變換T,以使同一時刻獲取的數(shù)據(jù)能夠“對齊”,以雙目為例,左右兩個相機的坐標(biāo)系如下圖:
計算出兩個攝像機之間的旋轉(zhuǎn)矩陣R和平移向量t,方法是分別計算出兩個攝像機的R和T,再由以下公式計算:
由于單相機獲取的圖像只能計算出二維坐標(biāo),因為我們使用了2套相機,且2套相機之間的關(guān)系也是已知的,那么如果我們能把三維空間中某點在左右相機成像的二維坐標(biāo)都計算出來,且能知道這是同一個點,這樣就可以計算出三維坐標(biāo)。這里面確認同名點的技術(shù)就是立體匹配。立體匹配有很多種算法,其中局部匹配法是最常用的,但是就目前已有算法來說,沒有一種算法可以實現(xiàn)100%匹配。一般來說待匹配點越多,匹配準(zhǔn)確率越低。
4 現(xiàn)有標(biāo)定方法
相機標(biāo)定方法有:傳統(tǒng)相機標(biāo)定法、主動視覺相機標(biāo)定法、相機自標(biāo)定法。
| 傳統(tǒng)相機標(biāo)定法 | 可使用于任意的相機模型、 精度高 | 需要標(biāo)定物、算法復(fù)雜 | Tsai兩步法、張氏標(biāo)定法 |
| 主動視覺相機標(biāo)定法 | 不需要標(biāo)定物、算法簡單、魯棒性高 | 成本高、設(shè)備昂貴 | 主動系統(tǒng)控制相機做特定運動 |
| 相機自標(biāo)定法 | 靈活性強、可在線標(biāo)定 | 精度低、魯棒性差 | 分層逐步標(biāo)定、基于Kruppa方程 |
Tsai兩步法是先線性求得相機參數(shù),之后考慮畸變因素,得到初始的參數(shù)值,通過非線性優(yōu)化得到最終的相機參數(shù)。Tsai兩步法速度較快,但僅考慮徑向畸變,當(dāng)相機畸變嚴重時,該方法不適用。
張氏標(biāo)定法使用二維方格組成的標(biāo)定板進行標(biāo)定,采集標(biāo)定板不同位姿圖片,提取圖片中角點像素坐標(biāo),通過單應(yīng)矩陣計算出相機的內(nèi)外參數(shù)初始值,利用非線性最小二乘法估計畸變系數(shù),最后使用極大似然估計法優(yōu)化參數(shù)。該方法操作簡單,而且精度較高,可以滿足大部分場合。
基于主動視覺的相機標(biāo)定法是通過主動系統(tǒng)控制相機做特定運動,利用控制平臺控制相機發(fā)生特定的移動拍攝多組圖像,依據(jù)圖像信息和已知位移變化來求解相機內(nèi)外參數(shù)。這種標(biāo)定方法需要配備精準(zhǔn)的控制平臺,因此成本較高。
分層逐步標(biāo)定法是先對圖像的序列做射影重建,在重建的基礎(chǔ)上進行放射標(biāo)定和歐式標(biāo)定,通過非線性優(yōu)化算法求得相機內(nèi)外參數(shù)。由于初始參數(shù)是模糊值,優(yōu)化算法收斂性不確定。
基于Kruppa的自標(biāo)定法是通過二次曲線建立關(guān)于相機內(nèi)參矩陣的約束方程,至少使用3對圖像來標(biāo)定相機。圖像序列長度會影響標(biāo)定算法的穩(wěn)定性,無法保證射影空間中的無窮遠平面。
以上為單個相機標(biāo)定的方法,而對于相機-相機、相機-距離傳感器之間進行標(biāo)定,OpenCV、Matlab都有自帶的工具箱或函數(shù)庫可以用來標(biāo)定,但文獻[1]提出了一個帶有Web界面的工具箱,用于全自動相機到相機和相機到范圍的校準(zhǔn)。該系統(tǒng)可在一分鐘內(nèi)恢復(fù)內(nèi)外參數(shù)以及攝像機和距離傳感器之間的轉(zhuǎn)換。而且,該方法所提出的基于生長的棋盤格角點檢測方法明顯優(yōu)于OpenCV需要指定棋盤格角點大小的角點檢測方法。
References:
1、Geiger A, Moosmann F, Car ?, et al. Automatic camera and range sensor calibration using a single shot[C]//Robotics and Automation (ICRA), 2012 IEEE International Conference on. IEEE, 2012: 3936-3943.
2、針孔相機投影模型以及畸變模型
3、計算機視覺life | 相機標(biāo)定
4、學(xué)習(xí)opencv3(中文版) —— Adrian Kaehler & Gary Bradski
5、雙目視覺之相機標(biāo)定
總結(jié)
以上是生活随笔為你收集整理的从像素坐标到相机坐标_相机标定方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高举正义大旗的盗版组,开始攻向霍格沃茨
- 下一篇: 软件项目周报_软件产品研发流程