相機(jī)標(biāo)定個(gè)人總結(jié)_第1頁
相機(jī)標(biāo)定個(gè)人總結(jié)_第2頁
相機(jī)標(biāo)定個(gè)人總結(jié)_第3頁
相機(jī)標(biāo)定個(gè)人總結(jié)_第4頁
相機(jī)標(biāo)定個(gè)人總結(jié)_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上本文是一篇關(guān)于相機(jī)標(biāo)定意義和原理的個(gè)人總結(jié),包含了OpenCV和Matlab中常用的相機(jī)標(biāo)定函數(shù)的注解。相機(jī)標(biāo)定是機(jī)器視覺的基礎(chǔ),標(biāo)定結(jié)果的好壞直接決定了機(jī)器視覺的系統(tǒng)精度,作用可見一斑。在這一年半的時(shí)間里,我個(gè)人也是隨著實(shí)驗(yàn)和程序的進(jìn)一步理解,對(duì)標(biāo)定的原理和意義有了更多的想法。同樣,由于博文的關(guān)系,仍有一些朋友會(huì)常常詢問標(biāo)定的程序問題。本人的的問題也多次被朋友詢問,由于當(dāng)時(shí)對(duì)標(biāo)定的認(rèn)識(shí)還不夠系統(tǒng),因此現(xiàn)在認(rèn)為該文對(duì)標(biāo)定的意義和原理有很多誤解,并在此推薦一些較好的博文拱大家學(xué)習(xí):;下面結(jié)合本人的畢業(yè)論文及一年半來對(duì)機(jī)器視覺的學(xué)習(xí),對(duì)相機(jī)標(biāo)定的意義和原理進(jìn)行敘述。1.單

2、目相機(jī)模型單目相機(jī)模型中的三種坐標(biāo)系關(guān)系如圖1所示,相機(jī)坐標(biāo)系即是以光軸中心O為原點(diǎn)的坐標(biāo)系,其z軸滿足右手法則,成像原點(diǎn)所代表平面即為像平面坐標(biāo)系(實(shí)際應(yīng)用中,均以圖像左上角為坐標(biāo)系原點(diǎn)),實(shí)際物體坐標(biāo)系即為世界坐標(biāo)系。圖1 單目相機(jī)模型的三坐標(biāo)系統(tǒng)關(guān)系其中,在世界坐標(biāo)系的值為,是在像平面坐標(biāo)系的投影點(diǎn),其相機(jī)坐標(biāo)系的值為。是相機(jī)坐標(biāo)系軸與像平面夾角,一般情況下軸與像平面垂直,值為。且相機(jī)坐標(biāo)系與像平面平行,為相機(jī)的焦距。對(duì)于從相機(jī)坐標(biāo)系到像平面坐標(biāo)系的變換,像平面坐標(biāo)系是用像素單位來表示的,而相機(jī)坐標(biāo)系則是以毫米為單位來表示,因此,要完成改變換過程就需要先得到像平面的像素單位與毫米單位之間

3、的線性關(guān)系。在圖1中,相機(jī)光軸中心z軸方向上與像平面的交點(diǎn)稱為投影中心,坐標(biāo)為,是像素單位,而每個(gè)像素在和的物理尺寸為和,單位是像素/毫米,則像平面的像素與毫米間的線性關(guān)系如式(1):(1)根據(jù)小孔模型下投影變換原理,像平面的物理坐標(biāo)對(duì)應(yīng)的相機(jī)坐標(biāo)系滿足式(2):(2)其對(duì)應(yīng)的矩陣形式為式(3):(3)聯(lián)立式(1)和式(3),得到式(4)即為相機(jī)坐標(biāo)系與像平面坐標(biāo)系變換的矩陣。(4)其中,即為相機(jī)的6個(gè)內(nèi)參數(shù),其組成的矩陣即為內(nèi)參數(shù)矩陣。對(duì)于從相機(jī)坐標(biāo)系到世界坐標(biāo)系的變換,是通過旋轉(zhuǎn)矩陣R和平移矩陣T完成的,如圖2所示。圖2 相機(jī)坐標(biāo)系與世界坐標(biāo)系的變換關(guān)系其中,平移矩陣T是三維列向量,旋轉(zhuǎn)矩

