点云处理
文章平均质量分 61
selfDisciplineSun
自律更自由
展开
-
激光雷达点云聚类
代码来源:https://github.com/danielTobon43/DBScan-PCL-Optimized博客园的一篇DBSCAN算法:比较简陋,运行起来非常慢https://www.cnblogs.com/zlian2016/p/5617527.html激光雷达点云地面分割(附带有测试的激光电云bag包)https://blog.csdn.net/yuxuan20062007/article/details/82926783pcl形态学滤波器实现地面点分割http转载 2021-05-10 14:42:59 · 1465 阅读 · 0 评论 -
激光雷达和相机联合标定
准备工作需要一个标定板,尺寸可以自己定,但是需要雷达和相机都能捕捉到的,当然,雷达捕捉到的数据越多越好。然后把标定板悬空放置,如下图所示。为什么要这么做呢?其实就是方便后序在激光雷达捕获的点云中,分离出这个标定板。好了,现在调整好雷达和相机,转到合适位置,在相同位置上进行拍照和点云捕捉。捕捉完成后,需要找到至少三个对应点对,也就是二维点和三维点对,然后利用这三个点对进行PNP求解,计算出相机坐标系和雷达坐标系之间的变换关系。这个就是变换公式了。找寻对应点下面是捕获的图像和点云:...原创 2021-04-30 19:16:08 · 665 阅读 · 1 评论 -
三维点云学习(5)5-实现Deeplearning-PointNet-2-classfication
三维点云学习(5)5-实现Deeplearning-PointNet-2-classficationGithub PointNet源码数据集下载:为40种物体的三维点云数据集提取码:es14运行Epoch=50后的结果trainclassification.py#train_classification.py from __future__ import print_functionimport argparseimport osimport randomimpo转载 2021-02-28 10:33:18 · 1019 阅读 · 1 评论 -
三维点云学习(5)4-实现Deeplearning-PointNet-1-数据集的批量读取
三维点云学习(5)4-实现Deeplearning-PointNet-1-数据集的批量读取Github PointNet源码数据集下载:为40种物体的三维点云数据集提取码:es14因为本人初次学习pytorch,所以在数据处理上比较吃力原github上dataset.py读取的ModelNet40数据集为ply格式,课堂给予的数据集为txt格式,需要对dataset进行修改,如下为我的 testdataset.py 调试文件,可以读取txt格式的点云文件读取txt数据集代码块eg:注意使用转载 2021-02-25 12:47:53 · 453 阅读 · 0 评论 -
三维点云学习(5)3-Deep learning for Point Cloud-PointNet++
三维点云学习(5)3-Deep learning for Point Cloud-PointNet++强烈推荐 PointNet的深刻理解PointNet++示意图可分为 Encoder、 Segmentation、Classification三部分EncoderPointNet++ 的核心部分在于 set abstractionstep1:FPS 最远采样step2: Grouping Radius Neighbos + random sampling 或者 KNN 确保每个簇里的转载 2021-02-25 12:05:12 · 215 阅读 · 0 评论 -
三维点云学习(5)2-Deep learning for Point Cloud-PointNet
三维点云学习(5)2-Deep learning for Point Cloud强烈推荐 PointNet的深刻理解三种使用深度学习处理三维点云的方法VoxNet问题:现实自动驾驶场景中,volex grid 的分辨率需要构建很大,计算量巨大,并不具备扩展性投影二维卷积法PointNet核心: share mlp +max pool证明PointNet可以模拟任何的函数PN的表达PN的鲁棒性Critical Points Set:useful pointsUp转载 2021-02-25 12:04:54 · 247 阅读 · 0 评论 -
三维点云学习(5)1-introduction on to Deep learning
三维点云学习(5)1-introduction on to Deep learning人工智能、机器学习、深度学习深度学习概述预测房价例子:计算Wt未知参数梯度下降法 Gradient Descentgama:步长,深度学习选gama就是优化器参数线性模型优化步骤,w优化的参数神经元的Activation Function 将线性模型转化为非线性模型MLP 解决非线性模型:Softmax:score -> probabilitiesMLP:(Multi-Layer Pe转载 2021-02-25 12:04:36 · 167 阅读 · 0 评论 -
三维点云学习(4)4-Hough Transform
三维点云学习(4)4-Hough Transform霍夫变换的理论通俗理解Hough Tansform 霍夫变换核心思想:a.原始空间中得点-》参数空间中的线b.原始空间得线-》原始空间的点a.b.常用求模型的例子Hough Tansform voteHough Tansform -Effect of NoiseHough Tansform 另一种表示模型三个参数情况Hough Tansform 优劣优点:1.能减少噪声的干扰(投票机制)2.即使点的转载 2021-02-23 10:34:04 · 1042 阅读 · 0 评论 -
三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较
三维点云学习(4)5-DBSCNA python 复现-3-kd-tree radius NN 三方库 scipy 与 sklearn速度比较importfrom scipy.spatial import KDTreefrom sklearn.neighbors import KDTree # KDTree 进行搜索调用#建树#step2 通过判断,通过kd_tree radius NN找出所有核心点nearest_idx = tree.query_radius(data,转载 2021-02-23 10:31:14 · 451 阅读 · 0 评论 -
三维点云学习(4)7-ransac 地面分割+ DBSCAN聚类比较
三维点云学习(4)7-ransac 地面分割+ DBSCAN聚类比较回顾:实现ransac地面分割DBSCNA python 复现-1- 距离矩阵法DBSCNA python 复现-2-kd-tree加速数据集下载链接:https://pan.baidu.com/s/1aTTBMqGsisnPJvQXEtHRVw</a> 提取码:865H效果图:自写dbscan聚类效果因为数据点比较多,运行了26s左右 (cpu:AMD 3700x)自写的聚类效果并不是很好ite转载 2021-02-23 10:29:39 · 2393 阅读 · 1 评论 -
三维点云学习(4)6-ransac 地面分割
三维点云学习(4)6-ransac 地面分割ransac课堂笔记git大神参考代码ransac代码主要参考如下知乎大佬的ransac的线性拟合ransac的线性拟合使用ransac进行地面分割的原因:ransac模型的拟合的取决于物体的密度分布,在三维场景较为适合ransac地面分割效果图原点云图:分割出的地面:eg:因为ransac是个人复现,所以效果不是很理想,ransac具有随机性,所以每次运行的结果不尽相同红色为分割地面后的点云,蓝色为分割出的地面ransac代码块:转载 2021-02-23 10:27:02 · 2167 阅读 · 0 评论 -
三维点云学习(4)5-DBSCNA python 复现-2-kd-_tree加速
三维点云学习(4)5-DBSCNA python 复现-2-kd-tree加速因为在上一章DBSCAN在构建距离矩阵时,需要构建一个NN的距离矩阵,严重占用资源,古采用kd_tree搜索进行进一步的优化,使用kd_tree 的radius NN 进行近邻矩阵的构建,大大提高运算速率DBSCNA python 复现-1- 距离矩阵法使用自写、scipy库、sklearn库 kd-tree DBSCAN聚类最终效果图原图:自写kd_tree 的radius NN生成的聚类个数:3db转载 2021-02-23 10:23:51 · 1104 阅读 · 0 评论 -
三维点云学习(4)5-DBSCNA python 复现-1- 距离矩阵法
三维点云学习(4)5-DBSCNA python 复现-1- 距离矩阵法代码参考,及伪代码参考:DBSCAN 对点云障碍物聚类使用Kdtree加速的DBSCAN进行点云聚类DBSCAN 课程笔记回顾使用DBSCAN聚类最终效果图原图:DBSCAN 聚类后结果运行时间:生成的聚类个数:4dbscan time:19.526319Process finished with exit code 0DBSCAN-使用距离矩阵法-编写流程step1: 建立数据集中每个点两两点的距转载 2021-02-23 10:18:27 · 715 阅读 · 0 评论 -
三维点云学习(4)5-ransac
三维点云学习(4)5-ransacransac算法理解RANSAC 线性拟合代码ransac在三维点云的处理中,霍夫变换的处理一般在参数为两个或者三个,选择ransac处理点云构建多参数模型较好ransac-Line Fittingransac不断算sample模型,直到最后inline的数量最多卡方分布得到Distance threshold法1:经验选取法2:卡方分布获得N sample的数量或者迭代的次数e:知道数据点里大概有多少 outlne ratio转载 2021-02-23 10:15:23 · 484 阅读 · 0 评论 -
三维点云学习(4)3-Model Fitting Least Square
三维点云学习(4)3-Model Fitting Least Square最小二乘法B站视频Model Fitting 的选择Least Square Fitting普通的最小二乘法,对噪声的处理很差经典的损失函数:1.abs loss;噪声干扰一般2.square loss;噪声的干扰较大3.Cauchy loss;效果较好4.Huber loss ;效果较好NON-Linear LSQSummary最小二乘法主要用于 inline数据点较多,out lin转载 2021-02-23 10:14:03 · 190 阅读 · 0 评论 -
三维点云学习(4)2-mean shift & dbscan
三维点云学习(4)2-mean shift & dbscanmean shifthill climbing爬山算法1个圆包含的点尽可能最多点:step1:随机选取一个点作为radius的圆的中心step2:把圆中的所有点加起来算meansstep3:把新的means作为新的圆的圆心step4:不断重复step2 to step3,直到圆的圆心不再变化优劣:如果点的分布是高斯分布,效果较好,如果分布较散取决于初始化的点mean shift步骤step1.先转载 2021-02-23 10:12:30 · 402 阅读 · 0 评论 -
三维点云学习(4)1- Spectral的理论推导与解释
三维点云学习(4)1- Spectral的理论推导与解释回顾谱聚类的步骤Graph CutRatioCut -> UnnormalizedNcut->NormalizedMin-Cut进行聚类切割的过程可看作,将Wij(两点之间的关系权重)最小化多个类时切割时可看作 cut A和A的反集Min-Cut constrain描述一个分区的大小1.|A| 衡量每个节点中点的数量 -》对应与 RatioCut2.vol(A)描述A的权重大小,一个分区里所有的边的权转载 2021-02-23 10:10:36 · 221 阅读 · 0 评论 -
三维点云学习(3)8- 实现Spectral谱聚类
三维点云学习(3)8- 实现Spectral谱聚类谱聚类代码参考课堂谱聚类理论笔记效果图原图效果图前三种为自写的聚类算法,分别是 KMeans、GMM、Spectral,后面为sklearn自带的聚类算法库步骤:step1 先计算每个点的距离矩阵,再使用Kd-tree建立近邻矩阵如下分别为两种建立关系矩阵的办法 #step1 先计算每个点的距离矩阵,再使用KNN建立近邻矩阵 self.W = kdtreecontribute_Matrix(d转载 2021-02-21 08:14:12 · 959 阅读 · 0 评论 -
三维点云学习(3)7- 实现GMM
三维点云学习(3)7- 实现GMMgithub大神参考代码高斯混合模型的通俗理解GMM课程个人总结笔记最终效果图原图进行高斯聚类后的图代码编写流程1.输入数据集x1 x2 …xn,和K,初始化三个高斯模型的未知数2.E-step 算出后验概率 --一个点属于哪个类的概率3.M-step 算出高斯模型三个参数核心编码K-means为上一章写得KMeans.py代码,放置到统一目录下即可调用#GMM.pyclass GMM(object): # maxiter转载 2021-02-21 08:13:58 · 637 阅读 · 0 评论 -
三维点云学习(3)6- 实现K-Means
三维点云学习(3)6- 实现K-Means最终效果图编码流程将输入的N个数据点,分为N个类1.随机选取K个中心点2.E-Step(expectation):N个点、K个中心,求N个点到K个中心的nearest-neighbor3.M-Step(maximization):更新中心点的位置,把属于同一个类的数据点求一个均值,作为这个类的中心值4.不断重复2、3步调用模块在E-step 搜寻近邻点时使用了kd-tree的KNN搜索方法import numpy as npi转载 2021-02-21 08:13:47 · 660 阅读 · 0 评论 -
三维点云学习(3)5- Spectral Clustering 谱聚类
三维点云学习(3)5- Spectral Clustering 谱聚类谱聚类的个人理解谱聚类是依据点与点之间的连接性谱聚类的概念节点与节点之间的similarity(权重)可以用相关性来表示,直观理解就是距离,点与点直接越近,相关性越强,Similarities可以用矩阵来表示,记为W,Wii = 0 (没有自己与自己的连线)建立谱聚类的连接,得到相似矩阵1.每个点都是一个节点方法:1.radius neighbor ,在radius里都建立连接2.a.一个点是另一个点的KNN转载 2021-02-21 08:13:35 · 317 阅读 · 0 评论 -
三维点云学习(3)4-Expectation-Maximization (EM)
三维点云学习(3)4-Expectation-Maximization (EM)EM算法的概述EM算法中的M-step不断优化Q函数使用两种方法推导出GMM1.最大似然法2.EM算法K-Means GMM EM 关系K-Means是特殊的GMMK-Measn的方差接近·为0EM是通用的优化方法GMM是基于线性高斯模型的EM算法K-Means 与 GMM比较缺点:1.个个方向的方差一样,认为各个类都是一个圆或者球2.需要提供K3.对噪声比较敏感,可以使用k中值进行缓解转载 2021-02-21 08:13:07 · 159 阅读 · 0 评论 -
三维点云学习(3)3-Gaussian Mixture Model (GMM)
三维点云学习(3)3-Gaussian Mixture Model (GMM)高斯模型二维高斯分布(Two-dimensional Gaussian distribution)的参数分析一维高斯模型二维高斯模型GMMΣ????:方差 ????k:高斯模型得中心 ????k:每个不同的高斯模型占据的权重本质:若干个高斯模型进行线性组合都需要人工给定KZk:每个数据点属于第k类,表达为ZK=1P(Z)先验分布:含义点属于哪个高斯模型的概率P(Z|X)为后验概率,含转载 2021-02-20 18:07:38 · 469 阅读 · 0 评论 -
三维点云学习(3)2- K-Means
三维点云学习(3)2- K-MeansK-Means的具体构建流程将输入的N个数据点,分为N个类1.随机选取K个中心点2.E-Step(expectation):N个点、K个中心,求N个点到K个中心的nearest-neighbor3.M-Step(maximization):更新中心点的位置,把属于同一个类的数据点求一个均值,作为这个类的中心值4.不断重复2、3步K-Means数学上的定义K-Means的本质是一直优化损失函数 J最小化损失函数最小化损失函数有两种方法:E-转载 2021-02-20 18:05:24 · 391 阅读 · 0 评论 -
三维点云学习(3)1-聚类数学理论
三维点云学习(3)1-数学理论Linear Algebra谱定理对于一个对称矩阵,我们可以用他的特征值特征向量的线性组合表示瑞利熵Probability – Joint Probability联合概率图1 离散联合概率 ;图2 连续联合概率;图3 x连续y离散联合概率;图4 x离散y连续全概率公式条件概率:如下所示,并不是一个合法的分布,合法分布,要求概率为1对上式进行归一化后,可得到贝叶斯公式:贝叶斯公式应用到多维上:图论有向图z,x分别表示两个转载 2021-02-20 18:00:25 · 287 阅读 · 0 评论 -
三维点云学习(2)五种算法比较
三维点云学习(2)五种算法比较代码参考来自 黎老师github本次测试包含五种算法比较:octree print("octree --------------") #时间统计 constructiontimesum = 0 knntimesum = 0 radiustimesum = 0 brutetimesum = 0 # #construction begint = time.time() root = octree转载 2021-02-20 17:28:51 · 911 阅读 · 0 评论 -
三维点云学习(2)下-Octree
三维点云学习(2)下-OctreeOctree(八叉树)的基本结构思想:立体空间的分割二维平面的展示Octree(八叉树)的构建#extent:立方体中心点到面的距离#Center of the cube 立方体的中心1.判断每一个点里面都有怎么样的主节点2.计算子节点的中心在哪,子节点的边长,再把属于这个子节点的数据放进去Octant构建完成之后,进行kNN的搜寻这里展现了Octree比kd-tree的优越在于当红色框被S2包围时,可以马上结束搜寻1.如果octant是一转载 2021-02-20 17:11:25 · 618 阅读 · 0 评论 -
三维点云学习(2)中-Kd-tree (k-dimensional tree)
三维点云学习(2)中-Kd-tree (k-dimensional tree)kd-tree 实现代码来自黎老师github三维kd-tree 的图示如下图所示,为三维kd-tree的切割图,进行三个维度的切割,kd-tree的本质就是对三个维度的数据点不断构建平衡二叉树。运行结果axis 1, split value: leaf, pointindices: [24, 43, 48, 39]axis 1, split value: leaf, pointindices: [10转载 2021-02-20 16:57:59 · 1171 阅读 · 0 评论 -
三维点云学习(2)上- 二叉树实现K-NN Radius-NN Search
三维点云学习(2)上二叉树实现K-NN Radius-NN Search代码来自 黎老师github个人心得二叉树的搜寻方法正如老师课堂所说,实现二叉树的搜寻有两种方法,一种是递归,一种是循环判断,本质区别并不大#递归搜寻def searchrecursively(root,key): #1NN 搜索 ,递归法 if root is None or root.key == key: return root if key转载 2021-02-20 16:53:57 · 612 阅读 · 0 评论 -
三维点云学习(1)下-点云体素降采样
三维点云学习(1)下点云体素降采样(Voxel Filter Downsampling)代码参考网址秦乐乐CSDN博客理论参考知乎博主:WALL-E1.方法Centroid 均值采样Random select 随机采样2.伪代码流程3.代码编写step1 计算边界值 #step1 计算边界点 xmax, ymax, zmax = np.amax(pointcloud,axis=0) #计算 x,y,z三个维度的最值 x_min, y_转载 2021-02-20 16:33:39 · 3098 阅读 · 3 评论 -
三维点云学习(1)上-PCA主成分分析 法向量估计
三维点云学习(1)上环境安装1.系统环境 win10 或者 ubuntu2. Anaconda3+python3.6使用Anaconda创建的conda虚拟环境进行python的编写环境安装主要参考如下网址安装Anaconda3Anconda3 安装 open3d3. 使用conda install 或者 pip install 下载需要的py模块open3d numpy matplotlib pandas plyfile pyntcloud#offto_ply.pyimp转载 2021-02-20 12:05:17 · 2710 阅读 · 2 评论