点云的介绍

点云定义

点云是一种三维数据表示方法,它通过大量的三维坐标点来描述物体或场景的表面。这些点通常通过对实际物体或场景表面进行离散采样获得,因此,点云可以被视为场景表面在给定坐标系下的离散表示。

点云组成

点云可以看作是某个坐标系下,点的数据集。其由三维坐标点(X, Y, Z)和附加信息组成。分别描述了点的空间位置和诸如颜色信息(RGB)、激光反射强度(Intensity)等其他属性。

一般来说,采集到的点云都是无序的,在存储中相邻的点不一定在实际上物理相邻。

点云属性

点云可以表达物体的空间轮廓和具体位置,受空间分辨率、点位精度和表面法向量影响。

点云本身和视角的选取无关,只要在同一坐标系下,不同的点云可以融合。

点云特点

优点:保留了三维空间中原始的几何信息,不进行离散化

缺点:高维数据,计算复杂,没有固定的排列格式

这也导致了三个问题:

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

点云获取

一般使用三维成像传感器获得。

  1. 激光雷达(LiDAR):通过发送激光脉冲并测量其返回时间来计算距离,适用于自动驾驶、地形测绘等领域。
  2. 立体视觉(Stereo Vision):使用两个或多个相机从不同角度捕捉场景,然后通过匹配相应的图像点来重建三维结构。
  3. 结构光(Structured Light):投射一系列已知模式的光线到场景中,然后通过观察这些模式如何变形来重建三维结构。

点云表示

三维点云的表示有几种思路,比如将无序的空间点转变为规则的数据排列,或者将其看做图数据处理(增加连接关系)。

原始点集

  • 无序点集表示法:每个点只包含其三维坐标(X, Y, Z),点之间没有特定的顺序。
  • 有序点集表示法:点按照特定的顺序排列,例如按照扫描的顺序。

多边形网格

  • 三角网格:通过连接点云中的点形成三角形,这种表示方法可以用于渲染和几何分析。
  • 多边形网格:使用多边形表示,常用于CAD和3D建模。

体素栅格

  • 将空间划分为小立方体(体素),每个体素记录其是否被点云占据。这种表示方法适用于空间划分和体积计算。

参数化曲面

  • 隐式曲面:使用数学方程来定义点云所代表的曲面,如球面、圆柱面等。
  • 显式曲面:使用参数方程来描述曲面,如贝塞尔曲面、NURBS(非均匀有理B样条)曲面等。

深度图像

  • 将点云投影到二维平面上,每个像素值表示该点到相机的距离。这种表示方法常用于深度感知和3D重建。

八叉树

  • 一种树形数据结构,用于将三维空间递归划分为八个子空间。每个节点代表一个空间区域,可以用来有效地表示和管理稀疏点云。

K-D Tree

数据增强

  • Discriminative Methods
    • 传统的方法包括局部表面拟合、邻域平均和猜测底层噪声模型。
    • PointCleanNet提出了一种基于数据驱动的方法去消除错误点减少噪声
    • PCPNet首先对异常值进行分类并丢弃它们,然后估计一个将噪声投影到原始表面的修正投影
    • Total Denoising,在不需要额外数据的情况下实现了非监督降噪对点云数据
    • 临界点层(CPL)在保留重要点的同时学会减少点的数量。这一层是确定性的,不确定顺序的,并且通过避免邻接搜索也很有效。
    • 通过将采样后的点近似为原始点的混合来逼近点采样的可微松弛
  • Generative Methods
    • 通过生成假样本,帮助定位网络的潜在缺陷。
    • point perturbation and point generation:
      • 扰动是通过对已有的点进行可忽略的移动来实现的,
      • 生成是通过添加一些独立分散的点或少量具有预定义形状的点簇来实现的。
    • 除了对抗性生成(GAN),生成模型也用于点云上采样。向上采样点云通常有两种动机。一是减少数据的稀疏性和不规则性,二是恢复遮挡造成的缺失点

点云分类

通常称为三维形状分类。通常是先通过聚合编码器生成全局嵌入,然后将嵌入通过几个完全连通的层来获得最终结果。

  • 基于投影的方法
    • 基于投影的方法将非结构化的三维点云投影到特定的预设模态中(例如体素、柱状体),并从目标格式中提取特征,从而在相应方向上受益于之前的研究成果。
    • Multi-view representation
      • MVCNN:
      • GVCNN
    • Volumetric representation
      • VoxNet
      • 3D ShapeNet
      • OctNet
      • OCNN
    • Basis point set
      • BPS
  • 基于点的方法:
    • 与基于投影的方法从空间邻域中聚合点相比,基于点的方法尝试从单个点中学习特征。
    • MLP networks
    • Convolutional networks
    • Graph networks
    • 图网络将点云视为图,将图的顶点视为点,并根据每个点的邻居生成边。特征将在空间或光谱领域学习。

点云分割

3D分割的目的是对每个点进行标记,这需要模型在每个点上收集全局上下文和详细的局部信息。在三维图像分割中,主要有两个任务:语义分割和实例分割。

  • 语义分割
    • Projection-based methods
    • Point-based methods
    • Proposal-free methods
  • 同时解决语义分割和实例分割
    • 先解决语义分割,根据语义分割的结果在某些标签点上运行实例分割
    • 先解决实例分割,直接分配带有实例标签的语义标签

目标检测

  • multi-view method
  • projection-based method
  • point-based method
相关推荐
晨非辰1 小时前
#C语言——刷题攻略:牛客编程入门训练(十一):攻克 循环控制(三),轻松拿捏!
c语言·开发语言·经验分享·学习·visual studio
xiaoxiaoxiaolll2 小时前
期刊速递 | 《Light Sci. Appl.》超宽带光热电机理研究,推动碳纳米管传感器在制药质控中的实际应用
人工智能·学习
励志码农3 小时前
JavaWeb 30 天入门:第二十三天 —— 监听器(Listener)
java·开发语言·spring boot·学习·servlet
DisonTangor3 小时前
字节开源 OneReward: 通过多任务人类偏好学习实现统一掩模引导的图像生成
学习·ai作画·开源·aigc
黎宇幻生4 小时前
Java全栈学习笔记33
java·笔记·学习
2501_926227945 小时前
.Net程序员就业现状以及学习路线图(五)
学习·.net
朗迹 - 张伟5 小时前
Golang安装笔记
开发语言·笔记·golang
siy23338 小时前
[c语言日记] 数组的一种死法和两种用法
c语言·开发语言·笔记·学习·链表
在路上`10 小时前
前端学习之后端java小白(三)-sql外键约束一对多
java·前端·学习
尚久龙11 小时前
安卓学习 之 用户登录界面的简单实现
android·运维·服务器·学习·手机·android studio·安卓