深度 Quality 指标#
术语#
下表列出了本主题中出现的术语和缩写。
| 术语 | 描述 |
|---|---|
| ROI | 感兴趣区域 |
| FOV | 视场 |
| GT | 地面实况 |
| RMS | 均方根 |
| STD | 标准差 |
Quality Metrics#
评估深度质量需要对深度数据的各个方面进行量化,并将其与期望的性能标准或地面实况测量值进行比较。用于定量深度质量评估的一些常见指标包括:
- Depth accuracy 通过计算深度数据的绝对误差中值来评估绝对误差。
- Spatial precision 通过计算深度数据的均方根误差来评估空间噪声。
- Temporal precision 评估深度值随时间变化的均匀性。
- Fill Rate 评估图像中有效深度像素的百分比。
定量指标需要对深度数据质量进行透彻理解和认真评估。建立一个受控且全面的测试环境对于准确评估深度传感器的功能和局限性以及确定其对特定应用或场景的适用性非常重要。
为了保持深度质量评估的一致性,建议使用具有均匀漫反射特性的高反射率平面,从而避免复杂的、不受控制的真实场景。这指的是放置在距捕获设备已知距离处的平面参考目标,可作为评估的基本基准。如果无法获得此类条件,平坦的墙面或白板也可以作为合适的测试目标。每个指标都可以在相机 FOV 内的任何所需 ROI 上进行计算。

