相机标定个人总结_第1页
相机标定个人总结_第2页
相机标定个人总结_第3页
相机标定个人总结_第4页
相机标定个人总结_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文是一篇关于相机标定意义和原理的个人总结,包含了OpenCV和Matlab中常用的相机标定函数的注解。相机标定是机器视觉的基础,标定结果的好坏直接决定了机器视觉的系统精度,作用可见一斑。在这一年半的时间里,我个人也是随着实验和程序的进一步理解,对标定的原理和意义有了更多的想法。同样,由于博文的关系,仍有一些朋友会常常询问标定的程序问题。本人的2010-05-170penCV标定程序的问题也多次被朋友询问,由于当时对标定的认识还不够系统,因此现在认为该文对标定的意义和原理有很多误解,并在此推荐一些较好的博文拱大家学习:双目测距及三维重建的OpenCV实现问题集锦(一)图像获取及单目标定;双目测距及三维重建的OpenCV实现问题集锦(二)双目标定及双目校正;双摄像头测距的OpenCV实现;分享一些OpenCV实现立体视觉的经验;下面结合本人的毕业论文及一年半来对机器视觉的学习,对相机标定的意义和原理进行叙述。单目相机模型单目相机模型中的三种坐标系关系如图1所示,相机坐标系即是以光轴中心O为原点的坐标系,其z轴满足右手法则,成像原点°所代表平面即为像平面坐标系(实际应用中,均以图像左上角为坐标系原点),实际物体坐标系即为世界坐标系。

图1单目相机模型的三坐标系统关系

其中,P在世界坐标系的值为(x,Y,Z„,P是P在像平面坐标系的投WWWu影点,其相机坐标系的值为(X,Y,Z)。,是相机坐标系Z轴及像平面夹角,一般情况下z轴及像平面垂直,,值为90。且相机坐标系xOy及像平面xOy平行,f为相机的焦距。fff对于从相机坐标系到像平面坐标系的变换,像平面坐标系是用像素单位来表示的,而相机坐标系则是以毫米为单位来表示,因此,要完成改变换过程就需要先得到像平面的像素单位及毫米单位之间的线性关系。在图1中,相机光轴中心z轴方向上及像平面的交点O€称为投影中心,坐标为(c,c),是像素单位,而每个像素在X和Y的物理尺寸为$…/和$…则,单位是像素/毫米,则像平面的像素及毫米间的线性关系如式(1):(1)根据小孔模型下投影变换原理,像平面的物理坐标(x,y)对应的相机坐标系满足式(2):(2)其对应的矩阵形式为式(3):

,f-f,f-fcos-1€0fsin-i€00A0010丿,xauYuZu11丿联立式(1)和式(3),得到式(4)即为相机坐标系及像平面坐标系变换的矩阵。„vJ丿(rS„vJ丿(rS/„x„00-fcos-i€sfsin-i€y0cxcx1,xAu

„„Yu„Z

„u11丿4)其中,即为相机的6个内参数,其组成的矩阵即为内参数矩阵。对于从相机坐标系到世界坐标系的变换,是通过旋转矩阵R和平移矩阵T完成的,如图2所示。一一(R,T)P(Xw,Yw,Zw)一一(R,T)P(Xw,Yw,Zw)物体坐标系图2相机坐标系及世界坐标系的变换关系其中,平移矩阵T是三维列向量,旋转矩阵R是坐标轴依次绕x,y和z轴旋转角度屮q和t所形成的三个矩阵R(<),R(<p),RG)的总乘积。它们的定义x y z如式(5):,100AR(<)=x0cos屮sin屮-sin屮cos屮丿,cos90-sin9AR(9)=y„„010y、sin90cos9丿,costsint0aRG)=-sinTcost0z.001丿

sin屮sint-cos屮sin屮sint-cos屮sin€cost

sin屮cost+cos屮sin€sint

