随机抽样一致RANSAC

2023-09-18 10:04:17

RANSAC简介

RANSAC是 RANdom SAmple Consensus 的缩写,中文翻译叫随机采样一致。它可以从一组观测数据中,找出符合某些数学模型的样本集,并且估计出这个数学模型的参数。其中数据点包括inlier,outlier。outlier对模型的估计没有价值,因此该方法也可以叫做outlier检测方法。这是一种非确定性算法,因为它是在一定概率下得到一个合理的结果,当迭代次数增加,概率也会增加。

深入点讨论,有一组观测数据,要建立一个模型来拟合数据,我们第一步要做的,肯定是用一个标准对数据进行筛选,去除噪声点,让数据尽量干净和准确。但是如果我们没有一个合适的筛选标准,该怎么办呢?我们可以假设:观测数据中除了外点(噪声),肯定存在内点(准确点),而且内点的个数够我们用来拟合一个模型(比如拟合一条直线,至少要两个数据点)。有了这个假设,我们可以从观测数据中随机挑选出n个数据点,用这n个点来拟合模型,然后对这个模型进行评价。如果通过迭代,反复重复这个过程,只要迭代次数过大,我们随机挑选出来的n个样本点是有可能全部是内点的,再配合上模型评价,就能找到最优的拟合模型。这就是ransac的主要假设和思想,官方叙述如下:

  • RANSAC的基本假设是 “内群”数据可以通过几组模型参数来叙述其数据分布,而“离群”数据则 是不适合模型化的数据。 数据会受噪声影响, 噪声指的是离群:例如从极端的噪声, 错误解释有关数据的测量, 或不正确的假设。RANSAC假定,给定一组(通常很小的)内群,存在一个 程序,这个程序可以估算最佳解释或最适用于这一数据模型的参数。
  • RANSAC是一种思想,一个求解已知模型的参数的框架。它不限定某一特定的问题,可以是计算机视觉的问题,同样也可以是统计数学,甚至可以是经济学领域的模型参数估计问题。
  • RANSAC是一种迭代的方法,用来在一组包含离群的被观测数据中估算出数学模型的参数。 RANSAC 是一个非确定性算法,在某种意义上说,它会产生一个在一定概率下合理的结果,其允许使用更多次的迭代来使其概率增加。

此RANSAC算法在1981年由Fischler和Bolles首次提出。最基本的假设便是数据中是有inlier,例如:其可以用一些参数模型来描述,尽管可能有些微噪音,以及outlier不能用模型拟合。outlier一般噪音极大或者由不正确的假设得到的错误测量。RANSAC同时也假设在给定的inlier情况下,存在一个过程可以估计好参数模型并且可以很好地拟合这些数据。

举个例子,如下图所示,这些点是观测数据,给定的数学模型是圆形和直线,我们想从这些观测数据中找出圆形和直线,并且估计出它们的几何参数。
在这里插入图片描述

RANSAC算法

下面介绍一下RANSAC算法:

输入:观测数据data,数学模型models;输出是匹配data的数学模型match_models和对应的样本集sub_data

  1. 随机采样data中的一些样本sub_data
  2. 用数学模型match_model去匹配样本集sub_data,估计出数学模型的参数
  3. 评价估计出来的match_model,如果可以接受,则把它放入match_models,并且从原始观测数据中剔除对应的样本集sub_data
  4. 迭代步骤1-3,直到估计出了所有的数学模型,或者迭代次数到了最大值

RANSAC算法是一类模式识别方法的框架,算法步骤里的具体内容是需要根据实际情况来实例化的。

以下是RANSAC工作原理的基本概述:

1.随机选择数据的子集: 随机选择整个数据集的一个子集。此子集的大小取决于您尝试拟合的模型。例如,如果你试图拟合一条线,你应该选择两个数据点(因为两个点唯一地决定了一条线)。

2.拟合模型: 使用选定的数据子集来拟合模型。对于直线示例,您可以找到穿过两个随机选择的点的直线。

3.确定Inliers: 计算在一定的容差内有多少剩余数据点适合该模型。那些这样做的人被认为是失败者;那些没有的被认为是异常值。

4.重复: 返回步骤1,重复该过程预定次数的迭代,或者直到满足某个其他标准。

5.选择最佳模型: 在所有迭代完成后,选择具有最大内联数的模型。

6.优化模型(可选): 有时,在使用初始RANSAC迭代找到最佳模型后,会执行第二步,在该步骤中,使用所有inlier来优化模型。

RANSAC的主要优点是其鲁棒性。即使数据集有大量异常值,它也可以提供准确的结果。然而,它不能保证找到最佳模型,并且其性能可能受到预定义迭代次数和容差水平的影响。

Ransac在3D视觉中的用法

Ransac最主要的作用主要包括直线拟合,平面拟合,单应性矩阵拟合等。

直线拟合

直线拟合是指用连续曲线近似地刻画或比拟平面上离散点组所表示的坐标之间的函数关系。更广泛地说,空间或高维空间中的相应问题亦属此范畴。

假设我们知道两个变量X与Y之间呈线性关系,Y=aX+b,我们想确定参数a与b的具体值。通过实验, 可以得到一组X与Y的测试值。虽然理论上两个未知数的方程只需要两组值即可确认,但由于系统误差的原因,任意取两点算出的a与b的值都不尽相同。通常情况下,我们可以采用最小二乘法拟合出直线方程(最小二乘法:通过计算最小均方差关于参数a、b的偏导数为零时的值)。但是最小二乘法只适合于误差较小的情况,如果测量数据中外点较多,误差很大,就需要采用Ransac算法。
在这里插入图片描述

