相关学习资料以下:html
cousera课程: https://www.coursera.org/learn/robotics-perceptiongit
youtube课程: https://www.youtube.com/watch?v=RDkwklFGMfogithub
Tutorial: https://www.cse.wustl.edu/~furukawa/papers/fnt_mvs.pdf算法
分清楚 3D 重建 vs. 3D 建模 网络
这里通常指的是用多张2D图片加上额外的信息,进行重建 3D架构
@知乎问题:三维重建 3D reconstruction有哪些使用算法app
如下为知乎中的相关回答iview
用一组图片来作3D reconstruction须要的算法: SFM(Structure from motion),也就是从时间系列的2D图像中推算3D信息。iphone
使用这种方法的软件有: Pix4Dmapper, Autodesk 123D Catch, PhotoModeler, VisualSFM机器学习
大多数三维重建的数据源是RGB图像,或者RGBD这种带有图像深度信息的图像(用kinect之类的特殊特备拍出来的)。
SFM是最经典的三维重建方案:
1.特征提取(SIFT, SURF, FAST等一堆方法)
2.配准(主流是RANSAC和它的改进版)
3.全局优化bundle adjustment 用来估计相机参数
4.数据融合
SFM算法是一种基于各类收集到的无序图片进行三维重建的离线算法。在进行核心的算法structure-from-motion以前须要一些准备工做,挑选出合适的图片。
三维重构算法得看试用的是什么传感器,若是是双目相机,通常是极线几何加视觉特征配准的算法,优化就是bundle adjustment; 若是是单目相机,较早的有PTAM,DTAM,, 近几年就是SFM比较火,若是是Kinect之类的RGBD相机,比较好的就是微软的KinectFusion, PCL的开源KinFu,以及MIT增强版Kintinuous; 若是是用激光,通常就是SLAM作了。
基于rgb单目主要就是基于multiview geometry(SFM) ,比较经典的是DTAM和微软的monofusion, 缺点是无法作稍大场景的重建以及重建精度不高。
双目的话就认为是rgbd相机的重建,底层能够获得深度图的原理就是结构光,双目,激光,或者tof(结构光方法适合室内高精度重建,商业产品较多, sfm方法比结构光方法更方便,无需事先标定相机,但精度差些,不少无人机对大型建筑建模就是用的sfm方法)
@ 知乎-刘锐
参考文章 : https://zhuanlan.zhihu.com/p/30445504
3D重构算法能够描述为当给定某个物体或场景的一组照片时,在一些假定条件下,好比物体材料,观测视角和光照环境等,经过估计一个最类似的3D shape来解释这组照片。一个完整的3D重构流程一般包含如下几个步骤:
1. 收集场景图片
2. 计算每张图片的相机参数
3. 经过图组来重构场景的3D shape以及对应的相机参数
4. 有选择的重构场景的材料等
最核心步骤就是第三步: 3D shape的重构算法
常规的3D shape representation主要有四种: 深度图(depth), 点云(point cloud), 体素(voxel), 网格(mesh)
今年来也出现了不少基于deep learning的方法:
David Eigen NIPS2014: Depth Map Prediction from a Single Image using a Multi-Scale Deep Network
Fayao Liu CVPR2015 Deep Convolutional Neural Fields for Depth Estimation from a Single Image
这两篇论文都是利用CNN网络结构预测 a single image与其对应的depth map之间的关系。
可是depth image还不足以解释重构原始input的信息,它只能做为3D scene understanding的一个辅助信息。因此开始研究利用一组二维图来重构3D点云图或voxel以及mesh图。
基于deep learning的3D点云和mesh重构是较难以实施的,由于DL学习一个物体完整的架构须要大量数据的支持。而后传统的3D模型是由vertices和trangulation mesh组成的,所以不同的data size形成了training的困难。因此后续你们都用voxelization(Voxel)的方法把全部CAD model转成binary voxel模式(有值为1, 空缺为0)这样保证了每一个模型都是相同的大小。最近的一篇论文: Choy ECCV2016: 3D-R2N2:A Unified Approach for Single and Multi-view 3D Object Reconstruction
采用深度学习从2D图像到其对应的3D voxel模型的映射:首先利用一个标准的CNN结构对原始input image进行编码,而后用Deconv进行解码,最后用3D LSTM的每一个单元重构output voxel.
3D voxel是三维的,它的resolution成指数增加,因此它的计算相对复杂,目前的工做主要采用32*32*3如下的分辨率以防止过多的占用内存。可是也使得最终重构的3D model分辨率并不高。因此科研道路道阻且长。
mesh和point cloud是不规则的几何数据形式,所以直接使用CNN是不可行的。可是能够考虑将3D mesh data转化成graphs形式,再对3D曲面上的2D参数进行卷积。具体有Spatial construction(Geodesic CNN)和Spectral construction(Spectral CNN)
基于point cloud的方法,看Hao Su的CVPR2017论文 PointNet: Deep learning on Point Sets for 3D Classification and Segmentation以及 A Point Set Generation Network for 3D Object Reconstruction from a Single Image.
基于mesh和point cloud的方法总的来说数学东西多,并且细节回复上效果欠佳。不过能够考虑voxel来提升重构精度。
@ 知乎问题:计算机图形学与机器学习(深度学习)怎么结合起来?
如下为MSRA相关回答
随着深度学习尤为是卷积神经网络(CNN)这一利器在各领域里的卓越表现,如何将CNN运用到三维数据上成为计算机视觉和图形学一个焦点课题。
因为Kinect设备的低精度,三维网格存在着大量的噪声。如图(b)
去噪问题本质上是求解一个病态的逆问题:在噪声的类型和程度未知、真实模型的几何特性未知的前提下,若是要把噪声从输入中完美剥离,必然须要引入各类假设来辅助求解。
真实噪声是与数据以及设备相关的,简单的噪声模型不可能刻画出真实的噪声。
忽略真实数据去研发一个放之四海而皆准的去噪算法是不可行的。噪声来自数据,咱们应该从数据中探究其中的奥秘。咱们的工做也体现了数据的威力.Siggraph Asia 2016发表的文章,Mesh Denoising via Cascaded Normal Regression
ToF是测飞行时间,Time of Flight, 最开始求取深度的,是激光雷达,可是成本很高,军用较多
TOF是3D深度摄像技术中的一种方案。目前主流的3D深度摄像方案有三种: 结构光,TOF, 双目成像
双目测距成像由于效率低,算法难,精度差,容易受到环境因素干扰;TOF方案一样有精度缺陷,传感器体积小型化后对分辨率赢你选哪一个很大。
3D视觉做为一项激动人心的新技术,早已经出如今微软Kinect、英特尔RealSense等消费级产品中。近几年,随着硬件端技术的不断进步,算法与软件层面的不断优化,3D深度视觉的精度和实用性获得大幅提高,使得“3D深度相机+手势/人脸识别”具有了大规模进入移动智能终端的基础。做为全球手机当之无愧的龙头,苹果率先大规模采用3D视觉技术,将完全激活3D视觉市场,开启全新时代。
3D视觉技术不只仅在识别精度方面大幅提高,更重要的是打开了更加广阔的人工智能应用空间。随着机器视觉、人工智能、人机交互等科学技术的发展,各类高智能机器人开始走进现实,3D视觉技术成为助力制造业实现“智能化”转型的好帮手。
你们耳熟能详的深度摄像头技术和应用有英特尔的RealSense、微软的 Kinect、苹果的 PrimeSense、以及谷歌的Project Tango等。不过能够看到这一技术的研究和开发多为国外公司,国内计算视觉方面的公司或创业团队屈指可数,技术上的壁垒依旧较大。
关于目前市场上的深度相机的技术方案主要有如下三种: 双目被动视觉、结构光、TOF。 双目被动视觉主要是利用两个光学摄像头,经过左右立体像对匹配后,再通过三角测量法来获得深度信息。此算法复杂度高,难度很大,处理芯片须要很高的计算性能,同时它也继承了普通RGB摄像头的缺点:在昏暗环境下以及特征不明显的状况下并不适用。
结构光的原理是经过红外激光发射相对随机但又固定的斑点图案,这些光斑打在物体上后,由于与摄像头距离不一样,被摄像头捕捉到的位置也不尽相同。而后先计算拍到的图的斑点与标定的标准图案在不一样位置的位移,引入摄像头位置、传感器大小等参数计算出物体与摄像头的距离。
微软在Kinect二代采用的是ToF的技术。ToF是Time of flight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是经过给目标连续发送光脉冲,而后用传感器接收从物体返回的光,经过探测光脉冲的飞行(往返)时间来获得目标物距离。相比之下,结构光技术的优点是比ToF更加成熟,成本更低,更加适合用在手机等移动设备上。
深度摄像头是全部须要三维视觉设备的必需模块,有了它,设备就可以实时获取周围环境物体三维尺寸和深度信息,更全面的读懂世界。深度摄像头给室内导航与定位、避障、动做捕捉、三维扫描建模等应用提供了基础的技术支持,成为现今行业研究热点。现在iPhone X搭载3D深度摄像头势必会大力推进机器视觉领域的发展,助力机器人产业实现完美“智能化转型”