【深度学习初探】Day32 - 三维点云数据基础

【深度学习初探】Day32 - 三维点云数据基础


文章目录

  • 【深度学习初探】Day32 - 三维点云数据基础
    • 一、点云的定义
    • 二、点云的获取
    • 三、点云的属性
    • 四、点云的存储格式
      • 4.1 pts
      • 4.2 LAS
      • 4.3 PCD
      • 4.4 .xyz
      • 4.5 .pcap
    • 五、三维点云的表示方法
      • 5.1 二维投影
      • 5.2 三维体素
      • 5.3 原始点云
      • 5.4 图
    • 六、点云的算法库


        我们在做 3D 视觉的时候,处理的主要是点云,点云相较于图像有着不可替代的优势,也就是深度值,三维点云直接提供了三维空间的数据,而不需要像二维图像那样通过透视几何反推三维数据。

一、点云的定义

        点云是某个坐标系下的点的集合。这些点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。点云在组成特点上分为两种,一种是有序点云,一种是无序点云。

  • 有序点云:一般由深度图还原的点云,有序点云按照图方阵一行一行从左上角到右下角排列,其中还会有一些无效点。有序点云按顺序排列,很容易找到它的相邻点信息,在某些处理下还是比较便利的,但是获取有序点云难度很大,在很多情况下是无法获取的。
  • 无序点云:无序点云更为常见和普遍,它就是点的集合,点的排列之间无任何顺序,点顺序交换后也不会有任何影响。

二、点云的获取

        见 Day31 。

三、点云的属性

        点云可以表达物体的空间轮廓和具体位置,它本身和视角无关,可以任意旋转,从任何角度和方向观察,不同的点云只要在同一个坐标系下,就可以直接融合。

四、点云的存储格式

        点云存储格式有很多,主要有:pts、LAS、PCD、.xyz 、.pcap 等。

4.1 pts

        pts 格式是最简便的点云格式,直接按 XYZ 顺序存储点云数据,可以是整型或者浮点型。内容就是 XYZ 三维坐标。

这里是引用

4.2 LAS

        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 颜色值)。
在这里插入图片描述

4.3 PCD

         PCD格式是用于PCL库(一种现有的三维处理较成熟的库)的一种特殊的格式。是 PCL 库官方指定格式,典型的为点云量身定制的格式。优点是支持 n 维点类型扩展机制,能够更好地发挥 PCL 库的点云处理性能。文件格式有文本和二进制两种格式。

这里是引用

4.4 .xyz

         .xzy 相较于pts,多了三列数据,后面三个数字是点的法向量,数字间用空格分隔。

这里是引用

4.5 .pcap

         .pcap是一种通用的数据流格式,现在流行的 Velodyne 公司出品的激光雷达默认采集数据文件格式。它是一种二进制文件。

五、三维点云的表示方法

        点云的表示方法有很多,根据表示方法不同,处理方式也会不同。
         第一种较容易的处理方式是,将其投影为二维图像或转换为三维体素(Voxel),从而将无序的空间点转变为规则的数据排列。
         第二种是使用原始点作为表示,不做任何变换,可以最大限度保留所有原始信息。
         此外,点云还有一种表示,称为网格(Mesh),其可以被看作是构建了局部连接关系的点,即为图。将点云看作图数据,可以使用图领域新兴的图卷积(Graph Convolution)技术进行处理。

这里是引用

5.1 二维投影

        二维投影把点云变为了图像,让卷积神经网络(CNN)应用于点云数据成为可能。

5.2 三维体素

        三维体素其实是对点云的特征提取,将点云体素化(Voxelization),将其转换为空间上规则排布的栅格。然后把二维卷积神经网络拓展一个维度,让它可以处理三维数据,这样的神经网络我们称为三维卷积神经网络(3DCNN),而三维体素可以直接应用在这种表示上(因为其规则排布,可卷积)。

5.3 原始点云

        点云不做处理,直接展示,将点云可视化,可以把数据信息损失降到最低。

