随着机器视觉, 自动驾驶等颠覆性的技术逐步发展, 采用 3D 相机进行物体识别, 行为识别, 场景建模的相关应用越来越多, 可以说 3D 相机就是终端和机器人的眼睛。 那什么是 3D 相机呢, 跟之前的普通相机(2D) 比, 又有哪些差别。3D 相机又称之为深度相机, 顾名思义, 就是通过该相机能检测出拍摄空间的景深距离, 这也是与普通摄像头最大的区别。 普通的彩色相机拍摄到的图片能看到相机视角内的所有物体并记录下来, 但是其所记录的数据不包含这些物体距离相机的距离。 仅仅能通过图像的语义分析来判断哪些物体离我们比较远, 哪些比较近, 但是并没有确切的数据。 而 3D 相机则恰恰解决了该问题, 通过 3D 相机获取到的数据,我们能准确知道图像中每个点离摄像头距离, 这样加上该点在 2d 图像中的(x,y)坐标, 就能获取图像中每个点的三维空间坐标。 通过三维坐标就能还原真实场景, 实现场景建模等应用。从上面描述可以看出, 我们的眼睛就是一个天然的 3D 相机, 这主要得益于偏光原理, 当人眼在看任何物体时, 由于两只眼睛在空间有一定间距约为 5cm, 即存在两个视角。 这样形成左右两眼所看的图像不完全一样, 称为视差。 这种细微的视差通过视网膜传递到大脑里, 就能显示出物体的前后远近, 产生强烈的立体感, 这是 1839 年, 英国科学家温特斯顿发现的奇妙现象。 自然的人类就想到通过两个一定距离的普通摄像头来模拟人眼来获取 3D 数据。 这就是最初的双目立体相机, 鉴于双目相机的一些缺陷, 后来人们又发明了结构光和 TOF 的方法来获取 3D 数据。

目前市面上常有的 3D 相机方案就就是这3 种。
(1)结构光(Structured-light), 代表公司有奥比中光, 苹果(Prime Sense), 微软 Kinect-1, 英特尔RealSense, Mantis Vision 等。
(2)双目视觉(Stereo), 代表公司 Leap Motion, ZED, 大疆;
(3)光飞行时间法(TOF), 代表公司微软 Kinect-2, PMD, SoftKinect, 联想 Phab。
下图是这三种方式的一个简单而形象的图片介绍


结构光
结构光, 英文叫做 Structured light, 通常采用特定波长的不可见的红外激光作为光源, 它发射出来的光经过
一定的编码投影在物体上, 通过一定算法来计算返回的编码图案的畸变来得到物体的位置和深度信息。 根
据编码图案不同一般有条纹结构光---enshape , 编码结构光---Mantis Vision, Realsense(F200), 散斑结构光
---apple(primesense), 奥比中光。 下图是一个典型的结构光相机的示意图:

特定波长的 Laser 发出的结构光照射在物体表面, 其反射的光线被带滤波的 camera 相机接收, 滤波片保证
只有该波长的光线能为 camera 所接受。 Asic 芯片对接收到的光斑图像进行运算, 得出物体的深度数据。
其基本的算法原理可参看下图:

A 点: 激光投影模块位置
C 点: CMOS 相机位置
d: BaseLine
l: 参考面到相机的距离
Z(X,Y): 物体表面(x,y)点到标定平面的距离。
物体表面任一点 P(x,y)的深度信息可以通过比较
P(x,y)与激光散斑投射到参考平面(虚线所示)
上的点 P'(x,y)的 x 方向的偏移量得到。

以奥比中光的方案为例, 采用的是散斑结构光的技术, 下图是 camera 接收到的散斑图

苹果公司的 IphoneX 采用收购至 primesense 的技术, 也是散斑结构光, 所谓散斑就是是激光照射到粗糙物
体或穿透毛玻璃后随机形成的衍射斑点。 这些散斑具有高度的随机性, 而且会随着距离的不同而变换图案。

也就是说空间中任意两处的散斑图案都是不同的。 只要在空间中打上这样的结构光, 整个空间就都被做了
标记, 把一个物体放进这个空间, 只要看看物体上面的散斑图案, 就可以知道这个物体在什么位置了。 当
然, 在这之前要把整个空间的散斑图案都记录下来, 所以要先做一次光源标定, 通过对比标定平面的光斑
分布, 就能精确计算出当前物体距离相机的距离。
结构光(散斑) 的优点主要有:
1) 方案成熟, 相机基线可以做的比较小, 方便小型化。
2) 资源消耗较低, 单帧 IR 图就可计算出深度图, 功耗低。
3) 主动光源, 夜晚也可使用。
4) 在一定范围内精度高, 分辨率高, 分辨率可达 1280x1024,帧率可达 60FPS。
散斑结构光的缺点与结构光类似:
1) 容易受环境光干扰, 室外体验差。
2) 随检测距离增加, 精度会变差。


