10

一文详解随机一致性采样算法:RANSAC

 3 years ago
source link: https://mp.weixin.qq.com/s/cMFzPOYDAegewVfpHHxwGw
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一文详解随机一致性采样算法:RANSAC

The following article is from 汉振智能 Author 汉振HANCHINE

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

640?wx_fmt=jpeg

Summary

为解决2D和3D图像数据中噪声多的问题,本文将简述RANSAC算法是如何鲁棒地估计模型参数,从包含噪声点的数据集中估计出高精度的参数。

作者:AZM

校稿:Sam  | 编辑:Lynn

640?wx_fmt=png

算法简介

RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outlies,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。

基本思想描述

RANSAC基本思想描述如下:

考虑一个最小抽样集的势为n的模型(n为初始化模型参数所需的最小样本数)和一个样本集P,集合P的样本数#(P)>n,从P中随机抽取包含n个样本的P的子集S,来初始化模型M;

余集SC=P\S中与模型M的误差小于某一设定阈值t的样本集以及S构成S*。S*认为是内点集,它们构成S的一致集(Consensus Set);

若#(S*)≥N,认为得到正确的模型参数,并利用集S*(内点inliers)采用最小二乘等方法重新计算新的模型M*;重新随机抽取新的S,重复以上过程。

在完成一定的抽样次数后,若未找到一致集则算法失败,否则选取抽样后得到的最大一致集判断内外点,算法结束。

参数

t —— 用于决定数据是否适应于模型的阀值

N —— 判定模型是否适用于数据集的数据数目

k —— 迭代次数

我们不得不根据特定的问题和数据集,通过实验来确定参数t和N。然而参数k(迭代次数)可以从理论结果推断。当我们在估计模型参数时,用p表示一些迭代过程中从数据集内随机选取出的点均为局内点的概率;此时,结果模型很可能有用,因此p也表征了算法产生有用结果的概率。用w表示每次从数据集中选取一个局内点的概率,如下式所示:

w = 局内点的数目 / 数据集的数目

通常情况下,我们事先并不知道w的值,但是可以给出一些鲁棒的值。假设估计模型需要选定n个点, 是所有n个点均为局内点的概率;1− 是n个点中至少有一个点为局外点的概率,此时表明我们从数据集中估计出了一个不好的模型。表示算法永远都不会选择到n个点均为局内点的概率,它和1-p相同。因此,

640?wx_fmt=png

我们对上式的两边取对数,得出:

640?wx_fmt=png

值得注意的是,这个结果假设n个点都是独立选择的;也就是说,某个点被选定之后,它可能会被后续的迭代过程重复选定到。这种方法通常都不合理,由此推导出的k值被看作是选取不重复点的上限。例如,RANSAC算法拟合直线时,通常在每次迭代时选取2个点,计算通过这两点的直线maybe_model,要求这两点必须唯一。

为了得到更可信的参数,标准偏差或它的乘积可以被加到k上。k的标准偏差定义为:

640?wx_fmt=png

应用示例

01

640?wx_fmt=gif

随机选取2个点

由这2个点计算直线方程

计算所有点到直线的距离

得到满足条件(点到直线的距离小于预先设定的某个值)的点的数量

循环1-4步骤,记录点数最多的那组直线

640?wx_fmt=png

与最小二乘法拟合直线的对比如下图:

640?wx_fmt=png

02

点云拟合规则3D模型

pcl库中集成了规则模型的ransac点云分割算法。

利用ransac拟合平面代码如下:

640?wx_fmt=png

拟合平面效果图:

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

拟合圆柱代码如下:

640?wx_fmt=png

杯子的圆柱面拟合效果图:

640?wx_fmt=png

03

特征点匹配滤除误匹配的点

相机位姿估计

图像拼接和点云匹配融合等

优点与缺点

        RANSAC的优点是它能鲁棒地估计模型参数。例如,它能从包含大量局外点的数据集中估计出高精度的参数。

RANSAC的缺点是它计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果,甚至可能得到错误的结果。RANSAC只有一定的概率得到可信的模型,概率与迭代次数成正比。

RANSAC的另一个缺点是它要求设置跟问题相关的阀值。此外,RANSAC只能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型,RANSAC不能找到别的模型。

本文仅做学术分享,如有侵权,请联系删文。下载1在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。下载2在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。下载3在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

640?wx_fmt=png▲长按加微信群或投稿

640?wx_fmt=jpeg

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近3000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款640?wx_fmt=jpeg 圈里有高质量教程资料、可答疑解惑、助你高效解决问题觉得有用,麻烦给个赞和在看~640?wx_fmt=gif


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK