当前位置:文档之家› 一种改进的RANSAC算法提取多模型圆弧特征点云

一种改进的RANSAC算法提取多模型圆弧特征点云

第24卷第1期 2015年1月 测绘工程 

Engineering of Surveying and Mapping V0I.24,No.1 

Jan.,2015 

一种改进的RANSAC算法提取多模型圆弧特征点云 许烨璋 ,王鑫森 ,郑德华 ,谢波 ,王春林 (1.河海大学地球科学与工程学院,江苏南京210098;2.天津市勘察院,天津300191) 

摘要:针对传统RANSAC算法迭代次数无上限及只能识别单个模型的局限,提出一种适用于扫描线式点云数据 改进的RANSAC算法。对三维激光点云数据进行二维化处理,在RANSAC算法的基础上对局外点进行预剔除,计 算过程中对迭代次数进行自适应调整,采用分次识别法实现多模型圆弧点云的提取。实例证明,文中算法能够有效 地提取同一场景中的多模型圆弧点云,较传统算法具有明显优势。 关键词:点云二维化;改进的RANSAC算法;多模型圆弧;特征提取 中图分类号:TP391.4 文献标志码:A 文章编号:1006—7949(2015)01—0028—04 

An improved algorithm of RANSAC to extract feature point cloud of multi--model arc 

XU Ye-zhang ,WANG Xin-sen。,ZHENG De-hua ,XIE I3o ,WANG Chun-lin (1.School of Earth Sciences and Engineering,Hohai University,Nanjing 210098,China;2.Tianjin Exploration Institute,Tianjin 300191,China) 

Abstract:Against the limit of traditiona1 RANSAC algorithm which has no caps of iterations and can j ust identify one model。it proposes an improved algorithm of RANSAC for scan-wire point cloud of 3-D laser scanning.Firstly 3D point cloud is tranformed into 2D point cloud.Based on the algorithm of RANSAC,the outliers are excluded previously.In the process of calculating,the iterations are adj usted adaptively.At last the idenitification of multiple arcs is gone through graded recognition method.Experiment shows that this algorithm can extract multiple arcs of point cloud better than the traditional algorithm of RANSAC. Key words:two dimensional point cloud;improved algorithm of RANSAC;multi—model arc;automatically extract 

目前点云数据的特征提取大多是直接在三维 空间中进行的_1]。特征提取算法基本可分为基于边 界的算法和基于面域的算法两大类,另外还有综合 使用两种方法的混合算法_2]。前者主要是提取点云 数据表面形态变化剧烈的点,通常利用法矢、曲率 等微分几何变量的突变来提取特征。这种方法对 噪声比较敏感,故抗差性较弱。后者主要在于寻找 点云数据中具有相同属性的点集,构造出可靠的生 长区域进行生长,最终实现分割和特征提取。这类 方法主要有RANSAC(随机抽样一致算法)、M估 计、最小中值算法、遗传算法和霍夫变换等[3]。这些 方法本身具有良好的抗差估计性能,因此在提取特 

收稿日期:2013—11一Ol;修回日期:2014—10—09 作者简介:许烨璋(1989一),男,硕士研究生. 

征时能有效抵御噪声。 RANSAC(Random Sample Consensus)算法是 1981年由Fischler和BollesE ]最先提出。该方法能 够在含有大量粗差点的情况下估计出正确的模型, 较经典的最小二乘法具有明显优势。但随着局外 点的增多,算法的迭代次数会呈现指数式增长,算 法耗时急剧增加。另外RANSAC算法只能实现单 个模型的识别。本文提出一种改进的RANSAC算 法,能够有效地克服传统RANSAC的不足。 

1扫描线点云特点及其二维化 1.1扫描线点云特点 扫描线式点云由一组扫描线组成,每条扫描线 点云数据是按照扫描仪与激光脚点的仰角大小依 第1期 许烨璋,等:一种改进的RANSAC算法提取多模型圆弧特征点云 ・29・ 次存储的r5]。本文采用的数据为Trimble GX200 三维激光扫描仪采集的扫描线式点云数据,每条扫 描线都是扫描光刀平面与目标物体的交线。由于 本文所扫描的对象为球体目标,因此所要提取的圆 弧特征点云都位于每条扫描线上。同一条扫描线 中的扫描点基本共面,对于单独一条扫描线数据, 完全可以在二维平面内进行特征点的提取,这样就 可以把复杂的三维点云的问题简化到二维平面内 处理[6],故本文以扫描线为单位进行圆弧点云的 提取。 1.2扫描线点云二维化 由于各项误差的存在,每条扫描线上的点云不 可能都严格位于各自的光刀平面内,而是以微小的 距离分布在光刀平面的两侧。因此将扫描线点云 二维化至其对应的光刀平面,首先须根据扫描线点 D y 图1投影点的三维表达 2 R LC算法的改进 2.1 RANSAC算法原理及其不足 RANSAC算法是通过不断地选择数据集中的 一组随机子集来估计待定模型。选取的点集假设 为局内点即符合模型的数据点,不符合模型的点称 为局外点。每次用选定的随机子集去估计一个待 估模型,然后用该模型去测试数据集中其他的点, 符合该模型的点归为局内点,当局内点数量达到设 定要求时就认为该模型合理,并且将局内点归纳进 来重新估算模型。如果局内点数量不够,则认为该 模型估算的不正确,此时舍弃原模型,重新在数据 集中随机抽取一个子集来估算模型。每次估算的 模型要么因为局内点数量充足而重新生长,要么由 于局内点数量不足而遭到舍弃[7]。最终以局内点和 模型的错误率来评价模型估算的精度。 虽然传统RANSAC算法能从含有大量局外点 的数据集中估算出高精度的模型参数,但其迭代次 数没有上限。如果设置了迭代上限,可能会导致抽 样不充分从而计算出错误的模型,如果不控制迭代 次数,便会造成算法效率低下,难以收敛。 云拟合计算出对应的光刀平面方程式。本文采用 特征值法求取平面方程式,具体解求过程不再详 述。拟合平面求出后将对应的三维点云投影上去, 完成点云的投影。 经过投影后点空间三维点虽已全部位于平面 上,但其坐标仍为(Ind,X,Y,Z)(其中Ind为索引 值)的三维形式,须将这些点转化为(Ind,X,y)的二 维形式,图1所示为某拟合平面0t 内的投影点集 (P0,P 一,P )在三维直角坐标系中;图2所示为 所要得到的二维坐标。其转换过程为:①以P 点为 原点,P 连线的方向矢量为X轴,以过点P 并 垂直于X轴成右手系的向量作为y轴。②计算其 他点P 到P 点的距离d,以及向量P。Pf与P 之间的夹角y。③根据d和7,将二维极坐标向二 维直角坐标转换,求取 点的直角坐标(X,y)。 