深度精度#
深度准确度是指测得的深度值与物体和捕获设备之间的真实距离相符的程度。高准确度意味着深度测量值与 GT 高度吻合,从而将距离估计中的误差降至最低。如前所述,建议在距传感器已知距离处放置一个参考平面,以简化用于评估的深度数据的 GT,并且可以使用激光测距仪或卷尺等常用测量工具精确确定平面与传感器之间的距离。
| 项目 | 描述 |
|---|---|
| Category | 深度准确度 |
| 目的/目标 | 测量指定 ROI 内相对于 GT 的深度图像准确度。 |
| 目标 | 参考平面\墙壁 |
| 分析图像 | 深度图像 |
| ROI | 例如,81% 的 ROI 对应于图像宽度的 90% 乘以图像高度的 90%。 |
| 描述 | 此指标用于测量单帧深度图像中相对于 GT 的逐像素深度准确度,排除了因相机安放位置导致的误差。GT 是通过测量从深度原点到参考目标的距离获得的。深度准确度可以使用以下公式计算:Depth_accuracy_Signed = Median(CP_Length – GT + PP_Dist) 其中 CP_Dist 表示沿 GT 测量方向的深度原点与拟合平面之间的实际长度,PP_Dist 表示点云到拟合平面的逐像素距离。 |
| 伪代码 | 输入:Depth_Image, GT 移除 Depth_Image 中的所有零值 从 Depth_Image 计算 Point_Cloud(X、Y、Z 矩阵) 计算 Point_Cloud 的 Fitted_Plane 移除异常值:所有低于 0.5% 分位数且高于 99.5% 分位数的 Z 值 计算沿 GT 向量的深度原点与 Fitted_Plane 之间的实际长度作为 CP_Dist 计算所有点到 Fitted_Plane 的距离作为 PP_Dist 计算 Depth_Error = CP_Dist – GT + PP_Dist 计算 Median_Value = Depth_Error 的 50% 分位数值 输出:Depth_accuracy_Signed = 100 * Median_Value / GT |
| 输出值 | Depth_accuracy_signed |
| 输出单位 | [%] |
空间精度#
准确度关注的是与真实深度的系统性偏差,而空间精度则关乎深度测量的一致性。空间精度表示平面目标上深度数据的噪声水平。高空间精度的深度数据在同一场景中的相同或相似表面上表现出较低的深度值方差。为了评估空间精度,可以在已知或受控位置对参考平面进行测量,计算所获得的深度值的 RMS 误差,并将其与所需的精度阈值或规格进行比较。
RMS 误差可以用距离或视差单位表示,但考虑到深度与噪声之间的耦合关系,可以将其按相机与平面目标之间的距离进行归一化,并以百分比(%)单位表示。
| 项目 | 描述 |
|---|---|
| Category | 空间精度 |
| 目的/目标 | 测量相对于最佳拟合平面的深度值噪声水平。 |
| 目标 | 参考平面/墙壁 |
| 分析图像 | 深度图像 |
| ROI | 例如,81% 的 ROI 对应于图像宽度的 90% 乘以图像高度的 90%。 |
| 描述 | 计算从每个有效像素到最佳拟合平面的距离的 RMS,并按从光学中心到平面的距离进行归一化,RMS 误差输出以百分比表示。 |
| 伪代码 | 输入:Depth_Image 移除 Depth_Image 中的所有零值 从 Depth_Image 计算 Point_Cloud(X、Y、Z 矩阵) 计算 Point_Cloud 的 Fitted_Plane 移除异常值:所有低于 0.5% 分位数且高于 99.5% 分位数的 Z 值 计算深度原点与 Fitted_Plane 之间的距离作为 CP_Dist 计算所有点到 Fitted_Plane 的距离作为 PP_Dist 计算 RMSE = PP_Dist 的根均方 (RootMeanSquare) 输出:Spatial_precision = 100 * RMSE / CP_Dist |
| 输出值 | Spatial_precision |
| 输出单位 | [%] |
时间精度#
时间精度用于测量 ROI 内深度值随时间的变化情况。可以根据深度图像的时间一致性来评估其 Quality。高质量的深度图像应随时间推移呈现平滑且稳定的深度。此方法定义为特定帧数(例如 30 帧)内深度值的 STD。时间噪声的量化是在逐个像素的基础上进行的,随后计算每个像素在指定时间内的 STD。
| 项目 | 描述 |
|---|---|
| Category | 深度时间噪声 |
| 目的/目标 | 测量随时间推移每个像素深度值的变化程度。 |
| 目标 | 墙壁 |
| 分析图像 | N 个连续的深度图像 |
| ROI | 例如,81% 的 ROI 对应于图像宽度的 90% 乘以图像高度的 90%。 |
| 描述 | 逐像素时间噪声的定义是通过测量每个像素在 N 个连续帧中的深度值的标准差 (STD),从而得到一个标准差矩阵。时间噪声定义为标准差矩阵的中位数占目标距离 Z 的百分比。此指标不包括 NaN 和零深度数据。 |
| 伪代码 | 输入:N 个 Depth_Image 图像,GT 循环遍历 N 个 Depth_Image 中的每一个以创建 Depth_Tensor 分配 Depth_Tensor = (Depth_Image,N) //维度为 (width,height,N) 从 Depth_Tensor 中移除所有零 计算 STD_Matrix = Depth_Tensor(width,height,all) 的标准差 (STD) 计算 Median_STD = STD_Matrix 的 50% 百分位数 输出:100 * Median_STD / Z |
| 输出值 | 标准差矩阵的中位数除以到墙壁的距离 |
| 输出单位 | [%] |
Fill Rate#
高质量的深度图像应均匀覆盖整个视野,且没有缺失区域。Fill rate 用于衡量深度图像中非零像素的比例,代表深度覆盖率。高 Fill rate 表明场景中的大部分点已被成功捕获。
| 项目 | 描述 |
|---|---|
| Category | Fill rate |
| 目的/目标 | 测量指定 ROI 内有效深度值的比例。 |
| 目标 | 参考平面/墙壁 |
| 分析图像 | 深度图像 |
| ROI | 例如,81% 的 ROI 对应于图像宽度的 90% 乘以图像高度的 90%。 |
| 描述 | 计算指定 ROI 内具有有效深度值的像素与所有像素的比率。 |
| 伪代码 | 输入:Depth_Image 计算 Total_Num = size(Depth_Image) 分配 Valid_Image = Depth_Image 从 Valid_Image 中移除所有零 计算 Valid_Num = size(Valid_Image) 计算 Fill_Rate = 100 * Valid_Num / Total_Num 输出 Fill_Rate |
| 输出值 | 指定 ROI 内有效像素的比例。 |
| 输出单位 | [%] |