RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
光流传感器

a)Config相关配置

在Config中配置光流传感器时,以下参数尤为关键:

  • **"DataWidth"** 和 **"DataHeight"**:这些参数指定了光流传感器的图像分辨率,决定了传感器捕捉画面的宽度和高度。
  • **"CameraFOV"**:光流计算中视场角(FOV)用于确定像素偏移量的转换比例。
  • **"SensorAngEular[1]"**:设置传感器角度(如-90°),用于确定传感器朝向,如向下对准地面。
  • **"otherParams[0]"**:定义最大检测距离,即光流传感器的作用距离。
  • **"otherParams[1]"**:置为0以真值计算光流,置为1以OpenCV处理图像来计算光流

b) 结构体 OpticalFlow

光流数据结构体包含以下字段:

  • sensor_id**:传感器ID,区分不同的光流传感器。
  • **flow_xflow_y**:表示光流在 x 和 y 方向上的像素偏移量(单位是像素,dipix)。
  • **flow_comp_m_xflow_comp_m_y**:光流在 m/s(米/秒)为单位的实际速度,用于描述相对运动速度。
  • **quality**:光流质量,反映检测结果的可信度。
  • **ground_distance**:表示光流传感器到地面的距离,有助于计算精确的光流速度。
  • **flow_rate_x 和 **flow_rate_y**:角速度,表示图像中的旋转运动速度。

c) 参考例程

参考路径 4.RflySimModel\3.CustExps\e7_ExternalSensors\e3_Opticalflow_UE 中的例程,其中包含4种方式计算光流:

  1. **Python 真值计算**:通过Python代码基于地面真值计算光流。
  2. **UE 真值计算**:使用UE真实值计算光流。
  3. **UE OpenCV 计算**:在UE中调用OpenCV库计算光流。
  4. **外部 OpenCV 计算**:在外部环境中(如Python或C++)调用OpenCV库计算光流。

d) 计算光流的方式

光流计算主要有以下两种方法:

  1. 直接计算

    • 利用传感器配置中的分辨率(Width和Height)以及FOV,计算光流在像素上的偏移量。这种方法适用于计算简单、实时性要求高的场景。
  2. OpenCV函数计算

    • 使用OpenCV库的 goodFeaturesToTrackcalcOpticalFlowPyrLK 函数计算光流。
    • **角点检测**:goodFeaturesToTrack 函数检测图像中的角点数量,角点越多,光流的质量越高。
    • **稀疏光流计算**:calcOpticalFlowPyrLK 函数基于检测的角点计算光流,并获得每个点的偏移量和追踪状态。
    • 通过识别的角点数量与最大角点数量的比值,估算光流质量,平均值可用于描述光流的方向和速度。

e) 数据准确性验证

为了验证光流数据的准确性,可以考虑以下方法:

  • **与地面真值对比**:将计算得到的光流数据与地面真值(或其他可靠传感器数据)进行对比。
  • **质量指标检查**:使用结构体中的 quality 字段检查光流质量,当质量较低时可能需要过滤或重新计算。
  • **多次采样求平均**:通过对多帧光流数据求平均,减少噪声影响,提升准确性。