RANSAC算法原理

article/2025/9/8 14:13:00

RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法,有一定的概率得出一个合理的结果。为了提高得出合理结果的概率必须提高迭代次数。

1、基本思想:

RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证:

  1. 有一个模型适用于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。

  2. 用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。

  3. 如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。

  4. 然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。

  5. 最后,通过估计局内点与模型的错误率来评估模型。

这个过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为它比现有的模型更好而被选用。

2、对上述步骤,进行简单总结如下:

N:样本点个数,K:求解模型需要的最少的点的个数

  1. 随机采样K个点
  2. 针对该K个点拟合模型
  3. 计算其它点到该拟合模型的距离,小于一定阈值当做内点,统计内点个数
  4. 重复M次,选择内点数最多的模型
  5. 利用所有的内点重新估计模型(可选)

3、举例:利用RANSAC算法拟合一条直线

4、计算需要的迭代次数k

n:模型需要的最少点个数 

w:随机选取的一个点为局内点的概率,w=局内点个数 / 数据点总数

w^{n}:n个点均为局内点的概率

1-w^{n}:n个点中至少有一个为局外点的概率,即采样失败

\left ( 1-w^{n} \right )^{k}:k次采样全部失败的概率

 p:随机选取的n个点均为局内点的概率,即采样成功的概率

因此有下式:

1-p=\left ( 1-w^{n} \right )^{k}

上式两边取对数,得出:

k=\frac{log\left ( 1-p \right )}{log\left ( 1-w^{n} \right )}

其中,n已知,w可以计算出来,只要设置p的值(通常设置为0.99),即可得到迭代次数k。

参考文章:RANSAC算法理解_robinhjwy的博客-CSDN博客


http://chatgpt.dhexx.cn/article/Xv1E5t88.shtml

相关文章

RANSAC算法理解

RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次…

RANSAC算法(附RANSAC直线拟合C++与Python版本)

文章目录 RANSAC算法简介RANSAC算法基本思想和流程迭代次数推导RANSAC与最小二乘区别RANSAC直线拟合代码(C及Python版本)C版本代码Python版本代码如下: RANSAC优缺点参考 RANSAC算法简介 RANSAC(RANdom SAmple Consensus,随机采样一致)算法是…

php 枚举类代替hard code代码

新建OrderEnum枚举类 在控制器调用

ERP text object hard code

Created by Wang, Jerry, last modified on Sep 28, 2016 要获取更多Jerry的原创文章,请关注公众号"汪子熙":

Do not hardcode /data/; use Context.getFilesDir().getPath() instead 解决方法

在Android项目中如果使用字符串路径会提示 Do not hardcode "/data/"; use Context.getFilesDir().getPath() instead,如图所示 原因是因为硬编码不是对任何设备都适合,在一些设备上可能会给出错误消息或无法正常工作。可以做如下替换。 Stri…

Drool7s 什么叫KIE和生命周期-系列03课

KIE是缩写,knowledge is everything。可以理解成一个上层接口,本质是由很多个实现类去实现功能的。 另外关于drool7s的生命周期,请看下图 本文只是让你了解drools7的一些概念,也是开始实践的基础。如果不了解这些知识的话&#xf…

drool 7.x 属性 : agenda-group

Agenda Group 是用来在Agenda 的基础之上,对现在的规则进行再次分组,具体的分组方法可以采用为规则添加agenda-group 属性来实现。 agenda-group 属性的值也是一个字符串,通过这个字符串,可以将规则分为若干个Agenda Group,默认情况下,引擎在调用这些设置了agenda-group …

drools视频教程(drool实战实例+数据库+视频讲解)

特别说明:此教程适用任何版本的drools,因为编程思想是不变的 drools的资料网上也有不少,但是大都是讲基础的,几乎没有讲在项目中到底怎么用的,小哥当时学的时候也是,网上看了很多文档,但是还是不…

Drool实战系列(二)之eclipse安装drools插件

这里演示是drools7.5.0,大家可以根据自己需要安装不同的drools版本 drools安装地址: http://download.jboss.org/drools/release/ 一、 二、点击进入7.6.0.Final,并选择droolsjbpm-tools-distribution-XXX.zip(XXX为版本号)进行下载 三、将下载完的插件解压到本地 启…

drool 7.x 属性 : lock-on-active

lock-on-active true:通过这个标签,可以控制当前的规则只会被执行一次,因为一个规则的重复执行不一定是本身触发的,也可能是其他规则触发的,所以这个是no-loop的加强版。当然该标签正规的用法会有其他的标签的配合&…

Drool7s kmodule的作用--系列02课

本文是介绍drool7s kmodule。 一、为什么komdule.xml文件一定要放在resources下的META-INF文件夹中 ---》直接看源码吧,请看下图,应该都知道为什么要放在固定文件夹下。 二、下面是一些知识点,需要大家记住的 kmodule中可以包含一个或多个…

Java Drool规则引擎

2019独角兽企业重金招聘Python工程师标准>>> Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环…

Drool学习记录(二) Kie Session、Truth maintenance

参考Drools官方文档(3.1 KIE Session和3.2 Inference and truth maintenance in the Drools engine),学习关于Kie Session和Truth maintenace的内容。这两节内容虽然很基础,但是感觉官方文档说的还是不够明了,尤其是Stateless Session和State…

drool 7.x 属性 : no-loop

drool 7.x 属性 : no-loop 测试类参考:https://blog.csdn.net/qq_21383435/article/details/82872537 实体类:com.secbro.drools.model.Product 规则:/Users/lcc/IdeaProjects/AllTest/drools_test7/src/main/resources/rules.blog/noLoopSession.drl package rules.blogim…

Drool实战系列(一)之入门程序

Drools官网地址为:https://www.drools.org/ maven环境 入门程序例子如下: 项目结构截图: 一、导入pom文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://…

drool 7.x 属性:duration

规则 package com.rulesimport entity.Pingdeclare Ping@role(event) // 要把插入的数据声明为event,默认是fact,@expires(20s) // 用来显示设置事件的过期时间,也就是说过了这个时间,该事件就会从会话中移除,不能再使用 endrule "testComplexEvent1"du…

drool-6.5的自学demo

先丢代码地址 https://gitee.com/a247292980/drools 再丢pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven…

Drool学习记录(一) 概念、Helloworld

1 关于规则引擎 基于知识库和规则的专家系统是早期最主流的人工智能&#xff0c;不同于现在流行的基于统计、机器学习的智能算法&#xff0c;基于规则的算法相对来说更加直观和易于理解&#xff0c;毕竟如果简单理解的话&#xff0c;就是定义好了If-Than结构&#xff0c;从而让…