第5章 点云的分割与拟合 5.2点云数据的拟合

C5 Segmentation and fitting of point Clouds/第5章 点云的分割与拟合

5.2 Fitting of point cloud data—5.2 点云数据的拟合

点云的分割解决的是将在同一个特征的点聚集起来,那么如何来描述这些特征?

点云的拟合指的是从离散激光点的坐标计算特征模型参数的过程,也就是利用分割后的数据将这个点云群的特征描述出来。

稳健估计的概念是什么?这种方法的主要目标是?

稳健估计的概念

稳健估计一般指抗差估计,是一种既能抵制模型偏差(一个估计方法当其依为根据的模型与实际模型有微小差异时,其估计方法的性能只受到微小的影响)又能抗拒异常观测扰动(当观测样本中混入少量粗差时,估计量的数值受其影响不大)的估值方法。

稳健估计的目标
  • 在所假定的模型下,估值具有合理的优效性(最优或接近最优)
  • 在实际模型与假设的模型有微小差异时,其估值或统计方法(如估值的渐近方差或检验量的检验功效等)所受的影响也较小
  • 在实际模型与假定模型有严重偏离时,其估值的性能仍能“过得去”或者说,不致使估值受到破坏性影响

点云数据拟合的4种主要方法?

最小二乘拟合、三维霍夫变换、随机抽样一致性(RANSAC)、贝叶斯抽样一致性(BAYSAC)

最小二乘拟合
  • 前提条件:模型已经确定(未知不能用)、待拟合数据只属于一个模型
  • 拟合平面的过程:列观测方程(每个点可以列一个,最主要的内容,必须先告知模型),平差处理观测方程,得到最优的模型参数
  • 虽然最小二乘拟合有很大的局限性,但其本身让所有的点都参与到了平差,与后3种方法相比,其结果应该是最可靠的
  • 后3种方法最大的作用是从包含大量粗差的数据集中将复合模型的点抽取出来,之后再利用这些正确点再做一次最小二乘得出最佳模型参数
三维霍夫变换
二维霍夫变换:
  • 一种通过图像空间到参数空间的变换(点变成直线,直线变成点),可用于检测图像中可参数化的任意形状物体(线、圆等)的方法
  • 假设形状边界是直线,这条线是很多点组成的一个集合,处理这个集合,比处理一个点要复杂的多。简单讲,霍夫变换就是想把一条线(边界)用点来处理(将y=mx+c转换为(m,c)这个点),这样就会更容易提取出边界
霍夫变换从二维扩展到三维:
  • 建筑物的屋顶平面可以表示为Z=Sxx+Syy+D,Sx和Sy分别表示x轴方向和y轴方向的斜率,D是平面到坐标的垂直距离
  • 参数空间(Sx,Sy,D)中的每个点都对应于图像空间中的一个平面,图像空间中的任何一点也定义了参数空间中的一个平面
  • 如果激光脚点数据集包含一个平面上的点,则这些点对应的参数空间中的平面相交于某一点。一般根据投票原则,以得票最多的参数集作为最终的平面参数
随机抽样一致性(RANSAC)
  • RANSAC算法是一种迭代方法,这种方法用于从一组包含异常值的观测数据中估计数学模型的参数,此时异常值对估计值没有影响。因此,也可以说它是一种异常值检测方法
  • RANSAC算法的输入是一组观测数据,一种将某种模型拟合到观测值的方法,以及一些置信参数
  • RANSAC方法随机选取样本集,也就是说假设集中每个点都是内点的概率相等。当原始点云中有太多的异常点时,RANSAC的计算成本会大大增加
RANSAC的基本假设:
  1. “inliers”(内群)数据可以通过几组模型的参数来叙述其分布,而“outlier”(离群)数据则是不适合模型化的数据
  2. 数据会受噪声影响,噪声指的是离群,例如从极端的噪声或错误解释有关数据的测量或不正确的假设
  3. RANSAC假定,给定一组(通常很小)的内群,存在一个程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数
RANSAC通过重复以下步骤来实现目标:
  1. 从原始数据集中随机采样出一个子集,把这个子集叫做hypothetical inliers(假设内点);就是先假设我们随机一抽,抽出来的子集全部都为内点,都可以用模型来表达
  2. 用一个模型来拟合这些假设的内点
  3. 其它那些没有被随机采样到作为假设内点的数据用来测试步骤2中拟合好的模型,这些用来测试的数据中可以很好地符合步骤2中的估算模型的点被看作是共识集(consensus set)的一部分(是否很好地符合模型要根据模型特定的损失函数来判断)
  4. 如果有足够多的点被归类为该共识集的一部分,那么说明这个模型很不错
  5. 之后,可以通过使用共识集的所有成员对模型进行重新估计进而改进模型

这个过程重复固定的次数,每次产生一个模型,产生的这个模型,不是因为共识集的点太少而被拒绝,就是生成一个具有相应共识集大小的优化模型。

RANSAC程序的参数说明:
输入参数:
  • data——观测数据集
  • model——可以拟合数据集的模型
  • n——适用于模型的最小数据数(比如两点确定一条直线)
  • k——算法的迭代次数(非常关键)
  • t——用于确定数据点是否符合模型的阈值
  • d——确定模型质量的被归类为该共识集的正确点数
输出参数:
  • best_model—— 与数据最匹配的模型参数(如果没有找到好的模型,则返回null)
  • best_consensus_set ——估计模型的数据点
  • best_error—— 与数据相关的估计模型误差
RANSAC程序的伪代码:
iterations(迭代次数)= 0
best_model(数据最匹配的模型参数) = 空
best_consensus_set(估计模型的数据点) = 空
best_error(与数据相关的估计模型误差) = 无穷大
While(迭代次数 < k)
	maybe_inliers(假设内点)= 从数据集中随机选择n个点
	maybe_model(可能的模型) = 适用于maybe_inliers(假设内点)的模型参数
	consensus_set(共识集) = maybe_inliers(假设内点)
	for(在每个数据集中不属于maybe_inliers(假设内点)的点)
	if(如果该点适合于maybe_model(可能的模型)且误差小于t(确定数据点是否符合模型的阈值))
	向consensus_set(共识集)添加一个点
	if (consensus_set(共识集)中的元素数量大于D)
	说明这个模型很不错,接下来要测试这个模型有多好
	better_model(进一步改进的模型)= 适用于consensus_set(共识集)中所有点的模型参数
	this_error(此时的模型误差) = better_models(进一步改进的模型)与这些点的符合度怎样
	如果(this_error(此时的模型误差) < best_error(与数据相关的估计模型误差))
	我们找到了一个比以前更好的模型,并一直保存到更好的模型出现。
	best_model(数据最匹配的模型参数) = better_model(进一步改进的模型)
	best_consensus_set(估计模型的数据点) = consensus_set(共识集)
	best_error(与数据相关的估计模型误差) = this_error(此时的模型误差)
	增加迭代次数
返回best_model, best_consensus_set, best_error
存在的两个主要问题:
  1. 一开始的时候我们要随机选择多少点(n)
  2. 以及要重复做多少次(k) → RANSAC的核心问题是迭代次数如何去选取
贝叶斯抽样一致性(BAYSAC)

BAYSAC算法是一种基于RANSAC算法思想的改进算法。该算法结合贝叶斯估计原理,引入了采样过程中内点先验概率的概念。

BAYSAC的核心问题是通过何种方法去确定每个点的先验概率,思路是先做一小段循环,暂时不检测公式集的点数,观察模型的参数会不会集中于某一个点,得出峰值的参数集,利用这些数据得出先验概率

BAYSAC通过重复以下步骤来实现目标:
  1. 确定内点的先验概率选取数据集中内点概率最高的n个点作为样本集
  2. 从n个点获得初始模型参数
  3. 检查所有剩余的样本数据,以确定内部点和异常点
  4. 在每次迭代结束前,根据贝叶斯估计公式更新每个点的先验概率,并开始下一次迭代迭代
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单子沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值