背景
- 对几何3D模型不断增长的需求:电影 游戏 虚拟环境等行业
- VR&AR的火爆
- 房地产 三维地图等领域的需求
应用
- 中国古代建筑三维数字化保护
- 三维数字化城市
- 三维地图
- VR&&AR游戏,电影等
- 医疗行业:三维心脏
- 教育行业等
方法介绍
传统的三维重建主要是依靠昂贵的三维扫描设备,并且需要被扫描的目标保持一段时间的稳定。近年来,由于计算机硬件大规模计算能力的发展,特别是GPU和分布式计算的发展,实时高效的解决方案成为了可能。目前主流的方法主要分为以下两类:
- 基于深度相机的三维重建
- 基于图像的三维重建
基于深度相机的三维重建
深度相机
原理 主要有以下三种:
- 结构光,这个技术的代表产品是 Kinect 一代,它的传感器芯片用的是 PrimeSense 家的。PrimeSense 现在是苹果旗下的公司。
- TOF,time-of-flight,代表产品是 Kinect 二代,由于微软对于 One 这个单词的热爱,它的官方名字是 Kinect One。
- 双目摄像头,代表产品是 Google Tango 以及 Leap Motion,前者配有四台摄像头,后者有两个
主要设备有Kinect, ASUS Xtion PRO等
Kinect 1代与kinect 2代比较
- Kinect v1对应Xbox 360, Kinect v2对应Xbox One
- Kinect v1,彩色摄像头为640480,深度摄像头为320240,只能识别两个人的骨骼数据。
- Kinect v2,彩色为1080P,深度摄像头为512*424,能识别六个人的骨骼,并且识别稳定精度高。有红外线感应,1代没有
- 功能(2代): 通过人体骨骼追踪识别与跟踪运动人群,手势识别,面部追踪,目标测距;语音识别,声源定位
目前基于深度相机进行三维重建的工作有很多,最经典的应该属微软剑桥研究院的Kinect Fusion, 2011, 微软有自己的SDK, 注意一代和二代的原理有很大的不同,分别下载对应的SDK,目前对Kinect 2代的支持还不是特别好,它对硬件也有一定的要求(特别是USB3.0接口):
当然,开源社区也有许多基于Kinect Fusion的开源实现,如由PCL团队开发的KinFu,论文在这里。高通公司nullspace的开源项目kfusion, 但是个人觉得目前效果最好的,应该要属Kintinuous,Real-time large scale dense visual SLAM system了。不过Kintinuous对kinect 2代的支持效果还不好,目前Kinect 1代和华硕的Xtion支持比较好(可能和他们都是PrimeSense的TOF原理有关吧)
基于图像的三维重建(3D Reconstruction from multiple Images)
关键点 实时要求/室内场景/大范围场景/点云精确度要求
由于基于深度相机(RGB-D)会受到红外距离的限制,如kinect支持的距离为0.5-5m,而且容易产生空洞(holes),所以比较适合室内场景,目前应用最多的是机器人Visual SLAM方面。但是从三维重建的实际应用角度来看,不够方便(主要是Kinect需要使用外接电源,而且需要连接电脑),目前工业界用的最多的方法应该是基于图像的三维几何重建了,其主要步骤包括局部特征匹配,Structure-from-Motion, Multi-View Stereo, Surface Reconstruction,Surface Texturing 等。
这种方法主要需要解决的问题是判断相机的姿态(位置和方向),这点和Visual SLAM比较类似。
通过对照片特征的检测与匹配,得到相机的姿态,并计算出稀疏的场景三维点云。
目前比较好的算法主要有:
- [VisualSFM](http://ccwu.me/vsfm/)
- OpenMVG
- 经典的Bundler
- MVE
目前已知的研究小组有:#
百度深度学习研究院
中科院自动化所模式识别国重机器视觉课题组
美国明德学院(Middlebury college)
香港科技大学
德国达姆施塔特工业大学MVE
OpenMVG
一些资料收藏
参考文献#
3D Photography Gallery
wedidstuff
基于图像的三维重建是我的研究重点,接下来将会对具体的技术,如特征提取算法,稀疏重建,立体匹配与重建,表面重建等分别说明。
如果上面有什么不对的地方,欢迎大家指教。