RANSAC算法的理解与使用

article/2025/9/12 20:31:03

随机抽样一致算法(random sample consensus, RANSAC),其实就是采用迭代的方法从一组包含离群的被观测数据中估算出数学模型的参数。(比如通过一群点拟合一条直线等)

基本假设

  • 模型假设:事先知道真实数据满足的数学模型,不知道的只是模型的具体参数;

  • 输入假设:输入数据中包含正确数据(即inliers,可以被假设模型描述的数据);同时也包含异常数据(即outliers,偏离正常范围很远、不能用假设模型描述的数据);即输入数据集中含有噪声

  • 有解假设:给定一组(通常很小,比如直线模型两个点就够了)内群数据,存在一种解法,可以通过这组内群数据求解出最适用于这一数据模型的一组参数;

一般当有效数据占绝大多数,无效数据只是少量时,我们可以通过最小二乘法或类似的方法来确定模型的参数与误差;如果无效数据很多,最小二乘法可能就不适用了

最小二乘法通过最小化误差的平方和来寻找数据的最佳函数匹配。

算法步骤概述

  1. 数据采样:随机采样最小子集;
  2. 模型计算:通过第一步采样的最小子集计算出一个模型参数的假设;
  3. 模型验证:把刚才没有被采样的点带入刚才建立的模型中,统计内群点的数量;
  4. 重复以上1、2、3步骤多次;
  5. 算法终止:达到终止条件后,选取其中内群点数量最多的那组模型参数作为我们要求的解;

RANSAC算法的终止条件

假设某一次采样的最小子集中所有数据都是内点的概率为p,那么在第k次第一次出现所有点都是内点的概率情况如下:

关于如何确定终止条件,RANSAC的论文里提出了两种方式:

  1. 第一种方式,求解上面k期望值与方差,然后期望值加上两倍到三倍的方差,作为采样次数;

  2. 第二种方式,用的更多,它的原理是要求在采样次数中至少有一次采样全部都是内点的概率大于;即

此处,如果这个数据集合中的内点率为时,则(下式中m为最小子集数据的个数)

需要说明的是此处可能并不是已知的,此时可以有两个选择,第一是令其值为最坏情况下的第二是先令其值为非常低的一个值,然后每次迭代后,将其值换为之前验证的模型中最大的那个内点率值(因为最好的模型验证的内点率肯定是最高的)。

第二种方式的一种更简单的求解

其实上面第二种方式还有一种更简单的表示形式,那就是直接计算没有一次最小采样全部是内点的概率,当它小于时,终止;即:

上面公式中表示当前最好模型的内点率,表示最小采样个数,表示当前的迭代次数,只有在当前迭代次数下这个公式满足的情况下,才会终止。此处的这种形式比上面计算迭代次数的形式要好理解一些。

在关键点匹配对筛选中的应用

  • 模型假设:模型是单应矩阵表示的对极几何模型;
  • 输入假设:输入的数据中包含正确的匹配(inliers)与误匹配(outliers);
  • 有解假设:可以通过四对匹配特征点求解处自由度为8单应矩阵

 


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

相关文章

【特征匹配】RANSAC算法原理与源码解析

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/50217655 勿在浮沙筑高台 随机抽样一致性(RANSAC)算法,可以在一组包含“外点”的数据集中,采用不断迭代的方法,寻找最优参数模型&…

RANSAC算法详解+Python实现

