论文简记: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))) - 得到每个距离位置 处的软衰减强度
代码中保留最大处为主回波:
IR = SIMPSON(...)
itmp = max(IR), Rtmp = argmax(IR)
isoft = CAP0 * β * itmp表示距离 上某种形式的背景散射噪声最强。
核心总结——硬目标与软目标
源码中对比两个信号:
- 硬信号:
- 软信号:
当 > 时,就用软信号替换该点,并随机扰动其 位置,模拟雾中的噪点。否则,仅修改强度,不动坐标。
物理意义
| 模块 | 作用 | 数学/代码实现 |
|---|---|---|
| 光束衰减 | 硬目标信号指数减弱 | ,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
输出新的点云数据(已仿真雾影响)
✅ 总结:核心机制一览表
| 模块 | 机制 | 数学表达 | 效果 |
|---|---|---|---|
| 硬目标衰减 | 指数下降 | 远处点强度变低 | |
| 雾散射积分 | 数值积分 | 模拟背景雾帘 | |
| 点丢弃逻辑 | 强度对比 | > | 远点更可能丢失 |
| 噪声扰动 | 随机方向加偏移 | 模拟雾中虚假点出现 | |
| 输出 | 点的坐标和强度变化 | - | 仿真雾下点云效果 |
- 对单个光束:计算衰减后的硬目标强度
- 积分估计雾中散射峰值位置
- 比较后决定是否替换为“软目标”(雾噪点)
- 对坐标加入随机扰动,视觉上呈圆弧噪声云
上述过程直观地复现了雾中 LiDAR 点云特征:远处点弱化、雾中噪声点散布、点位置轻微偏移,与真实雾中点云高度吻合。
激光反射衰减
衰减会降低接收的信号功率,该信号功率与应测量的视线中的实体对象范围相对应,而反向散射则在不正确范围内的接收信号功率中产生一个虚假的峰。
结果是每当捕获场景出现雾气时,获得的激光雷达点云将包含一些虚假的回波信号。
附录
激光雷达Lidar底层原理技术详解:https://www.eet-china.com/mp/a205857.html