5.4 图

        三维点云数据可以看作图数据的一种,而图网络很多思想可以应用于点云处理。因此,图卷积(Graph Convolution Network, GCN)可以用来处理点云数据。GCN 又分支为基于谱的图卷积(Spectralbased GCN)和基于空间的图卷积(Spatial-based GCN)。

六、点云的算法库

        关于点云,现今已经有很多算法库支持处理点云,主流的三维算法库都可以处理。

  • PCL(Point Cloud Library):这个库就是专门处理点云的。可以在多平台部署,本身是一个大型跨平台开源C++ 编程库。它实现了大量点云相关的通用算法和高效数据结构,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等操作,非常方便移动端开发。
  • VCG 库(Visualization and Computer Graphics Library)是专门为处理三角网格而设计的,该库很大,且提供了许多先进的处理网格的功能,以及比较少的点云处理功能(不推荐)。
  • CGAL(Computational Geometry Algorithms Library),计算几何算法库,以 C++ 库的形式,提供方便、高效、可靠的几何算法,实现了很多处理点云及处理网格的算法。
  • Open3D 是一个可以支持 3D 数据处理软件快速开发的开源库。它最大的优点是支持 Python。它是从一开始就开发出来的,带有很少的、经过仔细考虑的依赖项。从源代码进行最小的编译,代码干净、样式一致。支持点云、网格、RGB-D等数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(已解决)如何使用matplotlib绘制小提琴图

网上很多人使用seaborn绘制小提琴图,本人暂时不想学新的东西,就是懒。本文介绍如何使用matplotlib绘制小提琴图,很多其他博客只是使用最简单的语法,默认小提琴颜色会是蓝色,根本改不了。本文使用了一点高级的用法&…

排序 | 冒泡 插入 希尔 选择 堆 快排 归并 非递归 计数 基数 排序

排序 | 冒泡 插入 希尔 选择 堆 快排 归并 非递归 计数 基数 排序 文章目录 排序 | 冒泡 插入 希尔 选择 堆 快排 归并 非递归 计数 基数 排序前言:冒泡排序插入排序希尔排序选择排序堆排序快速排序--交换排序三数取中快速排序hoare版本快速排序挖坑法快速排序前后指…

Linux---Ubuntu软件卸载

1. 软件卸载的介绍 Ubuntu软件卸载有两种方式: 离线安装包的卸载(deb 文件格式卸载)在线安装包的卸载(apt-get 方式卸载) 2. deb 文件格式卸载 命令格式: sudo dpkg –r 安装包名 -r 选项表示安装的卸载 dpkg 卸载效果图: 3. apt-get 方式卸载 命令格式: …

JMeter如何从数据库中获取数据并作为变量使用?

前言 JMeter如何从数据库中获取数据并作为变量使用?这在我们使用JMeter做接口测试、压力测试时经常碰到,今天通过两个示例(实现MySQL数据库的查询结果的单值引用和多值引用)进行说明。这里虽然以MySQL数据库做说明,但…

Oracle VM VirtualBox使用——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

简述: Oracle VM VirtualBox是一款开源虚拟机软件,由德国Innotek公司开发,后被Sun Microsystems公司收购,并最终被甲骨文公司收购。它支持在Windows、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等操作系统上创建虚拟…

06.deque 容器

6、deque 容器 功能: 双端数组,可以对头端进行插入删除操作 deque 与 vector 区别: vector 对于头部的插入删除效率低,数据量越大,效率越低deque 相对而言,对头部的插入删除速度会比 vector 快vector 访…

一种解决Qt5发布release文件引发的无法定位程序输入点错误的方法

目录 本地环境问题描述分析解决方案 本地环境 本文将不会解释如何利用Qt5编译生成release类型的可执行文件以及如何利用windeployqt生成可执行的依赖库,请自行百度。 环境值操作系统Windows 10 专业版(22H2)Qt版本Qt 5.15.2Qt Creator版本5.0…

好的软件测试人员简历是什么样子的?

