该如何学习三维点云配准的相关知识?
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
知乎用户
上海交通大学 电子与信息博士在读
点云配准综述
本文意在为点云配准初学者,提供一份系统的初学指南。
版权声明:本文作者 @木易早早
编辑 @白小鱼 来源:知乎
一、点云配准基础知识
1.入门知识及背景
1)点云概念
点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。
2)点云图像是最基础也是最常见的三维图像。
那什么是三维图像呢?三维图像是一种特殊的图像信息表达形式。相比较于常见的二维图像,其最大的特征是表达了空间中三个维度(长度宽度和深度)的数据。
3)三维图像的表现形式
深度图(以灰度表达物体与相机的距离),几何模型(由CAD软件建立),点云模型(所有逆向工程设备都将物体采样成点云)。
4)点云根据测量原理主要分为两种
根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity)。强度信息与目标的表面材质、粗糙度、入射角方向,以及仪器的发射能量,激光波长有关。
根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB)。
当然也有把激光和摄影相结合在一起的(多传感器融合技术),这种结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。
本次的文章主要讲的是基于摄像技术的点云配准。
5)点云的获取设备
RGBD设备(深度摄像机)是可以获取点云的设备。比如PrimeSense公司的PrimeSensor、微软的Kinect、华硕的XTionPRO。
6)点云的属性
空间分辨率、点位精度、表面法向量等。
7)点云存储格式
.pts; .asc ; *.dat; .stl ; [1] .imw;.xyz;.las。
8)点云的数据类型
(1)pcl::PointCloudpcl::PointXYZ
PointXYZ 成员:float x,y,z;表示了xyz3D信息,可以通过points[i].data[0]或points[i].x访问点X的坐标值
(2)pcl::PointCloudpcl::PointXYZI
PointXYZI成员:float x, y, z, intensity; 表示XYZ信息加上强度信息的类型。
(3)pcl::PointCloudpcl::PointXYZRGB
PointXYZRGB 成员:float x,y,z,rgb; 表示XYZ信息加上RGB信息,RGB存储为一个float。
(4)pcl::PointCloudpcl::PointXYZRGBA
PointXYZRGBA 成员:float x , y, z; uint32_t rgba; 表示XYZ信息加上RGBA信息,RGBA用32bit的int型存储的。
(5) PointXY 成员:float x,y;简单的二维x-y点结构
(6)Normal结构体:
表示给定点所在样本曲面上的法线方向,以及对应曲率的测量值,用第四个元素来占位,兼容SSE和高效计算
9)点云处理的三个层次
一般将图像处理分为三个层次,低层次包括图像强化,滤波,关键点/边缘检测等基本操作。中层次包括连通域标记(label),图像分割等操作。高层次包括物体识别,场景分析等操作。工程中的任务往往需要用到多个层次的图像处理手段。
PCL官网对点云处理方法给出了较为明晰的层次划分:
低层次处理方法
①滤波方法:双边滤波、高斯滤波、条件滤波、直通滤波、随机采样一致性滤波。②关键点:ISS3D、Harris3D、NARF,SIFT3D
中层次处理方法
①特征描述:法线和曲率的计算、特征值分析、SHOT、PFH、FPFH、3D Shape Context、Spin Image
②分割与分类:
分割:区域生长、Ransac线面提取、全局优化平面提取
K-Means、Normalize Cut(Context based)
3D Hough Transform(线、面提取)、连通分析
分类:基于点的分类,基于分割的分类,基于深度学习的分类(PointNet,OctNet)
高层次处理方法
①配准
点云配准分为粗配准(Coarse Registration)和精配准(Fine Registration)两个阶段。
精配准的目的是在粗配准的基础上让点云之间的空间位置差别最小化。应用最为广泛的精配准算法应该是ICP以及ICP的各种变种(稳健ICP、point to plane ICP、Point to line ICP、MBICP、GICP、NICP)。
粗配准是指在点云相对位姿完全未知的情况下对点云进行配准,可以为精配准提供良好的初始值。当前较为普遍的点云自动粗配准算法包括基于穷举搜索的配准算法和基于特征匹配的配准算法。
基于穷举搜索的配准算法:
遍历整个变换空间以选取使误差函数最小化的变换关系或者列举出使最多点对满足的变换关系。如RANSAC配准算法、四点一致集配准算法(4-Point Congruent Set, 4PCS)、Super4PCS算法等……
基于特征匹配的配准算法:
通过被测物体本身所具备的形态特性构建点云间的匹配对应,然后采用相关算法对变换关系进行估计。如基于点FPFH特征的SAC-IA、FGR等算法、基于点SHOT特征的AO算法以及基于线特征的ICL等…
②SLAM图优化
Ceres(Google的最小二乘优化库,很强大), g2o、LUM、ELCH、Toro、SPA
SLAM方法:ICP、MBICP、IDC、likehood Field、NDT
③三维重建
泊松重建、 Delaunay triangulations、表面重建,人体重建,建筑物重建,树木重建。结构化重建:不是简单的构建一个Mesh网格,而是为场景进行分割,为场景结构赋予语义信息。场景结构有层次之分,在几何层次就是点线面。实时重建:重建植被或者农作物的4D(3D+时间)生长态势;人体姿势识别;表情识别;
④点云数据管理
点云压缩,点云索引(KD、Octree),点云LOD(金字塔),海量点云的渲染。
参考博客:blog.csdn.net/hongju_ta
10)点云配准在三维重建中的应用
以上是关于点云配准的最最基础的知识,其他专业的知识请参见一下其他博客。
1. 关于三维计算机视觉的研究内容
cnblogs.com/yhlx125/p/4
2. 关于点云数据处理方法
(三维计算机视觉中点云数据处理面对的问题,主要方法和技术,概述其特点。)
blog.csdn.net/pdw521/ar
二、书籍和文献
书籍
由于纯粹的点云配准技术发展的并不是很成熟,所以关于点云配准的书籍目前很少,我了解的书籍只有一本国防工业出版社的《点云数据配准及曲面细分技术》讲解了点云配准的相关技术,但主要内容稍显过时,适合没有基础的小白看看,参考意义不多。
笔者主要还是从博客和硕士博士论文中学习
文献
朱琛琛. 基于ICP算法的点云配准研究[D]. 2019.(注:基于摄像技术的点云配准)
点云配准若干问题研究[D].2018. (注:基于雷达激光的点云配准)
Besl P J , Mckay H D . A method for registration of 3-D shapes[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1992, 14(2):0-256.
Aiger D , Mitra N J , Cohen-Or D . 4-points congruent sets for robust pairwise surface registration[J]. ACM Transactions on Graphics, 2008, 27(3):1.
Automatic registration of large-scale urban scene point clouds based on semantic feature points[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2016, 113:43-58.
三、课程与博客
1)点云配准算法的说明与流程介绍:
blog.csdn.net/Ha_ku/art
2)几种点云配准算法的方法的介绍与比较:
blog.csdn.net/weixin_43
3)三维点云用机器学习的方法进行处理:
blog.csdn.net/u01463624
4)以一个例子详细介绍了点云配准的过程:
zhihu.com/question/3417
四、数据集
The Stanford 3D Scanning Repository(斯坦福大学的3d扫描存储库)
链接:graphics.stanford.edu/d
这应该是做点云数据最初大家用最多的数据集,其中包含最开始做配准的Bunny、Happy Buddha、Dragon等模型。
Shapenet
ShapeNet是一个丰富标注的大规模点云数据集,其中包含了55中常见的物品类别和513000个三维模型。
The KITTI Vision Benchmark Suite
链接:cvlibs.net/datasets/kit
这个数据集来自德国卡尔斯鲁厄理工学院的一个项目,其中包含了利用KIT的无人车平台采集的大量城市环境的点云数据集(KITTI),这个数据集不仅有雷达、图像、GPS、INS的数据,而且有经过人工标记的分割跟踪结果,可以用来客观的评价大范围三维建模和精细分类的效果和性能。
Robotic 3D Scan Repository
链接:kos.informatik.uni-osnabrueck.de
这个数据集比较适合做SLAM研究,包含了大量的Riegl和Velodyne雷达数据
佐治亚理工大型几何模型数据集
链接:cc.gatech.edu/projects/
PASCAL3D+
链接:cvgl.stanford.edu/proje
包含了12中刚体分类,每一类超过了3000个实例。并且包含了对应的imageNet中每一类的图像。
其他总结
链接:github.com/timzhang642/
五、开源工具
MeshLab
简介:是一款开源、可移植和可扩展的三维几何处理系统。主要用于处理和编辑3D三角网格,它提供了一组用于编辑、清理、修复、检查、渲染、纹理化和转换网格的工具。提供了处理由3D数字化工具/设备生成的原始数据以及3D打印功能,功能全面而且丰富。MeshLab支持多数市面上常见的操作系统,包括Windows、Linux及Mac OS X,支持输入/输出的文件格式有:STL 、OBJ 、 VRML2.0、U3D、X3D、COLLADA MeshLab可用于各种学术和研究环境,如微生物学、文化遗产及表面重建等。
ICP开源库
1) SLAM6D
链接:slam6d.sourceforge.net/
2) Libicp
链接:http://www.cvlibs.net/software/libicp/
3) libpointmatcher
链接:https://github.com/ethz-asl/libpointmatcher
4)g-icp
链接:https://github.com/avsegal/gicp
5)n-icp
链接:http://jacoposerafin.com/nicp/
六、学术会议与期刊
点云配准主要应用于工业制造业的逆向工程、古文物修复、医学三维图像构建等领域。研究内容是属于计算机视觉领域的研究范畴。国际上的会议如计算机视觉三大顶会ICCV、CVPR、ECCV等都会有相关技术,除此之外,还有ACCV、BMVC、SSVM等认可度也比较高。
期刊的话,IEEE旗下的TPAMI,TIP等,还有SIAM Journal Image Sciences,Springer那边有IJCV。
本文仅做学术分享,如有侵权,请联系删文。
好消息!
小白学视觉知识星球
开始面向外开放啦
该如何学习三维点云配准的相关知识?相关推荐
- CVPR2020:端到端学习三维点云的局部多视图描述符
CVPR2020:端到端学习三维点云的局部多视图描述符 End-to-End Learning Local Multi-View Descriptors for 3D Point Clouds 论文地 ...
- CVPR2020:训练多视图三维点云配准
CVPR2020:训练多视图三维点云配准 Learning Multiview 3D Point Cloud Registration 源代码和预训练模型:https://github.com/zgo ...
- 快速精确的体素GICP三维点云配准算法
标题:Voxelized GICP for Fast and Accurate 3D Point Cloud Registration 作者:Kenji Koide, Masashi Yokozuka ...
- 基于深度学习的点云配准Benchmark
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨千百度@知乎 来源丨https://zhuanlan.zhihu.com/p/289620126 ...
- 学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等)
这篇文章主要介绍了学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rails等),需要的朋友可以参考下 Ruby 这个就不用多说了 RVM 用于帮你安装Ruby环境, ...
- 如何更高效、系统地学习三维点云原理与方法?
写在前面 感谢大家的一路陪伴与支持,这里赠送一张「3D视觉从入门到精通」知识星球优惠券,有效期两天,有需要的童鞋可以自取. 三维点云是计算机视觉领域的重要技术之一,其在三维重建.SLAM.语义分割.3 ...
- 干货 | 三维点云配准:ICP 算法原理及推导
编者荐语 点云配准可以分为粗配准(Coarse Registration)和精配准(Fine Registration)两步.粗配准指的是在两幅点云之间的变换完全未知的情况下进行较为粗糙的配准,目的主 ...
- 三维点云配准是什么意思
对同一个物体进行多次扫描后,会有多个点云数据,然后将两个数据中同一点的点云进行匹配,也就是将两幅点云中相同点的点云放在一起即点云配准
- 【Python之pymysql库学习】二.游标cursor的相关知识(保姆级图文+实现代码)
目录 读取的数据类型 读取的数据转为字典类型效果 读取的数据转为字典类型实现思路 读取的数据转为字典类型实现代码 关于游标的重置 总结 欢迎关注 『Python之pymysql库学习』 系列,持续更新 ...
最新文章
- B树、B+树、AVL树、红黑树
- markdown分享
- SOA架构下的人事信息管理系统的构建与分析
- centos7 yum 安装lnmp
- delphi中指针的用法
- CompletableFuture详解~anyOf
- SQLServer 系统数据库
- 从使用 KVO 监听 readonly 属性说起
- 音视频开发(9)--视频编解码的理论和实践
- html5中的web worker的用法
- 【课本】【No.3】随机向量定义、联合分布函数、边缘分布、统计特征的分布函数的差分,独立性、离散型条件分布列,连续型分布函数与密度函数、随机向量的函数分布
- keySet和entrySet效率比较
- 破解安装IAR编辑器
- 使用Rider和Emmylua进行UnLua配置
- 洛谷P4568 飞行路线
- 【JavaWeb】书城项目之与数据库交互的登录案例实现
- 【安全】漏洞挖掘之王的传奇人生
- stm32f407zgt6的2.2LCD实例1.2:LCD屏幕程序讲解之LCD驱动底层代码
- H5网页开发新手入门-H5网页如何适应不同手机屏幕分辨率?
- 【MyBatis-Plus】实现字段自动填充功能