大盘点!汇总点云分割算法,涉及RANSAC、欧式聚类、区域增长等

作者:3D视觉工坊 时间:2024-01-08 阅读:3524

点云分割的目标是将点云数据中的点分成不同的组或类别,使每个组中的点都属于同一种物体或区域。根据空间,几何和纹理等特征对点云进行划分,使同一划分内的点云拥有相似的特征。点云分割的目的是分块,从而便于单独处理。分割过程有助于从各个方面分析场景,例如定位和识别对象、分类和特征提取。

作者:PCIPG-zzl 来源:计算机视觉工坊

添加微信:dddvisiona,备注:3D点云,拉你入群。文末附行业细分群。

点云的有效分割是许多应用的前提

点云分类(Point Cloud Classification):点云分类是将点云中的每个点分配到预定义的类别或标签中的任务。点云分类可用于识别点云中的不同物体或地物,例如识别建筑物、树木、汽车等。为每个点分配一个语义标记。点云的分类是将点云分类到不同的点云集。同一个点云集具有相似或相同的属性,例如地面、树木、人等。点云分类也叫做点云语义分割。实例分割(Instance Segmentation):实例分割是一种更高级的任务,它不仅要求识别点云中的不同物体或类别,还需要为每个物体中的每个点分配一个唯一的标识符,以区分不同实例。这使得实例分割能够精确地区分出多个相同类别的物体,例如在一个点云场景中区分出多辆汽车或多棵树。点云语义分割是指把一个大规模场景下的点云按照不同的类别给每个点云一个语义标签,比如城市高速公路,所有的路灯会有一个相同的语义标签,所有的路面会有 一个相同的语义标签,所有的树木会有同一个语义标签。点云实例分割是在语义分割的基础之上,把所有的路灯再一个一个分开,区别出来每一个路灯。这里也推荐「3D视觉工坊」新课程《三维点云处理:算法与实战汇总》。

(Random Sample Consensus)随机采样一致性算法,采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。RANSAC算法假设数据中包含正确数据和异常数据(或称为噪声),正确数据记为内点(inliers),异常数据记为外点(outliers)该算法核心思想就是随机性和假设性:随机性是根据正确数据出现概率去随机选取抽样数据,根据大数定律,随机性模拟可以近似得到正确结果。假设性是假设选取出的抽样数据都是正确数据,然后用这些正确数据通过问题满足的模型,去计算其他点 ,然后对这次结果进行一个评分。算法流程

  1. 要得到一个直线模型,需要两个点唯一确定一个直线方程。所以第一 步随机选择两个点。

  2. 通过这两个点,可以计算出这两个点所表示的模型方程y=ax+b。

  1. 将所有的数据点套到这个模型中计算误差。

  2. 找到所有满足误差阈值的点。

  1. 然后我们再重复1~4这个过程,直到达到一定迭代次数后,选出那个被 支持的最多的模型,作为问题的解。

RANSAC算法与最小二乘法区别RANSAC 算法适用性:RANSAC主要用于处理包含噪音和异常值的数据集。它通过随机采样和迭代的方式来找到最佳拟合模型,忽略了外点的影响,因此在数据中含有大量噪音或少量异常值的情况下表现较好。步骤:RANSAC通过随机选择内点样本进行模型拟合,并通过计算内点和模型之间的误差来判断外点。它迭代地选择具有最大内点数的模型作为最终拟合模型。优点:鲁棒性较强,能够在存在噪音和异常值的情况下仍然得到合理的模型估计。最小二乘法适用性:最小二乘法假设数据中的噪音较小,且异常值较少。它通过最小化数据点与模型之间的误差平方和来得到最佳拟合模型,适用于数据比较干净的情况。求解:最小二乘法可以直接求解或优化模型参数的解析解,对于线性问题尤其有效。然而,在存在较多噪音或异常值时,最小二乘法容易受到这些数据点的影响,导致估计结果不准确。优点:在数据相对干净,噪音较小的情况下,最小二乘法能够得到精确的模型估计。RANSAC算法被广泛应用在计算机视觉领域和数学领域,例如直线拟合、平面拟合、计算图像或点云间的变换矩阵、计算基础矩阵等方面,使用的非常多。总之,RANSAC和最小二乘法适用于不同类型的数据情况。RANSAC适用于含有噪音和异常值的数据,能够通过迭代的方式找到鲁棒性较强的模型。最小二乘法适用于相对干净的数据,能够得到精确的模型估计,但容易受到噪音和异常值的影响。在实际应用中,根据数据的特点选择合适的方法以获得准确的模型估计。

pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients);pcl::PointIndices::Ptr inliers(new pcl::PointIndices);  //inliers用来存储直线上点的索引pcl::SACSegmentation<pcl::PointXYZ> seg;//创建一个分割器seg.setOptimizeCoefficients(true);      //可选择配置,设置模型系数需要优化seg.setModelType(pcl::SACMODEL_LINE);   //设置目标几何形状seg.setMethodType(pcl::SAC_RANSAC);     //拟合方法:随机采样法seg.setDistanceThreshold(0.05);         //设置误差容忍范围,也就是阈值seg.setMaxIterations(500);              //最大迭代次数,不设置的话默认迭代50次seg.setInputCloud(cloud);               //输入点云seg.segment(*inliers, *coefficients);   //拟合点云

欧式聚类算法(Euclidean Clustering)是一种将点云数据分割成不同聚类(簇)的算法。它是点云分割中的一种常用方法,旨在将距离比较近的点分为同一簇,从而识别出不同的物体或结构。这个算法主要适用于包含较小噪音和具有一定距离差异的点云数据。基本思想

  1. 选择一个种子点(Seed Point)作为当前簇的起始点。

  2. 遍历所有未分类的点,计算它们与种子点的距离。如果距离小于设定的阈值,将其归为同一簇。

  3. 对于同一簇中的点,重复步骤2,将与当前簇内任一点距离小于阈值的点加入簇。

  4. 切换到下一个未分类的点,作为新的种子点,继续重复步骤2和3。

  5. 当所有点都被分类为某个簇,聚类过程结束。

pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ>);tree->setInputCloud (cloud_filtered);std::vector<pcl::PointIndices> cluster_indices;pcl::EuclideanClusterExtraction<pcl::PointXYZ> ec;ec.setClusterTolerance (0.02); // 2cmec.setMinClusterSize (100);ec.setMaxClusterSize (25000);ec.setSearchMethod (tree);ec.setInputCloud (cloud_filtered);ec.extract (cluster_indices);

一个桌子的场景图经过欧式聚类算法效果如下图所示。

区域生长算法(Region Growing)是一种用于图像处理和分割的算法,主要用于将点云中的点分成不同的区域,从而识别出具有相似特性的区域。区域生长算法基于相似性原则,将相似度高的点聚集在一起,形成连续的区域。算法步骤:1.初始化:选择一个种子点,并将其标记为已访问。2.根据设定的相似性准则,计算当前点与种子的相似度。3.如果当前点与种子相似度超过设定阈值,则将其标记为当前区域的一部分,并将其加入当前区域。4.遍历当前点的邻居(相邻点),对每个邻居执行以下步骤:如果邻居未被访问过且与当前区域的相似度超过设定阈值,则将其标记为已访问并添加到当前区域。递归地对邻居的邻居进行相似性判断,将相似的像素或点添加到当前区域。5.重复步骤4,直到当前区域不能再生长为止。6.如果还存在未访问的点,选择一个未访问的点作为新的种子,重复上述步骤。7.当所有点都被分配到区域后,分割过程结束。这里也推荐「3D视觉工坊」新课程《三维点云处理:算法与实战汇总》。

pcl::RegionGrowing<pcl::PointXYZ, pcl::Normal> reg;reg.setMinClusterSize (50);reg.setMaxClusterSize (1000000);reg.setSearchMethod (tree);reg.setNumberOfNeighbours (30);reg.setInputCloud (cloud);reg.setIndices (indices);reg.setInputNormals (normals);reg.setSmoothnessThreshold (3.0 / 180.0 * M_PI);reg.setCurvatureThreshold (1.0);

