本文基于如下知乎文章,调整部分内容整理输出,一为梳理基础知识,二为致敬原作。

作者:Mr.苍雪
链接:https://zhuanlan.zhihu.com/p/344635951
来源:知乎
3D点云基础知识 - 知乎

  1. 3D图像描述
  2. RGB-D
  3. 点云
  4. 何为点云?
  5. 点云的获取
  6. 点云的内容
  7. 点云的属性
  8. 点云目前的主要存储格式包括:pts、LAS、PCD、.xyz 和. pcap 等
  9. 相应基础算法库对不同格式的支持
  10. 三维点云有多种表示方法
  11. 相比于图像数据,点云不直接包含空间结构,因此点云的深度模型必须解决三个主要问题
  12. DataSets
  13. Metric
  14. 基于点云的分类
  15. 基于点云的分割
  16. 基于点云的目标检测
  17. 点云数据的增强和完整化

三维图像是在二维彩色图像的基础上又多了一个维度,即深度(Depth,D),可用一个很直观的公式表示为:

三维图像 = 普通的 RGB 三通道彩色图像 + Depth Map。

1、3D图像描述:

  • 第一种分法:

    • 多边形网格
    • 基于体素的描述
    • 点云
    • 隐式表面
    • 基于视图的描述
  • 第二种分法:
    • 深度图像(depth images)
    • 点云
    • 网格(meshes)
    • 体积网格(volumetric grids)

2、RGB-D

RGB-D 是广泛使用的 3D 格式,其图像每个像素都有四个属性:即红(R)、绿(G)、蓝(B)和深度(D)。

在一般的基于像素的图像中,我们可以通过(x,y)坐标定位任何像素,分别获得三种颜色属性(R,G,B)。而在 RGB-D 图像中,每个(x,y)坐标将对应于四个属性(深度 D,R,G,B)。

3、点云

我们在做 3D 视觉的时候,处理的主要是点云,点云就是一些点的集合。相对于图像,点云有其不可替代的优势——深度,也就是说三维点云直接提供了三维空间的数据,而图像则需要通过透视几何来反推三维数据。

4、何为点云?

  • 其实点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。点云在组成特点上分为两种,一种是有序点云,一种是无序点云

    • 有序点云:一般由深度图还原的点云,有序点云按照图方阵一行一行的,从左上角到右下角排列,当然其中有一些无效点。有序点云按顺序排列,可以很容易的找到它的相邻点信息。有序点云在某些处理的时候还是很便利的,但是很多情况下是无法获取有序点云的。
    • 无序点云:无序点云就是其中的点的集合,点排列之间没有任何顺序,点的顺序交换后没有任何影响。是比较普遍的点云形式,有序点云也可看做无序点云来处理。

5、点云表示的优点:

  • 点云表示保留了三维空间中原始的几何信息,不进行离散化

6、点云当前面临的挑战:

  • 数据集规模小
  • 高维性
  • 3维点云的非建构化特性

7、点云的获取:

  • 点云不是通过普通的相机拍摄得到的,一般是通过三维成像传感器获得,比如双目相机三维扫描仪RGB-D 相机等。
  • 目前主流的 RGB-D 相机微软的 Kinect 系列Intel 的 realsense 系列structure sensor(需结合 iPad 使用)等。
  • 点云可通过扫描的 RGB-D 图像,以及扫描相机的内在参数创建点云,方法是通过相机校准,使用相机内在参数计算真实世界的点(x,y,z)。
  • 因此,RGB-D 图像是网格对齐的图像,而点云则是更稀疏的结构。此外,获得点云的较好方法还包括 LiDAR 激光探测与测量,主要通过星载机载地面三种方式获取。

8、点云的内容:

  • 根据激光测量原理得到的点云,包括三维坐标(XYZ)和激光反射强度(Intensity),强度信息与目标的表面材质、粗糙度、入射角方向以及仪器的发射能量、激光波长有关。
  • 根据摄影测量原理得到的点云,包括三维坐标(XYZ)和颜色信息(RGB)。
  • 结合激光测量和摄影测量原理得到点云,包括三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。

