PCL
文章平均质量分 66
PCL代码实践
者山海
所有文章均免费,转载请附上我博客链接:https://blog.csdn.net/xhm01291212?spm=1011.2266.3001.5343
源码下载地址:https://github.com/xhm0129(刚开始写博客,暂时不能使用)
技术栈:PCL_OpenCV_OSG_Yolov;
使用平台:windows_ubuntu;
开发语言:c++_python
展开
-
PCL随机采样滤波(random_sample)
在点云中一定数量的点云点,作为抽稀后的点。(1)随机选取点云中一定数量的点云点,作为抽稀后的结果点云。原创 2024-08-01 17:25:23 · 137 阅读 · 0 评论 -
PCL半径滤波(radius_outlier_removal)
对整个点云建树,进行邻域搜索,如果某个点云点邻域搜索得到的邻域点个数小于某个阈值,则证明它是离群点,删除。(1)对整个点云。(2)对每个点云点依次进行。(3)如果。(4)剩余未离群的点云点被组合成结果文件。原创 2024-08-01 12:08:31 · 169 阅读 · 0 评论 -
PCL投影滤波(project_inliers)
设定一个PCL内置的模型(如平面、直线、圆柱等,具体类型在文末),点云投影到这个模型上。(1)设定模型类型和参数。(2)点云到该模型上。如何理解即用一组光线将物体的形状投射到一个平面上去,称为“投影”。你站在阳光下,地面上的影子就是你对地面的投影;:光线垂直于待投影平面的投影。(PCL中该方法即用的正投影)斜投影:光线与待投影平面倾斜的投影。如何理解以平面投影为例(常用):想象此刻你面前的电脑屏幕是一个无限延展的平面;你朝向。原创 2024-08-01 11:13:05 · 527 阅读 · 0 评论 -
PCL3D平面裁剪滤波(PlaneClipper3D)
使用3D的平面裁剪点云。(1)定义你所需的平面。(2)判断所有点云点在平面的哪一侧,。如何以点M为例:1)设平面上的一个向量G。2)做平面到点M的垂直向量L,点乘计算向量L和向量G的夹角(点乘算夹角,叉乘算垂直向量)3)如果夹角在0°到180°(各算法接口计算的值不一样,按情况定阈值),那么点在平面上方;如果夹角在180°到360°,那么点在平面下方。原创 2024-08-01 10:31:59 · 68 阅读 · 0 评论 -
PCL直通滤波(passthrough)
即对pcl::PointT中的某个(如X/Y/Z)来进行滤波,该维度中超过用户设定阈值范围的点云点删除,在用户设定阈值范围点云点保留。(1)设置需要滤波的点云属性值。(2)判断是否在用户设定的阈值范围内,在其中的保留,不在其中的删除。2.使用场景需要对某一个维度滤波的场景。例如删除地面点。如下图:通过直通滤波器过滤掉红框内z值范围的点云。原创 2024-07-31 17:18:20 · 80 阅读 · 0 评论 -
PCL法向量空间下采样滤波(normal_space)
对于原始点云,通过其点云法向量进行下采样,在,在。(1)计算点云的空间法向量。(2)依次,以此近似判断每个点的曲率。曲率大的地方判断为边缘点,曲率小的地方判断为内部点。(3)对于曲率大的地方(),下采样量级小(曲率小的地方(),下采样量级大(以此达到的目的。(4)输出结果点云。以下图为例:红色即为法向量变化小的点云块,他们的曲率变化小,那么抽稀阈值大,抽稀过后较稀疏。绿色即为法向量变化大的点云块,他们的曲率变化大,那么抽稀阈值小,抽稀过后较稠密。原创 2024-07-31 16:52:54 · 616 阅读 · 0 评论 -
PCL模型滤波(model_outlier_removal)
生成一个模型,通过点云各点和此模型之间的相似程度(通过点云点和模型之间的),筛选同模型相似的点云点,生成结果点云。(1)生成模型(PCL支持模型类型附在文末)。(2)通过。(3)将筛选出来的点云生成新点云。原理介绍如下图所示(以平面模型滤波举例):想象平面A为我们设定好的平面模型,这些点为散列点云,距离阈值设定为m。我们将所有的散列点计算得到该点到平面A的距离n,如果nm则不保留。原创 2024-07-30 17:43:25 · 537 阅读 · 0 评论 -
PCL中值滤波(median_filter)
在点云点附近的邻域内(即窗口),对所有点云点按照方向进行排序,然后取其中的中间值作为该点的值。(1)依次取所有点云点,对每个点云点进行邻域搜索(2)对每个点云点邻域内的所有点,进行z坐标方向排序(3)取这块点云点的中值点,作为该点云点的新值(4)遍历所有点云,依次如上操作;得到结果点云。原创 2024-07-30 15:46:26 · 207 阅读 · 0 评论 -
PCL局部最大值滤波(local_maximum)
依次判断并删除,每个点云点的邻域半径范围内局部最大的点。(1)每个点云点依次进行邻域搜索,得到每个点云点的邻域半径。(2)在每个点云点的邻域半径内,查找z值距离该点云点最远的点(3)删除该点,并依次遍历所有点云点;得到结果点云。原创 2024-07-30 15:01:03 · 186 阅读 · 0 评论 -
PCL最低栅格滤波(grid_minimum)
将点云体素化(也称为点云栅格化)之后,取每个栅格化网格的作为特征点,组合获取结果点云。(1)将点云体素化为一个个小的体素块(2)取每个体素块中点云z值最低点作为该体素块特征点;组合成结果点云。如何理解体素化:如下图,将整体点云体素化为多个小体素块,用一个个正方形的小块代表该范围内的点云。原创 2024-07-30 13:59:56 · 610 阅读 · 0 评论 -
PCL视椎体滤波(frustum_culling)
所谓视椎体滤波,就是使用相机的视椎体去对点云进行裁剪。即对于你所设置相机的“所见即所得”,裁剪出来相机透视矩阵看到的点云,滤掉剩余的点云。如下图:红色为视椎体,视椎体滤波即裁剪得到视椎体中的点云(即红色框中的部分)视椎体简介(如下图):近裁剪面:距离相机较近的裁剪面(相机最近能看到的地方)远裁剪面:距离相机较远的裁剪面(相机最远能看到的地方)注:相机只保留远近裁剪面之间的内容,其他内容都会被删除视椎体水平角度:视椎体水平方向上的夹角(决定视椎体水平方向上能看多大范围)原创 2024-07-30 13:15:23 · 228 阅读 · 0 评论 -
PCL快速双边滤波(fast_bilateral、fast_bilateral_omp)
的速度较慢。快速双边滤波使用提升双边滤波的速度。(1)对进行。(2)同双边滤波一样,也是先计算,得到的空间领域内的所有点。(3)在该领域范围内,计算操作点和空间邻域内所有点的强度差异是否在高斯权重的范围内,如果不在高斯权重的范围内,那么使用高斯权重平滑强度。(4)得到最终结果。原创 2024-07-30 09:20:48 · 171 阅读 · 0 评论 -
PCL索引滤波(extract_indices)
使用索引下标进行滤波。原创 2024-07-29 17:22:21 · 212 阅读 · 0 评论 -
PCL2D多边形裁剪(crop_hull)
定义一个二维多边形点云。用此二维多边形点云生成一个二维的凸多边形。通过此二维凸包(即二维凸多边形),去在二维的维度上裁剪点云。即:想象将点云拍扁变成二维的,然后你用一个二维多边形从上方裁剪出这一块点云。原创 2024-07-29 16:14:18 · 269 阅读 · 0 评论 -
PCL立方体裁剪(crop_box)
即使用一个AABB盒,去裁剪位于立方体内部/外部的点云。原创 2024-07-29 15:36:27 · 330 阅读 · 0 评论 -
PCL基于6D协方差的点云采样(covariance_sampling)
通过计算点云法线,然后计算点云每个点的6D协方差矩阵。得到协方差矩阵之后,对其进行特征分解,得到点云每个点的主方向和形状信息。基于这些主方向和形状信息,选择具有代表性的点作为采样点。最终得到的点云适应于进行ICP配准。原创 2024-07-29 14:24:06 · 129 阅读 · 0 评论 -
协方差矩阵(均值、方差、标准差、协方差、PCA主成分分析)
(1)均值:所有样本平均值。公式:(2)方差:各个样本与样本均值的差的平方和的均值。用途:描述数据离散程度。公式:(3)标准差:方差开方即标准差。公式:(4)协方差:判断两个变量的同步程度,也就是判断A变量变化时B变量变化的相应程度。协方差>0,A变量增大时B变量增大(二者负相关)。协方差=0,A变量和B变量线性无关。协方差<0,A变量增大时B变量减小(二者正相关)。公式:这个概念不重要,工作里用不大上(5)协方差矩阵:协方差矩阵中的每个元素是各个向量元素之间的协方差。原创 2024-07-29 14:12:37 · 198 阅读 · 0 评论 -
PCL专栏目录及须知
本PCL专栏目录及须知原创 2024-07-29 12:20:12 · 212 阅读 · 0 评论 -
PCL高斯滤波(convolution_3d)
通过高斯分布函数计算各点的高斯权重,然后按照每个点领域点的与其的距离和权重进行加权平均,以平滑点云并实现去噪效果。原创 2024-07-29 11:08:32 · 162 阅读 · 0 评论 -
卷积的实用性解释
即一个n*n的矩阵,常用的2*2、3*3、5*5等,即下图灰色部分的大小(每次即用该卷积核计算原特征图(蓝色部分)的内容,然后将值写入到新的特征图(绿色部分))。:卷积遍历特征图时,每次要移动的步长,即下图每次移动的步长。:即会不会扩大计算的边缘,即下图的白色边缘部分。如果不填充,那么输出的特征图(绿色部分)尺寸会小于原始特征图(蓝色部分)。对边界进行填充,输出的特征图(绿色部分)同原始的特征图(蓝色部分)尺寸相同。下图:二维卷积。卷积核(3*3),步长(1),填充(1)。:卷积层的通道数(层数)。原创 2024-07-29 10:39:09 · 547 阅读 · 0 评论 -
高斯分布(正态分布)
(1)高斯分布又名正态分布,在点云中的解释应为,在从某点邻近搜索的一块区域内,所有点的分布应该符合如下图的分布规律(2)实现高斯分布的公式为(公式不重要,不用记)其中【二者为主要变量】均值:u越小,图像整体向左偏移,u越大,图像整体向右偏移。方差对高斯分布的影响:σ越大,数据分布越分散,σ越小,数据分布越集中。(在图形上显示为σ越大,曲线越扁平,σ越小,曲线越瘦高)原创 2024-07-27 12:09:57 · 151 阅读 · 0 评论 -
PCL条件滤波器(conditional_removal)
可选取pcd点云中可获取的某个字段(如pcl::PointXYZRGB中的x、y、z等字段),进行and或or的条件判断,以达到过滤某个范围内的值的结果。其中ConditionAnd意味着“且”,ConditionOr意味着“或”。原创 2024-07-26 17:48:22 · 310 阅读 · 0 评论 -
PCL三维立方体裁剪点云(box_clipper3D)
注:若要使用pcl的立方体裁剪功能,不推荐使用本类(操作复杂)。使用crop_box类亦可得到同样的计算结果。原创 2024-07-26 16:57:21 · 154 阅读 · 0 评论 -
PCL双边滤波(bilateral)
双边滤波通过计算点云点周围的高斯权重,按照卷积核中元素强度值与中心点强度的近似情况来设置权重,强度值越相近,则该点权重越大。简单来说,就是取点云点附近的邻近点,然后通过其距离差异和强度差异,计算一个新的强度值出来,然后再赋值到该点上,以此实现强度的平滑。如下图,中心点为某次待计算双边滤波的点云点,其他点为邻近点。双边滤波计算时,通过该点与其他点的强度差异和距离远近,重新计算一个通过权重平均后的强度值。原创 2024-07-26 14:22:28 · 149 阅读 · 0 评论 -
PCL体素中心点滤波(approximate_voxel_grid)
将整体点云体素化为一个三维体素栅格,使用每个体素栅格的近似代表该体素块。体素化解释:如下图,将整体点云体素化为多个小体素块,用一个个正方形的小块代表该范围内的点云。原创 2024-07-25 16:20:13 · 245 阅读 · 0 评论 -
PCL常见BUG汇总(版本VS2019_PCL1.12.0)
PCL常见细节问题汇总原创 2024-07-25 11:02:46 · 129 阅读 · 0 评论