首页 > 其他分享 >点云分割入门(一)

点云分割入门(一)

时间:2022-11-03 08:57:42浏览次数:83  
标签:基于 入门 分割 三维 点云 SACMODEL 数据

经典点云分割方法:

 随机采样一致方法(RANSAC)

 欧式聚类分割方法

 条件欧式聚类分割

 基于区域生长的分割

 基于颜色的区域生长分割

 最小图割的分割

 基于法线微分的分割

 基于超体素的分割

 

随机采样一致方法

应用:计算机视觉和数学领域,例如:直线拟合、平面拟合、计算图像或点云间的变换矩阵、计算基础矩阵

算法流程:

  

 

 

 Sample_consensus模块:

PCL中Sample_consensus库实现了随机采样一致性及其泛化估计算法,例如:平面、柱面

SACMDEL_PLANE——确定平面模型,平面的四个系数

SAXMODEL_LINE——用于确定线模型,直线的六个系数由直线上的一个点和直线的方向给出

SACMODEL_CIRCLE2D——用于确定平面中的2D圆,圆的三个系数由其中心和半径给出

SACMODEL_CIRCLE3D——用于确定平面中的3D圆,圆的七个系数由其中心、半径和法线给出

SACMODEL_SPHERE——确定球体模型,球体的四个系数由其3D中心和半径给出

SACMODEL_CYLINDER——确定气缸模型,圆柱体的七个系数由轴线上的点、轴方向和半径给出

SACMODEL_CONE——确定模型,椎体的七个系数由其顶点、轴方向和张角给出

SACMODEL_TORUS——尚未实施,圆环模型

SACMODEL_PARALLEL_LINE——在最大指定角度偏差内确定与给定轴平行的线的模型,系数类似于SACMODEL_LINE

SACMDEL_PERPENDICULAR_PLANE——在最大指定角度偏差内确定垂直于用户指定轴的平面的模型,系数类似于SACMODEL_PLANE

3D图像描述

第一种分法:

 多边形网格:3D建模

 基于体素的描述:数字数据于三维空间分割上的最小单位,体素用于三维成像,类比2维像素

 点云:三维坐标X,Y,Z、颜色、分类值、强度值、时间等

 隐式表面:用来做射线相交测试使用,表示该曲面上所有点满足的关系

 基于视图的描述:也被乘坐虚拟的标,是一组数据的逻辑表示,本身不包含任何数据,只包含映射到基表的一个查询语句

第二种分法:

 深度图像:距离影像,将从图像采集器到场景中各点的距离作为像素值的图像,深度图像经过坐标转化可以计算为点云数据

 点云

 网各:

 体积网格:

RGB-D

3D格式,其图像每个像素都有四个属性:红(R)、绿(G)、蓝(B)和深度(D)

点云

点云,一些点的集合,优势:包含深度数据

三维点云直接提供了三维空间的数据,图像则需要通过透视集合来反推三维数据

何为点云?

点云是某个坐标下的点的数据集,点包含了丰富的信息:X、Y、Z、颜色、分类值、强度值、时间等

优点:保留了三维空间中原始的几何信息,不进行离散化

有序点云:由深度图还原的点云,有序点云按照方阵一行一行的,从左上到右下排列,

无序点云:点的集合,点排列之间没有任何顺序,点的顺序交换后没有任何影响

点云面临的挑战:数据集规模小、高维性、3维点云的非建构化特性

点云的获取

三维传感器:双目相机、三维扫描仪、RGB-D相机(主流:Kinect系列、Intel的realsense系列、structure sensor等)

点云的内容

激光测量原理:三维坐标(X、Y、Z)、激光反射强度、目标的表面材质、粗糙度、入射角方向、仪器的发射能量、激光波长

摄影测量原理:三维坐标(X、Y、Z)、颜色(RGB)

结合激光测量和摄影测量:三维坐标(X、Y、Z)、激光反射强度(Intensity)、颜色(RGB)

点云的属性

空降分辨率+点位精度+表面法向量

点云目前的主要存储格式包括:pts、LAS、PCD、.xyz 和. pcap 等

pts:最简便的点云格式,按XYZ顺序存储点云数据,整型或浮点型

LAS:激光雷达数据,允许不同的硬件和软件提供商输出可互操作的统一格式。

C F T I R N A R G B X Y Z

class

所属类

flight

航线号

time

GPS时间

intensity

回波强度

return

第几次回波

number of return

回波次数

scan angle

扫描角

           

PCD:PCL库官方指定格式,为点云量身定制的格式

  优点:支持n维点类型扩展机制,能够更好的发挥PCL库的点云处理性能。

  文本格式:文本、二进制

