4. 帧率基础概念:帧率定义、帧间隔、曝光时间与帧率的关系、VBlank/HBlank对帧率的影响

在RK平台Camera ISP调优与驱动开发中,帧率是衡量系统实时性与流畅度的核心指标。本章从基础概念出发,系统梳理帧率的数学定义、帧间隔的构成、曝光时间对帧率的硬约束,以及消隐区(VBlank/HBlank)在带宽与帧率之间的关键作用。理解这些基础,是后续分析ISP负载与带宽瓶颈的前提。

4.1 帧率定义与帧间隔

帧率(Frame Rate) 指单位时间内传感器输出的完整图像帧数,单位通常为 fps(frames per second)。帧率的倒数即为 帧周期(Frame Period),即输出一帧图像所需的总时间。

帧间隔(Frame Interval) 是相邻两帧起始时刻之间的时间差。在理想情况下,帧间隔等于帧周期;但在实际系统中,由于ISP处理延迟、DMA传输抖动、驱动调度等因素,帧间隔可能存在微小波动。

关键公式:
Frame Rate (fps) = 1 / Frame Period (s)
Frame Period = VTS × Line Time
其中 VTS = V_Active + VBlank,Line Time = HTS / Pixel Clock
工程经验:在RK平台驱动中,帧率通常通过调整 VTS(垂直总行数)和 HTS(水平总像素数)来设定。驱动代码中对应 sensor_mode_fps 或 vts_value 寄存器配置。
帧周期与帧间隔示意图 Frame N Frame N+1 Frame N+2 帧间隔 帧周期 帧周期 曝光时间 曝光时间 曝光时间 说明:帧间隔 = 帧周期(理想连续输出);曝光时间 ≤ 帧周期 - 读出时间 - 消隐时间 帧率上限由传感器最小帧周期决定,RK平台可通过调整VBlank/HBlank微调帧率。

4.2 曝光时间与帧率的硬约束

曝光时间(Exposure Time)是传感器收集光子的时间窗口,直接影响图像亮度和信噪比。曝光时间与帧率之间存在严格的时序约束:

  • 曝光时间 ≤ 帧周期 - 读出时间 - 消隐时间:曝光必须在当前帧的读出开始前完成,否则会导致帧间串扰或图像撕裂。
  • 长曝光必然降低帧率:当曝光时间接近或超过帧周期时,帧率被迫下降。例如,30fps的帧周期为33.3ms,若曝光时间设为30ms,则帧率上限仍为30fps;若曝光时间设为50ms,则帧率上限降至20fps。
  • 滚动快门(Rolling Shutter)下的曝光窗口:逐行曝光时,每行的曝光结束时间不同,帧率受限于最后一行曝光完成的时间。
帧率 (fps) 帧周期 (ms) 最大可用曝光时间 (ms) 典型场景
60 16.67 ~14 运动捕捉、高速视频
30 33.33 ~30 普通视频、监控
15 66.67 ~63 暗光环境、长曝光
5 200.00 ~195 星空摄影、科学成像
RK平台常见陷阱:在驱动中配置长曝光模式时,若未同步调整 VTS(帧周期),可能导致曝光时间超出帧周期,造成图像异常或帧率跳变。务必确保 exposure_time + readout_time + blanking_time ≤ frame_period。
曝光时间与帧周期约束关系 帧周期 (VTS × Line Time) 曝光时间 (Exposure) 读出时间 消隐 曝光时间 ≤ 帧周期 - 读出时间 - 消隐时间 约束:曝光时间 + 读出时间 + 消隐时间 ≤ 帧周期。超出则帧率自动下降,或图像出现异常。

4.3 VBlank / HBlank 对帧率的影响

VBlank(垂直消隐) 和 HBlank(水平消隐) 是传感器输出时序中的非有效像素区域,用于行/帧切换、数据同步和ISP处理预留时间。它们对帧率有直接影响:

  • VBlank(垂直消隐区):帧结束到下一帧开始之间的行数。增加VBlank会延长帧周期,降低帧率;减少VBlank可提升帧率,但受限于ISP处理时间和DMA带宽。
  • HBlank(水平消隐区):每行有效像素结束到下一行开始之间的像素时钟数。HBlank影响行时间,进而影响帧周期。HBlank过小可能导致ISP无法在行间隔内完成处理,造成数据丢失。
  • VBlank与HBlank的权衡:在RK平台中,VBlank和HBlank是调节帧率与带宽平衡的关键参数。增大消隐区可为ISP和DMA争取更多处理时间,但会降低帧率;减小消隐区可提升帧率,但可能引发带宽瓶颈或处理超时。
