4、平移误差度量:欧氏距离、相对误差百分比、尺度无关的误差度量、方向分量误差
好,咱们接着聊外参标定精度验证。上一节我们把旋转误差聊透了,这一节轮到平移误差了。
平移误差,说白了就是看你的相机中心位置标得准不准。我见过不少团队,旋转误差控制得挺好,但平移一塌糊涂,结果建出来的地图全是歪的。嗯,平移误差的度量方式有好几种,每种都有它的适用场景。我个人习惯把这四种方法都跑一遍,然后综合判断。
4.1 欧氏距离:最直观的度量
欧氏距离,就是三维空间里两点之间的直线距离。公式很简单:
d = sqrt( (x1 - x2)^2 + (y1 - y2)^2 + (z1 - z2)^2 )
这个值直接告诉你,标定出来的相机中心和真值之间差了多少米。单位是毫米或者米,看你的应用场景。
我的经验:在自动驾驶场景中,如果欧氏距离超过5厘米,那基本就要重新标定了。但在室内AR场景中,10厘米以内都能接受。阈值怎么定?得看你的传感器精度和业务需求。
欧氏距离的好处是直观,坏处是它不告诉你误差的方向。你只知道差了多远,但不知道是前后、左右还是上下出了问题。
4.2 相对误差百分比:消除尺度影响
欧氏距离有个问题——它跟场景尺度有关。你想想看,在一个10米×10米的房间里,5厘米误差可能很严重。但在一个1公里×1公里的室外场景中,5厘米误差几乎可以忽略。
所以就有了相对误差百分比:
相对误差 = (欧氏距离 / 场景尺度) × 100%
这里的「场景尺度」怎么定义?我一般用相机到场景中心的距离,或者用场景中特征点分布的范围直径。
| 场景类型 | 典型尺度 | 可接受相对误差 |
|---|---|---|
| 室内桌面 | 1-2米 | < 1% |
| 室内房间 | 5-10米 | < 0.5% |
| 室外小范围 | 50-100米 | < 0.1% |
| 室外大范围 | 500-1000米 | < 0.05% |
避坑指南:我曾经在一个项目中直接用场景对角线作为尺度,结果发现误差百分比忽大忽小。后来改成用相机到场景中心的平均距离,稳定多了。记住,尺度的定义要跟你的应用场景匹配。
4.3 尺度无关的误差度量
有些时候,你根本不知道场景的真实尺度。比如你只有一张图片,没有深度信息。这时候怎么办?
尺度无关的误差度量就派上用场了。它的核心思想是:只关心平移的方向,不关心平移的大小。
具体做法是:
- 把真实平移向量和估计平移向量都归一化到单位长度
- 计算两个单位向量之间的夹角
- 这个夹角就是尺度无关的误差
t_gt_norm = t_gt / ||t_gt||
t_est_norm = t_est / ||t_est||
angle_error = arccos( t_gt_norm · t_est_norm )
这个度量在视觉SLAM中特别有用。我记得有一次做单目SLAM的外参标定,深度完全不确定,但用这个度量就能判断平移方向标得对不对。
注意:当真实平移量非常小(比如接近零)时,这个度量会失效。因为归一化本身就不稳定了。我建议在平移量大于1厘米时才使用这个度量。
4.4 方向分量误差
最后一种,方向分量误差。这个度量把平移误差分解到三个坐标轴上:
- X方向误差:Δx = x_est - x_gt
- Y方向误差:Δy = y_est - y_gt
- Z方向误差:Δz = z_est - z_gt
为什么要分解?因为不同方向的误差对系统的影响完全不同。
举个例子:在车载相机标定中,Z方向(高度)的误差会影响地面检测,X方向(横向)的误差会影响车道线匹配,Y方向(纵向)的误差会影响距离估计。
我个人习惯在标定报告中同时给出三个方向的分量误差,而不是只给一个欧氏距离。这样调试的时候能快速定位问题出在哪个轴上。
实战建议:我曾经遇到一个案例,欧氏距离只有3厘米,看起来不错。但分解后发现Z方向误差达到了2.8厘米,X和Y方向几乎为零。这说明相机高度标错了,但水平位置是对的。如果不分解,根本发现不了这个问题。
4.5 四种度量的对比
好了,四种度量都讲完了。我画了一张图帮你理清思路:
总结一下我的建议:
- 日常标定验证:用欧氏距离 + 方向分量误差,两个一起看
- 跨场景对比:用相对误差百分比,公平比较不同尺度的标定结果
- 单目/尺度不确定场景:用尺度无关度量,只看方向对不对
嗯,平移误差的度量就这些。下一节我们聊聊怎么把这些度量方法组合起来,形成一个完整的标定验证流程。不过那是后话了,先把这四种方法吃透再说。
可可精品资料库