相機(jī)標(biāo)定的原理與意義及OpenCVMatlab實(shí)現(xiàn)差異小結(jié)_第1頁
相機(jī)標(biāo)定的原理與意義及OpenCVMatlab實(shí)現(xiàn)差異小結(jié)_第2頁
相機(jī)標(biāo)定的原理與意義及OpenCVMatlab實(shí)現(xiàn)差異小結(jié)_第3頁
相機(jī)標(biāo)定的原理與意義及OpenCVMatlab實(shí)現(xiàn)差異小結(jié)_第4頁
相機(jī)標(biāo)定的原理與意義及OpenCVMatlab實(shí)現(xiàn)差異小結(jié)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、分類:OpenCV點(diǎn)滴2011-01-30 20:352292人閱讀評論(3)收藏舉報(bào) 本文是一篇關(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)一步理解,對標(biāo)定的原理和意義有了更多的想法。同樣,由于博文的關(guān)系,仍有一些朋友會(huì)常常詢問標(biāo)定的程序問題。本人的2010-05-17OpenCV標(biāo)定程序的問題也多次被朋友詢問,由于當(dāng)時(shí)對標(biāo)定的認(rèn)識還不夠系統(tǒng),因此現(xiàn)在認(rèn)為該文對標(biāo)定的意義和原理有很多誤解,并在此推薦一些較好的博

2、文拱大家學(xué)習(xí):雙目測距與三維重建的OpenCV實(shí)現(xiàn)問題集錦(一)圖像獲取與單目標(biāo)定;雙目測距與三維重建的OpenCV實(shí)現(xiàn)問題集錦(二)雙目標(biāo)定與雙目校正;雙攝像頭測距的OpenCV實(shí)現(xiàn);分享一些OpenCV實(shí)現(xiàn)立體視覺的經(jīng)驗(yàn); 下面結(jié)合本人的畢業(yè)論文及一年半來對機(jī)器視覺的學(xué)習(xí),對相機(jī)標(biāo)定的意義和原理進(jìn)行敘述。1.單目相機(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)系的值為

3、,是在像平面坐標(biāo)系的投影點(diǎn),其相機(jī)坐標(biāo)系的值為。是相機(jī)坐標(biāo)系軸與像平面夾角,一般情況下軸與像平面垂直,值為。且相機(jī)坐標(biāo)系與像平面平行,為相機(jī)的焦距。 對于從相機(jī)坐標(biāo)系到像平面坐標(biāo)系的變換,像平面坐標(biāo)系是用像素單位來表示的,而相機(jī)坐標(biāo)系則是以毫米為單位來表示,因此,要完成改變換過程就需要先得到像平面的像素單位與毫米單位之間的線性關(guān)系。在圖1中,相機(jī)光軸中心z軸方向上與像平面的交點(diǎn)稱為投影中心,坐標(biāo)為,是像素單位,而每個(gè)像素在和的物理尺寸為和,單位是像素/毫米,則像平面的像素與毫米間的線性關(guān)系如式(1):(1) 根據(jù)小孔模型下投影變換原理,像平面的物理坐標(biāo)對應(yīng)的相機(jī)坐標(biāo)系滿足式(2):(2) 其對

4、應(yīng)的矩陣形式為式(3):(3) 聯(lián)立式(1)和式(3),得到式(4)即為相機(jī)坐標(biāo)系與像平面坐標(biāo)系變換的矩陣。(4) 其中,即為相機(jī)的6個(gè)內(nèi)參數(shù),其組成的矩陣即為內(nèi)參數(shù)矩陣。 對于從相機(jī)坐標(biāo)系到世界坐標(biāo)系的變換,是通過旋轉(zhuǎn)矩陣R和平移矩陣T完成的,如圖2所示。圖2 相機(jī)坐標(biāo)系與世界坐標(biāo)系的變換關(guān)系 其中,平移矩陣T是三維列向量,旋轉(zhuǎn)矩陣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)和式

5、(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)到三維坐標(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)定板的不同位姿

6、圖像,共計(jì)12組位姿(對于采集的圖像,位姿越多,標(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ù)保存到Calib_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é)

