双目相机模型原理

立体成像概述

我们对双眼的立体成像能力非常熟悉,但是在计算机软件中,我们可以模仿这种能力到什么程度呢?实际上,计算机是通过寻找两个成像仪上的对应点来完成这个任务。其原理是:查找某个点在两张图片的对应点,通过其和摄像机基线之间的距离进行计算,可以得到这个点的三维位置。尽管两张图片的对应点的搜索计算量比较高,但我们可以利用几何知识,限定搜索的范围,降低计算量。因此,使用双目相机进行立体成像包括以下4个步骤:

  1. 去畸变:使用数学方法消除径向和切向的畸变
  2. 机位标定:调整两个相机的角度和其之间的距离,保证两个相机输出的是帧行对齐的图像,尽可能保证两个图像是共面的。
  3. 匹配:在左右相机图像中找到相同的特征,此步骤可以输出视差图,视差是指左右摄像机观察得到的相同特征在x方向上的差值: xl−xr
  4. 重投影:如果相机的位置关系已知,则可以通过三角测量法将视差图像转换成距离,这一步骤称之为重投影,输出为一个深度图

三角测量模型

假如我们有一个这样的理想装置:一个完美的无畸变、已对准、已测量好的系统,两个摄像机的图像平面彼此完全共面,具有完全平行的光轴(从投影中心O发出,通过主点c的一条射线),他们之间的距离是已知的T,并且具有相等的焦距:fl=fr,且假设主点 cleftx,crightx已经被校准为在其各自的图像中具有相同的像素坐标。

image-20200403161101821

假设我们在物理世界中找到一个点P,在左右图像上的成像点为pl和pr,对应的横坐标为xl和xr,在此种简化的情况下,我们可以发现深度Z和视差 xl−xr成反比。即越近的图像,视差越大。
在这里插入图片描述

由于深度与视差成反比,且显然,其之间存在非线性的关系,当视差趋近于零时,微小的视差变换会造成很大的深度变换。且当视差较大时,微小的视差变化不会对深度有太大的改变。则可得出以下结论:双目立体视觉系统只有在物体和摄像机距离较近时,才有比较高的深度分辨率。如下图所示:

image-20200403164042854

下图为OpenCV立体视觉坐标系
用于已进行去畸变的相机,图像左上角为像素坐标系原点,两个图像平面的行与行对齐,整个双目摄像机的坐标系以左目相机的投影中心为原点,采用右手坐标系法则。

image-20200403164130848
注:以上文字和图片均来源于链接,若有侵权请联系转载方删除。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp 是一款基于Vue.js的跨平台开发框架,可以用于快速开发多端应用程序。而双目相机测距算法则是一种利用双目相机的视差来推导出物体距离的方法。 首先,双目相机指的是由两个相机组成的摄像头系统,分别位于一定距离的左右两侧。它模拟了人眼的视觉系统,通过两个不同的视角来获取图像。 双目相机测距算法的基本原理是通过计算视差来确定物体的距离。视差是指同一物体在左右两个相机的图像中位置的差异。通过测量视差,可以推导出物体离相机的距离。 常见的双目相机测距算法有三点法和特征点匹配法。三点法基于物体的三维几何关系,通过计算三个点在左右两个图像中的视差,进而计算得出物体的距离。特征点匹配法则是根据图像中的特征点来进行匹配,并计算出视差,进而推导出物体的距离。 在UniApp中使用双目相机测距算法,可以通过调用底层硬件接口或使用相关插件来实现。首先需要利用UniApp提供的能力来调用摄像头接口,获取左右两个图像。接下来,使用相应的测距算法对图像进行处理,计算出视差,并通过一定的数学模型将视差转换为物体的距离。最后,将计算得到的距离进行相关的展示或应用。 总结来说,UniApp双目相机测距算法就是利用UniApp的跨平台开发能力,结合双目相机原理和相关测距算法,实现对物体距离的测量和处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值