课程笔记-三维点云处理01 ——Introduction and Basic Algorithms

本系列笔记是对深蓝学院所开设的课程:《三维点云处理》的笔记
课程每周更新,我也会努力将每周的知识点进行总结,并且整理成笔记发上来,欢迎各位多多交流&批评指正!!

本文主要为课程第一章的笔记!

课程链接:

三维点云处理——深蓝学院

正式内容:
####################################################

Course outline and prerequisite

####课程内容介绍

本系列课主要介绍三维点云 处理 及应用

三维点云是一系列的三维点位置坐标

三维点云获取形式:

lidar
RGBD
CAD模型
SfM(交叉矩阵结构)(Structure from motion) 是一种三维重建的方法
等等

三维点云应用

应用比较广泛,因为输入信息比较简单。
应用领域:
机器人领域
自动驾驶领域
3D模型重构
人脸识别(faceID)
等等

三维空间表示方法

除点云外,三维空间的表示方法主要还有以下几种,各自有优缺点:

mesh是一系列的三角面片组成
体素占用内存过大
二叉树(octree)可以解决占用内存过大的缺点,但是表述起来相对困难一些


与上面几种表述方式相比,点云只是一个矩阵,表述起来非常简单。因此这些年来被广泛沿用

点云应用的困难

三维点云在应用上也有很多困难:

  1. 密度 点云一般在近处的物体很稠密,远处的物体很稀疏,使得远处的物体很难被识别
  2. 不规则 很难找到相邻点之间的规律(不想图像排列那么规范)
  3. 纹理信息 由于没有纹理信息,只有位置信息,所以会发成误识别
    (个人理解:只能检测有没有 不能检测是什么)
  4. 无序性 (不利于深度学习)
  5. 旋转不变性 (深度学习)
课程设置

传统方法+深度学习方法

传统方法:知道步骤,门槛较高
深度学习:简单,好用,黑盒子

传统方法 vs 深度学习

课程设置上,前四节课是传统方法,后四节课是偏向深度学习和slam应用的:

课程设置:理论讲解和实践讲解 五五开

参考 书籍&课程&课程工具



作业安排

每周都有作业,有必做和选做,选做的难度相对较高

期中和期末有大作业
期中: KITTI数据集地面提取
期末:基于点云的目标检测问题

PCA and Kernel PCA

PCA

PCA:主成分分析

主成分分析的概念和应用

应用:
Dimensionality reduction
Surface normal estimatior
Canonical orientation
Keypoint detection
Feature description

降维
表面法向估计器
规范定向
关键点检测
功能描述

主要是用于点云分类

一些基础的数学概念

股定理:

瑞利商:

PCA原理


输入:xi…
输出:聚类过后的xi的聚类集合 zk

PCA使用方法

PCA应用

一个非常常见且重要的应用:降维
将高维数据转化为低维数据,并且尽可能的保留特征

可以用先主成分分析再聚类处理分类问题 比较著名的 eigenfaces: 不用神经网络就能做人脸识别·

Kernal PCA

普通的PCA事实上是一个线性的PCA,事实上也是对矩阵的线性组合
但是点云数据很可能不是线性的,比如:

此时,如果还用线性的话就不行了,需要将其放到更高的维度去做处理

提升到三维空间中,就可以非常好的去做理解和处理了

这一个升维聚类的方法就被称为kernal PCA (核 PCA)

K-PCA的方法


数学证明:





一通操作,一个都没看懂。。。
以后慢慢再看吧

总之,最后得出了结论

核函数的选择

有多重核函数可以选择,但是通常要看应用的场景

K_PCA的步骤
  1. 选择一个核函数k(xi,yj),并计算出Gram Matrix K(i,j)
  2. 对 K做一个正态化处理(为了使函数在高位度内的平均值也为0)
  3. 求解高纬度下的特征值和特征向量
  4. 对解出来的α做一个正态化处理
  5. 完成以上步骤后,可以把任何一个数据点投影到主向量上,得到投影后的数据

    示例1: 圆圈投影成圆锥

    示例2:使用高斯核函数

同时,运用KPCA可以将高维的运算转化为低维度的核函数

Smoothing, Filtering and Downsampling

surface normal

作为上方K-PCA的应用:
.
如何找点云里面每一个点的法向量

法向量


对于曲面、体 来说 法向量可以是垂直于他所切平面的向量

