双目相机模型原理

立体成像概述

我们对双眼的立体成像能力非常熟悉,但是在计算机软件中,我们可以模仿这种能力到什么程度呢?实际上,计算机是通过寻找两个成像仪上的对应点来完成这个任务。其原理是:查找某个点在两张图片的对应点,通过其和摄像机基线之间的距离进行计算,可以得到这个点的三维位置。尽管两张图片的对应点的搜索计算量比较高,但我们可以利用几何知识,限定搜索的范围,降低计算量。因此,使用双目相机进行立体成像包括以下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
注:以上文字和图片均来源于链接,若有侵权请联系转载方删除。

### 双目相机模型在SLAM中的应用 #### 1. 基本概念 双目相机由两个平行排列的摄像头组成,这两个摄像头之间存在已知的距离基线\(B\)。当观察同一景物时,左眼和右眼看到的画面会有一定差异,这种现象被称为视差\[ ^{1} \]。 #### 2. 深度计算 对于给定的空间点P,在左右两幅图像上分别对应着不同的位置u_l, u_r。利用三角测量原理可以得到该点的实际深度D: \[ D=\frac{f B}{d} \] 这里, - \( f \) 表示焦距; - \( d=u_{l}-u_{r}\) 是水平方向上的视差值; 此公式展示了如何基于视差来推断物体距离的信息\[ ^{1} \]. #### 3. 特征匹配 为了获取视差图,需要先找到左右两张图片中相同特征点的位置关系。通常采用SIFT/SURF等算法提取并匹配特征点对。一旦找到了足够的可靠配对,则可以根据上述公式求解各点对应的深度信息\[ ^{4} \]. ```python import cv2 as cv from matplotlib import pyplot as plt # 加载立体校准参数 stereo = cv.StereoBM_create(numDisparities=16, blockSize=15) left_image = cv.imread('left.png', 0) right_image = cv.imread('right.png', 0) disparity = stereo.compute(left_image,right_image) plt.imshow(disparity,'gray') plt.show() ``` 这段Python代码片段演示了使用OpenCV库来进行基本的双目视觉处理流程的一部分—计算视差图。实际应用中还需要进一步优化以提高精度和效率\[ ^{4} \]. #### 4. SLAM框架集成 将双目视觉模块嵌入到整体SLAM系统里,主要涉及以下几个方面的工作: - **前端测程法(Pose Estimation)**:通过连续帧间的关键点跟踪以及本质矩阵/基础矩阵分解获得相位变换。 - **后端优化(Backend Optimization)**:运用非线性最小二乘法或其他技术修正累积误差。 - **回环检测(Loop Closure Detection)**:识别曾经访问过的区域从而减少漂移效应。 综上所述,相比于单目方案而言,双目标记提供了绝对尺度约束,有助于更精确地重建环境结构并保持姿态估计的一致性和稳定性\[ ^{4} \].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值