RANSAC基本原理

article/2025/9/12 20:18:35

计算机视觉基本原理——RANSAC

  • 1. RANSAC简介
  • 2. 基本思想
  • 3. 范例
  • 4. 迭代次数推导

Reference:
1.计算机视觉基本原理——RANSAC

1. RANSAC简介

RANSAC(RAndom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outliers)的数据中正确估计数学模型参数的迭代算法。“外点”一般指的是数据中的噪声,比如说匹配中的误匹配和估计曲线中的离群点。所以,RANSAC也是一种“外点”检测算法。RANSAC算法是一种不确定算法,它只能在一种概率下产生结果,并且这个概率会随着迭代次数的增加而加大(之后会解释为什么这个算法是这样的)。

RANSAC主要解决样本中的外点问题,最多可处理50%的外点情况。

2. 基本思想

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

  1. 一个模型适用于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。
  2. 用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是局内点。
  3. 如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理。
  4. 然后,用所有假设的局内点去重新估计模型,因为它仅仅被初始的假设局内点估计过。
  5. 最后,通过估计局内点与模型的错误率来评估模型。

这个过程被重复执行固定的次数,每次产生的模型要么因为局内点太少而被舍弃,要么因为它比现有的模型更好而被选用。
在这里插入图片描述对上述步骤,可以简单总结为以下步骤:
N:样本个数 K:求解模型需要的最少的点的个数(对于直线拟合来说就是两个点,对于计算Homography矩阵就是四个点)

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

3. 范例

RANSAC用于拟合直线:
1.随机选取 K = 2 K=2 K=2个点:
在这里插入图片描述2. 拟合一条直线:
在这里插入图片描述
3. 统计内点个数,内点为绿色,此时的内点个数为9:
在这里插入图片描述4. 重复上述过程M次,找到内点数最大的模型
在这里插入图片描述
5. 利用所有的内点重新估计直线
在这里插入图片描述

4. 迭代次数推导

迭代的次数,是可以估算出来的。假设“内点”在数据中的占比为p:
p = n i n l i e r s n i n l i e r s + n o u t l i e r s p=\frac{n_{inliers}}{n_{inliers}+n_{outliers}} p=ninliers+noutliersninliers
那么我们每次计算模型使用N个点的情况下,选取的点至少有一个外点的情况(采样失败的概率)就是:
1 − p K 1 - p^K 1pK
也就是说,在迭代k次的情况下, ( 1 − p K ) M (1-p^K)^M (1pK)M就是 M M M次迭代计算模型都至少采样到一个“外点”去计算模型的概率。那么能采样到正确的K个点去计算出正确模型的概率是:
z = 1 − ( 1 − p K ) M z = 1 - (1-p^K)^M z=1(1pK)M
通过上式,可以求得:
k = l o g ( 1 − z ) l o g ( 1 − t n ) k = \frac{log(1-z)}{log(1-t^n)} k=log(1tn)log(1z)

“内点”的概率 p p p通常是一个先验值。然后 z z z 是我们希望RANSAC得到正确模型的概率。如果事先不知道 p p p的值,可以使用自适应迭代次数的方法。也就是一开始设定一个无穷大的迭代次数,然后每次更新模型参数估计的时候,用当前的“内点”比值当成 p p p来估算出迭代次数。
在这里插入图片描述


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

相关文章

RANSAC算法的理解与使用

随机抽样一致算法(random sample consensus, RANSAC),其实就是采用迭代的方法从一组包含离群的被观测数据中估算出数学模型的参数。(比如通过一群点拟合一条直线等) 基本假设 模型假设:事先知道真实数据满足的数学模型,不知道的只是模型的具…

【特征匹配】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层知道将数据部分上交给哪个处…