4、陣R是坐標(biāo)軸依次繞和軸旋轉(zhuǎn)角度和所形成的三個(gè)矩陣的總乘積。它們的定義如式(5):(5)則矩陣R的計(jì)算公式如式(6):(6)因此,從相機(jī)坐標(biāo)系到世界坐標(biāo)系的變換如式(7),其中,表示,為旋轉(zhuǎn)矩陣,為平移矩陣,該變換矩陣稱為外參數(shù)矩陣。(7)最后,聯(lián)立式(4)和式(7)求得像平面坐標(biāo)系與世界坐標(biāo)系之間的變換關(guān)系,如式(8):(8)其中,即為透視投影矩陣,表示空間中三維點(diǎn)坐標(biāo)與圖像平面二維坐標(biāo)之間的線性關(guān)系,表示的像平面齊次坐標(biāo)值,表示的世界坐標(biāo)系齊次坐標(biāo)值?;谝陨蠋缀卧砗拖鄼C(jī)模型得到的圖像信息和三維信息之間的關(guān)系,存在不可逆性,即可以通過已知世界坐標(biāo)系的坐標(biāo)值求得二維坐標(biāo)值,如果要進(jìn)行二維坐標(biāo)

5、到三維坐標(biāo)的反求還需要其他的數(shù)學(xué)模型輔助求解。2.Matlab標(biāo)定工具箱應(yīng)用1) 制作標(biāo)定板,標(biāo)定板尺寸為324(mm)X252(mm),即7行9列63個(gè)36mm的正方形方格組成,如圖3所示。圖3 標(biāo)定方格板2) 將水平平行的左右相機(jī)同時(shí)采集標(biāo)定板的不同位姿圖像,共計(jì)12組位姿(對(duì)于采集的圖像,位姿越多,標(biāo)定結(jié)果也會(huì)越精確,建議在10組到20組之間)如圖4,5所示。圖4 左相機(jī)的標(biāo)定圖像圖5 右相機(jī)的標(biāo)定圖像3) 在工具箱中通過Extract grid corners提取每幅標(biāo)定圖像的特征點(diǎn)(即黑方格與白方格的交點(diǎn))。4) 進(jìn)行單目標(biāo)定,得到左右相機(jī)的內(nèi)外參數(shù)以及畸變系數(shù),并將參數(shù)保存到Cal