9、点云的属性:

  • 空间分辨率点位精度表面法向量等。
  • 点云可以表达物体的空间轮廓和具体位置,我们能看到街道、房屋的形状,物体距离摄像机的距离也是可知的;
  • 其次,点云本身和视角无关,可以任意旋转,从不同角度和方向观察一个点云,而且不同的点云只要在同一个坐标系下就可以直接融合。

10、点云目前的主要存储格式包括:pts、LAS、PCD、.xyz 和. pcap 等

  • .pts 点云文件格式是最简便的点云格式,直接按 XYZ 顺序存储点云数据, 可以是整型或者浮点型

  • LAS激光雷达数据(LiDAR),存储格式比 pts 复杂,旨在提供一种开放的格式标准,允许不同的硬件和软件提供商输出可互操作的统一格式。LAS 格式点云截图,其中 C:class(所属类),F:flight(航线号),T:time(GPS 时间),I:intensity(回波强度),R:return(第几次回波),N:number of return(回波次数),A:scan angle(扫描角),RGB:red green blue(RGB 颜色值)。

  • PCD 存储格式,现有的文件结构因本身组成的原因不支持由 PCL 库(后文会进行介绍)引进 n 维点类型机制处理过程中的某些扩展,而 PCD 文件格式能够很好地补足这一点。PCD 格式具有文件头,用于描绘点云的整体信息:定义数字的可读头、尺寸、点云的维数和数据类型;一种数据段,可以是 ASCII 码或二进制码。数据本体部分由点的笛卡尔坐标构成,文本模式下以空格做分隔符。

    • PCD 存储格式是 PCL 库官方指定格式,典型的为点云量身定制的格式。优点是支持 n 维点类型扩展机制,能够更好地发挥 PCL 库的点云处理性能。文件格式有文本和二进制两种格式。

  • .xyz  一种文本格式,前面 3 个数字表示点坐标,后面 3 个数字是点的法向量,数字间以空格分隔。

  • .pcap 是一种通用的数据流格式,现在流行的 Velodyne 公司出品的激光雷达默认采集数据文件格式(厂商格式)。它是一种二进制文件

  • obj是一种文本文件,通常用以“#”开头的注释行作为文件头,数据部分每一行的开头关键字代表该行数据所表示的几何和模型元素,以空格做数据分隔符

11、相应基础算法库对不同格式的支持

  • PCL(Point Cloud Library)库支持跨平台存储,可以在 Windows、Linux、macOS、iOS、Android 上部署。可应用于计算资源有限或者内存有限的应用场景,是一个大型跨平台开源 C++ 编程库,它实现了大量点云相关的通用算法和高效数据结构,其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等操作,非常方便移动端开发。
  • VCG 库(Visulization and Computer Graphics Libary)是专门为处理三角网格而设计的,该库很大,且提供了许多先进的处理网格的功能,以及比较少的点云处理功能。
  • CGAL(Computational Geometry Algorithms Library)计算几何算法库,设计目标是以 C++ 库的形式,提供方便、高效、可靠的几何算法,其实现了很多处理点云以及处理网格的算法。
  • Open3D 是一个可以支持 3D 数据处理软件快速开发开源库。支持快速开发处理 3D 数据的软件。Open3D 前端在 C++Python 中公开了一组精心选择的数据结构和算法。后端经过高度优化,并设置为并行化。Open3D 是从一开始就开发出来的,带有很少的、经过仔细考虑的依赖项。它可以在不同的平台上设置,并且可以从源代码进行最小的编译。代码干净,样式一致,并通过清晰的代码审查机制进行维护。在点云、网格、rgbd 数据上都有支持。