.xyz:文本格式,数据格式:X+Y+Z+点的法向量,数字间以空格分隔

.pcap:通用的数据流格式,

  Velodyne公司的激光雷达默认采集数据文件格式。

  二进制文件

  整体一个全局头部(GlobalHeader),分成若干个包(Packet),每个包包含头部(Header)和数据(Data)

obj:文本文件

  以#开头的注释行作为文件头

  数据部分每一行的开头关键字代表该行数据所表示的几何和模型元素,以空格做数据分隔符

相应基础算法库对不同格式的支持

PCL库

支持跨平台存储

window

linux

macOS

ios

android

C++编程库

Boost、

Eigen

Flann

VTK

CUDA

OpenNI

Qhull

实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等操作

便于移动端开发

pythonpcl 安装:

(6条消息) 【python3.6】python安装PCL(适用命令行或pycham中)_米码收割机的博客-CSDN博客_pcl python

VCG库

专门为处理三角网格而设计的

      网格 提供许多先进的处理网格的功能,点云出来功能

CGAL

计算集合算法库

  C++   点云、网格

提供方便、高效、可靠的几何算法

实现了很多处理点云以及处理网格的算法

Open3D

支持3D数据处理软件快速开发的开源库

 

C++

Python

  点云、网格、RGB-D

可以在不同的平台上设置,可以从源代码进行最小的编译,

代码干净、样式一致,并通过清洗的代码审查极值进行维护

在点云、网格、RGB-D数据上都有支持

 

三维点云有多种表示方法

基于二维投影的方法

  CNN 最好的应用领域在于图像处理,将三维点云数据投影到二维图像平面,即可使得 CNN 应用于点云数据成为可能。

基于三维体素的方法。

  对三维点云进行二维投影降低了算法处理的难度,但是三维到二维的投影必然带来几何结构信息的损失,直接进行三维特征的提取在一些场景下是非常有必要的。一种最自然的想法便是 CNN 的延拓,将二维卷积神经网络拓展一个维度,使其可以处理三维排列的数据;同时,对点云进行体素化 (Voxelization),将其转换为空间上规则排布的栅格,使得三维卷积神经网络(Three Dimension Convolutional Neural Network, 3DCNN) 可以直接应用在这种表示上。

基于原始点的方法。

  无论是二维投影还是三位体素,均需要对原始点云进行一定的转换,而转换必然带来数据信息的损失。

基于图的方法。

  现实生活中存在大量的非结构化数据,如交通网络、社交网络等,这些数据的节点间存在联系,可以表示为图。研究图数据的学习是近年来学界的热点。三维点云数据可以看作图数据的一种,图网络的很多思想可以被借鉴于点云数据的特征学习中。图卷积 (Graph Convolution Network, GCN) 可分为基于谱的图卷积(Spectralbased GCN) 和基于空间的图卷积 (Spatial-based GCN)。

相比于图像数据,点云不直接包含空间结构,因此点云的深度模型必须解决三个主要问题

如何从稀疏的点云找到高信息密度的表示,

如何构建一个网络满足必要的限制如size-variance和permutation-invariance,

如何以较低的时间和计算资源消耗处理大量数据

DataSets

Metric

点云数据集

Semantic3D 经典的室外场景点云分割数据集 通过激光雷达得到数据
S3DIS 斯坦福大学开发的带有像素级语义标注的语义数据集 3D相继或者iPad采集
SemanticKITTI 连续多帧点云数据集,KITTI数据集后面又经过处理得到的 汽车采集
SensatUrban 室外大场景点云数据集 无人机分区域采集组合
Modelnet 最开始接触点云领域用到的数据集  
ShapeNet 经典最早的数据集  

点云深度学习模型

PointNet/PointNet++:很好用

RandLA-Net:

PointCNN

PointConv

基于点云的分类

 

基于点云的分割

点云分割是点云处理的精髓,也是三维图像相对二维图像最大优势的体现

点云分割目的——提取点云中的不同物体,实现分而治之,突出重点,单独处理

RanSaC算法:

  原本用于数据处理的一种经典算法,

  作用:在大量噪声情况下,提取物体中特定的成分,从一堆数据中挑出自己最心仪的数据

  适用范围:从杂乱点云中检测某些具有特殊外形的物体

基于邻近信息的点云分割:

 kdTree

  步骤:1、建立kdTree(选择最Sparse的维度,找到该维度上中间点,垂直该维度做第一次划分,此时k为超平面被一分为二,在两个子平面中再找最sparse的维度,以此类推)  

     2、在kdTree中查找

 OcTree

  容易,太极生两仪,两仪生四象,四象生八卦,针对疏散的、且分布很广泛的点云,

  缺点:很难决定最小立方体应该是多少,太大则立方体里可能有很多点云,太小则可能立方体之间连不起来,