单应性矩阵拟合

在进行图像匹配,全景拼接等时,常会用到单应性矩阵。例如在做全景拼接时,对于同一个场景,相机在不同角度拍摄了两张照片,一般先寻找两幅图片的匹配特征点,然后通过匹配特征点的对应关系计算出一个矩阵,这个矩阵就是单应性矩阵,利用这个矩阵就能将两张图片组合在一起。所以单应矩阵描述的是两组坐标点的关系,即:
[ x y 1 ] = H [ X Y 1 ] \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = H \begin{bmatrix} X \\ Y \\ 1 \end{bmatrix} xy1 =H

更多推荐

基于JAVA+SpringBoot+Vue+协同过滤算法+爬虫的前后端分离的租房系统

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取项目下载方式🍅一、项目背景介绍:随着城市化进程的加快,租房需求逐渐增多,传统的租房方式已经无法满足人们的需求。为了提

Linux下的系统编程——信号(十一)

前言:信号在我们的生活中随处可见,如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪......他们都有共性,信号是信息的载体,Linux/UNIX环境下,古老、经典的通信方式,现下依然是主要的通信手段。Unix早期版本就提供了信号机制,但不可靠,信号可能丢失。Berkeley和AT&T都对信号模型做了

如何在前端传递一个String 的变量和一个obj对象到后端,然后被Java后端接收

首先我们通过post向后端发送请求,本篇博客仅纪录一下,在实际开发中需要从前端传递多值到后端,并且不存放到一个对象中进行传值处理,简单的一个案例展示该怎么做罢了!!!//创建一个包含字符串和对象的数据constpostData={stringValue:"Hello,World!",//你要发送的字符串数据yourOb

华为云Stack的学习(七)

八、华为云Stack存储服务介绍1.云硬盘EVS云硬盘(ElasticVolumeService,EVS),又名磁盘,是一种虚拟块存储服务,主要为ECS(ElasticCloudServer)和BMS(BareMetalServer)提供块存储空间。用户可以在线创建云硬盘并挂载给实例,云硬盘的使用方式与传统服务器硬盘完

浅谈电力电容器技术的发展及选型

安科瑞华楠摘要:介绍了我国电力电容器产品制造技术的发展现状。在与国外电力电容器产品先进水平对比的基础上,讨论了我国电力电容器产品的差距和某些对策,并对我国电力电容器技术发展趋势提出了一些看法。关键词:电力电容器;制造技术;技术发展0引言电力电容器是一种重要的基础工业产品,他是电力系统并联无功补偿、串联补偿、谐波滤波装置

基变换与矩阵对角化

矩阵乘法的本质是映射坐标的意思是把映射到以和为基的向量空间中表示将展示成我们正常基向量空间中显示,而是将用其本身的坐标系展示。这也是基变换的本质,如果想对一组在向量空间中的向量进行旋转操作,旋转逆时针90度,则需要先将其转换为我们向量空间中显示,即,然后再执行旋转操作,最后再将它转变为自己的坐标系展示,。就是基变换。特

驾驭Java线程池:一步一步带你从新手到高手!

驾驭Java线程池:一步一步带你从新手到高手!java框架中例如Tomcat、Dubbo等都离不开线程池,这些框架用到线程的地方,都会用线程池来负责。我们在使用这些框架的时候,会设置线程池参数,用于提高性能。那么开多少线程合适?今天我们将围绕这个问题来学习一下线程池。为什么使用线程池平常我们使用java线程的时候,都是

浅谈Rust内存管理

Rust因在内存管理上的独到之处,近年来受到了不少开发者的青睐。Rust内存管理的核心功能就是所有权。不同的语言采取了不同的内存管理方式,主要分为开发者手动管理或者编译器辅助管理,以及垃圾回收机制等。Rust的所有权机制,有别于这两者。堆栈内存我们知道程序会在堆或者栈上创建数据。栈上创建数据很容易,只要知道数据的大小,

WMS仓储管理系统的主要类型及其特性和适用场景

WMS仓储管理系统是物流管理系统中至关重要的一部分。它被广泛用于各个行业,包括制造业、零售业、物流业和运输业等。在选择适合的仓库管理系统时,企业需要根据自身的业务需求和运营模式进行考虑。本文将详细介绍四种常见的仓储管理系统类型,包括独立仓储管理系统、供应链管理系统中的仓储管理模块、ERP系统中的仓储管理模块和基于云的仓

R语言进行孟德尔随机化+meta分析(1)---meta分析基础

目前不少文章用到了孟德尔随机化+meta分析,今天咱们也来介绍一下,孟德尔随机化+meta其实主要就是meta分析的过程,提取了孟德尔随机化文章的结果,实质上就是个meta分析,不过多个孟德尔随机化随机化的结果合并更加加强了结果的可靠性。有部分人可能对meta分析不是很了解,咱们今天先来介绍一下meta分析基础,为下一

MySQL高频面试题

文章目录1.什么是MySQL?2.关系型数据库和非关系型数据库3.数据库三大范式是什么?4.一条SQL查询语句是如何执行的5.引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性6.索引16连问什么是索引?索引的优缺点?索引的作用?索引设计的原则?什么

热文推荐