RK平台驱动配置示例:
// 设置VBlank和HBlank(以OV5695传感器为例)
// VTS = V_Active + VBlank
// HTS = H_Active + HBlank

// 30fps配置
sensor->vts = 0x0834;  // 2100行
sensor->hts = 0x0A8C;  // 2700像素

// 60fps配置(减少VBlank)
sensor->vts = 0x041A;  // 1050行
sensor->hts = 0x0A8C;  // 2700像素
参数 定义 对帧率的影响 对带宽的影响 RK平台调节建议
VBlank 垂直消隐行数 ↑ VBlank → ↓ 帧率 ↑ VBlank → 带宽压力降低 优先调节VBlank实现帧率目标
HBlank 水平消隐像素数 ↑ HBlank → ↓ 帧率(影响较小) ↑ HBlank → 行间隔增大,ISP处理时间更充裕 保持HBlank在传感器规格范围内,避免过小
VTS 垂直总行数 = V_Active + VBlank 直接决定帧周期 间接影响(通过帧率) 帧率调节的主要控制点
HTS 水平总像素数 = H_Active + HBlank 影响行时间,间接影响帧周期 影响像素时钟和DMA传输速率 通常固定,不用于帧率调节
VBlank / HBlank 对帧率的影响机制 一帧图像 有效像素 (H_Active × V_Active) HBlank VBlank 帧周期 = (H_Active + HBlank) × (V_Active + VBlank) / Pixel Clock 增大VBlank/HBlank 帧率降低 减小VBlank/HBlank 帧率提升 VBlank是帧率调节的主要手段:增大VBlank → 帧率下降,但ISP处理时间更充裕; 减小VBlank → 帧率上升,但可能触发ISP处理超时或DMA带宽不足。HBlank通常保持传感器默认值。

4.4 帧率、曝光时间与消隐区的综合关系

在实际RK平台Camera驱动开发中,帧率、曝光时间和消隐区三者相互制约,构成一个完整的时序约束系统:

  1. 帧率决定帧周期:目标帧率确定后,帧周期即固定(Frame Period = 1 / Frame Rate)。
  2. 曝光时间受帧周期约束:曝光时间必须小于帧周期减去读出时间和消隐时间,否则帧率无法维持。
  3. 消隐区提供时序余量:VBlank和HBlank的大小决定了ISP和DMA可用的处理时间窗口。消隐区越大,系统越稳定,但帧率越低。
  4. 带宽瓶颈影响消隐区选择:当ISP或DMA带宽不足时,需要增大消隐区来缓解压力,但这会牺牲帧率。反之,若带宽充裕,可减小消隐区以提升帧率。
RK平台调优口诀:
“帧率优先调VTS,曝光时长不超期;带宽不足加消隐,稳定优先再提频。”
帧率、曝光时间与消隐区综合约束关系 帧周期 (Frame Period) 曝光时间 消隐区 (VBlank/HBlank) 帧率 (fps) ≤ 帧周期 - 消隐 - 读出 调节帧周期 决定 综合约束:曝光时间 + 读出时间 + 消隐时间 ≤ 帧周期;帧周期 = 1 / 帧率

4.5 本章小结

  • 帧率 由帧周期决定,帧周期 = VTS × Line Time,VTS = V_Active + VBlank。
  • 曝光时间 必须小于帧周期减去读出时间和消隐时间,否则帧率无法维持。
  • VBlank 是帧率调节的主要手段,增大VBlank降低帧率但增加系统稳定性;减小VBlank提升帧率但可能引发带宽瓶颈。
  • HBlank 影响行时间,通常保持传感器默认值,不用于帧率调节。
  • 在RK平台驱动中,帧率、曝光时间和消隐区三者构成完整的时序约束系统,调优时需综合考虑ISP负载和DMA带宽。