11. 双目视觉之立体视觉基础

目录

  • [1. 深度恢复](#1. 深度恢复)
    • [1.1 单目相机缺少深度信息](#1.1 单目相机缺少深度信息)
    • [1.2 如何恢复场景深度?](#1.2 如何恢复场景深度?)
    • [1.3 深度恢复的思路](#1.3 深度恢复的思路)
  • [2. 对极几何约束](#2. 对极几何约束)
    • [2.1 直观感受](#2.1 直观感受)
    • [2.2 数学上的描述](#2.2 数学上的描述)

1. 深度恢复

1.1 单目相机缺少深度信息

之前学习过相机模型,最经典的就是小孔成像模型。我们知道相机通过小孔成像模型对世界点的观测是缺少深度信息的。我们得到的只是世界点在相机平面上的一个投影。如下图,世界点P只要是在那条红色线上,他在相机上的成像位置就是P',所以我们无法知道相机看到的P'对应的世界点的三维位置。

高博的《视觉SLAM十四讲》中一幅画很形象地说明了这个问题。

我们人类看到这个照片,也许会想到,这个明显是"近处的人和远处的人"啊。但是从单目视觉的角度来看,它并不能有"近和远"的概念,因为无论那些远处的人是"真人"还是"模型",他都会给出这么一副图像,从数据的层面来看,他就是给的二维坐标。

1.2 如何恢复场景深度?

那么,我们很容易想到,我们知道了二维坐标,再知道那些场景的深度不就有立体感了吗?

是的,实际操作起来也很简单,再加一个相机,有两个视角看同一个场景,就能通过三角测距来确定场景点的深度。(就像我们的眼睛一样,我们的双眼就是一个完美的立体视觉系统。有人说我一只眼也能分辨出来远近,那是因为我们长久以来积累下来的"经验"让我们有了一些深度的先验信息。)

我们来假定一种最理想的情况,两个相机焦距相等,成像平面和光轴完美平行,并且其X轴方向也完美对齐,也就是两个相机不存在Y方向的偏移,那么就会如下图:

成像示意图可以这么画出来:

我们从上图可以获得一些信息:左右两个相机,他们三个坐标轴都是平行的,且焦距都是f,两者光心的连线定义为基线。两个相机同时观测到世界点P(当然这里没有考虑y,因为两相机在y方向上没有偏移。有偏移的话一样会形成这样的三角关系。)

根据相似三角形的性质,会有上述公式成立。很容易得出世界点P的深度值Z:

上面的d=(xl - xr)称为视差,从公式上也能看出,场景点符合近大远小的规则。即,f和b不变,深度z与视差d呈反比。

1.3 深度恢复的思路

通过上面的描述,我们就可以总结出深度恢复的答题思路。

①双目相机标定,标定出相机的焦距f和基线b;

②通过某种方式找到两个相机对同一个场景点观测的匹配关系,这一步一般叫做数据关联,得到视差d;

③根据公式计算深度。

2. 对极几何约束

2.1 直观感受

上面的推导我们也说了是一种理想情况,两个相机三个轴完全平行,上面的两个相机x轴还是重合的。但是我们实际使用双目相机的时候基本不可能做到上述情况。实际一般是下图所示情况:

做视觉SLAM的朋友肯定对这个对极几何约束非常熟悉。我在这里只把图上符号含义说明一下: O O O为相机光心位置, I I I为相机的成像平面, P P P是世界点, p p p为两相机各自对世界点的观测, l l l为极线, e e e为极点, O 1 O 2 P O_1O_2P O1O2P组成的平面为极平面,极线为极平面与成像平面的交线。

显然,光心和成像平面是固定的,也就是说极点是固定的,基线也是固定的,而世界点们构成的极平面是绕着基线作为轴转动的,这也造成对极线也是以基线为轴在成像平面内移动。

当然,极点不一定都在画面中,比如第一节中提到的理想情况,极点位置就在无穷远处。这种情况叫做极线矫正,后面会详细说。

对极约束说明了这样一个真相:已知左相机的观测点 p 1 p_1 p1,在右相机的成像平面上寻找匹配点,这个匹配点的位置就在极线上。 有了这个约束,我们不必全图范围内去寻找匹配点,而是沿着极线去寻找即可。双目相机观测到的场景中匹配点的关系如下图,途中白线就是极线。

2.2 数学上的描述

观察对极几何约束的图示,我们重新假设世界点 P P P,在左相机的观测为 P l Pl Pl,在右相机的观测为 P r Pr Pr,则会有如下关系,其中 R R R为两相机的相对旋转, T T T为相对平移。

我们在等式两侧同时叉乘一个 T T T,

向量和自己叉乘为零,所以有: T T Tx P r = T P_r=T Pr=Tx R P l RP_l RPl。

向量叉乘得到以两向量构成平面的法线,所以上式再与 P r P_r Pr点乘得零。

即, P r T ( T P_r^T(T PrT(Tx R P l ) = 0 RP_l)=0 RPl)=0。

此时,我们定义 E = T E=T E=Tx R R R,则有, P r T E P l = 0 P_r^TEP_l=0 PrTEPl=0。

这就是对极几何约束的数学描述,其中 P l , P r P_l,P_r Pl,Pr为相机成像平面观测的点, E E E为本质矩阵。一般我们会将 P l , P r P_l,P_r Pl,Pr归一化到 z = 1 z=1 z=1的平面上。

当然如果我们使用相机图像像素平面的点来描述对极几何约束,只需在引入一个相机内参,即:

令 F = K r − T E K l − 1 F=K_r^{-T}EK_l^{-1} F=Kr−TEKl−1,这个 F F F被称为基础矩阵。这个时候的 p l , p r p_l,p_r pl,pr就是像素坐标系上的点了。

相关推荐
幻想趾于现实5 小时前
视觉应用工程师(面试)
人工智能·数码相机·计算机视觉
烟锁池塘柳01 天前
Camera ISP Pipeline(相机图像信号处理管线)
图像处理·数码相机·信号处理
3DVisionary1 天前
XTOP3D的DIC技术在极端条件下的应用解决方案
数码相机·3d·航空工业·全场应变测量·航空机匣内部四测头同步测量·反射镜辅助dic观测·四测头方案
视觉人机器视觉3 天前
3D与2D机器视觉机械臂引导的区别
人工智能·数码相机·计算机视觉·3d·视觉检测
LabVIEW开发3 天前
LabVIEW开发中的电机控制与相机像素差
数码相机·labview
pixle04 天前
Three.js 快速入门教程【二】透视投影相机
开发语言·javascript·数码相机
go54631584654 天前
python实现将RGB相机与事件相机的照片信息进行融合以进行目标检测
python·数码相机·目标检测
看星猩的柴狗5 天前
ROS-相机话题-获取图像-颜色目标识别与定位-目标跟随-人脸检测
数码相机
彩云的笔记5 天前
相机快门 deepseek
数码相机
视觉人机器视觉5 天前
机器视觉检测中,2D面阵相机和线扫相机的区别
人工智能·数码相机·计算机视觉·3d·视觉检测