本作新增:

  • Halcon 经实例测试,将xyz坐标提取,直接通过gen_object_model_3d_from_points (X, Y, Z, ObjectModel3D) 输出为halcon的3D默认格式om3。read_object_model_3d — Read a 3D object model from a file。

    • The operator supports the following file formats::

      • om3:HALCON format for 3D object model. Files with this format can be written by write_object_model_3d. The default file extension for this format is 'om3'。
      • dxf:AUTOCAD format.
      • off:Object File Format. This is a simple ASCII-based format that can hold 3D points and polygons. The binary OFF format is not supported. The default file extension for this format is 'off'.
      • ply:Polygon File Format (also Stanford Triangle Format).
      • obj:OBJ file format,also 'Wavefront OBJ-Format'。

12、三维点云有多种表示方法

  • (如图所示),不同的表示对应着不同的处理方法。比较容易的处理方式为将其投影二维图像或者转换为三维体素 (Voxel),从而将无序的空间点转变为规则的数据排列;也可以使用原始点作为表示,不做任何变换,该方式的好处为最大可能保留所有原始信息。此外,点云作为空间无序点集,可以被看作普适意义上的图数据。点云还有另外一种表示,称作网格 (Mesh),其也可以被看作是构建了局部连接关系的点,即为图。将点云看作图数据,可以使用图领域新兴的图卷积 (Graph Convolution) 技术进行处理。需要提及的是,原始点的表示和图表示之间并无明确界限(事实上原始点云和网格 (Mesh) 之间有一定区别,但若从语义理解方法的角度看,可暂时忽略此区别,将Mesh看作是增加了一种连接关系

  • 基于二维投影的方法CNN 最好的应用领域在于图像处理,将三维点云数据投影到二维图像平面,即可使得 CNN 应用于点云数据成为可能。
  • 基于三维体素的方法。对三维点云进行二维投影降低了算法处理的难度,但是三维到二维的投影必然带来几何结构信息的损失,直接进行三维特征的提取在一些场景下是非常有必要的。一种最自然的想法便是 CNN 的延拓,将二维卷积神经网络拓展一个维度,使其可以处理三维排列的数据;同时,对点云进行体素化 (Voxelization),将其转换为空间上规则排布的栅格,使得三维卷积神经网络(Three Dimension Convolutional Neural Network, 3DCNN) 可以直接应用在这种表示上。
  • 基于原始点的方法。无论是二维投影还是三位体素,均需要对原始点云进行一定的转换,而转换必然带来数据信息的损失
  • 基于图的方法。现实生活中存在大量的非结构化数据,如交通网络、社交网络等,这些数据的节点间存在联系,可以表示为图。研究图数据的学习是近年来学界的热点。三维点云数据可以看作图数据的一种,图网络的很多思想可以被借鉴于点云数据的特征学习中。图卷积 (Graph Convolution Network, GCN) 可分为基于图卷积(Spectralbased GCN)基于空间的图卷积 (Spatial-based GCN)

13、相比于图像数据,点云不直接包含空间结构,因此点云的深度模型必须解决三个主要问题:

  1. 如何从稀疏的点云找到高信息密度的表示;
  2. 如何构建一个网络满足必要的限制如size-variance和permutation-invariance;
  3. 如何以较低的时间和计算资源消耗处理大量数据;

14、DataSets开源数据集

15、Metric度量标准

  • Classification method: overall accuracy , mean accuracy
  • Segmentation models: accuracy , (m)IoU
  • detection tasks: (m)IoU , accuracy , precision , recall
  • Object tracking: MOTA , MOTP
  • scene for estimation: EPE
  • 3D match and registration models: ROC curves

16、基于点云的分类

  • 对点云的分类通常称为三维形状分类。与图像分类模型相似,三维形状分类模型通常是先通过聚合编码器生成全局嵌入,然后将嵌入通过几个完全连通的层来获得最终结果。
  • 基于点云聚合方法,分类模型大致可分为两类:基于投影的方法基于点的方法
  • 基于投影的方法
    • 基于投影的方法将非结构化的三维点云投影到特定的预设模态中(例如体素、柱状体),并从目标格式中提取特征,从而在相应方向上受益于之前的研究成果。
    • Multi-view representation
      • MVCNN
      • GVCNN
    • Volumetric representation
      • VoxNet
      • 3D ShapeNet
      • OctNet
      • OCNN
    • Basis point set
      • BPS
  • 基于的方法:
    • 与基于投影的方法从空间邻域中聚合点相比,基于点的方法尝试从单个点中学习特征。
    • MLP networks
    • Convolutional networks
    • Graph networks
    • 图网络将点云视为图,将图的顶点视为点,并根据每个点的邻居生成边。特征将在空间或光谱领域学习

17、基于点云的分割

  • 数据来自 Mobile Laser Scanners (MLS), Aerial Laser Scanners (ALS), static Terrestrial Laser Scanners (TLS), RGBD cameras and other 3D scanners
  • 3D分割的目的是对每个点进行标记,这需要模型在每个点上收集全局上下文和详细的局部信息。。在三维图像分割中,主要有两个任务:语义分割和实例分割。

  • Semantic Segmentation

    • 语义分割方法大致可分为基于投影的方法和基于点的方法
    • Projection-based methods
      • Huang和You将输入点云投射到占用体素中,然后将其送入3D卷积网络,生成体素级标签。
      • ScanComplete利用全卷积网络来适应不同的输入数据大小,并部署一个由粗到细的策略来提高预测的层次分辨率。
    • Point-based methods
      • Instance Segmentation
      • Proposal-based methods
      • 可以看作是目标检测和掩模预测的结合。
    • Proposal-free methods
      • 无提案的方法倾向于基于聚类等算法的语义分割来生成实例级标签。
      • 无提案方法不受区域提案层计算复杂度的影响;然而,它们通常很难从聚类中产生区分对象边界
  • 同时解决语义分割实例分割的朴素方法有两种:

    • (1)先解决语义分割,根据语义分割的结果在某些标签点上运行实例分割;
    • (2)先解决实例分割,直接分配带有实例标签的语义标签。
    • 这两个阶梯式范式高度依赖于第一步的输出质量,不能充分利用两个任务之间的共享信息。

18、基于点云的目标检测

  • 3D目标检测可以分为3类:multi-view method,projection-based method,point-based method
  • Projection-based methods
  • Point-based method
    • 大多数基于点的方法都试图在特征提取过程中使信息损失最小化,是目前性能最好的一组方法
    • 与上述多视图方法相比,基于分割的方法对于复杂场景和遮挡对象有更好的效果。

19、点云数据的增强和完整化

  • 由激光雷达收集的点云,特别是那些来自室外场景的点云,遭受不同种类的质量问题,如噪音异常值,和遗漏点。所以我们的目标是补全缺失的点移除掉异常的点
  • Discriminative Methods
    • 传统的方法包括局部表面拟合邻域平均猜测底层噪声模型。
    • PointCleanNet提出了一种基于数据驱动的方法去消除错误点减少噪声
    • PCPNet首先对异常值进行分类丢弃它们,然后估计一个将噪声投影到原始表面的修正投影
    • Total Denoising,在不需要额外数据的情况下实现了非监督降噪对点云数据
    • 临界点层(CPL)在保留重要点的同时学会减少点的数量。这一层是确定性的,不确定顺序的,并且通过避免邻接搜索也很有效。
    • 通过将采样后的点近似为原始点的混合来逼近点采样的可微松弛
  • Generative Methods

    • 通过生成假样本,帮助定位网络的潜在缺陷。
    • point perturbation and point generation:
      • 扰动是通过对已有的点进行可忽略的移动来实现的,
      • 生成是通过添加一些独立分散的点或少量具有预定义形状的点簇来实现的。
    • 除了对抗性生成(GAN),生成模型也用于点云上采样。向上采样点云通常有两种动机。一是减少数据的稀疏性不规则性,二是恢复遮挡造成的缺失点

3D点云基础知识(一)-初始入门-知乎整理(一)相关推荐

  1. 3D点云基础知识(一)-初始入门-知乎整理(二)

    3D点云语义分割--场景理解的关键 https://www.zhihu.com/search?type=content&q=3D%E8%AF%AD%E4%B9%89%E5%88%86%E5%8 ...

  2. 3D点云基础知识(二)-bilibili视频资源整理(二)鞋点胶点云轮廓提取

    资料来源:超人视觉免费启蒙三维课程入门(第六节)3D鞋点胶的点云边界(轮廓)提取 相似案例:Halcon三维测量(3):鞋底涂胶+边缘提取 Halcon学习方法强调:从案例当中学习:最重要是思路和算子 ...

  3. Oracle 12C 基础知识与使用入门(修订版)

    Oracle 12C 基础知识与使用入门 ORACLE数据库系统是美国ORACLE(甲骨文)公司提供的一款关系数据库管理系统,可在所有主流平台上运行.Oracle数据库12c 引入了一个新的多承租方架 ...

  4. [Python图像处理] 一.图像处理基础知识及OpenCV入门函数

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  5. 云基础知识介绍及云组件部署

    云基础知识介绍及云组件部署 序言 随着业务的发展,各类业务都有上云的需求,大家在工作中也会经常遇到各类公有云的场景,其实各大厂商的公有云功能都大相径庭.相信很多人有疑问,如何在公有云上部署相关云组件和 ...

  6. 音视频开发入门基础知识(视频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...

  7. 炒股入门基础知识之炒股入门?炒股入门股票基础知识该掌握哪些

    最近几年越来越多的朋友们开始进入股票市场,为了也是自己在业余的时间,可以有一个事情做,如果能够赚钱的话自然是更好的,但是如果赔钱自己也能够乐观的面对,毕竟投资是有风险的,我们为大家介绍一下<阿尔 ...

  8. 音视频开发入门基础知识(音频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 前言 音频的采集和播放 音频常见的格式 音频的编码 前言 在音视频开发入门基础知 ...

  9. Google SEO基础知识,新手入门教学。

    一.什么是搜索引擎优化? 搜索引擎优化 (SEO) 是一种从搜索引擎的自然排名中获取网站目标流量的做法.与 SEO 相关的常见任务包括创建高质量内容.围绕特定关键字优化内容以及构建反向链接. 换句话说 ...

最新文章

  1. 【论文速读】RandLA-Net大规模点云的高效语义分割
  2. android 解压版sdk安装的问题
  3. windows server2012
  4. zoj 3547 The Boss on Mars
  5. 设计模式学习笔记(1)之单例模式
  6. 神目 Android 人脸识别SDK编译说明
  7. Javascript如何判断对象是否相等
  8. 第八届蓝桥杯-日期问题
  9. linux监控命令执行,你可能不知道的 即时监控 Linux 使用者执行指令的三种方法...
  10. 【BZOJ4407】于神之怒加强版
  11. linux jdk环境变量配置不生效_Linux服务器JDK环境变量配置
  12. 中美深度对比,资产管理行业的核心是什么?
  13. Autodesk Eagle入门之-开启旅程
  14. poj 3744 Scout YYF I (矩阵快速幂 优化 概率dp)
  15. c语言中isupper用法,C语言中的isupper()函数
  16. mysql查询当前月份前两个月的数据_sql查询指定月份之前的几个月
  17. 《C语言及程序设计》实践项目——输出小星星
  18. android模拟触控power键
  19. 67 Ways to Increase Conversion with Cognitive Biases
  20. Laya 实现一个轻量高效好用的Tween库并支持Laya.Ease方法

热门文章

  1. 增强现实技术与游戏开发
  2. Spring cloud 多版本控制及灰度发布
  3. 零基础学3D建模,学什么软件,怎么学习,去哪里学习,我告诉你
  4. 第二章 ArcGIS数据和地理数据库
  5. VS2010离线安装包(学习版)
  6. 如何利用状态机编程实现启保停控制(含Stateflow模型介绍)
  7. 一键优化CentOS服务
  8. 朴素贝叶斯情感分析评分python_详解基于朴素贝叶斯的情感分析及 Python 实现
  9. 硬盘IDE AHCI模式的区别
  10. 鼠标右键菜单栏程序删除