简历是入职职场的一张名片,也是进入职场一块“敲门砖”。从某种角度说,简历也是一张专业人员的说明书。 软件测试人员作为IT行业具有技术含量的职业,一份优秀的简历包含的内容以及如何写好简历尤为重要。接下来从以下两方面来介绍这个话题&a…

Mysql数据库的基础知识和yum安装步骤

MySQL数据库介绍 什么是数据库DB? DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作&#xff1…

代码随想Day41 | 343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 这道题的贪心思路是尽可能地拆分成3,(结论),需要进行数学证明,详细代码如下: class Solution { public:int integerBreak(int n) {if(n2) return 1;if(n3) return 2;if(n4) return 4;int re…

【每日OJ—有效的括号(栈)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1、有效的括号题目: 1.1方法讲解: 1.2代码实现: 总结 前言 世上有两种耀眼的光芒,一种是正在升起的太阳&#…

AUTOSAR StbM模块的配置以及代码实现

AUTOSAR StbM模块的配置以及代码实现 1、AUTOSAR配置 2、StbM_Init 初始化各个变量。 3、StbM_MainFunction StbM_Rb_IsSyncTimeBase 同步的TimeBase的id范围是0-15 StbM_Rb_IsOffsetTimeBase offset的TimeBase的id范围是16-31 StbM_Rb_IsPureLocalTimeBase pure的Time…

<JavaEE> 文件IO -- File类和文件操作

目录 一、文件的概念 二、文件系统 三、文件类型 四、使用 File 类进行文件操作 4.1 File 类中的 pathSeparator 属性 4.2 File 类构造方法 4.3 File 类常用方法 一、文件的概念 什么是文件? 广义上的“文件”是指抽象化的操作系统中的硬件设备和软件资源&a…

TC118AH 单通道内置功率 MOS 全桥驱动器

一、 TC118AH 特点 : 1、单通道内置功率 MOS 全桥驱动 2、驱动前进、后退、停止及刹车功能 3、内置迟滞热效应过热保护功能 4、低导通电阻(0.5Ω/1000mA) 5、连续输出电流可达 1.8A,峰值 2.5A 6、 无需外W大滤波电容,只需小贴片电容 7…

大数据Doris(三十八):Aggregate 和 Uniq 模型中的 ROLLUP

文章目录 Aggregate 和 Uniq 模型中的 ROLLUP 一、获得每个用户的总消费

Python-Selenium-使用 pywinauto 实现 Input 上传文件

当前环境:Win10 Python3.7 pywinauto0.6.8,selenium3.14.1 示例代码 from pywinauto import Desktop import osapp Desktop() dialog app[打开] dialog[Edit].set_edit_text(os.getcwd() .\\example-01.jpg) dialog[Button].click() 其他方法&…

airpods 无法使用Windows电脑充电的解决方法

打开设置 -> 蓝牙与其他设备 -> 显示更多设备 往下翻,找到“更多设备与打印机设置”,打开设备界面: 打开" Airpods Case",找到“硬件”选项 -> 双击"符合HID标准的供应商定义设备" -> “驱动程序…

【源码解析】Semaphore角度聊聊AQS

案例 Semaphore,俗称信号量,它是操作系统中PV操作的原语在java的实现,它也是基于 AbstractQueuedSynchronizer实现的 private static ExecutorService threadPool Executors.newFixedThreadPool(4);private static Semaphore semaphore ne…

MySQL数据库,触发器、窗口函数、公用表表达式

触发器 触发器是由事件来触发某个操作(也包含INSERT、UPDATE、DELECT事件),如果定义了触发程序,当数据库执行这些语句时,就相当于事件发生了,就会自动激发触发器执行相应的操作。 当对数据表中的数据执行…

进制之间的转换——n进制转换为m进制(C/C++实现,简单易懂)

目录 🌈前言: 📁 什么是进制转换: 📁其他进制转换成十进制: 📂二进制( B ) ——> 十进制( D ) 📂八进制( O ) ——> 十进制( D ) 📂十六进制( H ) ——> 十进制…