通過標(biāo)定我們可以獲得相機(jī)內(nèi)參拦键、相機(jī)外參和畸變系數(shù)矩陣芬为。
標(biāo)定的基本實(shí)現(xiàn)流程如下:
1.確定標(biāo)定板的size大小
2.給出標(biāo)定板中角點(diǎn)的世界坐標(biāo)(默認(rèn)處于z=0的平面)
3.調(diào)用cv::findChessboardCorners()獲取角點(diǎn)的像素坐標(biāo)(二維)
4.調(diào)用cv::cornerSubPix()進(jìn)行角點(diǎn)的亞像素精確
5.調(diào)用cv::calibrateCamera()進(jìn)行標(biāo)定獲取相機(jī)的內(nèi)參和外參以及畸變系數(shù)矩陣
6.利用相機(jī)內(nèi)參和畸變系數(shù)得到映射關(guān)系mapx媚朦,mapx
7.應(yīng)用cv::remap()去畸變,映射到正確的像素點(diǎn)坐標(biāo)上
相機(jī)內(nèi)參:
fx:焦距/(x軸上一個(gè)像素點(diǎn)的單位長(zhǎng)度)
fy:焦距/(x軸上一個(gè)像素點(diǎn)的單位長(zhǎng)度)
(cx,cy)為主點(diǎn)坐標(biāo)唯袄,一般近似為圖像的中心坐標(biāo)點(diǎn)
相機(jī)外參(每幅圖像對(duì)應(yīng)著一個(gè)外參):
相機(jī)外參數(shù)是世界坐標(biāo)系中的參數(shù),比如相機(jī)的位置资厉,旋轉(zhuǎn)平移的方向
旋轉(zhuǎn)矩陣rvecs:描述了世界坐標(biāo)系的坐標(biāo)軸相對(duì)于攝像機(jī)坐標(biāo)軸的方向
平移矩陣tvecs:描述了在攝像機(jī)坐標(biāo)系下酌住,空間原點(diǎn)的位置
利用rvecs和tvecs可以進(jìn)行反向投影酪我,將世界坐標(biāo)投影得到新的角點(diǎn)坐標(biāo)都哭,與之前的進(jìn)行誤差比較,欺矫。
畸變系數(shù):
ki是頸向畸變系數(shù)穆趴;pi是切向畸變系數(shù)
頸向畸變:
產(chǎn)生原因是光線在遠(yuǎn)離透鏡中心的地方比靠近中心的地方更加彎曲徑向畸變主要包含桶形畸變和枕形畸變兩種未妹。
切向畸變:
產(chǎn)生的原因透鏡不完全平行于圖像平面络它,這種現(xiàn)象發(fā)生于成像儀被粘貼在攝像機(jī)的時(shí)候歪赢。
標(biāo)定的關(guān)鍵:
1.應(yīng)當(dāng)選取不同姿態(tài)下標(biāo)定板的圖片埋凯,這樣獲得的相機(jī)內(nèi)參和畸變系數(shù)矩陣會(huì)更加正確递鹉。
2.利用cv::calibrateCamera()進(jìn)行標(biāo)定時(shí),其中參數(shù)flag決定了標(biāo)定時(shí)使用的算法,應(yīng)當(dāng)進(jìn)行參數(shù)調(diào)配媳拴。
3.標(biāo)定前應(yīng)當(dāng)保證角點(diǎn)位置的準(zhǔn)確度。