激光扫描仪(Lidar)是一种常用于采集三维数据的仪器,它使用激光光束进行测量和感知,通过发射激光束并测量其返回时间和强度来获取目标物体的距离和形状信息,并计算出每个扫描点的准确坐标。这些点的集合形成了三维点云数据。激光扫描仪可大面积、高分辨率、快速地获取物体表面各个点的(x,y,z)坐标、反射率、(R.G.B)颜色等数据信息,可以快速复建出1:1彩色三维点云模型,用于后续的三维重建、建模和测量分析等应用。
传统的RGB彩色普通相机称为2D相机,只能拍摄相机视角内的物体,没有物体到相机的距离信息,只能凭感觉感知物体的远近,没有明确的数据。而RGB-D深度相机(又称3D相机,其中D代表Depth为深度信息)可获取物体到相机的距离信息,加之2D平面的X,Y坐标,可计算出每个点的三维坐标,进行三维重建、目标定位、识别等应用。
双目相机,也称为立体视觉相机或双目立体视觉系统,是一种通过两个摄像头同时拍摄来模拟人类双眼视觉的相机系统。每个摄像头都可以独立地捕捉场景的图像,然后通过计算机算法将这些图像进行立体视觉匹配,从而得到场景深度信息。通过测量摄像头对应像素上图像的位移,结合摄像头之间的已知基线长度,可以使用三角测量原理计算出场景中点的三维位置。这使得双目相机在许多应用领域中非常有用,例如三维重建、立体视觉测距、物体识别和跟踪等。
使用相机拍摄物体的多张照片,再通过相关三维重建软件将照片配准定位,进行特征提取与匹配,随后生成稀疏点云并进行稠密重建操作。SFM是指通过分析多个二维图像之间的共同点和摄像机运动信息,推导出场景的三维结构。基本的假设是,同一场景的不同图像是通过摄像机在空间中移动而产生的。SFM利用这些视角和对应点之间的几何关系,通过三角定位、尺度恢复、摄像机运动估计等算法,将这些视角投射到一个共同的三维坐标系中。多视角重建这类软件有Agisoft Photoscan、VisualSFM等。
**
三角测距是一种常用的测量方法,基于三角形的相似性原理进行测量。其原理可以简化为以下几个步骤:
TOF(Time of Flight)是一种基于光的测距技术,通过测量光信号从发射到接收所需的时间来确定物体到传感器之间的距离。以下是TOF的工作步骤:
TOF的优点是测量精度高、测量范围广,可以应用于不同的环境和物体表面。它在工业、机器人、自动驾驶等领域被广泛应用。
双目视觉是一种基于人类双眼感知深度的视觉技术。它模拟了人类的双眼视觉系统,通过两个相距一定距离的摄像头来获取两个不同角度的图像,并通过计算两个图像之间的视差(disparity)来推断物体的距离和深度信息。以下是双目视觉的工作步骤:
双目视觉在机器人导航、三维重建、物体识别和跟踪等领域得到广泛应用,能够提供精确的深度信息,以增强对环境的感知能力。
结构光是一种常见的三维感知技术,其原理基于对物体表面投射结构光,并通过相机来捕捉和分析光的形状和变化。以下是结构光测量的原理步骤:
点云(Point Cloud)是三维空间中,表达目标空间分布和目标表面特性的点的集合,点云通常可以从深度相机中直接获取,也可以从CAD等软件中生成。点云是用于表示多维点集合的数据结构,通常用于表示三维数据。在3D点云中,这些点通常代表采样表面的X,Y和Z几何坐标。当存在颜色信息时,点云变为4D。
根据激光测量原理得到的点云,包含三维坐标信息(xyz)和激光反射强度信息(intensity)(激光反射强度与仪器的激光发射能量、波长,目标的表面材质、粗糙程度、入射角相关)。根据摄影测量原理得到的点云,包括三维坐标(xyz)和颜色信息(rgb)。结合两个原理的多传感器融合技术(多见于手持式三维扫描仪),能够同时得到这三种信息。三维点云是真实物体表面的离散采样,点云处理就是从点云中提取到我们需要的信息。
为了涵盖能想到的所有可能的情况,PCL中定义了大量的point类型,在point_types.hpp中有完整目录。
最常用的数据类型之一,只表示3D xyz信息。用户可以访问点[i].data[0]或点[i].x
union
{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union
{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union
{
struct
{
float intensity;
};
float data_c[4];
};
union
{
float data[4];
struct
{
float x;
float y;
float z;
};
};
union
{
union
{
struct
{
std::uint8_t b;
std::uint8_t g;
std::uint8_t r;
std::uint8_t a;
};
float rgb;
};
std::uint32_t rgba;
};
更多点云类型参见:点云类型(https://blog.csdn.net/tobebest_lah/article/details/106241406)
点云目前的主要存储格式包括:PCD、pts、LAS等。其中PCD 存储格式是 PCL 库官方指定格式,PCD 格式具有文件头,用于描绘点云的整体信息:定义数字的可读头、尺寸、点云的维数和数据类型;一种数据段,可以是 ASCII 码或二进制码。数据本体部分由点的笛卡尔坐标构成,文本模式下以空格做分隔符。
其中WIDTH用点的数量表示点云数据集的宽度。根据是有序点云还是无序点云,WIDTH有两层解释:
HEIGHT用点的数目表示点云数据集的高度。类似于WIDTH,HEIGHT也有两层解释:
无序点云是指通过3D扫描或其他方式获取的点云数据,其中点的顺序没有特定的结构或排列规则。每个点具有特定的位置信息,但不一定按照任何特定的顺序排列。无序点云的点之间没有明确的连接关系,可以看作是随机散布在空间中的点。有序点云是指点云数据按照特定的结构或排列规则进行有序排列的数据。例如,有序点云可以是通过三维传感器按照网格或栅格的方式获取的数据,其拓扑结构比较明确。有序点云的点之间具有一定的连接关系,常用于表示网格模型或体素数据。PCD 不是第一个支持3D点云数据的文件类型,尤其是计算机图形学和计算几何学领域,已经创建了很多格式来描述任意多边形和激光扫描仪获取的点云。常见的有下面几种格式:
以上所有格式都有其优缺点,因为他们是在不同时期为了满足不同的需求所创建的,那时很多当今流行的传感器和算法都还没有发明。其中一部分点云储存的格式可以在PCL中进行输入输出的转换。
全部0条评论
快来发表一下你的评论吧 !