立体视觉再次整理学习_第1页
立体视觉再次整理学习_第2页
立体视觉再次整理学习_第3页
立体视觉再次整理学习_第4页
立体视觉再次整理学习_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、双目测距的基本原理如上图所示,双目测距主要是利用了目标点在左右两幅视图上成像的横坐标直接存在的差异(即视差)与目标点到成像平面的距离Z存在着反比例的关系: 。其中: 焦距 视差 摄像头中心距 左像平面的坐标系与立体坐标系中原点的偏移 右像平面的坐标系与立体坐标系中原点的偏移其中 ,和可以通过立体标定获得初始值,并通过立体校准优化,使得两个摄像头在数学上完全平行放置,并且左右摄像头的,和形同。而立体匹配所做的工作,就是在之前的基础上,求取视差(这个一般需要达到亚像素精度)。假设目标点在左视图中的坐标为(x,y),在左右视图上形成的视差为d,目标点在以左摄像头为原点的世界坐标系中的坐标为(X,Y,

2、Z),则存在上图所示的变换矩阵Q,使得。图像的获取摄像头定标摄像头定标一般都需要一个放在摄像头前的特制的标定参照物(棋盘纸),摄像头获取该物体的图像,并由此计算摄像头的内外参数。标定参照物上的每一个特征点相对于世界坐标系的位置在制作时应精确测定,世界坐标系可选为参照物的物体坐标系。在得到这些已知点在图像上的投影位置后,可计算出摄像头的内外参数。如上图所示,摄像头由于光学透镜的特性使得成像存在着径向畸变,可由三个参数 , , 确定;由于装配方面的误差,传感器与光学镜头之间并非完全平行,因此成像存在切向畸变,可由两个参数 , 确定。单个摄像头的定标主要是计算出摄像头的内参(焦距和成像原点,、五个畸

3、变参数(一般只需要计算出,对于鱼眼镜头等径向畸变特别大的才需要计算)以及外参(标定物的世界坐标)。 OpenCV 中使用的求解焦距和成像原点的算法是基于张正友的方法,而求解畸变参数是基于 Brown 的方法。1.图像坐标系、摄像头坐标系和世界坐标系的关系摄像头成像几何关系,其中点称为摄像头(透镜)的光心,轴和轴与图像的X轴和Y轴平行,轴为摄像头的光轴,它与图像平面垂直。光轴与图像平面的交点 ,即为图像坐标系的原点。由点与、 轴组成的坐标系称为摄像头坐标系,的距离为摄像头焦距,用表示。图像坐标系是一个二维平面,又称为像平面,实际上就是摄像头的CC

4、D传感器的表面。每个CCD传感器都有一定的尺寸,也有一定的分辨率,这个就确定了毫米与像素点之间的转换关系。举个例子,CCD的尺寸是 ,帧画面的分辨率设置为 ,那么毫米与像素点之间的转换关系就是 。设CCD传感器每个像素点的物理大小为,相应地,就有 。 其中,像素点的大小为,单位为毫米。 其中,为摄像机焦距,为摄像机坐标系的偏斜度(即两坐标轴不完全垂直,镜头坐标和CCD是否垂直)。需要说明的是,一般情况下,很接近,所以在要求不是很严格的情况下就直接将设为。可能引起误差的情况是:当对一幅照片进行拍摄的时候,由于摄影变换使得照片的图像坐标系在重新成像后不是了。此时,若忽略这个参数,将产生很大的定标误

5、差。 由于矩阵A包含了摄像机全部的6个内参数 ,所以称A为摄像机内参数矩阵。这些参数可能会随着温度、湿度、气压等环境因素的变化而改变,所以为了保证定标的精度,有必要对各内参数进行标定。 其中, 为旋转矩阵, 为平移向量, 摄像头矩阵(内参)的目的是把图像的点从图像坐标转换成实际物理的三维坐标。 其中 , , 2.进行摄像头定标时,棋盘方格的实际大小 square_size (默认为 1.0f )的设置对定标参数的影响。在标定时,需要指定一个棋盘方格的长度,这个长度(一般以毫米为单位,如果需要更精确可以设为0.1毫米量级)与实际长度相同,标 定得出的结果才能用于实际距离测量。一般如果尺

6、寸设定准确的话,通过立体标定得出的Translation向量的第一个分量的绝对值就是左右摄像头的中心距。3.OpenCV中用cvCalibrateCamera2 进行相机标定的精度差,标定结果不稳定原因。原因一:可能是在标定的时候标定板所在平面与成像平面(image plane)之间的夹角太小,张正友论文里的仿真数据(有噪声的数据)说明当两者夹角太小误差会很大,从张正友的论文里给出的5幅图中,其中标定平面与成像平面的夹角分别为: 8.8947、 11.2325 、24.4875、 10.8535、 9.5829(单位:度)。而且张正友的论文中也提到两幅标定板之间的位置平行放置的话,相

7、当于一幅。因此在实际标定中平行放置的情况最好避免。原因二:标定时拍摄的图片太少,虽然张正友的论文里只用了5幅图片,但是建议10来幅左右还是必要的,因为实际中可能标定板用A4的纸打印出来贴在一块板上的,标定板上的世界坐标精度就不是特别高,多拍摄几幅图像能减少这方面带来的误差,而且多个角度拍摄也可能解决了问题一(标定板和成像平面夹角小的问题)。原因三:图像上角点提取的不准确,用cvFindChessboardCorners函数找角点不是很好,假如拍到的图像不是完整的棋盘格的时候肯定会有问题的,而且也可能用这个函数提取不出角点,建议可以用其他工具 :OpenCV and MatLab Ca

8、mera Calibration Toolboxes EnhancementCamera Calibration Toolbox for MatlabOpenCV2.1以后对图像角点的提取准确度比较高,cvFindChessboardCorners和cvFindCornerSubPix结合可以获得很好的角点检测效果。因此,影响定标结果较大的就是标定板与镜头的夹角和棋盘图像数目,在实际定标过程中,棋盘图像数目应该大于20张,每成功检测一次完整的棋盘角点就要变换一下标定板的姿态(包括角度、距离) 。4.单目定标函数cvCalibrateCamera2采用怎样的 flags 比较

9、合适?由于一般镜头只需要计算, 四个参数,所以我们首先要设置 CV_CALIB_FIX_K3;其次,如果所用的摄像头不是高端的、切向畸变系数非常少的,则不要设置 CV_CALIB_ZERO_TANGENT_DIST,否则单目校正误差会很大;如果事先知道摄像头内参的大概数值,并且cvCalibrateCamera2函数的第五个参数intrinsic_matrix非空,则也可设置CV_CALIB_USE_INTRINSIC_GUESS ,以输入的intrinsic_matrix为初始估计值来加快内参的计算;其它的 flag 一般都不需要设置,对单目定标的影响不大。双目定标和双目校正双目摄像头定标不

10、仅要得出每个摄像头的内部参数,还需要通过标定来测量两个摄像头之间的相对位置(即右摄像头相对于左摄像头的三维平移 t 和旋转 R 参数)。要计算目标点在左右两个视图上形成的视差,首先要把该点在左右视图上两个对应的像点匹配起来。然而,在二维空间上匹配对应点是非常耗时的,为了减少匹配搜索范围,我们可以利用极线约束使得对应点的匹配由二维搜索降为一维搜索。而双目校正的作用就是要把消除畸变后的两幅图像严格地行对应,使得两幅图像的对极线恰好在同一水平线上,这样一幅图像上任意一点与其在另一幅图像上的对应点就必然具有相同的行号,只需在该行进行一维搜索即可匹配到对应点。1. 关于cvStereoCalibrate

11、的使用如果按照 Learning OpenCV 的例程,直接通过cvStereoCalibrate来实现双目定标,很容易产生比较大的图像畸变,边角处的变形较厉害。最好先通过cvCalibrateCamera2对每个摄像头单独进行定标,再利用cvStereoCalibrate进行双目定标。这样定标所得参数才比较准确,随后的校正也不会有明显的畸变。2. cvStereoCalibrate 计算 Essential Matrix 和 Fundamental Matrix (1) Essential Matrix 本征矩阵如上图所示,给定一个目标点,以左摄像头光心为原点。点相对于光心的观察位置为,相对

12、于光心的观察位置为。点在左摄像头成像平面上的位置为,在右摄像头成像平面上的位置为。注意、都处于摄像机坐标系,其量纲是与平移向量T相同的(、在图像坐标系中对应的像素坐标为、)。假设右摄像头相对于左摄像头的相对位置关系由旋转矩阵R和平移向量T表示,则可得: 。现在我们要寻找由点、和确定的对极平面的表达式。注意到平面上任意一点x与点a的连线垂直于平面法向量n,即向量 (x-a) 与向量 n 的点积为0:。在坐标系中,光心的位置为T,则、和确定的对极平面可由下式表示: 。由 和 可得: 。另一方面,向量的叉积又可表示为矩阵与向量的乘积,记向量T的矩阵表示为S,得:。那么就得到:。这样,我们就得到Ess

13、ential Matrix:E = RS。通过矩阵E我们知道和的关系满足: 。进一步地,由 和。我们可以得到点P在左右两个摄像机坐标系中的观察点 和应满足的极线约束关系为: 。注意到 E 是不满秩的,它的秩为2,那么表示的实际上是一条直线,也就是对极线。(2) Fundamental Matrix 基础矩阵由于矩阵E并不包含摄像头内参信息,且E是面向摄像头坐标系的。实际上我们更感兴趣的是在图像像素坐标系上去研究一个像素点在另一视图上的对极线,这就需要用到摄像机的内参信息将摄像头坐标系和图像像素坐标系联系起来。在(1)中,和是物理坐标值,对应的像素坐标值为和,摄像头内参矩阵为M,则有:。从而:,

14、 。这里,我们就得到Fundamental Matrix: 。并有。3. cvStereoCalibrate 计算 Essential Matrix 和 Fundamental Matrix4双目校正原理及cvStereoRectify 的应用如图所示,双目校正是根据摄像头定标后获得的单目内参数据(焦距、成像原点、畸变系数)和双目相对位置关系(旋转矩阵和平移向量),分别对左右视图进行消除畸变和行对准,使得左右视图的成像原点坐标一致(CV_CALIB_ZERO_DISPARITY 标志位设置时发生作用)、两摄像头光轴平行、左右成像平面共面、对极线行对齐。在OpenCV2.1版之前,cvStere

15、oRectify 的主要工作就是完成上述操作,校正后的显示效果如图 (c) 所示。可以看到校正后左右视图的边角区域是不规则的,而且对后续的双目匹配求取视差会产生影响,因为这些边角区域也参与到匹配操作中,其对应的视差值是无用的、而且一般数值比较大,在三维重建和机器人避障导航等应用中会产生不利影响。图15图16图17因此,OpenCV2.1 版中cvStereoRectify新增了4个参数用于调整双目校正后图像的显示效果,分别是 double alpha, CvSize newImgSize, CvRect* roi1, CvRect* roi2。下面结合图15-17简要介绍这4个参数的作用:(1

16、)newImgSize:校正后remap图像的分辨率。如果输入为(0,0),则是与原图像大小一致。对于图像畸变系数比较大的,可以把newImgSize 设得大一些,以保留图像细节。(2)alpha:图像剪裁系数,取值范围是-1、01。当取值为0时,OpenCV会对校正后的图像进行缩放和平移,使得remap图像只显示有效像素(即去除不规则的边角区域),如图17所示,适用于机器人避障导航等应用;当alpha取值为1时,remap图像将显示所有原图像中包含的像素,该取值适用于畸变系数极少的高端摄像头;alpha取值在0-1之间时,OpenCV按对应比例保留原图像的边角区域像素。Alpha取值为-1时

17、,OpenCV自动进行缩放和平移,其显示效果如图16所示。(3)roi1, roi2:用于标记remap图像中包含有效像素的矩形区域。对应代码如下:在cvStereoRectify之后,一般紧接着使用 cvInitUndistortRectifyMap来产生校正图像所需的变换参数(mapx, mapy)。 5.为什么cvStereoRectify求出的Q矩阵cx, cy, f都与原来的不同?在实际测量中,由于摄像头摆放的关系,左右摄像头的f, cx, cy都是不相同的。而为了使左右视图达到完全平行对准的理想形式从而达到数学上运算的方便,立体校准所做的工作事实上就是在左右像重合区域最大

18、的情况下,让两个摄像头光轴的前向平行,并且让左右摄像头的f, cx, cy相同。因此,Q矩阵中的值与两个instrinsic矩阵的值不一样就可以理解了。”注:校正后得到的变换矩阵Q,Q03、Q13存储的是校正后左摄像头的原点坐标(principal point)cx和cy,Q23是焦距f。双目匹配与视差计算立体匹配主要是通过找出每对图像间的对应关系,根据三角测量原理,得到视差图;在获得了视差信息后,根据投影模型很容易地可以得到原始图像的深度信息和三维信息。立体匹配技术被普遍认为是立体视觉中最困难也是最关键的问题,主要是以下因素的影响:(1) 光学失真和噪声(亮度、色调、饱和度等失衡)(2) 平滑表面的镜面反射(3) 投影缩减(Foreshortening)(4) 透视失真(Perspective distortions)(5) 低纹理(Low texture)(6) 重复纹理(Repetitive/ambiguous patterns)(7) 透明物体(8) 重叠和非连续目前立体匹配算法是计算机视觉中

温馨提示

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

最新文档

评论

0/150

提交评论