一文详解深度相机之双目成像

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

90f770430287665f8e7de9a5d48cbadf.png

作者丨爱做菜的炼丹师

来源丨CV研习社

文章导读

本文通过介绍双目立体视觉的成像过程,带大家了解双目视觉如何从两个不同视角的成像平面中恢复出物体三维几何信息,重建周围景物的三维形状与位置。

在说双目视觉之前,我们先聊一下单目成像过程,最简单的单目成像是基于小孔成像的原理,三维空间中的点经过透视投影过程映射到图像平面上,如此一来在透视线上的空间点都落在像平面上的同一点处,所以普遍认为单目相机缺乏深度信息无法测距。(这里仅从成像原理出发,当然现实中借助外界约束有很多单目测距的方法)

而双目相机利用视差原理从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差来恢复出物体三维几何信息。

双目的核心在于建立两个图像中特征之间的对应关系,将三维空间中同一目标点在不同视图的成像点关联起来,然后计算它们之间的差别,最后通过视差和距离的几何关系得到深度图。

双目立体视觉的具体步骤如下:

  • 对双目相机进行标定得到内外参数和单应性矩阵

  • 通过内参做畸变校正并用单应矩阵将两张图片转换到同一平面

  • 对校正后的两张图片根据极线约束进行像素配准

  • 根据配准结构计算每个像素的深度从而获得深度图

输入左右两个视角的自行车图像:

f9d646fcfbbd186c15414c9ae1606410.png

输出自行车的深度图信息:

a8ddc71db2c184fbfbe9e9c841f63365.png

到底什么是视差、极点、极线、极平面、极线约束等等?

在谈到双目成像时,首先出现的一个概念就是视差,网上有人用过一个很简单的形式来描述视差,即将人眼想象成双目相机,竖起一根手指放在前方作为目标,分别闭上左眼或右眼去观察目标,我们发现目标在不同成像平面中的位置移动了,这个像素位置的差异值就是视差。

ab917d6c2f880668643b881a87c9056a.png

在上面这张图中,左右两幅图分别表示左右相机的成像平面,假设一个目标在左视图的成像点落在第二列蓝色区域,在右视图的成像点落在第五列蓝色区域,视差值即为3。

这里小伙伴会问为什么在计算视差值的时候,目标在左右视图中的匹配点所在行相同呢?

其实在计算视差图之前,存在一个重要的操作即图像校正:包括畸变校正和立体校正两个过程。图像的畸变校正我们都很熟悉了,有兴趣的童鞋可以翻翻小编之前的文章,有一篇线性相机模型中进行了描述。通过张正友标定法计算出相机的4个内参fx,fy,cx,cy和5个畸变系数k1,k2,k3,p1,p2,进一步解决相机的枕形畸变和桶形畸变。

立体校正的过程是利用两颗相机之间的外参即旋转平移矩阵以及透视投影矩阵,对两幅图像进行极线校正,将图象平面重投影到平行于光心线的公共平面上,如下图所示,将原始的灰色像平面纠正到黄色位置。

1dde5b231721ffadfc048169140c57e7.png

接下来我们从下图解释一下极点、极线、极平面的概念,假设空间一点P投影到左视图像平面上,成像点PL;投影到右视图像平面上,成像点PR。两个相机光心的连线CL-CR与像平面的交点eL和eR称为极点。物点P与左右相机光心CL、CR组成的平面称为极平面。而极平面与相机的像平面交线称为极线。

82531b6a4733b0b15045e8519ba20b9e.png

上图中还有一个规律,我们发现不同距离处的三维空间点P,P1,P2,P3投影到左视图成像点PL上,在右视图搜索相对应的匹配点时,它们均落在红色直线上(极线)。所以当我们做左右视图的匹配时,是否可以利用这一规律呢?

在图像匹配的过程中,如何找到两幅图像的对应关系?

最直接的做法就是逐点匹配,但是从一副图像中逐个像素点的搜索,不仅耗时巨大而且匹配精度不高。为了降低匹配的难度,提供匹配的速度和精度,通常会增加一些约束条件,比如极线约束、相似性约束、左右一致性约束等。其中极线约束最为常见,它是指三维空间中一点P,当投影到左视图P’位置后,必然能在右视图的极线上匹配到该点。该约束将二维空间中的逐点搜索降维到一维直线上的搜索,减少了算法耗时并提高匹配精度。

我们先来看一种理想的情况,左右相机内参相同且像平面共面,如下图所示:

29a774ac6d9d2df5ce69976c62dad75c.png

在这种情况下,做图像特征匹配时,只需要将左视图中的像素点,沿着水平方向在右视图的极线上搜索对应点即可。

但是实际情况下左右相机内参不同且像平面不共面,如下图所示:

6743509ddcae4789206361c3068e0754.png

上文中提到的立体校正就是应用在此处,为了使同一特征点位于左右相机两张图像水平方向的同一条直线上。也就是把实际情况下非共面行对齐的两幅图像校正成共面行对齐。

那么极线和视差是否存在某种关系呢?

假设左右两个相机的焦距相同,极线和光轴均平行。左右视角同时看到两个目标P1和P2,其中XR1和XT1分别是P1点落在左右两幅图中的位置,即P1在左右相机的视差为|XR1-XT1|;XR2和XT2分别是P2点落在左右两幅图中的位置,即P2在左右相机的视差为|XR2-XT2|。所以移动三维空间中的一点P,其在左右相机中的位置也会发生变化,从而视差发生变化。如下图所示:

98231a4a9fd9531a44f9b20fbe041de6.png

根据三角形相似性原理可以得到Z=b * f / d,Z表示目标的距离,b是基线,f是焦距,d是视差,可以看出视差与三维空间上的点到投影中心平面的距离成反比:距离像平面越近的目标,视差越大;距离像平面越远的目标,视差越小。

1e82a0c52b39f4bbe2f373709f1569a7.png

双目视觉的本质就是两幅图像特征匹配的过程,虽然技术成熟度很高,但是在哪些情况下仍然存在挑战呢?

  • 物体边缘处的估计

  • 纹理信息单调的场景

  • 缺乏纹理的物体

  • 光照角度强度不同

  • 雨雪天气场景下

  • 夜晚或昏暗场景

3660573c44e36fc128d0bbc92c7e0dbb.png

在室内场景会遇到白墙,房顶,玻璃等纹理信息单一或缺乏的情况导致图像匹配失败;在室外场景会遇到进出隧道的光照变化,昏暗街道的匹配失败等问题。

本文仅做学术分享,如有侵权,请联系删文。

干货下载与学习

后台回复:巴塞罗自治大学课件,即可下载国外大学沉淀数年3D Vison精品课件

后台回复:计算机视觉书籍,即可下载3D视觉领域经典书籍pdf

后台回复:3D视觉课程,即可学习3D视觉领域精品课程

计算机视觉工坊精品课程官网:3dcver.com

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

14.ROS2从入门到精通:理论与实战

15.国内首个3D缺陷检测教程:理论、源码与实战

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

b1780fae777d09a873ab415a13042a24.png

▲长按加微信群或投稿

3f762a554a0ff843e50e7b0b0c87651d.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

10cc66154370e647793df45d5387e9a3.png

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值