算法更新: delivery v1.2.1、平整度v1.5、测距v2.2、整车配准v1.3 适配器: vehicle-registration 新增、各算法 manifest 和 adapter 更新 后端: taskCadFiles/source 字段迁移、derivedPointClouds 注册、取消任务联动 前端: ElapsedTime 时长显示、两步算法流程、canRun 逻辑修复 文档: 新增5份算法性能分析报告
点云加噪模拟工具(独立,与主算法无关)
给点云每个点加小幅随机高斯噪声,模拟真实扫描仪的抖动。 与挠度测量算法完全解耦,仅用于生成测试数据 / 评估算法对噪声的鲁棒性。
噪声量级
参考:约 2m × 2m 的扫描区域,真实噪声约 50–80 微米(0.05–0.08 mm)每坐标。 噪声沿 x/y/z 三个轴独立施加(各向同性高斯)。
用法
# 随机 σ ∈ [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 级大文件流式处理,内存占用恒定。
典型流程(评估噪声对挠度的影响)
# 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 级公差), 用于验证算法对扫描噪声的鲁棒性。