点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

文章导读

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 物体边缘处的估计

  • 纹理信息单调的场景

  • 缺乏纹理的物体

  • 光照角度强度不同

  • 雨雪天气场景下

  • 夜晚或昏暗场景

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

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

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

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

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

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

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

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

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

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

  1. 重磅直播|中科慧眼崔峰博士详解深度相机原理及其应用

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微 ...

  2. 一文详解鱼眼相机的车位线感知

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文是一篇介绍鱼眼相机做车位线检测的文章,放眼当下泊车功能在智能汽车领域研究的如火如荼,从L ...

  3. 一文详解双目相机标定理论

    01 前言 双目相机标定,从广义上讲,其实它包含两个部分内容: 两台相机各自误差的标定(单目标定) 两台相机之间相互位置的标定(狭义,双目标定) 在这里我们所说的双目标定是狭义的,讲解理论的时候仅指两 ...

  4. 一文详解深度学习冷板式液冷散热技术规范及要求

    深度学习 | 东数西算 | 液冷散热 数据挖掘 | 数据分析 | 高性能计算 随着深度学习.东数西算.医药研发.数据分析.数据挖掘.遥感测绘.高性能计算等技术的快速发展,数据中心的创建与日俱增,传统的 ...

  5. 一文详解深度学习在命名实体识别(NER)中的应用

    近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务-命名实体识别(Named Entity Recogni ...

  6. 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...

  7. 一文详解决策树算法模型

    AI有道 一个有情怀的公众号 上文我们主要介绍了Adaptive Boosting.AdaBoost演算法通过调整每笔资料的权重,得到不同的hypotheses,然后将不同的hypothesis乘以不 ...

  8. 【NLP】四万字全面详解 | 深度学习中的注意力机制(四,完结篇)

    作者 | 蘑菇先生 知乎 | 蘑菇先生学习记 深度学习Attention小综述系列: 四万字全面详解 | 深度学习中的注意力机制(一) 四万字全面详解 | 深度学习中的注意力机制(二) 四万字全面详解 ...

  9. 【NLP】四万字全面详解 | 深度学习中的注意力机制(二)

    NewBeeNLP原创出品 公众号专栏作者@蘑菇先生 知乎 | 蘑菇先生学习记  前情提要:四万字全面详解 | 深度学习中的注意力机制(一) 目前深度学习中热点之一就是注意力机制(Attention ...

最新文章

  1. Eclipse使用Maven建立SSM多模块的项目
  2. python父类和子类_python子类父类
  3. hrbustoj 2283 heap解题报告
  4. 差动机器人毕业设计_双轮差动机器人曲线算法设计与实现
  5. 程序员到项目经理:从内而外的提升不看后悔去吧
  6. mysql+rsyslog+loganalyzer的部署方案
  7. [蓝桥杯][基础练习VIP]Huffuman树
  8. 浦发银行:开展互联网金融业务是与狼共舞,如何才能不失阵地?
  9. Web后端学习笔记 Flask(9)cookie and session
  10. 多图详解Spring框架的设计理念与设计模式
  11. 基于模拟退火算法解决TSP问题 | MATLAB源码
  12. 事业单位考试计算机专业知识题库,计算机考试题库:计算机考试练习题(29)...
  13. Excel如何根据身份证号码提取出性别?
  14. java nio 断开连接_JAVA NIO写服务端判断客户端断开连接的方法
  15. 英语聊天时“好的”、“我知道了”、“收到”、“嗯嗯”之类的怎么说?
  16. php怎么分栏,wps怎么分栏排版
  17. 《Java Web程序设计基础教程》前言
  18. EE308-Lab8-AlphaSprint-Day6
  19. Python字典以及方法的测试
  20. linux静态链接库添加,c-静态链接库时,出现链接器错误:找不到-...

热门文章

  1. 淘宝同行店铺采集软件可以采集淘宝店铺吗?
  2. 刀友访谈:从客服转产品,我付出的不止是时间而已(文末附「破壁人」获奖名单)
  3. Timer 和 TimerTask 定时任务
  4. NODEMCU调试心得2 - 关于LUA
  5. 易推流为什么显示连接服务器失败,live-pusher 推流总是失败?
  6. 简约几何系列PPT模板
  7. 基于Roberta进行微博情感分析
  8. 关于malloc和free函数的用法
  9. matlab绘制循环语句的图,运用matlab实现循环语句中的多幅图像显示
  10. PHP华为机试在线训练解题思路