cos屮cos€6)/•••cos€cost cos屮sint+sm屮sm€costR=-cos€sint cos屮cost-sin屮sin€sint、 sin€ -sin屮cos€因此,从相机坐标系到世界坐标系的变换如式(7),其中,ot表示(000<,R为旋转矩阵,T为平移矩阵,该变换矩阵称为外参数矩3x3 3x1阵。(7)最后,联立式(4)和式(7)求得像平面坐标系及世界坐标系之间的变换关系,如式(8):-fcost9cxcy10„T-fcost9cxcy10„T„3x1丿1丿(X„wYwZw11丿‘mmm…000102mmm…101112mmm…202122immm303132usfsin-i9y0w03丿mY13丿wmZw23丿m丿3311丿m„fX„px„=MwYw3x4Zwi1 丿丿(R… 3x3、0t8)其中,M即为透视投影矩阵,表示空间中三维点坐标及图像平面二维坐其中,3x4标之间的线性关系,Cv1)T表示P的像平面齐次坐标值,(xYZ1)tu www表示p的世界坐标系齐次坐标值。基于以上几何原理和相机模型得到的图像信息和三维信息之间的关系,存在不可逆性,即可以通过已知世界坐标系的坐标值求得二维坐标值,如果要进行二维坐标到三维坐标的反求还需要其他的数学模型辅助求解。Matlab标定工具箱应用1)制作标定板,标定板尺寸为324(mm)X252(mm),即7行9列63个36mm的正方形方格组成,如图3所示。

