1、基本概念
-
帧
一帧就是一副图像, -
H_Blank
行消隐或称水平消隐
假定曝光起始位置在图像的左上角,对于行曝光,曝光从第一个像素开始直至最后一个曝光结束,这时曝光位置要从此行的尾部快速移动到下一行头部,开始下一行的曝光,这段行与行之间的返回过程称为H_BLANK -
V_BLANK
场消隐或称垂直消隐
假定曝光起始位置在图像的左上角,曝光完成一帧图像后,曝光位置要从图像的右下角返回左上角,开始新一帧曝光,这段时间间隔称为V_Blank -
帧率
Frame Rate
以帧为单位,sensor单位时间内(1秒)曝光并输出图像的频率,通常使用fps (frame per second) 表示 -
dummy_line
用来填充V_Blank的行 -
frame_offset
最小的dummy_line,是指一帧曝光结束到下次准备好重新开始的时间
最大曝光时间 = VTS - frame_offset,最小曝光时间不是frame_offset,而是datasheet中定义的一个最小曝光行 -
line_length (行长)
一行的长度,包含H_Blank
line_length = width_number_of_effective_cloumns + H_Blank
H_BLANK变化,line_length也会变化,同时帧率也会变化,前提是V_Blank和frame_length不发生变化 -
pclk
控制像素输出的时钟,即pixel采样时钟,一个clk采集一个像素点,单位MHz,表示每个单位时间内采集的pixel数量 -
line_time
曝光一行的时间 -
frame_length (帧长)
一帧的行数,包含V_Blank,frame_length = height_number_of_effective_rows + V_Blank
V_Blank变化,frame_length也会变化,同时帧率也会变化,前提是H_Blank和line_length不会发生变化 -
exposure_time
曝光时间是指一帧曝光了多长时间,这里是绝对时间,单位是秒(s),毫秒(ms)、或者微妙(us)表示 -
integration_time
积分时间,单位为行(H),通常也称为曝光行
对于逐行曝光的sensor来说,积分时间是指这一帧曝光了多少行
与sensor相关的曝光计算
-
line_time的计算
line_time = line_length/pclk
单位通常是微妙 -
exposure_time
exposure_time = integration_time * line_times -
fps
fps = pclk/(VTS * HTS) = pclk/(frame_length*line_length) = 1 / (frame_length * line_time)
这里的fps指的是sensor供应商提供的配置里的频率,sensor供应商提供的通常是比较准确的帧率
这里的pclk指的是sensor内部硬件生成的精确的频率,sensor供应商一般不提供这个硬件生成的精确pclk
注意: fps表示一秒内帧数,此公式中line_time单位秒
调节帧率一般都会通过调整VTS来完成(也就是调整V_Blank,如增加了帧与帧间隔的时长,自然每秒内处理的帧数就少了),改VTS 和 HTS是一样的,但是可能有些sensor对行长有8倍、16倍的要求,需要找原厂确认,要注意sensor厂家不同对不同sensor的涉及要求有所区别 -
frame_length (帧长)
VTS = frame_length = height_number_of_effective_rows + dummy_line (V_Blank)
VTS >= height_number_of_effective_rows + frame_offset
min_integration_time <= integration_times <= VTS_frame_offset
电子卷帘快门 (Rolling Shutter) 工作原理
以下三句话是一个意思
一帧图像曝光时间是11ms
一帧图像用积分时间11行完成了11ms的曝光,假设1H曝光时间是1ms
一帧图像曝光11ms,一帧内所有的像素曝光了11ms
HDR(High Dynamic Range)
这里演示的是DOL(digital overlap)模式的HDR的工作原理
DOL2: sensor完成一帧曝光,sensor生成2幅图像,图像传输到ISP,ISP再将两幅图像合成为一帧图像
DOL3: sensor完成一帧曝光,sensor生成3幅图像,图像传输到ISP,ISP再将两幅图像合成为一帧图像