RANSAC与LSP

2024-05-12 18:32
文章标签 ransac lsp

本文主要是介绍RANSAC与LSP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近又要用到ransac算法,之前学过也用过,但是好久没用,只知道是干什么用的,现在来重新总结一下,再来复习一遍:

       Ransac和最小二乘法都用于模型的最优估计;RANSAC是考虑局部有用的那些数据,取有用数据的模型;LSP考虑的是全局数据,取全局误差最小的模型

一、基础原理:

RANSAC:称为随机抽样一致算法(random sample consensus,RANSAC),采用迭代的方式从一组包含outliers(离群)的被观测数据中估算出最优inliers数学模型。

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

使用条件:1).一组带噪声的观测数据,其中的inliers数据占了大多数;2).有一个可以解释可信观测数据的参数化模型

二、对比:

最小二乘法(LSP):是从全局出发,考虑所有数据,从所有数据中估计出一个整体误差最小的模型,默认为所有的数据都为inliers,都会参与建模;

RANSAC:算法是从一堆数据中选择出某一个模型,前提是假设这组数据有某种特性,数据里有inliers和outliers,也就是在建模的数据中掺杂着噪声数据,在建模的是时候应该剔除这些噪声数据,仅选择inliers数据来建模,这是和LSP最本质的区别;

假设一组数据符合一个直线模型:y=ax+b,用最小二乘就可以很容易求解出未知参数a和b。


当观测的数据充满了噪声时,比如下面图中的黑点,很明显中间有一条直线,但是用最小二乘去解它,于是出问题啦:

很显然最小二乘失效了,这时候就要用RANSAC去解决它。

 

RANSAC的算法大致可以表述为(来自wikipedia):
Given:data – a set of observed data pointsmodel – a model that can be fitted to data pointsn – the minimum number of data values required to fit the modelk – the maximum number of iterations allowed in the algorithmt – a threshold value for determining when a data point fits a modeld – the number of close data values required to assert that a model fits well to dataReturn:bestfit – model parameters which best fit the data (or nul if no good model is found)iterations = 0
bestfit = nul
besterr = something really large
while iterations < k {maybeinliers = n randomly selected values from datamaybemodel = model parameters fitted to maybeinliersalsoinliers = empty setfor every point in data not in maybeinliers {if point fits maybemodel with an error smaller than tadd point to alsoinliers}if the number of elements in alsoinliers is > d {% this implies that we may have found a good model% now test how good it isbettermodel = model parameters fitted to all points in maybeinliers and alsoinliersthiserr = a measure of how well model fits these pointsif thiserr < besterr {bestfit = bettermodelbesterr = thiserr}}increment iterations
}
return bestfit

三、RANSAC应用简介

RANSAC其实就是一种采样方式,例如在图像拼接(Image stitching)技术中:

第一步:预处理后(据说桶形变换,没有去了解过)提取图像特征(如SIFT


第二步:特征点进行匹配,可利用归一化互相关(NormalizedCross Correlation method, NCC)等方法。

但这个时候会有很多匹配错误的点:


这就好比拟合曲线,有很多的误差点,这个时候就想到了RANSAC算法:我不要再兼顾所有了,每次选取Nums个点匹配计算匹配后容差范围内的点数重复实验,迭代结束后,找出点数最多的情况,就是最优的匹配。 

利用RANSAC匹配:


第三步:图像拼接,这个就涉及拼接技术了,直接给出结果:

 

 

 

 参考:

https://en.wikipedia.org/wiki/Random_sample_consensus

https://blog.csdn.net/zinnc/article/details/52319716

https://www.cnblogs.com/xingshansi/p/6763668.html

https://blog.csdn.net/laobai1015/article/details/51682596

 

 


这篇关于RANSAC与LSP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983405

相关文章

RANSAC笔记

刚来实验室那会儿,每周组会汇报,师兄报告时,和老板讨论,总听到“那就对数据RANSAC一下”……当时我怯生生的问了一下师兄,啥叫RANSAC?现在也不记得师兄咋解释的,后来自己也经常调用matlab里的ransac函数求解单应性矩阵,但是对其具体原理我还真没花时间去了解一下,今天就做一下笔记,理解理解什么叫RANSAC。 什么叫RANSAC? 直译过来随机采样一致性(random sample

设计模式原则:里氏替换原则(Liskov Substitution Principle, LSP)

定义 LSP由Barbara Liskov于1987年提出,一般有两种定义方式: 第一种:If for each object O1 of type S there is an object O2 fo type T such that for all programs P defined in terms of T, the behavior of P is unchanged when

【大家的项目】新弄了一个LSP服务的库

前段时间在用 rust 实现 vscode 的 lsp 服务, 虽然 ra 已经开发出了相关库, 但用着不是很舒服, 所以我自己弄了一个 LSP 相关的组件. 目前包含2个库 lsp-ty LSP 规范中提到的类型, 这些都是 rust 原生类型, 没有任何 binding, 以及一些辅助 traitlsp-io 提供从 tcpstream 或 stdio 等读写协议消息的包装. 目前仓库还提供

Graph Cut Ransac代码编译过程

一、 论文简介 Graph Cut Ransac来自于CVPR2018,本文提出了一种新的鲁棒估计算法,叫做图割RANSAC,简称GC-RANSAC。当找到当前最好模型时,该算法在局部优化中使用图割算法来区分局内点和局外点。本文提出的局部优化算法理论简洁、易于实现,运行效率高。 原文链接:https://www.researchgate.net/publication/317356965_Gra

北斗导航 | 基于改进RANSAC算法的BDS接收机自主完好性监测算法研究

================================================ 博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ================================================ Rearch on BDS RAI

通俗易懂理解RANSAC算法

RANSAC(Random Sample Consensus),翻译为随机抽样一致算法。 算法思路:从所有观测中随机找到几个尽可能少的点去拟合模型,拟合后依次计算模型和所有观测数据的残差,当残差小于给定的阈值时,就将其判断为内点,大于给定的阈值时,就判断为外点,并统计内点的数量,然后再次随机选取几个点拟合模型迭代。如果本次拟合内点数量大于先前的模型,就将旧模型迭代为新的模型。 做过AMCL算法

Python 点云平面分割【RANSAC算法】

点云平面分割 一、介绍1.1 概念1.2 算法思路1.3 参数设置 二、代码示例三、结果示例 其他参考链接:C++中实现点云平面分割 一、介绍 1.1 概念   点云平面分割:可以在点云数据中找到平面并计算平面模型系数,同时输出平面点云及非平面点云。 1.2 算法思路 实现思路: 首先,采用RANSAC算法从点云中随机选取三个点作为初始平面模型。使用选定的三个点拟

PointCloudLib 点云Ransac拟合平面功能实现 C++版本

0.实现效果 左图为原始点云,右图中的红色点为拟合平面所选取的点,绿色的点为拟合平面所抛弃的点 拟合出的结果是一个平面方程。 1.算法原理 RANSAC(Random Sample Consensus,随机样本一致性)算法在拟合平面时的工作原理可以概括为以下几个步骤: 随机选择最小样本集: RANSAC算法首先会从数据集中随机选择三个点作为最小样本集。在三维空间中,三个非共线

【计算机视觉】Lecture 15:鲁棒估计:RANSAC

回忆:参数估计 假设我们找到了两幅图像之间的匹配点,我们认为它们是通过一些参数化变换(例如平移;尺度欧几里德;仿射)相关联的。我们如何估计此变换的参数? 基本策略 基于对应点的最小二乘估计 但这个方法有一些问题… 问题:异常点(外点Outliers) 粗略地说,外点是不符合模型的点。 错误数据->外点 粗略地说,外点是不符合模型的点。 符合模型的点被称为内点 外点问题 最

LSP(Layered Service Provider )---子浏览器被劫持

学习原因是使用谷歌浏览器在京东买东西的时候,突然加载页面正常,出现了书签无法打开。上网搜索原来是Lsp出现问题,浏览器被恶意修改。然后呢?就下面了 ,你都懂得....... LSP就是TCP/IP等协议的接口.LSP用在正途上可以方便程序员们编写监视系统网络通讯情况的Sniffer,可是现在常见的LSP都被用于浏览器劫持。 例:“浏览器劫持”后出现的症状: 被重定向到