admin管理员组文章数量:1622542
3D信息采集常使用移动测绘系统(Mobile Mapping System),MMS包括移动激光扫描系统和数码相机。移动激光扫描系统主要由激光扫描仪和惯性导航系统组成,用于测量点的三维坐标和激光反射强度;数码相机用于测量点的三维坐标和颜色信息。根据移动激光扫描系统和数码相机采集的数据可以得到点云数据,包括三维坐标、激光反射强度、颜色信息。
车载装置上装有雷达和GPS/IMU,雷达可以获取车载装置到扫描点的距离与偏角,这样就可以得到扫描点在GPS坐标系中的三维坐标,而雷达与GPS都在车载上,两者的相对位置固定,于是又可以将点的GPS坐标系中的坐标转换为雷达坐标系中的坐标,而雷达坐标系是可以转化为大地坐标系的,这样每个扫描点在GPS坐标系中的坐标就转换为大地坐标系中的坐标。为了便于处理,再将大地坐标系中的坐标转换为本地坐标系中的坐标,事实上点云文件中的三维坐标指的是本地坐标系中的坐标。
3D建模的原理
3D建模的过程实际上是一个三维重建过程,这个过程包括点云数据预处理、分割、三角网格化、网格渲染。
由于激光扫描获取的数据中常常伴有杂点或噪声,影响了后续的处理,因此为了获取完整的模型,需要对点云数据进行一定的预处理,常用的方法有滤波去噪、数据精简、数据插补等。
分割是指将整个点云聚类为多个点云,每个点云对应独立的物体对象。分割算法大体上是先选定一个点,利用kd树计算以该点为中心的球,球内的点都属于该物体,球的半径设为一个阈值,之后遍历该物体的其他点都这么处理,最终会将点云分割成一个一个的物体。
为了便于后续的网格渲染,需要提前将点云进行三角网格化,采用的算法通常是凸包或凹包算法。
以上几步基本上已经得出了点云的空间拓扑结构,要得到逼真的物体,还需要网格渲染。网格渲染主要为纹理映射,就是将数码相机中的图像望网格上贴。
经过以上几步就完成了整个3D建模。
PCL库
PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。
PCL是一个模块化的C++模板库,其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
libpcl filters:如采样、去除离群点、特征提取、拟合估计等数据实现过滤器;
libpcl features:实现多种三维特征,如曲面法线、曲率、边界点估计、矩不变量、主曲率,PFH和FPFH特征,旋转图像、积分图像,NARF描述子,RIFT,相对标准偏差,数据强度的筛选等等;
libpcl I/O:实现数据的输入和输出操作,例如点云数据文件(PCD)的读写;
libpcl segmentation:实现聚类提取,如通过采样一致性方法对一系列参数模型(如平面、柱面、球面、直线等)进行模型拟合点云分割提取,提取多边形棱镜内部点云等等;
libpcl surface:实现表面重建技术,如网格重建、凸包重建、移动最小二乘法平滑等;
libpcl register:实现点云配准方法,如ICP等;
libpclkeypoints:实现不同的关键点的提取方法,这可以用来作为预处理步骤,决定在哪儿提取特征描述符;
libpcl range :实现支持不同点云数据集生成的范围图像。
利用PCL编程,通常需要以下几步:
创建处理对象:(例如过滤、特征估计、分割等);
使用setInputCloud通过输入点云数据,处理模块;
设置算法相关参数;
调用计算(或过滤、分割等)得到输出。
书籍:
《计算机视觉中的多视几何》(Muiltiple View Geometry,简称MVG) (Richard Hartley 韦穗<译>)
文献:
·Sift 特征点检测
[1] Distinctive Image Features from Scale-Invariant Keypoints
·增量 SFM
[2] Photo Tourism Exploring Photo Collections in 3D
[3] Structure-from-Motion Revisited
·稠密匹配&&多视角立体视觉
[4] Multi-View Stereo for Community Photo Collections
·表面重建
[5] Reconstruction and Representation of 3D Objects with Radial Basis
·纹理贴图
[6] Let it be color! Large-Scale Texturing of 3D Reconstructions
3) 下面是比较著名的开源系统:
·MVE:
https://www.gcc.tu-darmstadt.de/home/proj/mve/index.en.jsp
·Bundler:
http://www.cs.cornell.edu/~snavely/bundler/
·VisualSFM:
http://ccwu.me/vsfm/
·openMVG:
https://openmvg.readthedocs.io/en/latest/software/SfM/SfM/
·ColMap:
https://demuc.de/colmap/
Source and Executable Download:
http://www.cs.jhu.edu/~misha/Code/
4) 相关开源代码
COLMAP - Structure-from-Motion and Multi-View Stereo:
https://github/colmap/colmap
Multi-View Environment:
https://github/simonfuhrmann/mve
Algorithm to texture 3D reconstructions from multi-view stereo images:
https://github/nmoehrle/mvs-texturing
SFMedu: A Matlab-based Structure-from-Motion System for Education:
https://github/jianxiongxiao/SFMedu
本文标签: 原理
版权声明:本文标题:点云三维重建有关原理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728872043a1177378.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论