双目视觉
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式, 他是基于视差原理并利用成像设备
从不同的位置获取被测物体的两幅图像, 通过计算图像对应点间的位置偏差, 来获取物体三维几何信息的
方法。 目前有主动双目, 被动双目之分, 被动双目就是采用可见光, 好处是不需要额外光源, 但是晚上无
法使用, 主动双目就是主动发射红外激光做补光, 这样晚上也能使用。
双目视觉仅仅依靠图像进行特征匹配, 对附加设备要求低, 在使用双目视觉相机前必须对双目中两个
摄像头的位置进行精确标定。 下面图片很好的简单阐述了双目相机如何获取物体的深度数据。 同一直线上
的 3 个点在下端的相机都投影到 cmos 同一个点, 因此单独的这个相机没法分辨三个点的距离, 但是这 3 各
点在上端相机的投影位置不同, 通过三角测量办法和两个相机基线距离 B, 我们就可以计算出这 3 个点离相
机平面距离。

当然完整的双目深度计算非常复杂, 主要涉及到左右相机的特征匹配, 计算会非常消耗资源。
双目相机的主要优点有:
1) 硬件要求低, 成本也低。 普通 CMOS 相机即可。
2) 室内外都适用。 只要光线合适, 不要太昏暗。
但是双目的缺点也是非常明显:
1) 对环境光照非常敏感。 光线变化导致图像偏差大, 进而会导致匹配失败或精度低。

2) 不适用单调缺乏纹理的场景。 双目视觉根据视觉特征进行图像匹配, 没有特征会导致匹配失败。
3) 计算复杂度高。 该方法是纯视觉的方法, 对算法要求高, 计算量较大。
4) 基线限制了测量范围。 测量范围和基线(两个摄像头间距) 成正比, 导致无法小型化。


光飞行时间法(TOF)
顾名思义是测量光飞行时间来取得距离, 具体而言就是通过给目标连续发射激光脉冲, 然后用传感器
接收从反射光线, 通过探测光脉冲的飞行往返时间来得到确切的目标物距离。 因为光速激光, 通过直接测
光飞行时间实际不可行, 一般通过检测通过一定手段调制后的光波的相位偏移来实现。
TOF 法根据调制方法的不同, 一般可以分为两种: 脉冲调制(Pulsed Modulation) 和连续波调制
(Continuous Wave Modulation)。 脉冲调制需要非常高精度时钟进行测量, 且需要发出高频高强度激光, 目
前大多采用检测相位偏移办法来实现 TOF 功能。
下面图片描述了 TOF 相机(连续波) 的基本原理, 实际应用中, 通常采用的是正弦波调制。 由于接收
端和发射端正弦波的相位偏移和物体距离摄像头的距离成正比, 因此可以利用相位偏移来测量距离。

因为 TOF 并非基于特征匹配, 这样在测试距离变远时, 精度也不会下降很快, 目前无人驾驶以及一些高
端的消费类 Lidar 基本都是采用该方法来实现。
TOF 的优点主要有:
1) 检测距离远。 在激光能量够的情况下可达几十米。
2) 受环境光干扰比较小。
但是 TOF 也有一些显而易见的问题:
1) 对设备要求高, 特别是时间测量模块。
2) 资源消耗大。 该方案在检测相位偏移时需要多次采样积分, 运算量大。
3) 边缘精度低。
4) 限于资源消耗和滤波, 帧率和分辨率都没办法做到较高。 目前消费类最大也就 VGA。
从上面三种主流的 3D 相机成像方案来看, 各有优劣, 但是从实际应用场景来看, 在非无人驾驶领域, 结构
光, 特别是散斑结构光的用途是最广泛。 因为从精度, 分辨率, 还有应用场景的范围来看双目和 TOF 都没
有办法做到最大的平衡。 而且对于结构光容易受环境光干扰, 特别是太阳光影响问题, 鉴于此类相机都有
红外激光发射模块, 非常容易改造为主动双目来弥补该问题。 针对这三种方案, 我们针对常用场景做了一
些测试

当然这三种方案在发展过程中也有一些互相融合趋势, 如主动双目+结构光, 取长补短, 使 3D 相机能适应
更多的场景。 也有一些同时使用, 如手机前置基本确认会采用结构光来做 FaceId, 但是后置用来做 AR 应用,
结构光和 TOF 都有机会。 虽然项目具体使用哪种方案, 要结合当前硬件资源, 对性能要求等来确定, 但从
最广泛的使用角度来看, 散斑结构光无疑是目前最佳的方案。

