点云处理指南介绍

news2024/11/24 1:15:52

目录

一、点云处理介绍:

二、Open3D文章目录:

Open3D几何部分(Geometry)

点云处理(点云IO/可视化/数据结构/下采样/凸包计算/裁减/法向量估计/聚类/隐藏点移除/平面分割/最小外接矩形/外点移除)

面片(mesh)处理(mesh可视化/IO/表面法向量估计/裁剪/滤波/采样/网格(曲面)细分/网格(曲面)简化/聚类)

点云的体素化/KDTree创建和搜索/Octree创建和搜索

点云的平移/表面重建/网格(曲面)变形/ISS关键点

Ray Casting/距离查询

Open3D中的RGB-D images(range images)使用

Open3D点云处理(Pipelines)

ICP(Iterative Closest Point)配准(粗配准/精配准/robust核函数/基于颜色的ICP)

点云的全局配准和基于位姿图优化的多点云配准

RGB-D相机介绍RGB-D文件的点云融合

RGB-D里程计(RGB-D Odometry)和RGB-D颜色优化和刚体优化

Open3D点云处理进阶

理解ICP算法和API

open3d中多尺度ICP在cpu和cuda上的实现

多种robust核函数在点到点和点到面ICP中的使用

Open3D可视化

Open3D可视化参数选择

Open3D自定义可视化/交互式可视化/非阻塞可视化

Open3D无头渲染/cpu渲染

Open3D网页可视化实现

Open3D核心数据操作

Tensor创建/属性/异构计算/数据类型

Numpy和Pytorch与Tensor的拷贝/移动/一元运算/二元运算/逻辑运算/归约/切片/索引/比较/Nonzero操作

Open3D中的Hash map实现

常见三维数据集在Open3D中的接口

点云数据集

三角面片(TriangleMesh)数据集与PBR纹理

纹理材质贴图

RGBD数据集

Open3D中使用RealSense与Azure Kinect

三、PCL文章目录:

PCL数据结构和使用示例

PCL编译、安装、使用

点云在PCL中的数据结构

自定义类型和PCL类

点云的读取/写入与拼接

PCL中3D关键点与特征处理

点云表面法向量估计

PFH(Point Feature Histograms)与FPFH(Fast Point Feature Histograms)描述子

VFH(Viewpoint Feature Histogram)描述子、range image的NARF关键点

基于描述子计算eccentricity 和 moment of inertia

PCL中RoPs和GASD特征的使用

PCL中的滤波操作

PassThrough(直通)滤波器与VoxelGrid滤波器

参数化模型投影点云

PCL中的点云索引

使用StatisticalOutlierRemoval滤波器移除离群点、用ConditionalRemoval或RadiusOutlinerRemoval移除离群点

点云的双边滤波(bilateral filter)

PCL中的KdTree与Octree

使用KdTree进行搜索

使用Octree对点云进行压缩

使用Octree进行点云空间划分和搜索

使用Octree对无序点云进行Spatial change detection

PCL中的Range Images

从点云中创建Range Image

提取Range Image的边界

PCL中的识别(Recongnition)

基于对应组(Correspondence)的3D目标识别

Implict Shape Model

三维物体识别的假设验证

PCL中的配准

PCL中的配准API

PCL中使用ICP(Iterative closest point)

使用ICP增量配准点云

交互式ICP示例

NDT(Normal Distributions Transform)配准

采样一致性介绍(Sample Consensus)

PCL中的点云分割

平面模型分割(Plane model segmentation)

圆柱体分割(Cylinder model segmentation)

欧式聚类提取(Euclidean Cluster Extration)

区域增长分割(Region Growing Segmentation)

最小剪切分割(Min-Cut Based Segmentation)

条件欧式聚类(Conditional Euclidean Clustering)

基于法线差异的分割(Difference of Normals Based Segmentation)

点云聚类成supevoxel

渐进形态学滤波器(Progressive Morphological Filter)分割地面点云

基于模型的离群值去除(ModelOutlierRemoval)

PCL中的表面重建

基于多项式重建的表面平滑与法线估计

点云平面模型凹凸多边形构建

无序点云的快速三角化

无序点云的修剪B样条表面重建

PCL中的可视化

PCL中可视化工具的使用

PCL可视化range image

PCLPlotter的使用

PCL在Qt中的应用

