ZHCY167A July   2016  – July 2020 TDA2E , TDA2EG-17 , TDA2HF , TDA2HG , TDA2HV , TDA2LF , TDA2P-ABZ , TDA2P-ACD , TDA2SA , TDA2SG , TDA2SX , TDA3LA , TDA3LX , TDA3MA , TDA3MD , TDA3MV

 

  1. 1
  2. 需要哪种摄像机?
  3. 单眼摄像机如何根据 2D 数据测量物体的距离呢?
  4. 立体视觉系统如何根据 2D 平面数据计算物体的距离呢?
  5. 立体视差计算和所计算距离的准确性
  6. 立体摄像机 ADAS 系统的范围
  7. 过程
  8. 视差计算的计算要求和内存要求
  9. 计算的可靠性
  10. 10系统硬件选项和总结
  11. 11参考文献
  12. 12重要声明

视差计算的计算要求和内存要求

应该能够想象得到,ADAS 应用中的这种计算非常消耗算力。常见的前置立体摄像机设备是一组以 30 帧/秒速度运行的 100 万像素摄像机。视差计算过程的前几步涉及到秩变换。典型的秩变换是 Census 变换或稍作修改的版本。所需的输入是两个立体图像,而输出则是进行 Census 变换后的图像对。对于像素周围的 N×N 像素块进行 Census 变换所需的计算是执行 6000 万次 N×N Census 变换。对 N×N 像素块上的一个像素进行的每个 Census 变换都需要经过 N2 次比较运算。所涉及的其他一些秩变换需要对每个像素进行 N2 点排序。可以大胆推测,为了在部署到实际车辆上的实际系统中进行未来几年的秩变换,可能的最低要求是需要经过 6000 万 × N2 次比较运算。

该过程的第二步需要进行图像校正,以确保需要在水平线上执行对极视差搜索。第三步更为有趣,因为它涉及到每个像素和视差组合的 C(p,d)、Lr(p,d) 和 S(p,d) 计算(请参阅图 13)。如果 C(p,d) 是逐块进行的 SAD 运算,块大小为 N×N,所需的系统范围大约为 200 米,并且针对距离精确度的要求是进行半像素视差计算,那么系统将需要针对 64–128 个视差可能性进行计算 C(p,d)。针对使用这些参数的 C(p,d) 的总计算的要求是每秒执行 6000 万 × N2 × 128 次 SAD 运算。

Lr (p,d) 的计算需要在“r”个可能的方向上针对每个像素进行,因此,该项的计算(请参阅图 13)需要进行 6000 万 × 128 × r 次。一个像素的计算需要经历五次加法(如果将减法当作是一种特殊形式的加法)和一次极小值查找运算。四项汇总起来,每秒的 Lr (p,d) 计算需要进行 6000 万 × 128 × r × 5 次加法运算以及 6000 万 × 128 × r 次极小值计算。

GUID-20210426-CA0I-QZPJ-LS7Z-RBCXQDJ0RQB3-low.gif图 14 图像的秩变换示例。图像的左侧部分是简单的 Census 变换。右半部分被称为“完全秩变换”[7]。

对于每个可能的像素和视差值,S(p,d) 的计算需要进行 r 次,S(p,d) 的每次计算都需要经历“r”次加法和一次比较。每秒进行此计算所需的总运算次数为 6000 万 × 128 × r 次加法和 6000 万 × 128 次比较。

所有三项汇总起来,一个精确的基于 SGM 的视差计算引擎在 100 万像素 30fps 的摄像机上运行并试图计算 128 种视差可能性时,每秒需要执行大约 1 万亿次运算(加法、减法、极小值发现)。为了更好地理解这一数字,嵌入式领域的高级通用处理器每个周期发出 7 到 10 条指令。其中一些指令是 SIMD 类型的,即,它们能够并行处理 8-16 条数据。考虑到通用处理器必须提供出色的 IPC,以 2GHz 运行的四核处理器将提供约 3200 亿次的 64 位运算。即使我们认为大多数立体管道将是 16 位的并且可将数据以 100% 的效率打包到 64 位二进制文件中,四核通用处理器仍不足以满足现代 ADAS 立体视觉系统的需求。通用处理器的目的是提供各种高级可编程性。这说明设计实时 ADAS 立体视觉系统时需要用到专用硬件。