对于点云来说,寻找法向量找的是最没用的向量

所谓最没用的点,言外之意就是数据投影在这些向量上面数据为0,即最不显著的向量

曲率为最小特征值除特征值的和

点云法向量定义


找一个点云分布上最大的平面,然后根据平面方向确定这一组点云的法向量

其中,上图中点c作为这一系列平面的中心点存在。

如何确定c: 找到这一组点中和其他点平均距离最小的点值
正态化分布 这些点到c的距离

法向量求解时实际问题

实际求解法向量时,可能会遇到很多问题,比如点没有按维度分布、非常稀疏等等
即,这些点是需要做噪声处理的

大概有上述四种方法可以对于这个问题进行简化,目前先讲一下第二种方法:
带加权的正态估计

weighted normal estimation


也可以用深度学习方法进行法向量估计:

fliters 滤波


滤波是一个很宽泛的概念,如噪声去除;降采样;上采样;平滑等操作
都可以统称为滤波

降采样:变稀疏

上采样:在稀疏的点云中添加一些点使其变稠密(比如双边滤波方法)

噪声去除

规定一个点的周围一定范围为其邻域,在领域内点的个数如果少于一定值则将该点去除(过滤掉)

统计版本的outlier removal

同样对领域内的点做一个邻域规定,然后根据平均的距离求一下分布,并且根据3σ去做一个筛选

降采样 voxel grid downsampling

使得需要的算力更少,是一种让数据更有代表性的方法

一般可以有几种方法,一个是以范围内的一个点代替所有点,另一个是选取方框内点的平均值,如下图

降采样的流程:

先定义一个大框,把所有点都放进去
然后定义降采样的分辨率,按照体积划分网格
然后计算每哪一个点属于哪一个格子
对每个点进行排序,然后开始进行采样(可以选择采样策略)
最后保留选择的点,完成采样

注意1:当空间很大的时候没,注意不要内存溢出
注意2:排序的时候要用小于做排序,而不能是小于等于(c++中)

降采样遇到的问题:

数据很大,应该怎么处理?
因为空间很大,所以很多voxel事实上里面是没有点的,所以我们不需要根据容器来划分点,应该根据点去装容器,然后把空的容器去掉
可以用 hash table,方法如下:

前四步都一样,第五步开始定义一个哈希函数,使得每一个点都能映射到一个函数中;

但是事实上,可能会出现冲突:


出现冲突的时候,需要释放冲突,新来的点占坑,将原有的点重新回到序列中

这个方法跟普通的降采样相比,可以更快。

其他降采样方法:(FPS、NSS)
FPS方法


核心思想是,找一系列点,让这些点的平均距离越远越好
过程:一个一个寻找,每次寻找距离最远的点
作用:可以去除掉一些很稠密的点,让其变得更加稀疏。

NSS方法


可以增加一些特征部分的采样点选取的稠密性,以此来保证特征(如上图中的一个弯)

经常应用于点云的对齐

深度学习方法

如:learning to sample

不是基于几何空间的降采样,而是基于语义的降采样
这样的话可以使得有特征的点被保留
即降采样前后,点云还是可以保留原来的语义标签

上采样 :bilateral filter

例子:希望对一个亭子做模糊
可以用高斯和 去做模糊 用他周围的xiangg

这个效果肯定是不理想的,因为我们想虽然亭子模糊,但是边缘特征要保留

就可以通过 bilateral filter 进行保留
意思是通过两个高斯核进行处理

HW 作业


下节课预告

点云的邻近搜索 三种方法

