论文简记:Fog Simulation on Real LiDAR Point Clouds for 3D Object Detection in Adverse Weather

这篇文章上次修改于 3 个月前,可能部分内容已经不适用,如有疑问可询问作者。

论文简记:Fog Simulation on Real LiDAR Point Clouds for 3D Object Detection in Adverse Weather

前言

关于雾天场景激光雷达仿真的工作。

传送门:【Github】

相关工作

方法论

传输模型

论文第 3.1 节中,LiDAR 接收信号 表达为系统脉冲 与环境脉冲响应 的卷积:

  • :系统常数
  • :发射脉冲形状,使用 sin² 近似
  • 分解为光学通道和目标响应
光学通道响应 $H_C(R)$

通过公式 (4)-(7) 定义:

  • :往返路径的双重衰减作用
  • :光束照明面积与接收面积的比值,随着距离线性过度至 1
硬目标响应 $H_T^\text{hard}$

论文里面的硬目标指代传统固体目标在雾中的反射。

定义为 Dirac 函数(公式 9):

带入晴朗天气条件下,总响应为(公式 12):

相当于一个聚焦在 的脉冲峰值

雾中软响应:Backscatter(软目标)

在雾中,除了物体反射,还会出现雾粒子对激光的后向散射。目标响应变为包含软目标(也是主要的噪声来源):

  • 使用积分近似,源码中通过 Simpson 方法数值积分(见 SIMPSON(I(R,R0,α,τH)))
  • 得到每个距离位置 处的软衰减强度

代码中保留最大处为主回波:

PYTHON
IR = SIMPSON(...)
itmp = max(IR), Rtmp = argmax(IR)
isoft = CAP0 * β * itmp
Copy

表示距离 上某种形式的背景散射噪声最强。

核心总结——硬目标与软目标

源码中对比两个信号:

  • 硬信号:
  • 软信号:

当 > 时,就用软信号替换该点,并随机扰动其 位置,模拟雾中的噪点。否则,仅修改强度,不动坐标。

物理意义

模块作用数学/代码实现
光束衰减硬目标信号指数减弱,i_hard
背向散射雾中引入软信号峰数值积分 + 最大值 itmp, i_soft
点替换机制当雾噪超越反射信号时引入散射点比较软/硬信号,引入位置扰动

theory.py 精确落地了论文中第 3.2 节“Algorithm 1”:

首先是公式参数对应表:

参数含义单位物理意义
点的位置(3D坐标)米激光点原始位置
原始强度任意单位无雾条件下点的回波强度
消光系数(extinction coefficient)控制衰减程度,来源于能见度
体积散射系数(volume backscatter)控制雾中粒子产生的后向散射强度
物体的反射强度(硬目标反射)任意单位固定反射系数,模拟固体表面对激光的反射能力
系统脉冲宽度秒模拟激光脉冲在时间上的持续宽度,影响时间卷积平滑效果

算法一详细描述:

R0 ← ||p||

计算从 LiDAR 到目标点的距离:

  • 即光往返一半距离(单位:米)
  • 作为主变量参与后续所有衰减与散射计算

x, y, z ← p

记录原始点的三维坐标,为后续可能的扰动做准备。

CAP0 ← i × R0² / β₀

公式 (12) 的推导:

物理含义:估算无雾下系统发射功率与接收系数组合的常数项。

i_hard ← i × exp(−2αR0)

公式 (17):

  • 激光往返路径均受雾的衰减,乘上 2 倍
  • 表示在雾中仍可到达的反射强度

for R in (0, 0.1, …, R0) do

以 10cm 为间隔,从起点到目标点积分每一处雾粒子的后向散射贡献。

IR ← SIMPSON(I(R, R0, α, τH))

  • 使用数值积分(Simpson 法)计算软目标贡献;
  • 函数 $I(R, R_0, \alpha, \tau_H)$ 为第 (18) 式:

i_tmp ← max(IR)

从所有位置 的后向散射中找出最大值(雾中最强背景光位置)。

R_tmp ← argmax(IR)

记录上述最大背景信号出现的位置。

i_soft ← CAP0 × β × i_tmp

公式 (18):

  • 表示雾背景下的软目标强度
  • 会与硬目标强度进行对比,决定是否保留点

if i_soft > i_hard then

判断是否“雾遮蔽”现象发生:

  • 如果背景散射比目标反射更强,该点无法被探测
  • 此时应将该点改为“雾噪声点”

    s ← R_tmp / R0

比例因子,表示噪声点距离与原始目标点的比例。

r ← RANDOM_UNIFORM_FLOAT(−1,1)

加入 [-1, 1] 的随机扰动,模拟在不同方向雾粒子的偏移。

n ← 2^p

设定噪声幅度 $\epsilon \in (\frac{1}{2}, 2)$,用于扰动幅度。

x ← s × x + n × r(同理 y, z)

将点的位置扰动,生成非结构化散点云:

  • $s \cdot x$:距离缩放
  • $n \cdot r$:方向随机偏移,模拟雾噪声分布

i ← i_soft

更新该点的强度为背景信号强度。

else i ← i_hard

若硬反射信号更强,则保留原始坐标,仅更新强度为衰减后的值。

return x, y, z, i

输出新的点云数据(已仿真雾影响)


✅ 总结:核心机制一览表

模块机制数学表达效果
硬目标衰减指数下降远处点强度变低
雾散射积分数值积分模拟背景雾帘
点丢弃逻辑强度对比 > 远点更可能丢失
噪声扰动随机方向加偏移模拟雾中虚假点出现
输出点的坐标和强度变化-仿真雾下点云效果

  1. 对单个光束:计算衰减后的硬目标强度
  2. 积分估计雾中散射峰值位置
  3. 比较后决定是否替换为“软目标”(雾噪点)
  4. 对坐标加入随机扰动,视觉上呈圆弧噪声云

上述过程直观地复现了雾中 LiDAR 点云特征:远处点弱化、雾中噪声点散布、点位置轻微偏移,与真实雾中点云高度吻合。


激光反射衰减

衰减会降低接收的信号功率,该信号功率与应测量的视线中的实体对象范围相对应,而反向散射则在不正确范围内的接收信号功率中产生一个虚假的峰。

结果是每当捕获场景出现雾气时,获得的激光雷达点云将包含一些虚假的回波信号。

附录

激光雷达Lidar底层原理技术详解:https://www.eet-china.com/mp/a205857.html