欧几里得算法

 

找到空间中某点p10,用kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p12,p13,p14....放在类Q里

在 Q里找到一点p12,重复1

在 Q里找到一点p13,重复1,找到p22,p23,p24....全部放进Q里.

当 Q 再也不能有新点加入了,则完成搜索了

 

基于点云的目标检测

点云数据的增强和完整化

由激光雷达收集的点云,特别是那些来自室外场景的点云,遭受不同种类的质量问题,如噪音,异常值,和遗漏点。所以我们的目标是补全缺失的点,移除掉异常的点。

Discriminative Methods

传统的方法包括局部表面拟合、邻域平均和猜测底层噪声模型

PointCleanNet提出了一种基于数据驱动的方法去消除错误点减少噪声

PCPNet首先对异常值进行分类并丢弃它们,然后估计一个将噪声投影到原始表面的修正投影

Total Denoising,在不需要额外数据的情况下实现了非监督降噪对点云数据

临界点层(CPL)在保留重要点的同时学会减少点的数量。这一层是确定性的,不确定顺序的,并且通过避免邻接搜索也很有效。

通过将采样后的点近似为原始点的混合来逼近点采样的可微松弛

 

Generative Methods

通过生成假样本,帮助定位网络的潜在缺陷。

point perturbation and point generation:扰动是通过对已有的点进行可忽略的移动来实现的,生成是通过添加一些独立分散的点或少量具有预定义形状的点簇来实现的。

除了对抗性生成,生成模型也用于点云上采样。向上采样点云通常有两种动机。一是减少数据的稀疏性和不规则性,二是恢复遮挡造成的缺失点

 

标签:基于,入门,分割,三维,点云,SACMODEL,数据
From: https://www.cnblogs.com/Ms-wang/p/16795040.html

相关文章

  • Spring Boot 入门
    简介SpringBoot帮助您创建可以独立运行的、基于产品级Spring的应用程序。您可以使用SpringBoot创建Java应用程序,这些应用程序可以通过使用java-jar或更传统......
  • C# .Net 以换行符(\r\n)分割字符串
    字符串数字的形式:1string[]StringsContent=strT.Split(newstring[]{"\r\n"},StringSplitOptions.None);2StringsContent=StringsContent.Where(s=>!string......
  • python基础入门之面向对象
    python基础入门之面向对象面向对象前戏之人狗大战"""编写代码简单的实现人打狗,狗咬人的小游戏(剧情需要,人与狗是好朋友)"""#推导步骤1:代码定义出人和狗person1={'......
  • nginx配置http服务简单入门
    nginx是用的最多的web服务器java和python可以写nginx服务,为什么还需要nginx是因为nginx是纯粹的做http实现的服务,并没有业务逻辑,做http代理1.需要安装nginxnginx.org主......
  • Hadoop入门(2)——环境准备
    CentOS环境环境要求使用VMware虚拟机搭建基于CentOS7.5的Hadoop环境:cpu核数(需要搭建3台Hadoop组成集群,加上Windows本机,所以可以分配的数量为本机的cpu核数除以4)内存至......
  • C语言strtok()函数:字符串分割_F_hawk189_新浪博客
    头文件:#include函数定义:char*strtok(char*s,constchar*delim);函数说明:strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串......
  • 第一章、Flink wordcount 入门示例
    概述希望通过本示例对flink有一个轮廓性的认识本示例实现效果:flink连接SocketServer,从SockerServer中按行读取数据作为数据输入,将输入的数据根据空格切分、分组、......
  • 分布式事务框架 Seata 入门案例
    1. SeataServer部署Seata分TC、TM和RM三个角色,TC(Server端)为单独服务端部署,TM和RM(Client端)由业务系统集成。首先,下载最新的安装包也可以下载源码,然后本地编译。最新......
  • 线段树入门
    是一种二叉搜索树,通过二分法访问或修改区间值,区间大小不超过10^6,区间值必须满足区间加法,即仅当对于区间[L,R]的问题的答案可以由[L,M]和[M+1,R]的答案......
  • day12 --> (Web概念回顾、Tomcat服务器、Servlet入门)
    Web相关概念的回顾: 1.软件架构:1.B/S:浏览器/服务器端2.C/S:客户端/服务器端2.资源分类:1.静态资源:所有用户访问后,得到的结果都是一样的,称之为静态资源如:html、......