如何修改 sensor 输出帧率

在项目中我们经常有修改 sensor 输出帧率的需求,目的可能是要通过降低帧率,来增加曝光时间,从而提升低照度下的图像质量、或者是通过降低帧率,来减少传输带宽、又或者是通过提高帧率,抓拍高速运动的物体等等。本文主要介绍的就如何修改 sensor 的输出帧率。

1、问题需求

以我目前在做的一个项目为例,用的是格科微的 GC4653 这款 sensor, sensor 原厂提供的 setting 是30fps,现在要求降低到 20fps,具体该如何修改呢?

2、计算说明

修改帧率一般是通过修改 VTS(也就是帧长) 来实现的,一帧图像的曝光时间 = 帧长 * 一行时间。提高帧长,1帧图像的曝光时间就变大了,单位时间内可曝光的帧数就少了,也就是帧率就下降了。所以通常也会通过降帧,来提高低照度下相机的性能。因为降帧后,每帧图像的曝光时间就变长了,相同照度下相比未降帧前,用到的sensor gain 就小,噪声情况就会有所改善,只要噪声小,能做的事情就多了,比如增加清晰度、提高亮度、调高色彩饱和度等等。
修改帧率,首先要了解如下参数的计算公式:
pclk = frame_length ∗ line_length * fps
line_time = line_length/pclk 
fps = pclk/(frame_length ∗ line_length)  = pclk /(frame_length ∗ pclk ∗ line_time) = 1/ (frame_length ∗ line_time)
注:公式中的参数不理解的话,可查看这篇文章,CMOS Sensor 的一些基本概念,及曝光相关的计算 。
主要就是通过如上公式计算出新的帧长,要求得帧长就必须先知道曝光一行的时间(line_time)和帧率,帧率是已知的,就是20fps。要求得一行时间(line_time),就必须知道行长 (line_length) 和pclk的值。
首先我们先求pclk的值:pclk = frame_length ∗ line_length * fps,公式里的帧长和行长就是 VTS 和 HTS,这两个值默认的setting里就有,因为pclk是不变的,我们可以通过初始的30fps的setting来计算出 pclk 的值。
如下图所示,从sensor datasheet 里可以找到对应VTS 和 HTS的寄存器地址,根据地址从 sensor 厂给的 setting 里找到其对应的值 VTS = 1500,HTS = 3200(datasheet中有注明,读出的值要 *2);

          

3、计算结果

1)先求出一行时间:

line_time = line_length/pclk = line_length / (frame_length ∗ line_length * fps) = 1/ (frame_length ∗ fps)

2)不管25fps还是30fps,默认的pclk是不变的,line_length保持不变,则一行时间是不变的,得出如下公式:

1/ (1500∗ 30) =1/ (vts * 20),

vts = (1500*30)/ 20 = 2250 ;

如上将 sensor setting 中 VTS 的值改成:0x0340 = 08,0x0341 = ca,sensor 输出帧率就由30fps 变为 20fps 了。

在内存设计过程中,计算DRAM的容量和带宽是至关重要的一步。具体计算方法需要依据DDR3和LPDDR3的技术特性和应用需求。对于容量的计算,公式为:容量 = 行数 × 列数 × L-Bank数量 × 位宽 / 8。其中行数、列数和L-Bank数量根据内存颗粒的具体参数确定,位宽则由内存颗粒的位宽决定,通常为64位或32位。 参考资源链接:[DDR3与LPDDR3详解:内存技术深度解读](https://wenku.youkuaiyun.com/doc/6472ff16d12cbe7ec307b168?spm=1055.2569.3001.10343) 带宽的计算则更为复杂,它与内存频率和位宽密切相关。带宽的计算公式为:带宽 = 内存频率 × 位宽 / 8。对于DDR3和LPDDR3而言,内存频率通常指的是内存条的标称频率,如DDR3-1600表示内存频率为1600MHz,但这并不是数据传输的实际频率,因为DDR技术具有数据预取的特点。以DDR3-1600为例,实际数据传输频率为1600MHz的一半,即800MHz,但通过双倍数据速率(DDR),数据传输频率相当于1600MHz。 值得注意的是,LPDDR3由于其低功耗的设计,其工作电压更低,标准为1.2V,相比于标准DDR3的1.5V,功耗降低了约20%。这使得LPDDR3在移动设备和嵌入式系统中非常受欢迎,尽管它在性能上可能会略低于标准的DDR3。 为了更好地理解和应用这些计算方法,建议参考《DDR3与LPDDR3详解:内存技术深度解读》这一资源。文档中详细解释了内存的内部结构和工作机制,包括初始化、预充电、刷新等操作,以及针脚定义等,这些都是进行容量和带宽计算时必须考虑的因素。通过这份资料,你将能够更深入地掌握内存设计的核心概念,为特定应用需求进行精确的内存容量和带宽计算。 参考资源链接:[DDR3与LPDDR3详解:内存技术深度解读](https://wenku.youkuaiyun.com/doc/6472ff16d12cbe7ec307b168?spm=1055.2569.3001.10343)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值