目錄
實(shí)現(xiàn)相機(jī)標(biāo)定的方法
1.從世界坐標(biāo)系到相機(jī)坐標(biāo)系 3D->3D 其中,R為旋轉(zhuǎn)矩陣,t為平移向量,因?yàn)榧俣ㄔ谑澜缱鴺?biāo)系中物點(diǎn)所在平面過世界坐標(biāo)系原點(diǎn)且與Zw軸垂直(也即棋盤平面與Xw-Yw平面重合,目的在于方便后續(xù)計(jì)算),所以zw=0,可直接轉(zhuǎn)換成式1的形式。其中變換矩陣 即為前文提到的外參矩陣,之所稱之為外參矩陣可以理解為只與相機(jī)外部參數(shù)有關(guān),且外參矩陣隨剛體位置的變化而變化。 2.從相機(jī)坐標(biāo)系到理想圖像坐標(biāo)系(不考慮畸變) 3D->2D 這一過程進(jìn)行了從三維坐標(biāo)到二維坐標(biāo)的轉(zhuǎn)換,也即投影透視過程(用中心投影法將形體投射到投影面上,從而獲得的一種較為接近視覺效果的單面投影圖,也就是使我們?nèi)搜劭吹骄拔锝筮h(yuǎn)小的一種成像方式)。 3.從理想圖像坐標(biāo)系到實(shí)際圖像坐標(biāo)系(考慮畸變): 透鏡的畸變主要分為徑向畸變和切向畸變(還有薄透鏡畸變等等,但都沒有徑向和切向畸變影響顯著,所以我們?cè)谶@里只考慮徑向和切向畸變)。 徑向畸變是由于透鏡形狀的制造工藝導(dǎo)致。且越向透鏡邊緣移動(dòng)徑向畸變?cè)絿?yán)重。實(shí)際情況中我們常用r=0處的泰勒級(jí)數(shù)展開的前幾項(xiàng)來近似描述徑向畸變。矯正徑向畸變前后的坐標(biāo)關(guān)系為: ·xcorrected = x(1+k1r2+k2r4+k3r6) ·ycorrected = y(1+k1r2+k2r4+k3r6) 由此可知對(duì)于徑向畸變,我們有3個(gè)畸變參數(shù)需要求解。 切向畸變是由于透鏡和CMOS或者CCD的安裝位置誤差導(dǎo)致。切向畸變需要兩個(gè)額外的畸變參數(shù)來描述,矯正前后的坐標(biāo)關(guān)系為: ·xcorrected = x + [ 2p1y + p2 (r2 + 2x2) ] ·ycorrected = y + [ 2p2x + p1 (r2 + 2y2) ] 由此可知對(duì)于切向畸變,我們有2個(gè)畸變參數(shù)需要求解。 綜上,我們一共需要5個(gè)畸變參數(shù)(k1、k2、k3、p1和p2 )來描述透鏡畸變。 注意: 4.從實(shí)際圖像坐標(biāo)系到像素坐標(biāo)系: 由于定義的像素坐標(biāo)系原點(diǎn)與圖像坐標(biāo)系原點(diǎn)不重合,假設(shè)像素坐標(biāo)系原點(diǎn)在圖像坐標(biāo)系下的坐標(biāo)為(u0,v0),每個(gè)像素點(diǎn)在圖像坐標(biāo)系x軸、y軸方向的尺寸為:dx、dy,且像點(diǎn)在實(shí)際圖像坐標(biāo)系下的坐標(biāo)為(xc,yc),于是可得到像點(diǎn)在像素坐標(biāo)系下的坐標(biāo)為:
化為齊次坐標(biāo)表示形式可得: 若暫不考慮透鏡畸變,則將式2與式5的轉(zhuǎn)換矩陣相乘即為內(nèi)參矩陣M:
之所以稱之為內(nèi)參矩陣可以理解為矩陣內(nèi)各值只與相機(jī)內(nèi)部參數(shù)有關(guān),且不隨物體位置變化而變化。
最后用一幅圖來總結(jié)從世界坐標(biāo)系到像素坐標(biāo)系(不考慮畸變)的轉(zhuǎn)換關(guān)系: 實(shí)現(xiàn)相機(jī)標(biāo)定的方法MATLAB(matlab calibration toolbox-Matlab標(biāo)定工具箱使用(單目標(biāo)定和雙目標(biāo)定) OpenCV標(biāo)定函數(shù) cv::calibrateCamera(...); 具體實(shí)現(xiàn)方案: 棋盤是一塊由黑白方塊間隔組成的標(biāo)定板,我們用它來作為相機(jī)標(biāo)定的標(biāo)定物(從真實(shí)世界映射到數(shù)字圖像內(nèi)的對(duì)象)。之所以我們用棋盤作為標(biāo)定物是因?yàn)槠矫嫫灞P模式更容易處理(相對(duì)于復(fù)雜的三維物體),但與此同時(shí),二維物體相對(duì)于三維物體會(huì)缺少一部分信息,于是我們會(huì)多次改變棋盤的方位來捕捉圖像,以求獲得更豐富的坐標(biāo)信息。 下面將依次對(duì)剛體進(jìn)行一系列變換,使之從世界坐標(biāo)系進(jìn)行仿射變換、投影透射,最終得到像素坐標(biāo)系下的離散圖像點(diǎn),過程中會(huì)逐步引入各參數(shù)矩陣。 標(biāo)定圖片需要使用標(biāo)定板在不同位置、不同角度、不同姿態(tài)下拍攝,最少需要3張,以10~20張為宜。標(biāo)定板需要是黑白相間的矩形構(gòu)成的棋盤圖,制作精度要求較高,如下圖所示: 常用術(shù)語 標(biāo)定步驟: 1、打印一張棋盤格,把它貼在一個(gè)平面上,作為標(biāo)定物。
圖片大小要一致,最好加入20張左右為佳,加入完成后點(diǎn)擊Calibrate 返回到命令窗口,即可看到相機(jī)參數(shù),在命令行輸入 查看標(biāo)定結(jié)果和程序 |
|