6、ib_Results_left和Calib_Results_right兩個(gè)mat格式的文件中。3.Matlab標(biāo)定結(jié)果與OpenCV標(biāo)定結(jié)果的比較與分析Matlab標(biāo)定結(jié)果:通過上節(jié)的步驟(1)-(4),可以得到如圖6和7所示的左右相機(jī)的內(nèi)參數(shù)、畸變系數(shù)結(jié)果。圖6 左相機(jī)的內(nèi)參數(shù)和畸變系數(shù)圖7 右相機(jī)的內(nèi)參數(shù)和畸變系數(shù)對(duì)于左右相機(jī)由于透鏡畸變?cè)斐傻恼`差使用工具箱中的visualize_distortions功能進(jìn)行分析,可以得到左相機(jī)的畸變圖,如8、9、10所示,相應(yīng)的右相機(jī)畸變圖,如11、12、13所示。圖8 左相機(jī)鏡頭畸變圖圖9 左相機(jī)徑向畸變圖圖10 左相機(jī)切向畸變圖對(duì)于圖8到10,圖中

7、的0點(diǎn)即為左相機(jī)光學(xué)中心,圖中的箭頭顯示相機(jī)圖像的畸變方向。圖8左相機(jī)整體畸變模型中,該相機(jī)的左側(cè)畸變不明顯,若物體的圖像在此則不易受畸變因素影響造成線條的彎曲;圖9左相機(jī)徑向畸變模型中,該相機(jī)的畸變系數(shù)由中心向外增大,即物體的圖像越靠近圖像邊緣,其線條的彎曲程度就越大;圖10左相機(jī)切向畸變模型中,箭頭方向顯示該相機(jī)切向畸變的增大方向,在相機(jī)的左側(cè)其切向畸變與徑向畸變的方向相反,使得整體畸變模型中,相機(jī)左側(cè)的畸變較小。圖11 右相機(jī)鏡頭畸變圖圖12 右相機(jī)徑向畸變圖圖13 右相機(jī)切向畸變圖對(duì)于圖11到13,圖中的0點(diǎn)與左相機(jī)相同,即為右相機(jī)光學(xué)中心,圖中的箭頭顯示相機(jī)圖像的畸變方向。圖11右相

8、機(jī)整體畸變模型中,該相機(jī)的中間及偏左側(cè)畸變不明顯,若物體的圖像在此則不易受畸變因素影響造成線條的彎曲;圖12右相機(jī)徑向畸變模型中,該相機(jī)的畸變系數(shù)由中心向外增大,但右相機(jī)比左相機(jī)在光軸中心附近有更大的區(qū)域畸變很小,因此位于右側(cè)相機(jī)光學(xué)中心的圖像,其線條因受畸變?cè)斐傻膹澢苄?;圖13右相機(jī)切向畸變模型中,箭頭方向顯示該相機(jī)切向畸變的增大方向,在相機(jī)的左側(cè)其切向畸變與徑向畸變的方向相反,使得整體畸變模型中,位于右相機(jī)圖像左側(cè)的線條受畸變影響較小。OpenCV標(biāo)定結(jié)果:在此列舉的OpenCV標(biāo)定結(jié)果是我雙目視覺標(biāo)定且優(yōu)化后的結(jié)果,與Matlab的會(huì)有差異。左側(cè)相機(jī)的內(nèi)參數(shù)矩陣:(9)右側(cè)相機(jī)的內(nèi)參數(shù)

9、矩陣:(10)該式(9)-(10)與式(1)相對(duì)應(yīng)。而Matlab中的cc對(duì)應(yīng)于式(1)中的相機(jī)光軸中心在圖像平面的投影坐標(biāo),fc即為式(1)中的和。至此,講解完了OpenCV與Matlab所對(duì)應(yīng)的相機(jī)標(biāo)定內(nèi)參數(shù)矩陣的含義。OpenCV與Matlab標(biāo)定中的差異:OpenCV的標(biāo)定參數(shù)中,對(duì)于鏡頭畸變采用的方法是Brown博士在71年發(fā)表的文章中提到的;而Matlab中的鏡頭畸變參數(shù)采用基于Heikkil博士提出的方法,將非線性干擾因素引入到內(nèi)外參數(shù)的求解過程。Heikkil采用的矩陣來表示以上的兩種畸變系數(shù)。根據(jù)Brown的非線性模型,和表示鏡頭的徑向畸變系數(shù),通常只使用兩項(xiàng),只是針對(duì)即便較

10、大的鏡頭(例如魚眼鏡頭,其余情況下該系數(shù)值為0),而和表示切向畸變系數(shù),由式(11)和式(12)求解該矩陣,本文的畸變系數(shù)求解伴隨在相機(jī)標(biāo)定過程中。(11)其中,是像平面上的任一點(diǎn)坐標(biāo)值,是進(jìn)行徑向畸變矯正后的坐標(biāo)值,是作為光學(xué)中心畸變?yōu)?的點(diǎn)進(jìn)行泰勒級(jí)數(shù)展開后得到的。(12)其中,是像平面上的任一點(diǎn)坐標(biāo)值,是進(jìn)行切向畸變矯正后的坐標(biāo)值,如式(11)的定義相同。4.外參數(shù)的作用及其在相機(jī)標(biāo)定中的意義外參數(shù)定義了如圖2所示的圖像平面到世界坐標(biāo)系的變換關(guān)系。而標(biāo)定就是通過相機(jī)尋找圖像平面中如圖3所示的標(biāo)定板的特征點(diǎn)位置,所以得到的外參數(shù)是圖像平面與標(biāo)定板所處平面的線性變換關(guān)系。在我的中,通過Mat

11、lab標(biāo)定工具箱產(chǎn)生的圖4與圖5就可以表達(dá)上述含義。因此,對(duì)于不同的棋盤格標(biāo)定板空間位置,必然對(duì)應(yīng)于不同的外參數(shù)矩陣。同樣的,在視覺伺服中,雅可比矩陣也有同樣的數(shù)學(xué)意義。對(duì)于視覺伺服,個(gè)人認(rèn)為可以看些徐德的論文入門。5.OpenCV標(biāo)定程序說明用于尋找圖像中的棋盤格標(biāo)定板的特征點(diǎn):CvSize board_sz = cvSize( board_w, board_h );IplImage* imgLeft=cvCreateImage(cvSize(imgL->width,imgL->height),imgL->depth,imgL->nChannels);IplImage

12、* imgRight=cvCreateImage(cvSize(imgR->width,imgR->height),imgR->depth,imgR->nChannels);CvPoint2D32f* cornersLeft = new CvPoint2D32f board_n ;CvPoint2D32f* cornersRight = new CvPoint2D32f board_n ;int corner_countLeft, corner_countRight;cvResize(imgL,imgLeft,CV_INTER_LINEAR);cvResize(imgR

13、,imgRight,CV_INTER_LINEAR);if(frame+ % board_dt = 0) /Find chessboard corners:int foundLeft = cvFindChessboardCorners(imgLeft, board_sz, cornersLeft, &corner_countLeft,CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS);int foundRight = cvFindChessboardCorners(imgRight, board_sz, cornersRigh

14、t, &corner_countRight,CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS);/Get Subpixel accuracy on those cornerscvCvtColor(imgLeft, grayLeft, CV_BGR2GRAY);/if input is colorful then use thiscvCvtColor(imgRight, grayRight, CV_BGR2GRAY);/cvCopy(image1, gray_image1);/cvCopy(image2, gray_image2

15、);cvFindCornerSubPix(grayLeft, cornersLeft, corner_countLeft,cvSize(11,11),cvSize(-1,-1), cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1 );/尋找棋盤格標(biāo)定板的特征點(diǎn)cvFindCornerSubPix(grayRight, cornersRight, corner_countRight,cvSize(11,11),cvSize(-1,-1), cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER

16、, 30, 0.1 ); /尋找棋盤格標(biāo)定板的特征點(diǎn)/畫出找到的特征點(diǎn)cvDrawChessboardCorners(imgLeft, board_sz, cornersLeft, corner_countLeft, foundLeft);cvDrawChessboardCorners(imgRight, board_sz, cornersRight, corner_countRight, foundRight);if (corner_countLeft>=board_n && foundLeft && corner_countRight>=boar

17、d_n && foundRight)/保存特征點(diǎn)在圖像坐標(biāo)中的坐標(biāo)值,用于Calibrate2和StereoCalibration的調(diào)用step = success*board_n;for( int i=step, j=0; j<board_n; +i,+j ) CV_MAT_ELEM(*image_pointsLeft, float,i,0) = cornersLeftj.x;CV_MAT_ELEM(*image_pointsLeft, float,i,1) = cornersLeftj.y;CV_MAT_ELEM(*image_pointsRight, float,i,0) = cornersRightj.x;CV_MAT_ELEM(*image_pointsRight, float,i,1) = cornersRightj.y;CV_MAT_ELEM(*object_points,float,i,0) = (float)(j/board_w);CV_MAT_ELEM(*object_points,float,i,1) = (float)(j%board_w);CV_MAT_ELEM(*object_points,floa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論