CSF(Cloth Simulation Filter)点云地面点滤波

CSF[Cloth Simulation Filter]点云地面点滤波

    • 0.引言
    • 1.布料模拟
    • 2.修改布料模拟
    • 3.布料滤波
    • 4.CSF总体过程

0.引言

  • code

  • 基本原理:原始点云被倒置过来,然后⼀块布从上⽅掉落到倒置的表⾯。通过分析布的节点与相应的LIDAR点之间的相互作⽤,可以确定布的最终形状,并将其⽤作将原始点分类为地⾯和⾮地⾯。

1.布料模拟

在计算图形学中,可以将⼀块布认为由具有质量和互连的粒⼦组成的⽹格,称为质量弹簧模型(mass spring model)。下图显⽰了mass spring model结构。⽹格节点上的粒⼦没有⼤⼩,但分配了恒定质量。

粒⼦在三维空间中的位置决定了布的位置和形状。在此模型中,粒⼦之间的互连被建模为“虚拟弹簧”,它连接两个粒⼦并遵守胡克定律。为了充分描述布的特性,已经定义了三种类型的弹簧:牵引弹簧、剪切弹簧、屈曲弹簧。

粒⼦的位置和速度取决于作⽤在粒⼦上的⼒。根据⽜顿的第⼆定律,位置和⼒之间的关系由等式

(1)确定:

m ∂ X ( t ) ∂ t 2 = F ext  ( X , t ) + F int  ( X , t ) m \frac{\partial X(t)}{\partial t^2}=F_{\text {ext }}(X, t)+F_{\text {int }}(X, t) mt2X(t)=Fext (X,t)+Fint (X,t)

其中 x 表⽰粒⼦在时间 t 上的位置; f e x t ( x , t ) f_{ext}(x,t) fext(xt) 代表外⼒,由重⼒和碰撞⼒组成, F i n t ( x , t ) F_{int}(x,t) Fint(xt)代表位置x和时间t处的粒⼦的内⼒(由粒⼦互相连接产⽣)。由于内部和外⼒随时间t的变化⽽变化,因此通常通过数值⽅法(例如,Euler⽅法)求解⽅程.

2.修改布料模拟

为了使布料模拟适应地⾯滤波,需要做以下修改:

  • (1)将粒⼦的运动限制为沿垂直⽅向,因此可以通过⽐较粒⼦和地形的⾼度值来实现地⾯点云检测
  • (2)当粒⼦到达地⾯时,设置粒⼦为不可移动,如果不可移动的粒⼦与地形的⾼度相当,就认为是地⾯
  • (3)将作⽤在粒⼦上的⼒分解为2个⼒。⾸先考虑重⼒对粒⼦的作⽤,当在重⼒作⽤下,粒⼦到达地⾯时,此时将粒⼦变为不可移动状态,此时可以忽略碰撞⼒。其次根据内⼒改变粒⼦位置。

其过程如下图所⽰:

CSF中的主要步骤:

  • (a)初始状态。⼀块布倒置放在的激光雷达点云上⽅;
  • (b)在重⼒的影响下计算每个粒⼦的位移。因此,某些粒⼦可能会出现在地⾯下。
  • (c)交叉检查。对于那些在地下的粒⼦,他们被移动在地⾯上并设置为⽆法移动的(蓝⾊粒⼦);
  • (d)考虑内部⼒量。根据粒⼦之间的内⼒移动可移动的粒⼦(红⾊粒⼦)。

3.布料滤波

根据 2.对布料模拟的修改,布料滤波可以分为两个部分:

  • ⾸先考虑外⼒(考虑重⼒忽略碰撞⼒):在外⼒中,我们仅从重⼒中计算每个粒⼦的位移,即内⼒等于零的求解⽅程:

X ( t + Δ t ) = 2 X ( t ) − X ( t − Δ t ) + G m Δ t 2 X(t+\Delta t)=2 X(t)-X(t-\Delta t)+\frac{G}{m} \Delta t^2 X(t+Δt)=2X(t)X(tΔt)+mGΔt2

  • 其次,考虑内⼒部分:仅遍历每个spring(spring由每两个粒⼦组成),⽽⾮遍历每个粒⼦。对于每个spring,我们⽐较了构
    成当前spring的两个粒⼦之间的⾼度差。因此,⼆维(2-D)问题被抽象为⼀维(1-D)问题,如下图所⽰:

在这里插入图片描述
当使⽤内⼒移动粒⼦的运动⽅向时,两个具有不同⾼度值的粒⼦将尝试移动到同⼀⽔平⾯。

如果两个连接的粒⼦都是可移动的,我们将它们以相反的⽅向移动。如果其中⼀个是不可移动的,那么另⼀个将被移动。否则,如果这两个粒⼦具有相同的⾼度值,则它们都不会移动。因此,每个粒⼦的位移(向量)可以通过以下公式计算:

d ⃗ = 1 2 b ( p i → − p 0 → ) ⋅ n ⃗ \vec{d}=\frac{1}{2} b\left(\overrightarrow{p_i}-\overrightarrow{p_0}\right) \cdot \vec{n} d =21b(pi p0 )n

d ⃗ \vec{d} d 表示粒子位移向量, b b b :粒子可移动时等于 1 ,否则等于 0 , p 0 → , p i → 0, \overrightarrow{p_0}, \overrightarrow{p_i} 0,p0 ,pi 分别表示粒子与其近邻粒子的当前位置 (坐标) 向量, n ⃗ = ( 0 , 0 , 1 ) \vec{n}=(0,0,1) n =(0,0,1) 表示垂直方向的单位向量。

内力作用下的移动过程是一个迭代过程,用rigidness表示迭代次数。每次移动距离为之前距离的二分之一,设两个粒子原始距离为 V D \mathrm{VD} VD ,则rigidness=1,两个粒子之间的距离变为 1 2 V D \frac{1}{2} V D 21VD, rigidness=2,两个粒子之间的距离变为 1 4 V D \frac{1}{4} V D 41VD, rigidness = 3 =3 =3 ,两个粒子之间的距离变为 1 8 V D \frac{1}{8} V D 81VD ,其过程如下图:

在这里插入图片描述

4.CSF总体过程

⾸先,我们将布粒⼦和LIDAR点投射到同⼀⽔平平⾯,然后在此2D平⾯中找到每个布粒⼦的最近的激光点云(称为对应点,CP)。定义了⼀个相交⾼度值(IHV)以记录CP的⾼度差值(投影之前)。IHV表⽰粒⼦能到达的最低位置,即如果粒⼦达到由该值定义的最低位置,则不能再向前移动。

在每次迭代期间,我们将粒⼦的当前⾼度值(CHV)与IHV进⾏⽐较;如果CHV等于或低于IHV,则将粒⼦移回IHV的位置并使粒⼦⽆法移动.

在经过外⼒和内⼒计算之后获得了近似的真实地形,然后通过计算原始LIDAR点云和模拟粒⼦之间的距离。距离⼩于阈值HCC的LIDAR点被归类为地⾯点,⽽其余点为⾮地⾯点。

CSF具体过程

  • 1.对点云进行异常点云(噪点)处理。
  • 2.倒置原始的LIDAR点云。
  • 3.初始化布料⽹格。根据⽤⼾定义的⽹格分辨率(GR)确定粒⼦数。布的初始位置通常设置在最⾼点上⽅。
  • 4.将所有LIDAR点和⽹格粒⼦投影到⽔平⾯,并在该平⾯中找到每个⽹格粒⼦的CP,然后记录 IHV。
  • 5.对于每个⽹格粒⼦,如果该粒⼦可移动,则计算受重⼒影响的位置,并将该布粒⼦的⾼度与IHV 进⾏⽐较。如果粒⼦的⾼度等于或⼩于IHV,则将该粒⼦放置在IHV的⾼度上,并将其设置为“⽆法移动”
  • 6.对于每个⽹格粒⼦,计算受内⼒影响的每个粒⼦的位移
  • 7.重复(5)-(6)。当所有粒⼦的最⼤⾼度变化(M_HV)⾜够⼩时,或者超过⽤⼾指定的最⼤迭代次数时,布料模拟过程将终⽌。
  • 8.计算云到⽹格粒⼦和激光元点云之间的云距离。
  • 9.分离地⾯点。对于每个LIDAR点云,如果与模拟粒⼦的距离⼩于HCC,则将该点归为地⾯点云,否则将其归为⾮地⾯点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【中级软件设计师】上午题15-计算机网络

上午题15-计算机网络 1 网络设备2 协议簇3 TCP和UDP4 SMTP和POP35 ARP和RARP6 DHCP(Dynamic Host Configuration Protocol)7 URL8 浏览器9 IP地址和子网划分10 IPv611 Windows命令12 路由器 1 网络设备 物理层设备:中继器、集线器&#xff0…

Mysql基础(五)外键约束

一 外键 激励: 每天进步一点点即可 ① 思考 1、在MySQL中,我们知道主键 PRIMARY KEY的主要作用是唯一区分表中的各个行 [记录];思考:但是对于外键 foreign key比较陌生? 那么外键作用以及限制条件和目的呢? ② 外键的定义 1、外键是某个表 A中…

图像处理之SVD检测显示屏缺陷(C++)

图像处理之SVD检测显示屏缺陷(C) 文章目录 图像处理之SVD检测显示屏缺陷(C)前言一、SVD算法简介二、代码实现总结 前言 显示屏缺陷检测是机器视觉领域的一处较广泛的应用场景,显示屏主要有LCD和OLED,缺陷类…

基于java,SpringBoot和Vue的智慧校园在线考试留言讨论系统设计

摘要 基于Java, SpringBoot和Vue的智慧校园在线考试留言讨论系统是一个为现代教育需求定制的Web应用,它结合了最新的前后端技术来提供一个互动性强、用户友好的学习和交流平台。该系统旨在通过提供实时留言和讨论功能,增进学生间的互动以及师生之间的沟…

快来看 2024年ICLR杰出论文奖揭晓啦 值得关注