算法是针对小曲率变化面设计的,尤其适合对连续阶梯平面进行分割

https://blog.csdn.net/luolaihua2018/article/details/120113848https://pcl.readthedocs.io/projects/tutorials/en/master/index.html#sample-consensus

上一篇:橱柜价格怎么计算的(做的橱柜门是怎么算的

下一篇:厨房门口两边柜子图(冰箱放在进厨房的门边

猜你喜欢

沙发罩最新款(科技布沙发搭配什么材质沙发罩)

沙发罩最新款(科技布沙发搭配什么材质沙发罩)

资讯 2023-11-02 3534
徽派门楼设计(最美特色乡村有哪些)

徽派门楼设计(最美特色乡村有哪些)

资讯 2023-11-02 1493
蓝色仿古砖贴图(牛仔复古蓝是什么颜色)

蓝色仿古砖贴图(牛仔复古蓝是什么颜色)

资讯 2023-11-12 1107
欧睿宇邦和佰丽爱家橱柜哪个好(实木颗粒板哪个品牌的好)

欧睿宇邦和佰丽爱家橱柜哪个好(实木颗粒板哪个品牌的好)

资讯 2023-11-14 3666
法兰连接软管(pe管和消防管怎样连接)

法兰连接软管(pe管和消防管怎样连接)

知识 2023-11-16 3783
铜管规格符号怎么打(如何识别建筑排水施工图)

铜管规格符号怎么打(如何识别建筑排水施工图)

知识 2023-11-19 3447
楼梯扶手pvc(pvc拉丝扶手和不锈钢扶手哪个好)

楼梯扶手pvc(pvc拉丝扶手和不锈钢扶手哪个好)

资讯 2023-11-21 3079
装修壁纸尺寸(画手机壁纸的画布尺寸)

装修壁纸尺寸(画手机壁纸的画布尺寸)

资讯 2023-11-25 567
甲醛除味剂推荐(新车除异味和甲醛最好的办法)

甲醛除味剂推荐(新车除异味和甲醛最好的办法)

知识 2023-12-14 823
QD20t-25.5m箱形双梁桥式起重机主梁及端梁设计 机械设计模具数控

QD20t-25.5m箱形双梁桥式起重机主梁及端梁设计 机械设计模具数控

资讯 2023-12-30 4986
室外墙面石材图片(块料墙面和石材墙面有什么区别)

室外墙面石材图片(块料墙面和石材墙面有什么区别)

资讯 2024-01-02 1453
led节能灯开关断开还亮为什么(led灯关了还发出弱光是怎么回事)

led节能灯开关断开还亮为什么(led灯关了还发出弱光是怎么回事)

资讯 2024-01-09 1573
软帘价格(飘窗可以装成什么样子)

软帘价格(飘窗可以装成什么样子)

资讯 2024-01-11 1881
英美突然对也门发动大规模空袭,胡塞武装的回应让人后背发凉

英美突然对也门发动大规模空袭,胡塞武装的回应让人后背发凉

知识 2024-01-12 3628
各种风格鞋柜装修效果图,让人进门的第一眼就爱上!

各种风格鞋柜装修效果图,让人进门的第一眼就爱上!

资讯 2024-01-17 4059
各种形态衣帽间设计,收纳都很丰富,哪种适合你家?

各种形态衣帽间设计,收纳都很丰富,哪种适合你家?

资讯 2024-01-31 410
美乐乐家具销售好做吗(家居销售渠道发生了怎样的变化)

美乐乐家具销售好做吗(家居销售渠道发生了怎样的变化)

资讯 2024-02-02 4167
韩国教授直言:全世界只有韩国瞧不起中国,中国却已看不到韩国

韩国教授直言:全世界只有韩国瞧不起中国,中国却已看不到韩国

知识 2024-02-04 4167
灭蚊灯原理有辐射吗?(灭蚊灯是否对人体有辐射)

灭蚊灯原理有辐射吗?(灭蚊灯是否对人体有辐射)

知识 2024-02-07 2646
售后服务及体系(13485体系是什么)

售后服务及体系(13485体系是什么)

知识 2024-02-27 2969