PCL应用篇

物体模板对齐到点云

使用VFH描述子完成聚类识别和6DOF位姿估计

使用RGB-D相机进行行人检测与行人姿态估计

移动设备的点云传输与可视化

Nidia GPU与PCL

kinectfusion三维重建介绍(Kinfu)

四、RGB-D三维重建

三维离线重建与实时重建实现

使用Open3D基于Robust Reconstruction of Indoor Scenes, CVPR, 2015实现室内离线重建

Open3D RGB-D实时重建

        后续文章将会按照上面顺序进行更新!!!


一、点云处理介绍:

        随着机器人在人们生活中普及以及越来越廉价的3D感知设备的到来,我们急需满足对日益增长的3维数据处理需求。例如,当机器人需要与物理世界互动时,他们需要感知周围的环境,就需要处理三维的数据。三维的数据的集中表示形式包括了点云(Point Cloud)、面片(mesh)、体素(Volumetric)、多试图深度图(Multi-view RGB-D images)。

  1. 点云:点云是指目标表面特性的海量点集合。包含了xyz坐标信息和反射强度、颜色、法向量等信息(从激光雷达或深度相机中获得该数据)
  2. Mesh:由三角面片和正方形面片组成(由点云或其他计算机建模软件生成)
  3. 体素:由三维栅格将物体用0和1表征(对点云进行体素化操作得到)
  4. 多角度的RGB图像或者RGB-D图像(标定后的多相机拍摄得到)

当前处理三维数据的主要软件有以下几种:

  1. Point Cloud Library(PCL):最早的开源点云处理框架,从ROS中分离出来后经过短暂的快速发展后如今出现了停滞,PCL以C++的模板编成实现,其中数学运算基于Eigen,大量使用SSE向量扩展与OpenMP并行化实现加速并使用VTK作为其可视化工具;支持Windows, macOS, Linux, Android,但在Python语言中没有对应的官方库
  2. Open3D:现代3D数据处理框架(包含对点云、mesh、RGB-D图片的处理),由Intel主导;后端基于C++11优化且以OpenMP并行,支持ubuntu、macOS、Windows, Open3D是在一个全新的基础上开发的并使用OPENGL提供可视化界面,并尽可能使用最少的依赖项;Open3D同时提供了Python接口和C++包,其中Python接口基于pybind11实现。使用PCL和Open3D实现相同功能时C++代码量相较于PCL少一半,python版代码是PCL C++的5分之一
  3. MeshLab:一个提供GUI界面的三维数据处理应用,在Windows和Linux和mac OS中都可以使用
  4. libigl:基于C++提供了离散微分几何处理与基于图片的模型重建

        本博客将会重Open3D开始进行介绍,然后再到PCL模板库的使用,最后完成一个基于RGB-D的三维重建代码解析。

        点云的主要应用包括:点云的滤波、点云的3D特征提取、点云的关键点、点云的配准、点云的kd-tree和oc-tree、点云分割、点云表面重建、点云识别、点云的IO、点云的可视化操作

 


二、Open3D文章目录:

  1. Open3D几何部分(Geometry)

    1. 点云处理(点云IO/可视化/数据结构/下采样/凸包计算/裁减/法向量估计/聚类/隐藏点移除/平面分割/最小外接矩形/外点移除)

    2. 面片(mesh)处理(mesh可视化/IO/表面法向量估计/裁剪/滤波/采样/网格(曲面)细分/网格(曲面)简化/聚类)

    3. 点云的体素化/KDTree创建和搜索/Octree创建和搜索

    4. 点云的平移/表面重建/网格(曲面)变形/ISS关键点

    5. Ray Casting/距离查询

    6. Open3D中的RGB-D images(range images)使用

  2. Open3D点云处理(Pipelines)

    1. ICP(Iterative Closest Point)配准(粗配准/精配准/robust核函数/基于颜色的ICP)

    2. 点云的全局配准和基于位姿图优化的多点云配准

    3. RGB-D相机介绍RGB-D文件的点云融合

    4. RGB-D里程计(RGB-D Odometry)和RGB-D颜色优化和刚体优化

  3. Open3D点云处理进阶

    1. 理解ICP算法和API

    2. open3d中多尺度ICP在cpu和cuda上的实现

    3. 多种robust核函数在点到点和点到面ICP中的使用

  4. Open3D可视化

    1. Open3D可视化参数选择

    2. Open3D自定义可视化/交互式可视化/非阻塞可视化

    3. Open3D无头渲染/cpu渲染

    4. Open3D网页可视化实现

  5. Open3D核心数据操作

    1. Tensor创建/属性/异构计算/数据类型

    2. Numpy和Pytorch与Tensor的拷贝/移动/一元运算/二元运算/逻辑运算/归约/切片/索引/比较/Nonzero操作

    3. Open3D中的Hash map实现

  6. 常见三维数据集在Open3D中的接口

    1. 点云数据集

    2. 三角面片(TriangleMesh)数据集与PBR纹理

    3. 纹理材质贴图

    4. RGBD数据集

  7. Open3D中使用RealSense与Azure Kinect

