一文详解3D相机面临的困难问题和解决方案
点击上方“计算机视觉工坊”,选择“星标”
干货第一时间送达
作者丨HawkWang
来源丨 计算摄影学
一. 3D相机面临的各种挑战
正如你已经在上一篇文章52. 光的飞行时间技术 (TOF系列2)中所见,包括TOF技术在内的3D成像技术从诞生到现在已经取得了巨大的发展,并且已经用到了很多领域。
然而,TOF技术在实际运用时还面临着一些关键性的挑战。我这篇文章就来一一介绍这些挑战和专家们的解决方案。
像TOF这样的主动光3D成像技术,首先面临的挑战就是在室外的使用时的环境光照的影响。你可以看到,如果3D相机的光源是场景中唯一的光源,那么整个使用条件是非常符合其工作原理的。然而在室外时,环境光可能大大超过相机自身的光源的强度,使得其结果出现错误。
我们来看一个例子,这个视频中用一个RGBD相机对着一扇门拍摄,我们可以看到在阳光直射时,部分区域的深度会出现错误或者缺失的情况。
另外一个挑战则是散射介质的影响,因为这些介质会导致多条光路的出现,影响对距离的判断。
一个典型的例子如下,这是在韩国现代赞助的自动驾驶汽车比赛的录像,一辆自动驾驶汽车行驶在晴朗的天气条件下,很自然的转过了这个弯道:
而在另外一个雨雾天时,这辆车再次挑战同一个弯道时,却撞到了路牙上:
如果说上面这些还只是由于室外环境的不确定导致的问题,但即便在受控的室内环境,3D相机一样会遇到挑战,比如因为目标的几何形状的原因,光会产生多次的反射,导致对距离的判断失真
又或者因为目标材质的多变,导致多条光路的出现,影响对距离的判断
从1860年到现在,3D相机以及在速度、解析力、准确度等方方面面有了很大的提升,而未来的3D相机一定会变得越来越适合在各种场景下适用——而这就需要从解决上述这些挑战开始。
二. 如何处理环境光的影响
正如刚才你看到的,环境光照会影响对距离的判断
那么一个显而易见的方法是拍摄一个遮挡了自身光源的图像,利用两个图像的差值来得到仅有自身光源照射时的图像:
如果你也是这样想的,那么恭喜你,你答错了O(∩_∩)O
这是由于光的波粒二象性导致的——当我们像上面那样思考时,潜在的我们认为光是连续的波。但实际上此时光还是一种粒子,因而它到达相机传感器并被捕获是一个离散随机过程
可能在单位时间平均会有3个光子进入传感器,但由于离散随机过程的本质,使得有的时候可能一个光子也没有,有的时候又有更多的光子进入传感器
这种不确定性由一个称为光子噪声(Photon Noise)的随机变量来表示, 因此,实际测量值是真实测量值+噪声之和,而此处这个随机可变光子噪声服从泊松分布,它的标准差刚好等于其均值的平方根。光子噪声是光的一个非常基本的属性-无论你的相机有多好,甚至是人眼-每个相机都会经历光子噪声。
当环境光存在时,光子噪声将同时由光源和环境光所贡献
由于阳光强度远远大于光源,因此光子噪声主要来源于阳光:
因此此时整体的信噪比将是很低的:
观察这幅图,可以看到在几乎所有的情况下,太阳光都比3D相机的光源强2-5个数量级。这就是室外3D成像如此具有挑战性的原因
一个经典的解决方案是通过多次拍摄取平均来降低噪声:
当拍摄的图像数量增加时,整体的信噪比也慢慢提升:
这种方法虽然有一定用处,但需要增加拍摄的次数,也就使得系统的实时性降低了。这里面还有一个问题,光源发射的光均匀散布在场景上,使得场景中每一个目标点接受到的光强降低了,因此单次拍摄时其信噪比就更低了:
那么另外一个改进的手段就是从分散的光源改为集中聚焦式的光源,并且把场景分为N个部分,每一次拍摄只拍摄其中一部分,一共还是拍摄N幅图像,那么此时的信噪比将进一步得到提升
和单纯只平均去噪的方法相比,这时候的信噪比提升是非常明显的
如果聚光是好的,为什么我们不把所有的光聚焦到一个点上呢?这是许多商用激光雷达系统所采用的方法。嗯,虽然信号会很高,但是我们必须一次一个点地照亮现场。这种扫描是一个非常缓慢的过程。
当然,另一个极端是平均方法,其中光线散布在整个场景中。正如我们所看到的,为了提升信噪比,需要拍很多幅图像,这也是非常缓慢的。
因此,一些学者就提出,一定有某种优化的光源的分布方式存在,直观地说,最优分布应该足够小,这样我们就不需要做任何平均,也应该足够大,这样我们就不需要做太多的扫描。
威斯康星大学麦迪逊分校的Mohit Gupta教授就提出了这样的表达式:
这里面光源的散布是由一个系统常量 控制的,而且与环境光的强度呈反比,这意味着在室外晴天使用时,因为阳光很强,所以要用更加聚焦的光源。而在夜晚场景使用时,可以相应的增大光源的散布面积,减少拍摄时间提升实时性。
Gupta教授设计了一个这样的原型来解决光源散布的自适应问题,可以通过改变多边形反射镜的旋转速度,来改变其散射面大小:
下面是他们的一些实验成果,这是在一个晴天上午11点拍摄的图像画面,此时的环境光大约是75000 Lux
利用三种方法,在同样的拍摄次数的限制下,可以看到上面提到的自适应方法的效果是最好的
在正午12点(90000 Lux)、下午1点(94000 Lux)时对哥伦比亚大学的重建结果也证实了这个观点,即最好的做法是控制光线的扩散,使其适应环境
我们曾经提到过的O'Toole在2015年的Homogeneous Codes for Energy-Efficient Illumination and Imaging中展示了集中式的主动照明的好处
他和团队设计了这样一种系统:它包含一个低功耗的小型激光投影仪,其发射光强只有30流明,以及一对仔细校准后的卷帘快门相机。还有一个控制器来同步光源和相机:
这样的系统使得可以在很强的环境光下也能够得到高质量的三维重建结果
西北大学计算摄影实验室的成果MC3D: Motion Contrast 3D Laser Scanner将这个原理进一步推进。这个系统中采用了某种特殊的传感器,它只对特定的时域运动变化敏感,而对静态环境光不敏感,这使得它非常接近一个理想的3D相机,因为它的信噪比更高,下面这个视频对比了它和Kinect重建同一个运动物体的结果
三. 总结
到目前为止,你已经看到了像TOF这种主动照明的3D相机在实际使用中面对的几种问题。特别的,你应该理解了为什么在室外使用时 3D相机会面临挑战,以及面对这种挑战最重要的是调整光源分布,调整传感器的感知范围,提升信噪比。
那么,如何解决其他的几个问题呢?这就是我下一篇文章将要介绍的内容,敬请期待
四. 参考资料
这篇文章绝大多数是参考了Mohit Gupta教授在2015年ICCV Tutorial中的课件:Core Challenges Faced by Time-of-Flight Cameras,这份课件最好的地方就是每一页都有老师的演讲稿,在此向老师的开放精神致敬!我们后面的几篇文章也会继续沿着他的思路介绍TOF相机面临的挑战和解决方案。
本文仅做学术分享,如有侵权,请联系删文。
重磅!计算机视觉工坊-学习交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
一文详解3D相机面临的困难问题和解决方案相关推荐
- 3D相机面临的困难问题和解决方案
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨HawkWang 来源丨 计算摄影学 一. 3D相机面临的各种挑战 正如你已经在上一篇文章52. ...
- Python-Matplotlib可视化(10)——一文详解3D统计图的绘制
Python-Matplotlib可视化(10)--一文详解3D统计图的绘制 前言 3D散点图 3D曲线图 3D标量场 绘制3D曲面 在3D坐标轴中绘制2D图形 3D柱形图 系列链接 前言 Matpl ...
- 一文详解鱼眼相机的车位线感知
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文是一篇介绍鱼眼相机做车位线检测的文章,放眼当下泊车功能在智能汽车领域研究的如火如荼,从L ...
- 一文详解深度相机之双目成像
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文通过介绍双目立体视觉的成像过程,带大家了解双目视觉如何从两个不同视角的成像平面中恢复出物 ...
- 一文详解双目相机标定理论
01 前言 双目相机标定,从广义上讲,其实它包含两个部分内容: 两台相机各自误差的标定(单目标定) 两台相机之间相互位置的标定(狭义,双目标定) 在这里我们所说的双目标定是狭义的,讲解理论的时候仅指两 ...
- Python-Matplotlib可视化(1)——一文详解常见统计图的绘制
Python-Matplotlib可视化(1)--一文详解常见统计图的绘制 matplotlib库 曲线图 曲线图的绘制 结合Numpy库,绘制曲线图 绘制多曲线图 读取数据文件绘制曲线图 散点图 条 ...
- OpenCV-Python实战(12)——一文详解AR增强现实
OpenCV-Python实战(12)--一文详解AR增强现实 0. 前言 1. 增强现实简介 2. 基于无标记的增强现实 2.1 特征检测 2.2 特征匹配 2.3 利用特征匹配和单应性计算以查找对 ...
- 一文详解自动驾驶的动态驾驶任务(DDT) | 自动驾驶系列
文章版权所有,未经授权请勿转载或使用 本系列上篇文章<一文详解自动驾驶的运行设计域(ODD)>解读了什么是自动驾驶ODD,本篇文章依据SAE J3016详细解读自动驾驶DDT.DDT fa ...
- 一文详解JavaBean 看这篇就够了
一文详解JavaBean 看这篇就够了 JavaBean的历史渊源 JavaBean的定义(通俗版) JavaBean应用 < jsp:useBean > < jsp:getProp ...
- 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...
最新文章
- 查看tensorflow安装版本
- FreeBSD下安装配置Hadoop集群(三)
- linux ping 报错 sendmsg: Operation not permitted
- 【集合论】Stirling 子集数 ( 斯特林子集数概念 | 放球模型 | Stirling 子集数递推公式 | 划分的二元关系 加细关系 )
- I/O多路复用——select
- lucene源码分析(8)MergeScheduler
- 【论文解读】​YOLOX: Exceeding YOLO Series in 2021
- Vista新特征(Features)(英文)
- AngularJS之watch
- python处理中文字符串_python字符串中的中文处理
- NTFS文件系统的简述
- python url编码_python url编码和解码
- H5 data-* 属性,设置获取方法总结
- 办公搜索利器UTOOLS-基于EVERYTHING的文件快速搜索软件
- 快速解决cmd命令行乱码问题
- Node.js学习笔记(五)——WebSocket
- Towards End-to-End Prosody Transfer for Expressive Speech Synthesis with Tacotron
- 自增约束(auto_increment)
- IIS通过共享文件夹发布aspx程序站点(部分为原创)
- 句法分析(PCFG,Transition-based parsing)