# 点云加噪模拟工具(独立,与主算法无关) > 给点云每个点加小幅随机高斯噪声,模拟真实扫描仪的抖动。 > **与挠度测量算法完全解耦**,仅用于生成测试数据 / 评估算法对噪声的鲁棒性。 ## 噪声量级 参考:约 2m × 2m 的扫描区域,真实噪声约 **50–80 微米**(0.05–0.08 mm)每坐标。 噪声沿 x/y/z 三个轴独立施加(各向同性高斯)。 ## 用法 ```bash # 随机 σ ∈ [50, 80] um(默认) python tools/noise_simulation/add_noise.py input.ply output_noisy.ply # 固定 σ = 65 um python tools/noise_simulation/add_noise.py input.ply output_noisy.ply --sigma-um 65 # 指定范围 + 固定种子(可复现) python tools/noise_simulation/add_noise.py input.ply output_noisy.ply \ --sigma-um-min 50 --sigma-um-max 80 --seed 42 ``` | 参数 | 默认 | 说明 | | --- | --- | --- | | `--sigma-um` | 无 | 固定噪声标准差(微米)。不给则在区间内随机取一个值 | | `--sigma-um-min` / `--sigma-um-max` | 50 / 80 | 随机 σ 的区间(微米) | | `--seed` | 0 | 随机种子(可复现) | | `--chunk` | 4000000 | 流式分块大小(顶点数),支持超大文件 | 输入支持 ASCII / binary PLY;输出统一为 binary little-endian PLY(xyz float32)。 12GB 级大文件流式处理,内存占用恒定。 ## 典型流程(评估噪声对挠度的影响) ```bash # 1) 给整车点云加噪 python tools/noise_simulation/add_noise.py train.ply train_noisy.ply --sigma-um 65 # 2) 把加噪后的点云喂给算法 underframe-measure --input-cloud train_noisy.ply \ --left-roi roi_left_beam.json --right-roi roi_right_beam.json \ --out-dir out_noisy/ ``` 理论挠度为 0 的样本,加 ~65um 噪声后挠度测量结果应仍很小(远小于 mm 级公差), 用于验证算法对扫描噪声的鲁棒性。