下图是Open3D的所有模块说明例图


三、PCL文章目录:

  1. PCL数据结构和使用示例

    1. PCL编译、安装、使用

    2. 点云在PCL中的数据结构

    3. 自定义类型和PCL类

    4. 点云的读取/写入与拼接

  2. PCL中3D关键点与特征处理

    1. 点云表面法向量估计

    2. PFH(Point Feature Histograms)与FPFH(Fast Point Feature Histograms)描述子

    3. VFH(Viewpoint Feature Histogram)描述子、range image的NARF关键点

    4. 基于描述子计算eccentricity 和 moment of inertia

    5. PCL中RoPs和GASD特征的使用

  3. PCL中的滤波操作

    1. PassThrough(直通)滤波器与VoxelGrid滤波器

    2. 参数化模型投影点云

    3. PCL中的点云索引

    4. 使用StatisticalOutlierRemoval滤波器移除离群点、用ConditionalRemoval或RadiusOutlinerRemoval移除离群点

    5. 点云的双边滤波(bilateral filter)

  4. PCL中的KdTree与Octree

    1. 使用KdTree进行搜索

    2. 使用Octree对点云进行压缩

    3. 使用Octree进行点云空间划分和搜索

    4. 使用Octree对无序点云进行Spatial change detection

  5. PCL中的Range Images

    1. 从点云中创建Range Image

    2. 提取Range Image的边界

  6. PCL中的识别(Recongnition)

    1. 基于对应组(Correspondence)的3D目标识别

    2. Implict Shape Model

    3. 三维物体识别的假设验证

  7. PCL中的配准

    1. PCL中的配准API

    2. PCL中使用ICP(Iterative closest point)

    3. 使用ICP增量配准点云

    4. 交互式ICP示例

    5. NDT(Normal Distributions Transform)配准

  8. 采样一致性介绍(Sample Consensus)

  9. PCL中的点云分割

    1. 平面模型分割(Plane model segmentation)

    2. 圆柱体分割(Cylinder model segmentation)

    3. 欧式聚类提取(Euclidean Cluster Extration)

    4. 区域增长分割(Region Growing Segmentation)

    5. 最小剪切分割(Min-Cut Based Segmentation)

    6. 条件欧式聚类(Conditional Euclidean Clustering)

    7. 基于法线差异的分割(Difference of Normals Based Segmentation)

    8. 点云聚类成supevoxel

    9. 渐进形态学滤波器(Progressive Morphological Filter)分割地面点云

    10. 基于模型的离群值去除(ModelOutlierRemoval)

  10. PCL中的表面重建

    1. 基于多项式重建的表面平滑与法线估计

    2. 点云平面模型凹凸多边形构建

    3. 无序点云的快速三角化

    4. 无序点云的修剪B样条表面重建

  11. PCL中的可视化

    1. PCL中可视化工具的使用

    2. PCL可视化range image

    3. PCLPlotter的使用

    4. PCL在Qt中的应用

  12. PCL应用篇

    1. 物体模板对齐到点云

    2. 使用VFH描述子完成聚类识别和6DOF位姿估计

    3. 使用RGB-D相机进行行人检测与行人姿态估计

    4. 移动设备的点云传输与可视化

    5. Nidia GPU与PCL

    6. kinectfusion三维重建介绍(Kinfu)

PCL中的代码库描述:

libpcl filters: implements data filters such as downsampling, outlier removal, indices extraction, projections,etc;

