传感器帧率调整的底层原理:为什么修改VTS能改变fps?
最近在调试一个图像处理项目时,遇到了一个典型的场景:在低光照环境下,画面噪声明显增加,细节丢失严重。团队里一位经验丰富的硬件工程师没有直接去调增益或降噪算法,而是问了一句:“我们能不能先把帧率降下来试试?” 这个看似简单的操作,背后其实牵涉到CMOS图像传感器最核心的时序控制逻辑。对于硬件工程师、嵌入式开发者,乃至对成像质量有苛刻要求的应用开发者而言,理解传感器如何“数时间”来生成一帧图像,远比知道修改哪个寄存器更有价值。这不仅仅是调整一个参数,而是深入到了光电信号转换与数字时序交织的底层世界。
传感器帧率,或者说FPS,直观上是我们每秒能拿到多少张图片。但它的本质,是传感器内部一个精密时钟驱动下,一系列固定动作(复位、曝光、读出)的循环周期。当我们谈论修改VTS(Vertical Total Size,垂直总尺寸)来改变帧率时,实际上是在调整这个循环周期的“总步数”。这篇文章将抛开简单的操作指南,从传感器的工作原理切入,为你梳理清楚帧率、曝光时间、图像质量以及那些关键时序参数(VTS, HTS, PCLK)之间环环相扣的关系。无论你是想优化低照度性能、平衡带宽与画质,还是探究传感器驱动的底层逻辑,这里的原理性剖析都将为你提供一个坚实的理论基础。
1. 核心概念:一帧图像是如何被“编织”出来的?
要理解帧率调整,首先得明白一帧数字图像在CMOS传感器内部是如何诞生的。你可以把传感器想象成一个由无数个微小“光敏水桶”(像素)组成的矩阵。生成一帧图像,需要完成三个核心动作:给所有水桶清零(复位)、打开盖子让光流入(曝光)、然后依次读取每个水桶积累了多少“光水量”(读出)。这个过程必须严格按照时序进行。
这个时序的节奏,由几个基础时钟和参数共同决定:
- PCLK (Pixel Clock):像素时钟,可以理解为系统最基础的心跳。每一个PCLK周期,传感器可以处理一个像素点的数据读出等操作。它的频率通常在几十到几百MHz,由传感器的主时钟(MCLK)经过内部锁相环(PLL)倍频得到。PCLK是传感器内部时序的基石,一旦初始化设定,通常在运行中保持不变。
- HTS (Horizontal Total Size):水平总尺寸。这指的是一行像素从开始到结束所包含的总PCLK周期数。注意,这个“总”字很关键。它不仅仅包含有效像素(Active Pixels)的读出时间,还包含了行与行之间必要的“空白时间”(Horizontal Blanking)。这段空白时间用于执行行复位、信号稳定等操作。
- VTS (Vertical Total Size):垂直总尺寸。这指的是一帧图像从开始到结束所包含的总行数。同样,它包含了有效行(Active Lines)和帧与帧之间的“空白时间”(Vertical Blanking)。垂直消隐期是进行帧复位、全局曝光控制等关键操作的时间窗口。
注意:HTS和VTS中的“空白”区域并非无用。它们是传感器完成内部电荷转移、复位、等待信号稳定的必需时间,直接关系到图像的信噪比和稳定性。盲目压缩这些空白时间可能导致图像出现条纹噪声或闪烁。
基于这三个参数,我们可以推导出几个关键的时间量:
-
行时间 (Line Time, t_line):传感器处理一行(包含有效像素和水平消隐)所花费的时间。
t_line = HTS / PCLK例如,HTS = 2800, PCLK = 148.5 MHz, 则 t_line = 2800 / 148,500,000 ≈ 18.86 微秒。
-
帧时间 (Frame Time, t_frame):传感器生成一帧(包含所有有效行和垂直消隐)所花费的时间。
t_frame = VTS * t_line = VTS * (HTS / PCLK) -
帧率 (FPS):帧时间的倒数,即每秒能生成的帧数。
FPS = 1 / t_frame = PCLK / (VTS * HTS)这个公式是理解帧率调整的核心公式。它清晰地表明,在PCLK固定的前提下,帧率FPS与VTS和HTS的乘积成反比。
为了更直观地理解这些时序参数如何构成一帧图像,我们可以参考下面的时序结构示意图:
| 时序层级 | 构成说明 |
|---|
333




被折叠的 条评论
为什么被折叠?