7、果。圖6 左相機(jī)的內(nèi)參數(shù)和畸變系數(shù)圖7 右相機(jī)的內(nèi)參數(shù)和畸變系數(shù) 對于左右相機(jī)由于透鏡畸變造成的誤差使用工具箱中的visualize_distortions功能進(jìn)行分析,可以得到左相機(jī)的畸變圖,如8、9、10所示,相應(yīng)的右相機(jī)畸變圖,如11、12、13所示。圖8 左相機(jī)鏡頭畸變圖圖9 左相機(jī)徑向畸變圖圖10 左相機(jī)切向畸變圖 對于圖8到10,圖中的0點(diǎn)即為左相機(jī)光學(xué)中心,圖中的箭頭顯示相機(jī)圖像的畸變方向。圖8左相機(jī)整體畸變模型中,該相機(jī)的左側(cè)畸變不明顯,若物體的圖像在此則不易受畸變因素影響造成線條的彎曲;圖9左相機(jī)徑向畸變模型中,該相機(jī)的畸變系數(shù)由中心向外增大,即物體的圖像越靠近圖像邊緣,其線

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

9、條因受畸變造成的彎曲很小;圖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ù)矩陣:(10) 該式(9)-(10)與式(1)相對應(yīng)。而Matlab中的cc對應(yīng)于式(1)中的相機(jī)光軸中心在圖像平面的投影坐標(biāo),fc即為式(1)中的和。 至此,講解完了OpenCV與Matlab所對應(yīng)的相機(jī)標(biāo)定內(nèi)參數(shù)矩陣的含義。OpenCV與Mat

10、lab標(biāo)定中的差異: OpenCV的標(biāo)定參數(shù)中,對于鏡頭畸變采用的方法是Brown博士在71年發(fā)表的文章中提到的;而Matlab中的鏡頭畸變參數(shù)采用基于Heikkil博士提出的方法,將非線性干擾因素引入到內(nèi)外參數(shù)的求解過程。 Heikkil采用的矩陣來表示以上的兩種畸變系數(shù)。根據(jù)Brown的非線性模型,和表示鏡頭的徑向畸變系數(shù),通常只使用兩項(xiàng),只是針對即便較大的鏡頭(例如魚眼鏡頭,其余情況下該系數(shù)值為0),而和表示切向畸變系數(shù),由式(11)和式(12)求解該矩陣,本文的畸變系數(shù)求解伴隨在相機(jī)標(biāo)定過程中。(11) 其中,是像平面上的任一點(diǎn)坐標(biāo)值,是進(jìn)行徑向畸變矯正后的坐標(biāo)值,是作為光學(xué)中心畸變?yōu)?/p>

11、0的點(diǎn)進(jìn)行泰勒級數(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)系。在我的2010-06-14基于Matlab的雙目視覺定位問題研究中,通過Matlab標(biāo)定工具箱產(chǎn)生的圖4與圖5就可以表達(dá)上述含義。 因此,對于不同的棋盤格標(biāo)定板空間位置,必然對應(yīng)于不同的外參數(shù)矩陣。同樣的,在視覺伺服中,雅可比矩陣也有同樣的數(shù)學(xué)意義。對于

12、視覺伺服,個(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* imgRight=cvCreateImage(cvSize(imgR-width,imgR-height),imgR-depth,imgR-nChannels);CvPoint2D32f* corner

13、sLeft = new CvPoint2D32f board_n ;CvPoint2D32f* cornersRight = new CvPoint2D32f board_n ;int corner_countLeft, corner_countRight;cvResize(imgL,imgLeft,CV_INTER_LINEAR);cvResize(imgR,imgRight,CV_INTER_LINEAR);if(frame+ % board_dt = 0) /Find chessboard corners: int foundLeft = cvFindChessboardCorners(

14、 imgLeft, board_sz, cornersLeft, &corner_countLeft, CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS ); int foundRight = cvFindChessboardCorners( imgRight, board_sz, cornersRight, &corner_countRight, CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS );/Get Subpixel accuracy on those corne

15、rs cvCvtColor(imgLeft, grayLeft, CV_BGR2GRAY);/if input is colorful then use this cvCvtColor(imgRight, grayRight, CV_BGR2GRAY); 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) cvFindCorn

16、erSubPix(grayRight, cornersRight, corner_countRight, cvSize(11,11),cvSize(-1,-1), cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1 ); /尋找棋盤格標(biāo)定板的特征點(diǎn)/畫出找到的特征點(diǎn) cvDrawChessboardCorners(imgLeft, board_sz, cornersLeft, corner_countLeft, foundLeft); cvDrawChessboardCorners(imgRight, board_sz, corne

17、rsRight, corner_countRight, foundRight); if (corner_countLeft=board_n & foundLeft & corner_countRight=board_n & foundRight) /保存特征點(diǎn)在圖像坐標(biāo)中的坐標(biāo)值,用于Calibrate2和StereoCalibration的調(diào)用 step = success*board_n; for( int i=step, j=0; j CV_MAT_ELEM(*image_pointsLeft, float,i,0) = cornersLeftj.x; CV_MAT_ELEM(*imag

18、e_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_poi

溫馨提示

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

評論

0/150

提交評論