3D相机成像原理简介相关推荐

  1. 3D相机测距原理总结

    1.引言 3D相机 ,区别于传统的只能获取平面图像的2D相机,最大的特点在于而已获得景深数据.通过平面坐标(x,y)和摄像头距离该点的深度数据z的组合.可以获取图像中每个点的三维坐标,可以完成真实场景 ...

  2. 【自动驾驶】16.计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换

    本篇博客为转载,我对其中的细节添加了一些说明. 原文链接:https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理 ...

  3. 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chentravelling/article/details/53558096 0.前言 最近整理了& ...

  4. 【图像处理】相机成像原理

    这里对于相机成像原理做一个简单的介绍. 如下图所示,在最左端的顶点为相机,它的镜头正对着地面上的点O,横向视场角为a,纵向视场角为θ,它所看到的区域就是就是如下所示的四边形,存在一定的投影变换. 而地 ...

  5. 3D立体视觉成像原理介绍【一 】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 什么是基线? 基线是如何影响3D图像质量 激光三角测量 飞行时间 结构光相机 时间编码结构光 前言 本文将介绍3D立体 ...

  6. ORB-SLAM2从理论到代码实现(四):相机成像原理、基本矩阵、本质矩阵、单应矩阵、三角测量详解

    由于ORBmatcher.cc中有三角化和重投影等内容,所有我先写相机成像等多视图几何内容. 1. 相机的成像原理 假设空间中有一点P,它在世界坐标系中的坐标为,在相机坐标系中的坐标为,在图片中的像素 ...

  7. 相机成像原理_【亲子科学小实验】相机原理和小孔成像的秘密

    大家出去旅游的时候,都会带着照相机,拍下美景的同时,也给我们留下了永恒的回忆.但是,大家知不知道记录美好瞬间的照相机是如何工作成像的呢?下面就和小编一起来探究成像原理吧. 相机原理和小孔成像 材料 放 ...

  8. 相机成像原理_数码相机的工作原理

    数码相机也被称为数字相机.数码相机可以说是更广义的电子影像处理技术中的一类,其光学成像系统和常规的照相机并无差别,然而影像记录的方式却完全不同.常规相机使用的是化学光感材料,而数码相机使用的是一组光电 ...

  9. 相机成像原理_【科研进展】动态虚拟相机:探索三维视觉成像新方法

    由于微信公众号试行乱序推送,您可能没办法准时收到"爱光学"的文章.为了让您第一时间看到"爱光学"的新鲜推送, 请您: 1. 将"爱光学"点亮 ...

  10. 相机成像原理_照相机、摄影机的成像原理

    电影让不同时空下的你我相遇 写在开头 后面将要学习的焦距.景深以及镜头的运动相比影像中的画框.构图.景别.角度这几个概念理解起来更有难度,为了更好地理解它们的含义,也为了"知其然,知其所以然 ...

最新文章

  1. Android学习CursorWrapper与Decorator模式
  2. 零基础学前端开发技术之第七章 浮动塌陷
  3. python下载文件损坏_pythonw.exe停止工作,无法运行IDLE或任何.py文件 - python
  4. excel如何去重统计户数_公式解读第三期 单元格中数字如何去重排序?
  5. ZooKeeper分布式应用程序的分布式协调服务:概述,入门,发布版本
  6. jQuery动画之显示隐藏动画
  7. pano2vr 缩略图添加场景名称
  8. mac电脑查看CPU温度
  9. matlab 双均线,双均线策略(CTA)
  10. mysql busy buffer_与buffer cache相关的等待事件—buffer busy waits等待事件!
  11. import cv2
  12. 抑郁症自我测试皮肤软件,以躯体症状为主的抑郁症患者的交感神经皮肤反应研究...
  13. FPGA仿真--前仿真和后仿真
  14. 猫和老鼠服务器维修有问题,猫和老鼠手游老是掉线怎么办 频繁网络中断解决方法...
  15. JSP-----JSP简介
  16. python朴素贝叶斯分类示例_Python实现的朴素贝叶斯分类器示例
  17. 硬件工程师知识体系(公开版)
  18. [转载]ROS电信+网通双线,指定某IP只走电信线或网通!
  19. Eclipse搭建C++\C开发环境
  20. 软件技术实习项目:实验二、贪吃蛇游戏

热门文章

  1. 高等数学辅导讲义_《高等数学》考研自用框架体系
  2. jact变频器故障代码_高淳JACT变频器,艾克特变频器ERR20编码器故障维修烟台市...
  3. 家庭局域网_如何查看局域网内所有ip?
  4. 再生核希尔伯特空间(RKHS)和核函数
  5. android wifi信号通道,Wifi信道分析app下载
  6. USB接线引脚定义图
  7. 如何在TransCAD中制作美观的地图
  8. 基于SpringBoot的个人博客系统【完整项目源码】
  9. python3.6对MySQL数据恢复
  10. codeblocks下载-安装和使用