1.算法描述 RANSAC的基本假设是: (1)数据由“局内点”组成,例如:数据的分布可以用一些模型参数来解释; (2)“局外点”是不能适应该模型的数据; (3&#xff0…

RANSAC算法与原理(一)

目录 算法介绍举例 算法的基本思想和流程算法的实现流程:迭代次数的推导算法的实现 python代码实现References 算法介绍 首先我们从Random sample consensus - Wikipedia上找到RANSAC原理的介绍。 RANSAC算法的中文名称是随机抽样一致算法(Random Sample Consenus…

RANSAC算法——看完保证你理解

目录 1 最小二乘算法的缺陷2 RANSAC算法2.1 原理2.2 实例2.3 参数 参考感谢阅读 RANSAC全程Random sample consensus,中文即“随机抽样一致算法”,该方法采用迭代的方式从一组包含离群(outlier或者错误数据)的被观测数据中估算出数…

RANSAC算法介绍

一、RANSAC介绍 随机抽样一致算法(RANdom SAmple Consensus,RANSAC),采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。RANSAC算法假设数据中包含正确数据和异常数据(或称为噪声)。正确数据记为内点(…

RANSAC算法讲解

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

RANSAC介绍(Matlab版直线拟合+平面拟合)

RANSAC介绍(Matlab版直线拟合平面拟合) 本人邮箱:sylvester0510163.com,欢迎交流讨论, 欢迎转载,转载请注明网址http://blog.csdn.net/u010128736/ 一、RANSAC介绍 随机抽样一致算法(RANdom SA…

RANSAC算法(仅供学习使用)

1.定义 RANSAC(Random Sample Consensus)算法是一种基于随机采样的迭代算法,用于估计一个数学模型参数。它最初由Fischler和Bolles于1981年提出,主要用于计算机视觉和计算机图形学中的模型拟合和参数估计问题。 RANSAC算法的基本…

前端调试手机app

有时候应用在电脑网页端显示是正常的,但是一安装到手机上或者在手机浏览器上打开,就会显示各种问题问题。 在网上找了很长时间,最方便的就是利用在电脑上利用谷歌浏览器进行调试,输入网址chrome://inspect/#devices,进…

跨平台应用开发进阶(三十七)uni-app前端监控方案 Sentry 探究

文章目录 一、前言二、Sentry 简介三、Sentry 部署3.1 docker 的部署 (mac版)3.2 部署 sentry3.3 创建项目3.4 前端部署,注入监控代码 四、sentry 操作界面介绍五、拓展阅读 一、前言 在日益发达的网络时代,web应用也是越来越复杂,尤其是前端…

uni-app 开发跨平台应用前端框架

前言 uni-app 是一个使用 vue.js 开发跨平台应用的前端框架,由于它具备"编写一次代码可发布到多个平台"的特点,大大的节省了开发成本,极速提升了开发效率。 一、uni-app 简介 uni-app 是一个使用 Vue.js 开发所有前端应用的框架。…

uni-app开发所有前端应用的框架

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。 DCloud公司拥有420万开发者,几十万应用案例、6.5亿手…

比较几种热门Hybrid App前端框架

作为一种既能够在原生应用程序环境中运行,也能够在 Web 浏览器中运行的应用程序,Hybrid App 主要使用 Web 技术进行开发,如 HTML、CSS 和JavaScript,并使用一个中间层将其封装在原生应用程序中。随着技术的持续推进,Hy…

APP管理平台--前端篇,首页(三)

作为首页,肯定在打开网址后就看得到对应信息。那么作为APP管理平台,这个信息自然而然的表现成了APP列表。那么依据现有各大应用市场需要分为已上线和未上线。但是在实际做的时候没有区分,这次项目中将所有新增的APP都展示了。区分布局就决定了…

一天撸一个财务APP系统【安卓端+前端+后端】

昨天有个粉丝朋友也想学开发Web和小程序、安卓,问可以在大学学会吗? 在学校学到的东西真的有限: 在很多的高校,有一些教授是学院派的,他们没有做过多少开发工作,上课就是照本宣科,讲的知识点都…

如何查看手机APP使用的前端框架?

一、首先获取该APP的apk包(长按APP,点击‘分享’,分享到微信‘文件传输助手’,即可获得apk包--参考本博主上篇文章)。 二、把apk扩展名改成.zip然后解压。不同的编译软件目录结果也不一样。(为方便起见&am…

【网络协议】IPV4协议介绍

💪本节内容:IPV4协议介绍、IPV4地址格式、IPV4数据格式及C项目结构体设计 😏【Qt6网络抓包工具项目实战】总导航目录(建议收藏书签~~~) ✌️ part1 😏【Qt6网络抓包工具项目实战】1.1Qt6.2.2环境搭建(免费…

DHCP协议

目录 1、DHCP协议 2、DHCP的工作过程 动态获取IP地址流程 跟新租期流程 解除租期流程 1、DHCP协议 DHCP(Dynamic Host Configuration Protocol)协议是处于应用层的协议。一个主机如果想正常上网,需要配置IP地址,子网掩码,默认网关基本配置…

TCP/IP-----协议号、端口号、ARP、icmp

文章目录 一、数据流向过程二、协议详解1)ARP协议2)ICMP协议 协议号 协议号是存在于IP数据报的首部的20字节的固定部分,占有8bit.该字段是指出此数据报所携带的是数据是使用何种协议,以便目的主机的IP层知道将数据部分上交给哪个处…

UDP协议

引言 本文中只关于IPv4;UDP是一种保留消息边界的简单的面向数据报的传输层协议。它不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制。总之,能没有的都没了。但它提供了差错检测,是一种端到端的校验和。因此使用它的程序必须自己实现…