libpcl features: implements many 3D features such as surface normals and curvatures, boundary point estimation,moment invariants, principal curvatures, PFH and FPFH descriptors, spin images, integral images, NARF descriptors, RIFT, RSD, VFH, SIFT on intensity data,etc;

libpcl io: implements I/O operations such as writing to/reading from PCD (Point Cloud Data) files;

libpcl segmentation: implements cluster extraction,model fitting via sample consensus methods for a variety of parametric models (planes, cylinders, spheres, lines, etc), polygonal prism extraction, etc

libpcl surface: implements surface reconstruction techniques, meshing, convex hulls, Moving Least Squares,etc;

libpcl registration: implements point cloud registration methods such as ICP, etc;

libpcl keypoints: implements different keypoint extraction methods, that can be used as a preprocessing step to decide where to extract feature descriptors;

libpcl range image: implements support for range images created from point cloud datasets.

模块间的依赖关系图:

 


 

四、RGB-D三维重建

  1. 三维离线重建与实时重建实现

    1. 使用Open3D基于Robust Reconstruction of Indoor Scenes, CVPR, 2015实现室内离线重建

    2. Open3D RGB-D实时重建


        所有示例与代码均基于Ubuntu实现,在windows的同学也建议转到基于linux的操作系统下来;很多工程文件代码也都是在linux下配置更加方便。

        后续文章将会按照上面顺序进行更新!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5+CSS3(三)-全面详解(学习总结---从入门到深化)

目录 Form表单 表单元素 学习效果反馈 表单元素一 文本框 密码框 单选按钮 学习效果反馈 表单元素二 复选框 文件 提交按钮 重置按钮 学习效果反馈 表单元素三 下拉列表 多行文本框 label 学习效果反馈 HTML5新增type类型一 url search tel color 学习效果反馈 HTML5新增…

「Python|网页开发」如何使用Django快速开始进行网页开发:写个Hello World!

本文主要介绍如何从零开始借助django框架快速启动一个网页服务器然后进入编写HTML页面的阶段。 文章目录安装django创建并启动网页项目在网页项目中创建一个应用创建页面并设置好对应关系安装django Django是Python的一个第三方库,里面已经将编写网页需要的代码结构…

如何更改报表控件 Stimulsoft BI 服务器中的地址和端口?

在本文中,我们将主要讨论如何在 Stimulsoft BI Server 中设置基本参数,具体来说,也就是如何更改服务器的地址和端口? 为什么需要更改服务器地址和端口? 在部署报表服务器时,需要指定其地址,实…

使用Websockets和Vert.x进行实时竞价