图2投影点的二维表达 RANSAC算法的另一个不足是它只能在特定的数 据集中估计出一个模型,对于数据集中存在两个或 者两个以上的模型,RANSAC不能识别。 RANSAC算法输入参数见表1。 

表1 RANSAC算法输入参数 参数名 含义 一组观测数据 适应于数据的模型 最少必要模型点个数 算法的迭代次数(抽样次数) 决定数据是否适用于模型的阈值 判定模型是否适用于数据集的数据数目 

设 个点全部为局内点的概率为P,点集的总 点数为N,所有局外点数为№,则随机选取一个点 为局外点的概率为w,且W—Nt/N。n个点全部 为局内点的概率又可以表示为(1一W) ,1一(1一 W)”表示1"1个点中至少有一个为局外点的概率,则 (1一(1一w) ) 表示永远都取不到,z个点全部都为 

m・30・ 测绘工程 第24卷 局内点的概率,它应该和1一P相等,即l—P一 (1一(1一W) ) ,对两边取对数即可得出 走一 若 . ㈩ 迭代时取略大于k的值即可。 由式(1)可以看出,在7z和P固定的情况下,局 外点率W越大,迭代次数k也就越大,算法效率越 低下。因此为了减少迭代次数,提高算法效率,就 必须降低局外点所占的比例并且根据每次数据的 调整对k值进行自适应调整。 2.2局外点的预剔除 本文提取的圆弧点云为球面圆弧点云,为扫描 光刀平面在球面上截取的圆,其直径必然小于或等 于球直径(球面被光刀面所截的圆截面中,通过球 直径的截面最大),因此那些直径大于球直径的数 据点即可认为局外点。利用这一特性本文以相邻 的3个点为一组遍历整条扫描线,计算每组数据对 应圆的直径,将直径大于设定阈值的数据剔除,从 而达到降低外点率的目的。图3为局外点剔除示 意图。 

图3局外点剔除示意图 2.3 k值的自适应调整 随着迭代次数的增加,内点被不断地增加到估 算模型的点集中来,即在迭代过程中内点率不断增 加,相应的外点率在不断减小,则根据式(1)迭代次 数k值也在随之减小。本文算法在开始计算时将k 值设置为一个较大的值,然后在每次迭代时根据外 点率重新计算k的值使其趋于一个合理的值完成迭 代。为了验证k值自适应调整的效果,事先针对迭 代次数k值做了一组测试。将k的初始值设为 14 000,开始计算后每隔10 S记录一次k值,从图4 可以看出k值在前40 S中数值下降显著,最终在第 90 S处自适应停止,稳定到55 S左右,表明本文的 自适应处理能够取到良好的效果。 l4 000 . 12 000 。■--\ 一 10 000 8000 6000 4000 2000 O l 2 3 4 5 6 7 8 9 _.一 14000 8320 7l78 3姗 3O06 1018 800 l0o 55 -.埘I' ̄qjs 1O 20 30 40 5o 60 70 80 90 图4 k值自适应变化过程 2.4多模型识别的改进 上文提到RANSAC算法的另一大不足就是只 能对待估点集中的一个模型进行识别,对包含两个 及其以上的模型就无法适用。为解决这一问题,本 文采用分次识别的方法,即将第一次识别出的模型 所对应的点集剔除出二维点集后再进行下一个模 型的识别,按照这种流程直到满足某种条件为止。 综合以上3点改进,本文改进的RANSAC算 法提取圆弧点的算法步骤如下: 1)选定一组已经二维化后的扫描线点集{P , P ,…,P ),将相邻的3个{P ,P斗 ,P斗2 l i∈E1, 一2]}计算构成圆的半径值r,按顺序无重复地遍 历点集。 2)将半径值r∈ ,R ]对应的点保留,将超 过r阈值范围的对应点集剔除,构成新的点集{Q , Q ,…,Q )。 3)将迭代次数k设置为一个足够大的数值,随 机抽取一个包含3个点的样本,计算其模型参数 Model ,即圆心坐标及半径(z。,Y。,r) 。 4)再次检验样本点计算的r值是否符合r∈ ER ,R ],若是,则进入下一步,否则退出本次循环, 转回到3)。 5)遍历点集{Q ,Q,…,Q },判断每加入一个

相关主题