????????我们在做 3D 视觉的时候,处理的主要是点云,点云相较于图像有着不可替代的优势,也就是深度值,三维点云直接提供了三维空间的数据,而不需要像二维图像那样通过透视几何反推三维数据。
????????点云是某个坐标系下的点的集合。这些点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。点云在组成特点上分为两种,一种是有序点云,一种是无序点云。
????????见 Day31 。
????????点云可以表达物体的空间轮廓和具体位置,它本身和视角无关,可以任意旋转,从任何角度和方向观察,不同的点云只要在同一个坐标系下,就可以直接融合。
????????点云存储格式有很多,主要有:pts、LAS、PCD、.xyz 、.pcap 等。
????????pts 格式是最简便的点云格式,直接按 XYZ 顺序存储点云数据,可以是整型或者浮点型。内容就是 XYZ 三维坐标。
????????LAS 格式是通过激光雷达(LiDAR)扫描得到的,它的格式也有一个统一的规定:
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库(一种现有的三维处理较成熟的库)的一种特殊的格式。是 PCL 库官方指定格式,典型的为点云量身定制的格式。优点是支持 n 维点类型扩展机制,能够更好地发挥 PCL 库的点云处理性能。文件格式有文本和二进制两种格式。
???????? .xzy 相较于pts,多了三列数据,后面三个数字是点的法向量,数字间用空格分隔。
???????? .pcap是一种通用的数据流格式,现在流行的 Velodyne 公司出品的激光雷达默认采集数据文件格式。它是一种二进制文件。
????????点云的表示方法有很多,根据表示方法不同,处理方式也会不同。
???????? 第一种较容易的处理方式是,将其投影为二维图像或转换为三维体素(Voxel),从而将无序的空间点转变为规则的数据排列。
???????? 第二种是使用原始点作为表示,不做任何变换,可以最大限度保留所有原始信息。
???????? 此外,点云还有一种表示,称为网格(Mesh),其可以被看作是构建了局部连接关系的点,即为图。将点云看作图数据,可以使用图领域新兴的图卷积(Graph Convolution)技术进行处理。
????????二维投影把点云变为了图像,让卷积神经网络(CNN)应用于点云数据成为可能。
????????三维体素其实是对点云的特征提取,将点云体素化(Voxelization),将其转换为空间上规则排布的栅格。然后把二维卷积神经网络拓展一个维度,让它可以处理三维数据,这样的神经网络我们称为三维卷积神经网络(3DCNN),而三维体素可以直接应用在这种表示上(因为其规则排布,可卷积)。
????????点云不做处理,直接展示,将点云可视化,可以把数据信息损失降到最低。
????????三维点云数据可以看作图数据的一种,而图网络很多思想可以应用于点云处理。因此,图卷积(Graph Convolution Network, GCN)可以用来处理点云数据。GCN 又分支为基于谱的图卷积(Spectralbased GCN)和基于空间的图卷积(Spatial-based GCN)。
????????关于点云,现今已经有很多算法库支持处理点云,主流的三维算法库都可以处理。