立體视觉知识补充.docxVIP

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
立體视觉知识补充

现在我们有一架平衡双目摄像机,和一个棋盘和一个待重构的物体或者要拍摄的画面,我们的目的就是利用两个摄像机捕捉同一个画面或者物体图像,然后根据在两幅图像上遍历同一个世界三维点映射到两个图像平面的响应匹配点,然后利用匹配点视差和摄像机相关参数,以及图像二维点的信息就可以得到世界物体的三维坐标。1、立体标定cvStereoCalibrate(),利用两个摄像机同时捕获的不同视场来实现标定,同时获得本征矩阵E,基础矩阵F,两摄像机坐标系的旋转矩阵R和平移矩阵T或者摄像机内参数M和畸变系数distCoeffs。立体标定和单摄像机标定是有区别的。立体标定除了可以计算出摄像机的内参数和畸变系数,还可以计算出本征矩阵E,基础矩阵F,两个摄像机的旋转矩阵R和平移向量T.立体标定函数参数中需要两个着相机的内参数和畸变系数,它们即可以作为输入,也可以作为输出,这里我们让它们作为输出,由立体标定函数计算它们。因此,我们就可以手持棋盘,然后用两个摄像机同时捕捉棋盘的不同视场,对于每一个视场,我们两个摄像机都有拍摄的同一棋盘的图像对,对于两个摄像机旋转矩阵R和平移向量T,我们通过一个视场就可以求解出来,然而为了计算结果的稳定,则需要多个视场来优化结果。对于两个摄像机的内参数矩阵和畸变系数,我们至少需要10个视场。因此,我们可以通过手持棋盘,旋转和平移棋盘以获得10个视场,从而获得10幅图像对,来进行立体标定。在这一步,我们利用极线约束来检查标定的结果。(有了本征矩阵我们就可以得到基础矩阵,有了基础矩阵,我们就可以计算极线)2、立体校正cvStereoRetify(),利用相机内参数以及上一步得到R,T,得到两个摄像机极线水平对准的旋转矩阵Rl和Rr,投影矩阵P,重投影矩阵Q,为实现两幅图像水平对准准备数据。该函数名为立体校正,并没有完成真正的立体校正,而是获得了立体校正的所需要的参数。通过立体校正,我们可以获得两个摄像机的投影矩阵P,有了投影矩阵,我们可以利用相机模型公式5-19,然后在利用立体校正后的图像(特征点水平对齐)来进行三维坐标计算。然而我们可能并不这样做,因为OpenCV已经给出了计算的函数,输入视差图和重投影矩阵Q,得到三维点坐标。有时候,我们在三维重建的时候,这样做:假设我们想重建一个物体,我们用两个摄像机拍摄这个物体,如果该物体有足够的surf特征点,我们获取这两幅图像的特征点的坐标位置,然后利用立体校正得到投影矩阵,计算获取物体三维点云。这样的步骤是错误的,或者做出来可能效果也不好。因为我我们进行立体标定的目的是为了使得两幅图像水平对齐,也就是两台摄像机的光轴是平行的,即无穷远处相交。我们知道对于两幅图像,水平对齐后,像对于的特征点或者匹配点在同一图像扫描行上,这样,我们才能利用理想情况下的深度公式:Z=fT/x1-x2,f为焦距,T表示两个相机光轴之间的距离。我们可以假设,如果我们获得的两幅图像对应的匹配点,不在同一行,那么x1-x2,就会发生变化。因此,如果我们在做图像预处理时,一定要始终保持两幅图像的大小是一样的。不能随便的剪切。3、校正映射分为两个步骤:计算查找表和重投影,此步完成真值的图像的校正。1、cvInitUndistortRectifyMap()函数利用摄像机内参数M和畸变系数,以及投影矩阵P或者校正后的摄像机内参数Mrect,以及旋转矩阵T,来计算原始图像到校正后的查找表。2、cvRemap函数,利用计算得到的查找表,和拍摄得到原始图像,设置一定的插值方法,得到校正后的图像。由于左右图像都需要校正,所以该过程要进行两次。4、立体匹配到了这一步,我们就可以根据具体的情况,应用不同的特征点匹配了。OpenCV实现的块匹配算法相当于密集点匹配算法,我们也可以利用稀疏点匹配算法,如sift等。通过这些匹配点,我们就可以获得匹配点的位置,即x1和x2,我们就可以计算得到他们之间的视差,从而得到计算得到三维点坐标。对于一个物体点的坐标(X,Y,Z),我们关心的更多的是Z,Z就是所谓的深度,通俗一点:Z是两个摄像机透镜中心(光心)所在平面到物体点所在平面之间的距离。(推导见:相机模型)因为我们计算的过程中操作的的大部分是像素,那么我们得到距离也是用像素来度量的。5、现实世界单位和像素的关系这个问题是个头疼的问题,我感觉只有等待自己亲自验证了,才能肯定的回答,但是我在这里分析一下先。1)世界物体的三维点,一般选择的应该是左摄像机的投影中心为坐标系的原点(数学模型中的)。视差是左摄像机对应的匹配点的x坐标减去右相机对应的匹配点的x坐标。我们知道,如果知道了视差和重投影矩阵,以及匹配点就可以根据公式求解出三维点坐标。我们将主要公式列出:(Q中除了cx来至于右相机,其他参数均是左相机,Tx为为左摄像机投影中心到右摄像机投影中的平移向量的

文档评论(0)

df9v4fzI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档