sensor逐行曝光原理

时间:2024-03-23 09:52:33

sensor逐行曝光原理 关于帧、帧数、帧率的概念

Frame

简单的理解帧就是为视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧。

 

具体地,在将光信号转换为电信号的扫描过程中,扫描总是从图像的左上角开始,水平向前行进,同时扫描点也以较慢的速率向下移动。当扫描点到达图像右侧边缘时,扫描点快速返回左侧,重新开始在第1行的起点下面进行第2行扫描,行与行之间的返回过程称为水平消隐(也叫行消隐,H_BLANK)。一幅完整的图像扫描信号,是由水平消隐间隔分开的行信号序列构成,称为一帧。

如下图所示,是一帧的结构图,在最下面部分有一部分是V_BLANK。V_BLANK的由来是因为扫描点扫描完一帧后,要从图像的右下角返回到图像的左上角,开始新一帧的扫描,会有一段间隔时间,这一时间间隔,叫做垂直消隐(也称场消隐,V_BLANK),V_BLANK的作用通常用来调节帧率。

sensor逐行曝光原理

 

帧数 Frames

帧数是帧生成数量的简称,可以解释为静止画面的数量,也就是说,如果一个动画的帧率恒定为 60 帧每秒(fps),那么它在一秒钟内的帧数为 60 帧,两秒钟内的帧数为 120 帧。值得说的是对于我们大多数手机视频拍摄能力,无论是 720P 还是 1080P 基本都只有 30 帧每秒,因为这个将涉及到手机 GPU 图形处理器的能力和存储能力,这都是受手机硬件条件的影响,当然一些手机也可以拍出 4K 视频,甚至可以使用 135 帧每秒的超高速拍摄功能。

帧率 Frame rate

帧率(Frame rate) = 帧数(Frames)/时间(Time),单位为帧每秒(f/s, frames per second, fps)

帧率是用于测量显示帧数的量度,测量单位为每秒显示帧数 Frame per Second FPS)或赫兹 Hz),一般来说 FPS 用于描述视频、电子绘图或游戏每秒播放多少幀。

FPS( Frame per Second)每秒显示帧数

FPS 是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。 FPS 是测量用于保存、显示动态视频的信息数量。每秒钟帧数愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是 30 。某些计算机视频格式,每秒只能提供 15 帧。

sensor逐行曝光原理

FPS 也可以理解为我们常说的刷新频率或者刷新率,使用赫兹 Hz)为单位。最简单的就是我们玩儿 LOL 英雄联盟、 CS 、以及手机上的王者荣耀等游戏中说的“ FPS 。而在显示器的刷新率中,如果你使用过那种很笨重的 CRT 显示器,那么你一定经历过将刷新率调低后,看着整个画面都是在闪烁的,所以当时的显示器的刷新率最大也就只有 60Hz,而现在子凡随便一看都是 150Hz 了,但是也会更具显卡来设置,当然 60Hz 也够了。其中子凡说的 60Hz 的刷新率刷也就是指屏幕一秒内只扫描 60 次,即 60 /秒。

 

sensor逐行曝光原理 sensor逐行曝光基本原理

sensor逐行曝光从第一行开始曝光,一个行周期结束之后第二行才开始曝光。依次类推,经过N-1 行后第N 行开始曝光。第一行曝光结束后开始读出数据,读出一行需要一行周期时间(含行消隐时间,即H_Blank)。至第一行完全读出后,第二行刚好开始读出,依次类推,当第N-1 行读完后,第N 行开始读出,直到整幅图像完全读出。

sensor逐行曝光原理

 

与sensor曝光相关的计算

1. line_time的计算:

line_time的计算公式:line_time = line_length / pclk

和这个公式相关的是下面三个变量的定义先说下

    a). line_length: 一行的长度(包含h_blank)

    b). pclk: 是控制像素输出的时钟,即pixel采样时钟,单位MHz。表示是每个单位时间内采样的pixel数量

    c). line_time: 曝光一行的时间

所以,曝光一行的时间等于一行的长度除以曝光一个像素需要的时间。

2. exposure_time的计算:

exposure_time的计算公式:exposure_time = exposure_line * line_time

同样和这个公式有关的几个定义先说下:

    a). exposure_time: 曝光时间。指这一帧曝光了多长时间。

    b). exposure_line: 字面意思是曝光行。值得注意的是,曝光行不是指一次性曝光多少行,对于逐行曝光的sensor来说,永远都是一次曝光一行。所以,曝光行是指这一帧曝光了多少行。

    c): line_time: 曝光一行的时间

所以,可以用line_time即曝光一行的时间,乘以曝光了的行数exposure_line,等于整个曝光花费的时间。

注:

1) 调节exposure_time曝光时间是通过写exposure_line寄存器实现的;

2) 曝光时间以行长为单位

3. fps帧率的计算:

frame_length = Vsync = Dummy Line = VTotal = VTS = V_Size + V_Blank   // 帧长;   不占用曝光时间

line_length = Hsync = Dummy Pixel = HTotal = HTS = H_Size + H_Blank // 行长;    会增加曝光时间

fps的计算公式:fps =  pclk / (VTS * HTS )= pclk / (frame_length * line_length) = 1 / (frame_length * line_time)

注:fps即表示1秒内帧数,此公式中line_time单位是秒

同样和这个公式有关的几个定义先说下:

    a). pclk: 是控制像素输出的时钟,即pixel采样时钟,单位MHz。表示是每个单位时间内采样的pixel数量

    b). frame_length:  一帧的行数(包含v_blank)

    c). line_length: 一行的长度(包含h_blank)

这里frame_length * line_length的意思是用一帧的行数乘以一行的长度,即相乘得到一帧图像总共有多少像素。pclk是像素时钟,单位是MHz。如100MHz,就表示每秒钟可以采集100M个像数。用pclk除以frame_length * line_length两者之积,即是算1秒钟内采集的100M个像数点可以分成多少帧(frame_length * line_time = 曝光一帧的时间)。

注:

1). line_time一组setting只有一个值,一般是不变的,可看做常数,所以调节帧率是通过写frame_length寄存器,即调节frame_length实现的。

2). 同理,回到上一个知识点 2. exposure_time的计算:可以发现,exposure_time = exposure_line * line_time,而line_time一般是常数。所以,调节exposure_time曝光时间是通过写exposure_line寄存器实现的,即通过写曝光实现。

4.其他相关:

dummy_line:用来填充v_blank的行

frame_offset:最小的dummy_line,一帧曝光结束到下次准备好重新开始曝光的时间

frame_length = exposure_line + dummy_line

frame_length ≥ exposure_line +frame_offset

 

链接:https://www.jianshu.com/p/6d99bafd9a94

来源:简书