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

2024-05-06 11:44

本文主要是介绍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,则将该点归为地⾯点云,否则将其归为⾮地⾯点

这篇关于CSF(Cloth Simulation Filter)点云地面点滤波的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Open3D 基于法线的双边滤波

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 输入参数: 输出参数: 参数影响: 2.2完整代码 三、实现效果 3.1原始点云 3.2滤波后点云 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概述         基于法线的双边

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

6.4双边滤波

目录 实验原理 示例代码1 运行结果1 实验代码2 运行结果2 实验原理 双边滤波(Bilateral Filtering)是一种非线性滤波技术,用于图像处理中去除噪声,同时保留边缘和细节。这种滤波器结合了空间邻近性和像素值相似性的双重加权,从而能够在去噪(平滑图像)的同时保留图像的边缘细节。双边滤波器能够在的同时,保持边缘清晰,因此非常适合用于去除噪声和保持图像特征。在Op

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 `FeatureExtraction` 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算(`calculateSmoothness()`)2. 标记遮挡点(`markOccludedPoints()`)3. 特征提取(`extractF

Hbase Filter+Scan 查询效率优化

Hbase Filter+Scan 查询效率问题 众所周知,Hbase利用filter过滤器查询时候会进行全表扫描,查询效率低下,如果没有二级索引,在项目中很多情况需要利用filter,下面针对这种情况尝试了几种优化的方案,仅供参考,欢迎交流。 根据业务要求,作者需要根据时间范围搜索所需要的数据,所以作者设计的rowKey是以时间戳为起始字符串的。 正确尝试: 1.scan 设置 开始行和结

6.3中值滤波

目录 实验原理 示例代码1 运行结果1 示例代码2 运行结果2 实验原理 中值滤波(Median Filtering)是一种非线性滤波技术,常用于图像处理中去除噪声,特别是在保留边缘的同时减少椒盐噪声(salt-and-pepper noise)。OpenCV中的cv::medianBlur函数可以实现中值滤波。 函数原型 void medianBlur( InputAr

点云数据常见的坐标系有哪些,如何进行转换?

文章目录 一、点云坐标系分类1. 世界坐标系2. 相机坐标系3. 极坐标系4. 笛卡尔坐标系(直角坐标系):5. 传感器坐标系6. 地理坐标系 二、坐标系转换方法1. 地理坐标系与投影坐标系之间的转换2. 投影坐标系与局部坐标系之间的转换3. 局部坐标系与3D模型坐标系之间的转换4. 相机坐标系与其他坐标系之间的转换5. 传感器坐标系与其他坐标系之间的转换 三、坐标系转换工具 一

Filter基本原理和使用

https://www.cnblogs.com/xdp-gacl/p/3948353.html 一、Filter简介   Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控

三维激光扫描点云配准外业棋盘的布设与棋盘坐标测量

文章目录 一、棋盘标定板准备二、棋盘标定板布设三、棋盘标定板坐标测量 一、棋盘标定板准备 三维激光扫描棋盘是用来校准和校正激光扫描仪的重要工具,主要用于提高扫描精度。棋盘标定板通常具有以下特点: 高对比度图案:通常是黑白相间的棋盘格,便于识别。已知尺寸:每个格子的尺寸是已知的,可以用于计算比例和调整。平面标定:帮助校准相机和激光扫描仪之间的位置关系。 使用方法 扫描棋盘:

【控制算法 数据处理】一阶滤波算法

简单介绍: 一阶滤波算法是比较常用的滤波算法,它的滤波结果=a*本次采样值+(1-a)*上次滤波结果,其中,a为0~1之间的数。一阶滤波相当于是将新的采样值与上次的滤波结果计算一个加权平均值。a的取值决定了算法的灵敏度,a越大,新采集的值占的权重越大,算法越灵敏,但平顺性差;相反,a越小,新采集的值占的权重越小,灵敏度差,但平顺性好。优点是对周期干扰有良好的抑制作用,适用于波动频率比较高的场合,它