双目测距的基本公式推导

双目深度估计使用两个camera,通过双目矫正把问题从深度估计转化到特征点匹配、视差计算的问题,这样的转换将学习目标从深度变成了视差,这样做是因为视差相对于深度来说更直观一些。

双目校正是根据摄像头定标后获得的单目内参数据(焦距、成像原点、畸变系数)和双目相对位置关系(旋转矩阵和平移向量),分别对左右视图进行消除畸变和行对准,使得左右视图的成像原点坐标一致。

视差图是同一个场景在两个相机下成像的像素的位置偏差,下图中的X_{R} - X_{T}即是视差。P是待测物体上的某一点,OR与OT分别是两个相机的光心,点P在两个相机感光器上的成像点分别为P和P’(相机的成像平面经过旋转后放在了镜头前方),f为相机焦距,B为两相机中心距,Z为我们想求得的深度信息。

        

公式中,焦距f和摄像头中心距B可通过标定得到,因此,只要获得了视差d = X_{R} - X_{T},就可以计算出深度Z

双目测距主要是利用了目标点在左右两幅视图上成像的视差与目标点到成像平面的距离Z存在着反比例的关系:Z=fB/d 。

在OpenCV中,f的量纲是像素点,d的量纲也是像素点, B的量纲由定标板棋盘格的实际尺寸和用户输入值确定,一般是以毫米为单位。因此分子分母约去,Z的量纲与B相同。

 

假设目标点在左视图中的坐标为(x,y),在左右视图上形成的视差为d,目标点在以左摄像头光心为原点的世界坐标系中的坐标为(X,Y,Z),则存在上图所示的变换矩阵Q,使得 Q*[x y d 1]’ = [X Y Z W]’。为了精确地求得某个点在三维空间里的距离Z,我们需要获得的参数有焦距f、视差d、摄像头中心距B。如果还需要获得X坐标和Y坐标的话,那么还需要额外知道左右像平面的坐标系与立体坐标系中原点的偏移cx和cy。其中f, B, cx和cy可以通过立体标定获得初始值,并通过立体校准优化,使得两个摄像头在数学上完全平行放置,也就是实现图中左右视图完全平行对准的理想形式。而立体匹配所做的工作,就是在之前的基础上,求取最后一个变量:视差d(这个d一般需要达到亚像素精度)。从而最终完成求一个点三维坐标所需要的准备工作。在清楚了上述原理之后,我们也就知道了,所有的这几步:标定、校准和匹配,都是围绕着如何更精确地获得 f, d, B, cx 和cy 而设计的.

 

继续阅读  双目测距与三维重建的OpenCV实现问题集锦

 

 

 

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值