2) 将水平平行的左右相机同时采集标定板的不同位姿图像,共计12组位姿(对于采集的图像,位姿越多,标定结果也会越精确,建议在10组到20组之间)如图4,5所示。Calibrationimages图5右相机的标定图像3)在工具箱中通过Extractgridcorners提取每幅标定图像的特征点(即黑方格及白方格的交点)。4) 进行单目标定,得到左右相机的内外参数以及畸变系数,并将参数保存到Calib_Results_left和Calib_Results_right两个mat格式的文件中。Matlab标定结果及OpenCV标定结果的比较及分析Matlab标定结果:通过上节的步骤(1)-(4),可以得到如图6和7所示的左右相机的内参数、畸变系数结果。CaLibialionresult?〔withurijceclairrties)tFacalLensth:Principalpoint:Skwi:FacalLensth:Principalpoint:Skwi:Distortion;Pinelerrar!fc= [ E54.32176BBS.E025& ] ?[57.3J772 57.S-3430]cc= [ 2&L15515 230-24OflD ] ?[IL55439 &名曲T]alpha_c= [ 0.00000J ?[0.00000 ] ->hti^Iba-£ pisceluer = 90. QDOOODLlflODdecreeskc= [ Dr03^16 -0,22269 -0, 00136Dr00151 0,DOOQO 1 ?[ 0, 027^7E:rr= [ D.33151 0»2862E][Dr03^16 -0,2225B -0,001360.1^400 0,002£6 0.00295 0,OUOOO1图6左相机的内参数和畸变系数Cullbra.-krnaresults1,'jriih.unctrtamtieaj:FocalLsncth:Piincip-dLpoint!Skew:DisFocalLsncth:Piincip-dLpoint!Skew:Distortion:Fizalerrorsfa=[82LT1D21 324.0887D]?[56.03100 56.D6327]cc二[31L1d761 244.554ID]?[7^99593 8-JE32]Lph.B_E:=[0.DOOOD]P[D.0U000] =>angle□£piXE-1UEZ=9D.00000?0.00000degreeska=[0,D2IS20.-0.00J2? 0-002160.OOQDO1H0.03411err=[山3L31S 0.26350]0.04452 -0.001270.27056D-0015.3a.00344 0.0000D1图7右相机的内参数和畸变系数对于左右相机由于透镜畸变造成的误差使用工具箱中的

visualize_distortions功能进行分析,可以得到左相机的畸变图,如8、9、10所示,相应的右相机畸变图,如11、12、13所示。CompleteDistortionModel:10U1502002503003E0<10PixelerrorFocalLengthPrincip-ilPointSk^wPixelerrorFocalLengthPrincip-ilPointSk^wR.jdi-alcoel+icienlsTjnqHntiEilcoelticinntE=[0.3315..O.2S63]=(854.328.858.803)=(251.155,Z3&.241)=0=(0.08416,-0.2227_.0)=C-0.O01B57^0.001E1)+/-[57.M57.84]+/-[11.55,6.835]+/-0+/■[0.02747.0.144_.0]4-/-[0.002255,0.002947]图8左相机镜头畸变图RadialComponentoftheDistortionModel0100 '^po 300<io500 GOOPixelerror=[O.531E/0.2S&3]Foc-=ilLenqth=^54.^0^05^.003)-+卜[購Ftb;S4]Prin■:ipalPoint= 236.241).Skew=0R.jdialcOhjI+ici^ntE=(0.0841^-0^'22?3-:dL+/-.[0.02747^-0.144,.0]Tangentialcoefficients=(-0.0(1356.0.^151)+f-[Q,Q佗葢孔0.002947]图9左相机径向畸变图TangentialComponentoftheDistortionModelO 100200 300■100EOO 600Pixelerror■=0,286)]FcicalLength=(854,323J1358,80^'十十[5734j57-;84]Princip.alPoint=(291.155,23G.241^+/-[11.5B,&.5JS]Skew=0+f-aRadial匚oeflficienh=(0^S41G;-Q孟禹知+/-[0.0274?,-0.144,0]Tangentialcoefficients=f-ti.001357,0.00151)+/-[C.OGZ25%0.002347]对于图8到10,图中的0点即为左相机光学中心,图中的箭头显示相机图像的畸变方向。图8左相机整体畸变模型中,该相机的左侧畸变不明显,若物体的图像在此则不易受畸变因素影响造成线条的弯曲;图9左相机径向畸变模型中,该相机的畸变系数由中心向外增大,即物体的图像越靠近图像边缘,其线条的弯曲程度就越大;图10左相机切向畸变模型中,箭头方向显示该相机切向畸变的增大方向,在相机的左侧其切向畸变及径向畸变的方向相反,使得整体畸变模型中,相机左侧的畸变较小。图11右相机镜头畸变图Foc^lLengthPrincipalPointSkewRadialcoefificientsTangential.coefficients=[C313E,0.2E3E]=(g21.71/824^8^=^ril.l4S,.-244.354)=0'=(6碇輕『0.04452^0)=(-0.0C126E.O.O02-7&21+A[5&.03;Efe.Ot]+卜[7.996^.343]+/-0+广[0.0^411,q渤亦旬+/-[0.00133b0.00Z44Z]图12右相机径向畸变图PixelerrorFoc^lLengthPrincipalPointSkewRadial lent£,Tangentialcoefncienti=[ft.5135x0.^35]=Szi.7L624.38^).=^311.14S;244^,54);=0=(0.0273^,.0.04452,0)=(-0.00126.^-0.00^762)+/-[56.0t56.06]+/-[?.596.G.S4S]+7<0+J-[O.Q3411J-fl.^Ct>0]+/-[0.001351,0.002442]对于图11到13,图中的0点及左相机相同,即为右相机光学中心,图中的箭头显示相机图像的畸变方向。图11右相机整体畸变模型中,该相机的中间及偏左侧畸变不明显,若物体的图像在此则不易受畸变因素影响造成线条的弯曲;图12右相机径向畸变模型中,该相机的畸变系数由中心向外增大,但右相机比左相机在光轴中心附近有更大的区域畸变很小,因此位于右侧相机光学中心的图像,其线条因受畸变造成的弯曲很小;图13右相机切向畸变模型中,箭头方向显示该相机切向畸变的增大方向,在相机的左侧其切向畸变及径向畸变的方向相反,使得整体畸变模型中,位于右相机图像左侧的线条受畸变影响较小。OpenCV标定结果:在此列举的OpenCV标定结果是我双目视觉标定且优化后的结果,及Matlab的会有差异。左侧相机的内参数矩阵:€837.62931 0 301.0371、TOC\o"1-5"\h\z0 840.95381238.93799 (9)„001…右侧相机的内参数矩阵:€837.34215 0 306.91534 ]0 842.97182 244.3674 (1°)„0 0 1…该式(9)-(1°)及式(1)相对应。而Matlab中的cc对应于式(1)中的相机光轴中心在图像平面的投影坐标,fc即为式(1)中的$和$。xy至此,讲解完了OpenCV及Matlab所对应的相机标定内参数矩阵的含义。OpenCV及Matlab标定中的差异:OpenCV的标定参数中,对于镜头畸变采用的方法是Brown博士在71年发表的文章中提到的;而Matlab中的镜头畸变参数采用基于Heikkil博士提出的方法,将非线性干扰因素引入到内外参数的求解过程。Heikkil米用5xl的矩阵(kkppk)来表示以上的两种畸变系TOC\o"1-5"\h\z1 2 1 2 3数。根据Brown的非线性模型,k,k和k表示镜头的径向畸变系数,通常1 2 3只使用k,k两项,k只是针对即便较大的镜头(例如鱼眼镜头,其余情况1 2 3下该系数值为°),而p和p表示切向畸变系数,由式(11)和式(12)12求解该矩阵,本文的畸变系数求解伴随在相机标定过程中。x =xG,kr2,kr4,kr6)radical 1 2 3 (11)y =yU,kr2,kr4,kr6丿radical 1 2 3其中,(x,y)是像平面上的任一点坐标值,(x,y)是进行径向畸变radicalradical矫正后的坐标值,r2,r4,r6是r作为光学中心畸变为0的点进行泰勒级数展开后得到的。12)x =x+…2py+pC212)tangential12y =y+…P(r2+2y2),2pytangential12其中,(x,y)是像平面上的任一点坐标值,(x ,y )是进行切向畸变tangentialtangential矫正后的坐标值,r2,r4,r6如式(11)的定义相同。4.外参数的作用及其在相机标定中的意义外参数定义了如图2所示的图像平面到世界坐标系的变换关系。而标定就是通过相机寻找图像平面中如图3所示的标定板的特征点位置,所以得到的外参数是图像平面及标定板所处平面的线性变换关系。在我的2010-06T4基于Matlab的双目视觉定位问题研究中,通过Matlab标定工具箱产生的图4及图5就可以表达上述含义。 r上八 W.MBMI'i-爲於Ha1丿BJ *■u*l图2图4图5因此,对于不同的棋盘格标定板空间位置,必然对应于不同的外参数矩阵。同样的,在视觉伺服中,雅可比矩阵也有同样的数学意义。对于视觉伺服个人认为可以看些徐德的论文入门。5.0penCV标定程序说明用于寻找图像中的棋盘格标定板的特征点:CvSizeboard_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*cornersLeft=newCvPoint2D32f[board_n];CvPoint2D32f*cornersRight=newCvPoint2D32f[board_n];intcorner_countLeft,corner_countRight;cvResize(imgL,imgLeft,CV_INTER_LINEAR);cvResize(imgR,imgRight,CV_INTER_LINEAR);if(frame++%board_dt==0){//Findchessboardcorners:intfoundLeft=cvFindChessboardCorners(imgLeft,board_sz,cornersLeft,&corner_countLeft,CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS);intfoundRight=cvFindChessboardCorners(imgRight,board_sz,cornersRight,&corner_countRight,CV_CALIB_CB_ADAPTIVE_THRESH|CV_CALIB_CB_FILTER_QUADS);//GetSubpixelaccuracyonthosecornerscvCvtColor(imgLeft,grayLeft,CV_BGR2GRAY);//ifinputiscolorfulthenusethiscvCvtColor(imgRight,grayRight,CV_BGR2GRAY);//cvCopy(image1,gray_image1);//cvCopy(image2,gray_image2);cvFindCornerSubPix(grayLeft,cornersLeft,corner_countLeft,cvSize(11,11),cvSize(-1,-1),cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,0.1));//寻找棋盘格标定板的特征点cvFindCornerSubPix(grayRight,cornersRight,corner_countRight,cvSize(11,11),cvSize(-1,-1),cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER,30,0.1));//寻找棋盘格标定板的特征点//画出找到的特征点cvDrawChessboardCorners(imgLeft,board_sz,cornersLeft,corner_countLeft,foundLeft);cvDrawChessboardCorner

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论