1. 摄像头sensor 的原理
定时脉冲生成器会生成clock,用于访问image sensor 阵列中的行,预充电,并且按顺序采样像素阵列中的所有行。在一个行的预充电和采样的时间段里,像素的电荷量会随着曝光时间而逐渐减少。这就是快门结构中的曝光时间的概念。
可以通过调整预充电和采样的时间间隔,来调整曝光时间。当一个行的像素数据被采样后,会送至AMP模拟电路,去矫正偏移和提高相应的增益。然后被送往ADC, 阵列中的每个像素都会被转换为10bit的数据。
2 CMOS Rolling Shutter帧率计算
2.1 行消隐/场消隐
行消隐和场消隐的概念来源于老的电视视频制式NTSC和PAL,NTSC每秒刷新60次,PAL每秒刷新50次。电子枪从左到右画出像素,每次扫描一条线,画下一条之前要先回到左边并做好画下一条扫描线的准备,这之间有一段时间叫做水平消隐(HBlank)。画完全部扫描线后,又回到屏幕左上交准备画下一帧,这一段时间就是垂直消隐(VBlank)。
对于CMOS Sensor来说,也有VBlank和HBlank的概念,Rolling Sensor在曝光时候一次曝光一行,一般CMOS只有一行ADC用于转换电信号,转换好的数字信号逐像素顺序排列,每一行输出结束和下一行输出开始的间隔我们称为行消隐(HBlank),这一帧结束到下一帧开始这段时间称为场消隐(VBlank)。
2.2 行曝光
何为曝光,就是光透入到sensor到采样这一段过程,叫做曝光。为了好理解,你可以假想成采样是逐个pixel进行的,采集一行所需的时间,就是一行曝光的时间。采集一帧的时间,就是曝光时间。逐行曝光的sensor只有一行ADC。
2.3 相关计算公式
在计算相关公式前,我们先给给出一些概念
项目 | 描述 |
---|---|
pclk(pixelclock) | 曝光一个像素点需要的clock |
width | 有效图像宽度,也就是一行有效像素的个数 , 详见于CIS 的datasheet |
height | 有效图像宽度, 也就是有多少个像素行, 详见于CIS 的datasheet |
fps | 帧速率,单位HZ |
HTS | HTS=width + HBLANK |
VTS | VTS = height + VBLANK |
关于pixelclock 有如下关系:
pclk = (HTS*VTS)*fps = (width + HBLANK)*(height + VBLANK)*fps
关于曝光时间,计算如下:
exposure_line_time = HTS/pclk;
exposure_time = exposure_line_time * exposure_line
exposure_line 是曝光的行数,一般是一个寄存器,用来控制曝光时间是多少倍的行曝光时间(exposure_line_time)。
pixel_rate = link_freq * 2 * nr_of_lanes / bits_per_sample
variable or constant | description |
---|---|
link_freq | The value of the V4L2_CID_LINK_FREQ integer64 menu item. |
nr_of_lanes | Number of data lanes used on the CSI-2 link. This can be obtained from the OF endpoint configuration. |
2 | Two bits are transferred per clock cycle per lane. |
bits_per_sample | Number of bits per sample |