点云处理系列 - 数据采集

本文详细介绍了点云处理的关键步骤,包括点云数据的采集、滤波、降采样、关键点检测、特征提取和分割,以及使用Open3D和PCL库的实现示例。这些技术在3D建模、自动驾驶、机器人导航等领域有广泛应用。

点云数据采集通常采用深度相机(如:红外结构光传感器、时间飞行传感器、双目立体相机)、激光雷达(Lidar)等。

1. 深度图像与点云

1.1. 深度图像

1.1.1. 目的

通过捕获场景的三维信息来增强二维图像的内容,为物体识别、导航、3D重建和其他应用提供空间信息。

1.1.2. 定义

深度图像是一个二维图像,其中每个像素的值表示物体表面与相机或传感器之间的距离。

1.1.3. 特性
  • 表示物体与相机的实际距离。

  • 通常以灰度图像形式呈现,其中较暗的像素表示近距离,较亮的像素表示远距离。

  • 可以通过多种方式获得,包括结构光、双目立体相机和ToF传感器。

1.1.4. 应用
  • 计算机视觉,例如物体检测和识别。

  • 机器人导航和避障。

  • 虚拟和增强现实应用中的场景重建。

1.1.5. 相关

首先通过深度相机采集深度图像(RGBD或仅Depth),然后将深度图像转换为点云,最后分别进行点云处理得到结果。

1.2. 点云

1.2.1. 目的

精确地表示和捕获三维空间中的物体和场景。

1.2.2. 定义

点云是一个三维数据结构,其中每个点都有X、Y和Z坐标,表示物体表面上的点在空间中的位置。

1.2.3. 特性
  • 点云中的点可能还包括其他信息,如颜色、强度或法线。

  • 它不像传统的三维模型那样有连续的表面,而是由离散的点组成。

1.2.4. 应用
  • 三维扫描和建模。

  • 地理信息系统中的地形测量。

  • 自动驾驶汽车的环境感知。

1.2.5. 相关

首先通过深度相机采集深度图像后转换为点云(格式多为pcd或ply),或激光雷达获取的点云(格式为las),最后进行点云处理得到结果。

2. 采集设备

深度图像可以通过深度相机获取,点云数据可以通过深度图像转换或激光雷达获取。

2.1. 深度相机

  • 目的:为了捕捉场景的三维信息,并为应用如增强现实、物体检测、手势识别等提供深度数据。

  • 定义:深度相机是一种可以捕捉三维信息的数字相机。它通常使用红外、结构光或时差法来测量物体距离相机的深度。

  • 深度相机可分为三类:红外结构光传感器,ToF传感器,双目立体相机

2.1.1. 红外结构光传感器
2.1.1.1. 目的

快速而精确地获取物体的深度和形状信息。

2.1.1.2. 定义

红外结构光传感器利用红外光源发射预设的结构光模式(如点阵或其他模式)至目标上,然后通过检测反射回来的结构光模式的变形来测量物体的深度信息。

2.1.1.3. 特性
  • 短距离精确:特别适用于近距离的深度测量。

  • 空间分辨率较高:能捕捉详细的深度信息。

  • 可能受到环境光的影响。

2.1.1.4. 应用
  • 人脸识别

  • 手势控制

  • 三维建模和扫描

2.1.1.5. 相关

结构光相机由激光光源、ROD、透镜、反射镜、DMD驱动板、吸光组件和投影镜头组成。

简单的结构光包括括点结构光,线结构光以及简单的面结构光等。复杂的结构光如光学图案的条纹、编码和散斑。

2.1.2. 时间飞行 (ToF) 传感器
2.1.2.1. 目的

在更大的距离上快速地获取深度信息。

2.1.2.2. 定义

ToF传感器通过发送光脉冲并测量光脉冲从发射到反射回来所需的时间来测量物体的距离。通过这种方式,它可以直接得到场景中每一个像素的深度信息。

2.1.2.3. 特性
  • 大范围测量:可在更长的距离上进行深度测量。
  • 实时性好:能够实时提供深度信息。
  • 对环境光干扰较小。
2.1.2.4. 应用
  • 虚拟现实和增强现实
  • 室内导航
  • 机器人避障
  • 人群计数和跟踪
2.1.2.5. 相关
  • Tof相机由照射单元、光学透镜、成像传感器、控制单元、计算单元组成。
  • Tof光源分为脉冲调制(dTof)和连续波调制(iTof)。
2.1.3. 双目立体相机
2.1.3.1. 目的

模仿人类的双眼视觉,捕获三维深度信息。

2.1.3.2. 定义