翻译: 白石(https://github.com/wjw465150/Vert.x-Core-Manual) 原文地址: https://vertx.io/blog/real-time-bidding-with-websockets-and-vert-x/ 在过去的几年中,用户对网络应用程序的期望发生了变化。在拍卖竞价过程中,用户不再需要按下刷新按钮来检…

【C++】STL — map和set的介绍 + 使用

文章目录📖 前言1. 键值对的引入⚡2. 树形结构的关联式容器🌟3. set的介绍 使用⭐4. map的介绍 使用⭐🏁4.4.1 利用map统计次数:🏁4.4.2 std::map::operator[]📖 前言 本章将继续学习STL中的两个很重要的…

23.2.2打卡 2023牛客寒假算法基础集训营5 ABCDHKL 最详细的一集

A 这题据说可以贪心写 我为了省事直接upper二分第一个大于x的商品然后向前遍历完事 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠸⣿⣿⣆⠹⣿⣿⢾⣟⣯⣿⣿⣿⣿⣿⣿⣽⣻⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣻⣽⡿⣿⣎⠙⣿⣞⣷⡌⢻⣟⣿⣿⣿⣿⣿⣿⣿…

使用动态创建pinia时报injection “Symbol(pinia)“ not found

前阵发现项目内用pinia报了injection "Symbol(pinia)" not found这个错误,因为前一阵用并没有这个问题。问了相关同事后发现是他新建了节点后调用的,导致的问题。 出现的警告如下图: 这问题排除了比较久,为什么呢&…

python自动化办公--pyautogui控制鼠标和键盘操作

在公司某些工作场景下,需要大量重复的工作,重复的工作完全可以通过python软件的自动化实现,省时省力。本文分享python自动化办公的利器之一--pyautogui,通过pyautogui可以轻松控制鼠标和键盘操作。 PyAutoGUI是一个纯Python的GUI自…

纯滞后系统的大林控制算法

大林控制算法原理早在1968年,美国IBM公司的大林(Dahlin)就提出了一种不同于常规PID控制规律的新型算法,即大林算法。该算法的最大特点是将期望的闭环响应设计成一阶惯性加纯延迟,然后反过来得到能满足这种闭环响应的控…

Linux服务器之间设置共享目录

前言有时候我们需要在两台linux服务器之间共享资源,例如在服务器A上面部署了一个大文件上传程序,但是需要将文件上传到服务器B的某个目录下面,因为上传大文件,需要先将文件所有分块单独上传到服务器B,然后在服务器B上面…

数字文档管理解决财务部门哪些常见问题?

如今,会计部门实施文档管理和自动化工作流程系统至关重要。这些组织要么缺乏数字系统,要么没有充分利用其文档管理解决方案的潜力。 数字文档管理解决财务部门哪些常见问题? 1.错过提前付款折扣:供应商经常为提前付款提供折扣&am…

虹科教您 | 浅谈现代GNSS模拟中的软件定义架构

随着技术的迭代更新,GPS/GNSS模拟技术也在不断发展进步。在过去,想要进行GNSS仿真基本上只有一种选择:使用固定式或分配式的硬件进行模拟。而如今,带来颠覆性创新的新型软件定义架构正在迅速取代传统的定制架构,这种独…

EvilnoVNC:一款针对组织安全与安全意识培训的网络钓鱼平台

关于EvilnoVNC EvilnoVNC是一款针对组织安全与安全意识培训的网络钓鱼平台,该工具开箱即用,可以帮助各大企业组织对内部员工进行安全意识培训,而且也可以帮助广大研究人员测试和研究网络钓鱼防御技术。 和其他网络钓鱼技术不同的不同之处在…

高并发秒杀的 常见的7种方案

高并发场景在现场的日常工作中很常见,特别是在互联网公司中,这篇文章就来通过秒杀商品来模拟高并发的场景。 本文环境: SpringBoot 2.5.7 MySQL 8.0 X MybatisPlus Swagger2.9.2 模拟工具: Jmeter 模拟场景: 减库…

2.5G网卡调试记录

2.5G网卡调试记录 下载驱动 去https://www.realtek.com/zh-tw/downloads这个网站下载2.5G USB网卡对应的驱动 编译驱动 Makefile中需要进入到内核目录/lib/modules/4.19.232/build中进行内核编译,但是我们的build文件链接已经失效了,并且源文件也删除…

力扣sql简单篇练习(八)

力扣sql简单篇练习(八) 1 修复表中的名字 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 考察的是字符串函数的用法 SELECT user_id,concat(upper(left(name,1)),lower(substr(name,2))) name FROM Users ORDER BY user_id asc1.3 运行截图 2 订单…

Qt TCP (小型聊天窗口)

实现的具体功能为: 服务器端需要主动监听,可以主动断开连接,可以发送信息给客户端客户端需要输入主机,端口号,需要主动连接,可以主动断开连接,可以发送信息给服务器端服务器端和客户端都能看到聊…

【C++算法图解专栏】一篇文章带你掌握差分算法

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为 0 基础刚入门数据结构与算法的小伙伴提供详细的讲解,也欢迎大佬们一起交流~ 📚专栏地址:https://blog.csdn.net/Newin…

hadoop.fs.FileSystem.get导致OOM的原因和解决方案

问题描述 在调用HDFS获取文件系统的get接口时,指定用户可能会导致OOM问题,示例代码如下: FileSystem fileSystem FileSystem.get(uri, conf, "hadoopuser");问题溯源 该方法源码: 在有缓存的情况下将从Cache中取&a…

Android 11 SystemUI(状态/导航栏)-状态栏下拉时图标的隐藏与通知面板的半透黑色背景

概述 本文续自:Android 11 的状态栏的隐藏 PS 本文虽然同属于SystemUI, 但目前并 没有 打算整理成专橍或撰写一个系列的想法. 仅仅为了记录一些过程, 留下那些容易被遗忘的点滴. 开始下拉时状态栏图标被隐藏 状态橍的图标在用户开始触摸(ACTION_DOWN)后, 会开始展开, 显示扩展…