会议之眼 快讯 在人工智能的浪潮中,国际学习表征会议(ICLR)无疑是引领学术前沿的重要会议之一!ICLR是深度学习领域的顶级会议之一,由深度学习领域的两位巨头Yoshua Bengio和Yann LeCun于2013年创办。 2024年5月6日&a…

NSSCTF中的web

目录 [第五空间 2021]WebFTP [LitCTF 2023]PHP是世界上最好的语言!! [SWPUCTF 2021 新生赛]PseudoProtocols [LitCTF 2023]导弹迷踪 [NISACTF 2022]easyssrf [第五空间 2021]WebFTP 1.进入页面,发现是登录页面,想到 弱口令&…

大模型微调之 在亚马逊AWS上实战LlaMA案例(六)

大模型微调之 在亚马逊AWS上实战LlaMA案例(六) 通过 SageMaker Python SDK 进行微调Llama2 可以使用 SageMaker Python SDK 微调 Llama 2 模型。以下是在数据集上微调 Llama 2 7B 的示例代码: import os import boto3 from sagemaker.sessi…

28 JavaScript学习: 代码规范

代码规范通常包括以下几个方面: 变量和函数的命名规则空格,缩进,注释的使用规则。其他常用规范…… 变量名 在编写JavaScript代码时,遵守良好的变量命名规范是非常重要的,这可以增加代码的可读性和可维护性。以下是一些常见的…

iOS ------ 内存五大分区

1,内存的概念: 虚拟内存(Virtual Memory):虚拟内存是操作系统提供的一种机制,它使得应用程序能够访问超出物理内存限制的内存空间。虚拟内存将应用程序的内存地址空间分割成固定大小的页面(Pag…

路由策略与路由控制

1.路由控制工具 匹配工具1:访问控制列表 (1)通配符 当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符。 通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配…

【软考】模拟考卷错题本2024-05-07

1 项目路径 这里的图没有加载出来,没u哦i关系了。其实主要是的算出最长的路径中包含那些元素即可。这里是蒙圈了,没有考虑到还有更长的。要顾头也顾尾。 2 算法分析-贪心 该问题主要考核的是算法设计策略来达到目标的方式。主要的设计策略有:…

Linux变量的认识及环境变量配置详解

文章目录 1、变量的划分2、局部变量3、全局变量4、环境变量4.1、概述4.2、配置临时环境变量4.3、配置永久环境变量4.3.1、用户级配置文件1)配置方法一:~/.bashrc文件2)配置方法二:~/.profile文件3)配置方法三&#xff…

CTF-reverse二维四向迷宫路径求解

二维四向迷宫是一个re中的常考点,说不上难,但也不简单,本篇记录了常规的二维四向迷宫解题套路以及帮助快速解题的脚本 可能你看我的教程会觉得十分繁琐,但实际只要你用了一次熟练之后,基本都是拿到迷宫就一题一分钟解决…

jmeter控制器讲解

1,随机顺序控制器和随机控制器的区别:随机顺序控制器下所有的接口都会执行,只是执行顺序是随机的,随机控制器下所有的接口中随机执行一个接口,其余接口不执行。

【跨境商家必读】TikTok Shop商城运营全指南

随着社交媒体和电子商务之间界限的日益模糊,一种全新的购物平台——TikTok商城,正在迅速成为全球跨境商家们关注的焦点。在这个竞争激烈的TikTok跨境电商领域中,了解如何有效利用TikTok Shop的各项功能,理解其独特的运营模式&…

Linux进程——Linux进程间切换与命令行参数

前言:在上一篇了解完进程状态后,我们简单了解了进程优先级,然后遗留了一点内容,本篇我们就来研究进程间的切换,来理解上篇提到的并发。如果对进程优先级还有没理解的地方可以先阅读: Linux进程优先级 本篇…

Gmail邮箱怎么注册?2024年完整指南(包含跳过手机号验证)

一、为什么要注册Gmail邮箱? 全球通用性:Gmail是一个全球性的邮件服务平台,被广泛认可和信赖。因为客户对于Gmail的接受度高,无需担心邮件被自动标记为垃圾邮件。 整合营销工具:通过Gmail账号,你可以轻松…

C++之大数运算

溪云初起日沉阁 山雨欲来风满楼 契子✨ 我们知道数据类型皆有范围,一旦超出了这个范围就会造成溢出问题 今天说说我们常见的数据类型范围: 我们平时写代码也会遇到数据类型范围溢出问题: 比如 ~ 我们之前写的学生管理系统在用 int类型 填写…

stack的使用

1.栈的定义 我们可以看到模板参数里面有一个容器适配器 ,什么是适配器?比如充电器就叫做电源适配器,用在做转换,对电压进行相关的转换适配我们的设备。栈,队列不是自己直接管理数据,是让其他容器管理数据&a…

java-函数式编程-语法

目录 1、函数表现形式 分类 lambda表达式 参数类型可以全写,也可以全不写,但不能一部分写,一部分不写lambda 的省略策略:凡是可推导,都可以省略 方法引用 练习-判断语法正确性 练习-写出与方法引用等价的lambda表达式…