RANSAC算法介绍与总结

article/2025/9/8 14:08:39

RANSAC算法

  • 简介
  • RANSAC地面分割

简介

粒子分割主要使用RANSAC算法. RANSAC全称Random Sample Consensus, 即随机样本一致性, 是一种检测数据中异常值的方法. RANSAC通过多次迭代, 返回最佳的模型. 每次迭代随机选取数据的一个子集, 并生成一个模型拟合这个子样本, 例如一条直线或一个平面. 然后具有最多inliers(内联点)或最低噪声的拟合模型被作为最佳模型.

  • 一种RANSAC 算法使用数据的最小可能子集作为拟合对象. 对于直线来说是两点, 对于平面来说是三点. 然后通过迭代每个剩余点并计算其到模型的距离来计算 inliers 的个数. 与模型在一定距离内的点被计算为inliers. 具有最高 inliers 数的迭代模型就是最佳模型. 也就是说RANSAC算法通过不断迭代, 找到拟合最多inliers的模型, 而outliers被排除在外.
  • RANSAC 的另一种方法对模型点的某个百分比进行采样, 例如20% 的总点, 然后将其拟合成一条直线. 然后计算该直线的误差, 以误差最小的迭代法为最佳模型. 这种方法的优点在于不需要考虑每次迭代每一点. 真实激光数据下是对一个平面进行拟合, 从而分离物体和路面.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

RANSAC地面分割

  • 基于ransac算法平面检测:

    1. 确定迭代次数;
    2. 在迭代次数内:
      • 随机选择三个点组成平面(判断三个点是否共线);
      • 构造坐标矩阵;
      • 求平面方程;
      • 求所有点到平面的距离;
      • 统计inlier个数(距离小于阈值);
    3. 迭代选择inlier个数最多的平面。
  • 地面分割,只使用inlier作为判断条件是不足的,会导致某个点数较多的非地面平面占据inlier个数;为了避免将平直墙面检测为地面,必须将夹角加入判断条件;(夹角就是法向量与Z轴(0,0,1)的夹角。

  • 判断三个点是否共线的两种方法:

    1. 满足满秩矩阵(利用满秩行列式不等于0)用三点其中任意两点组成向量,求这样两个不同向量是否平行就行了.也就是说三个点的坐标组成一个三阶行列式,只要三阶行列式为0,且该矩阵秩为1,则必定是共线的。
    2. 利用比例关系(就是两两向量成比例)为了方便,我数字设简单一点比如(0,0,0),(1,2,3),(4,5,6)三点先任取两个相减得到(1-0,2-0,3-0)和(4-1,5-2,6-3)两个向量即(1,2,3)和(3,3,3)这两个向量然后设一个比例常数t使1t=3解得t=3带入2t得6与对应的y=3不等所以不共线。(即设三点为A、B、C .利用向量证明:λAB=AC(其中λ为非零实数))
    3. 利用点差法求出ab斜率和ac斜率 相等即三点共线
    4. 取两点确立一条直线,计算该直线的解析式,代入第三点坐标 看是否满足该解析式。
    5. 证明平角即可,例如,三点ABC,有任意一点D,若角DBA+角DBC=180度,即角ABC=180度,则点ABC三点共线几何表达:因为角ABC=180度所以点ABC三点共线
  • 向量法求点到平面的距离
    在这里插入图片描述

在这里插入图片描述


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

相关文章

RANSAC算法原理

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

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;从而让…