课程笔记-三维点云处理01 ——Introduction and Basic Algorithms相关推荐

  1. MeshLab学习笔记——三维点云重建以及三维点云法向量计算

    Meshlab是一个强大的三维模型处理的软件,在三维点云的处理方面也十分强大,不仅仅可以用三维点云重构出三维模型,还可以计算出三维点云每个点的法向量,这在逆向工程和基于三维点云的隐式曲面重建中非常有用 ...

  2. 《从菜鸟到大师-杨老师课程笔记》Python工程师之 01

    文章目录 一.文章出处 二.基础语法 2.变量与常量 3.输入与输出 4.赋值与表达式 四.数据类型 1.数字类型 2.字符串类型 3.列表类型 4.元组类型 5.字典类型 五.字符串操作 一.文章出 ...

  3. Games101 计算机图形学课程笔记: Lecture 10 Geometry 1 (Introduction)

    目录 Applications of Textures Environment Map 凹凸贴图 位移贴图 三维纹理 几何 隐式表示 Algebraic Surfaces Constructive S ...

  4. 李宏毅老师2022机器学习课程笔记 01 Introduction of Deep Learning

    01 Introduction of Deep Learning 机器学习相关规定 什么是机器学习 机器学习的概念 我觉得李老师讲得非常好的一点就是,他真正说清楚了机器学习中的一些因果逻辑. 比如我之 ...

  5. azure kinect三维点云_万众期待的 【三维点云处理】 课程来啦!

    三维点云是最重要的三维数据表达方式之一. 从技术角度看,SLAM.三维重建.机器人感知等领域,点云都是最简单且最普遍的表达方式:相对于图像,点云有其不可替代的优势-深度,也就是说三维点云直接提供了三维 ...

  6. (一) 三维点云课程---PCA介绍

    三维点云课程-PCA介绍 三维点云课程---PCA介绍 三维点云课程---PCA介绍 1. 什么是PCA 2.知识铺垫 2.1 SVD分解(奇异值分解 ) 2.1 谱定理 2.2 Rayleigh商 ...

  7. (七) 三维点云课程---ICP应用

    (七)三维点云课程-ICP应用 三维点云课程---ICP应用 (七)三维点云课程---ICP应用 1.代码解读 1.1滤波 1.2 计算特征向量 1.3 特征向量的配准 1.3.1 get_poten ...

  8. 西湖大学张岳老师NLP课程笔记1 Introduction

    西湖大学张岳老师NLP课程笔记1 Introduction 参考资料 B站链接 课程主页 <Natural Language Processing: A Machine Learning Per ...

  9. Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象

    接阿里云python课程笔记(三):数据结构 我们讨论一下python中的深拷贝和浅拷贝 dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}# 引用对象dic ...

最新文章

  1. 领军筑梦 | 中建二局2022年春季校园招聘正式启动!
  2. Building and running Node.js for Android
  3. Vs定义超大数组时,stack OverFlow的解决方法
  4. 项目管理怎样游刃有余
  5. Angular No provider for EffectsRootModule错误消息的出现原因和修复方式
  6. 【边缘检测】RCF: Richer Convolutional Features for Edge Detection
  7. BZOJ2690: 字符串游戏(平衡树动态维护Dfs序)
  8. 【译】在 Linux 上不安装 Mono 构建 .NET Framework 类库
  9. Spark精华问答 | Spark 会替代Hadoop 吗?
  10. docker宿主机访问容器_干货来啦!带你初探Docker逃逸
  11. 大端BigEndian、小端LittleEndian与字符集编码
  12. 卷积编码verilog实现
  13. 校学 离散数学主析取合取范式 做题心得
  14. 别踩白块游戏用html如何制作,纯用JavaScript 实现网页上《别踩白块儿》小游戏
  15. Pandas 报错 TypeError: ‘Series‘ objects are mutable, thus they cannot be hashed
  16. 在哪打开用户和计算机,控制面板在哪 打开控制面板的几种方法
  17. linux默认头文件,Linux安装合适内核头文件的方法
  18. matlab单边带调制器设计,通信系统综合设计与实践(基于MATLAB的单边带调制)研究.doc...
  19. Java选择题(十八)
  20. python股票成交量柱状图_成交量柱状图怎样判断股票行情

热门文章

  1. 锁屏状态下,看到歌手图片
  2. 苹果手机电池健康怎么看_MIUI12怎么看电池温度 小米手机电池损耗寿命查看方法...
  3. 创业者李一男:过去的荣耀早已归零
  4. 元宇宙照进现实 金蝶联手科大讯飞发布“数字员工”
  5. 不正经技术研究,键盘侠,你武器可能有个坑!!
  6. python idle有哪些_Python IDLE入门简介 Python IDLE与python有什么区别
  7. WeWork中国首个创新项目即将落地武汉;中联重科新材料总部将落户湘阴 | 美通企业日报...
  8. 大一微积分笔记整理_大一高数如何做笔记?
  9. 服务器硬盘 frn bad,【服务器问题】浪潮inspur服务器个别硬盘亮红灯且发出1长的滴滴声响...
  10. 星星之火OIer:对拍