双目立体相机包含两个分开的摄像头,模拟人眼的双眼视觉,通过计算两个摄像头视图之间的差异(RGB图像特征匹配,三角测量间接计算)来测量深度。

2.1.3.3. 特性
  • 基于视差:深度是通过计算两个摄像头之间的视差来得到的。
  • 无需外部光源:不依赖红外或其他外部光源。
  • 对外部环境因素如光线、颜色等可能更敏感。
2.1.3.4. 应用
  • 三维建模
  • 虚拟现实和增强现实
  • 自动驾驶和避障
  • 视频拍摄与增强
2.1.3.5. 相关

双目相机主要受算法影响精度,有IR的话效果会好很多。

2.2. 激光雷达 (LiDAR)

2.2.1. 目的

获取高精度、高分辨率的三维数据,用于地形测绘、无人驾驶车辆导航等。

2.2.2. 定义

激光雷达(LiDAR,Light Detection And Ranging)是一种远程感测技术,使用激光光束来测量物体与传感器之间的距离。

2.2.3. 特性
  • 高精度:可以捕捉高度详细的三维信息。

  • 长距离测量:能够在远距离上测量物体。

  • 不依赖于环境光:可以在夜间或恶劣天气条件下工作。

  • 数据密度高:能生成大量数据点。

2.2.4. 应用
  • 地形和植被测绘
  • 无人驾驶车辆的导航和避障
  • 城市规划
  • 森林资源管理
  • 电力线和管道检查
2.2.5. 相关
  • 激光雷达由激光发射器、接收器和惯性定位导航组成。
  • 激光雷达根据扫描方式可分为机械式、半固态和固态(Flash面阵和相控阵)激光雷达。
2.2.6. 注意
  • 采集点云数据是在设备厂商提供的SDK上完成的。
  • 影响选型的重要指标,分辨率、测量范围、精度、FPS、FOV、受干扰、图像类型等。

3. 实现

3.1. Open3d 中的实例


import open3d as o3d
import numpy as np
pcd=o3d.io.read_point_cloud("xxx.pcd",format='pcd')

#将点云的坐标和颜色转换为numpy格式
points=np.array(pcd.points)
colors=np.array(pcd.colors)

#可视化
o3d.visualization.draw([pcd])


在这里插入图片描述

3.2. PCL 中的实例


#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>

int main(int argc, char** argv) {
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
    if (pcl::io::loadPCDFile<pcl::PointXYZ> ("xxx.pcd", *cloud) == -1){
        PCL_ERROR("couldn't read file");
        return 0;
    }
    pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    viewer->addPointCloud<pcl::PointXYZ>(cloud, "sample cloud");

    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);
    }

    return 0;
}

在这里插入图片描述

点云技术是三维计算机视觉领域中的重要组成部分,它涉及到数据采集、处理、分析以及应用等多个环节。本资源包“经典点云数据集+点云+点云处理算法”提供了斯坦福大学的一系列经典点云模型,对于研究和开发点云处理算法的人员来说,是一个非常有价值的参考资料。 我们要理解什么是点云点云是由一系列空间坐标点组成的集合,这些点在三维空间中代表物体的表面信息。通过激光雷达(LiDAR)、RGB-D相机等设备,我们可以获取到这些三维点的数据,用于构建物体或环境的三维模型。点云数据集则是一批经过整理和标注的点云数据,用于训练和测试各种点云处理算法。 在本数据集中,包含了九个点云模型,它们以PLY和PCD两种格式提供。PLY是一种基于文本或二进制的3D模型文件格式,常用于存储点云数据和相关的几何与颜色信息。PCD是Point Cloud Library(PCL)项目中的文件格式,同样用于存储点云数据,且支持压缩,便于数据传输和存储。这两种格式都广泛应用于点云处理领域。 点云处理算法主要包括点云的预处理、特征提取、分割、配准、重建等多个步骤。预处理通常涉及去除噪声、滤波和平滑等操作,以提高数据质量。特征提取则是识别点云中的关键点、边缘或表面,为后续的分类、识别任务提供依据。分割是将点云划分为不同的区域或对象,而配准则涉及到对多个点云进行空间对齐,以便进行比较或融合。通过点云数据可以重建出高精度的三维模型。 利用这个数据集,可以进行如下的算法实验: 1. **滤波算法**:如Voxel Grid滤波、Statistical Outlier Removal(SOR)滤波、Radius Outlier Removal等,以去除噪声点。 2. **特征提取**:如SHOT、FPFH、PFH等特征,用于识别点云中的局部结构。 3. **分割算法**:例如基于密度的区域生长、基于聚类的分割或基于图割
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Adunn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值