点云数据处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了点云数据处理相关的知识,希望对你有一定的参考价值。

参考技术A 三维计算视觉研究内容包括:

(1)三维匹配:两帧或者多帧点云数据之间的匹配,因为激光扫描光束受物体遮挡的原因,不可能通过一次扫描完成对整个物体的三维点云的获取。因此需要从不同的位置和角度对物体进行扫描。三维匹配的目的就是把相邻扫描的点云数据拼接在一起。三维匹配重点关注匹配算法,常用的算法有 最近点迭代算法 ICP 和各种全局匹配算法。

(2)多视图三维重建:计算机视觉中多视图一般利用图像信息,考虑多视几何的一些约束,相关研究目前很火,射影几何和多视图几何是视觉方法的基础。在摄影测量中类似的存在共线方程,光束平差法等研究。这里也将点云的多视匹配放在这里,比如人体的三维重建,点云的多视重建不仅强调逐帧的匹配,还需要考虑不同角度观测产生误差累积,因此也存在一个优化或者平差的过程在里面。通常是通过观测形成闭环进行整体平差实现,多视图重建强调整体优化。可以只使用图像,或者点云,也可以两者结合(深度图像)实现。重建的结果通常是Mesh网格。

(3)3D SLAM:点云匹配(最近点迭代算法 ICP、正态分布变换方法 NDT)+位姿图优化( g2o 、LUM、ELCH、Toro、SPA);实时3D SLAM算法 (LOAM);Kalman滤波方法。3D SLAM通常产生3D点云,或者Octree Map。基于视觉(单目、双目、鱼眼相机、深度相机)方法的SLAM,比如orbSLAM,lsdSLAM...

(4)目标识别:无人驾驶汽车中基于激光数据检测场景中的行人、汽车、自行车、以及道路和道路附属设施(行道树、路灯、斑马线等)。

(5)形状检测与分类:点云技术在逆向工程中有很普遍的应用。构建大量的几何模型之后,如何有效的管理,检索是一个很困难的问题。需要对点云(Mesh)模型进行特征描述,分类。根据模型的特征信息进行模型的检索。同时包括如何从场景中检索某类特定的物体,这类方法关注的重点是模型。

(6)语义分类:获取场景点云之后,如何有效的利用点云信息,如何理解点云场景的内容,进行点云的分类很有必要,需要为每个点云进行Labeling。可以分为基于点的方法,基于分割的分类方法。从方法上可以分为基于监督分类的技术或者非监督分类技术,深度学习也是一个很有希望应用的技术。

(7)立体视觉与立体匹配 ZNCC

(8)SFM(运动恢复结构)

1、点云滤波方法(数据预处理):

双边滤波、高斯滤波、条件滤波、直通滤波、随机采样一致性滤波。

VoxelGrid

2、关键点

ISS3D、Harris3D、NARF

SIFT3D、

3、特征和特征描述

法线和曲率计算 NormalEstimation 、特征值分析Eigen-Analysis、 EGI

PFH、FPFH、3D Shape Context、Spin Image

4、 点云匹配

ICP 、稳健ICP、point to plane ICP、Point to line ICP、MBICP、GICP

NDT 3D 、Multil-Layer NDT

FPCS、KFPCS、SAC-IA

Line Segment Matching 、ICL

5、点云分割与分类

分割:区域生长、Ransac线面提取、NDT-RANSAC、

K-Means、Normalize Cut(Context based)

3D Hough Transform(线、面提取)、连通分析、

分类:基于点的分类,基于分割的分类;监督分类与非监督分类

6、SLAM图优化

g2o 、LUM、ELCH、Toro、SPA

SLAM方法:ICP、MBICP、IDC、likehood Field、 Cross Correlation 、NDT

7、目标识别、检索

Hausdorff 距离计算(人脸识别)

8、变化检测

基于八叉树的变化检测

9. 三维重建

泊松重建、Delaunay triangulations

表面重建,人体重建,建筑物重建,树木重建。

实时重建:重建植被或者农作物的4D(3D+时间)生长态势;人体姿势识别;表情识别;

10.点云数据管理

点云压缩,点云索引(KD、Octree),点云LOD(金字塔),海量点云的渲染

点云驱动的计算机图形学主要研究应用

http://vcc.szu.edu.cn/research/2015/Points/

MATLAB点云处理(十九):点云合并(pcmerge)

1 点云合并函数 pcmerge

pcmerge — 合并两个点云

语法:

给定输入点云A和输入点云B,以及体素下采样的栅格边长gridstep,将合并结果保存到pcCloudMerge

ptCloudMerge = pcmerge(ptCloudA,ptCloudB,gridStep)

2 代码实现

代码:

clc;
clear;

% 加载点云
ptCloudA = pcread('A.pcd');
ptCloudB = pcread('B.pcd');

figure;
pcshowpair(ptCloudA,ptCloudB);
title('点云A和点云B')
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Y(m)');

% 合并点云
gridStep = 0.1; % 体素下采样格网边长
pcCloudMerge = pcmerge(ptCloudA,ptCloudB,gridStep);

figure;
pcshow(pcCloudMerge);
title('点云合并')
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Y(m)');

% 保存合并点云
pcwrite(pcCloudMerge,'merge.pcd','Encoding','binary');	%保存为binary形式的PCD点云

结果展示:


相关链接

https://ww2.mathworks.cn/help/vision/ref/pcmerge.html#responsive_offcanvas

以上是关于点云数据处理的主要内容,如果未能解决你的问题,请参考以下文章

matlab那个版本可以进行点云

:点云数据处理

急!!在MATLAB下怎样处理点云

怎么用MATLAB对点云数据处理

点云数据处理

点云数据UDP数据包解析算法举例