sensor中的基础计算
像我们小时候写作文时候一样,从左上角开始横向书写,写完第一行,再回到左边来,进行第二行的书写。当写完一张纸256行后(一帧),需要到本子下一页的左上角继续书写第二页。在换行(行消隐)和换页(场消隐)的过程中,笔是要拿起来的,不能在本子上画下巨丑的回扫线。所以,拿起笔换行换页的回扫线过程就是行场消隐。像电视机里面的电子枪或者我们的笔,都是在不断地走“之”字型帧长度(场高)VTotal :不占用曝光时
像我们小时候写作文时候一样,从左上角开始横向书写,写完第一行,再回到左边来,进行第二行的书写。当写完一张纸256行后(一帧),需要到本子下一页的左上角继续书写第二页。在换行(行消隐)和换页(场消隐)的过程中,笔是要拿起来的,不能在本子上画下巨丑的回扫线。所以,拿起笔换行换页的回扫线过程就是行场消隐。像电视机里面的电子枪或者我们的笔,都是在不断地走“之”字型
帧长度(场高)VTotal :不占用曝光时间,但是会影响帧率(FPS),如果按照行曝光,曝光时间必须小于VTotal行。
VTotal = VTS = V_Size + V_Blank
(场有效高度)(场消隐)
行长度(场宽)HTotal:如果按照行曝光,会增加曝光时间,会影响帧率(FPS)
HTotal = HTS = H_Size + H_Blank
(行有效长度) (行消隐)
2.行场同步
电视信号发送端为了使接收端的行扫描与场扫描规律与其同步,在行(场)扫描正常结束后,向接收机发出一个脉冲信号,表示这一行(场)已经结束,这个脉冲信号就是行(场)同步信号。
3.何调整帧率呢?
1)帧率计算公式:
FPS = PCLK /( VTS*HTS)
(像素时钟)
VTS = V_Size + V_Blank
(场有效高度) (场消隐)
HTS = H_Size + H_Blank
(行长) (行有效长度) (行消隐)
从上面的公式可以看出,想要调整帧率,可以调整PCLK,也可以调整 VTS*HTS。Hts和Vts都会影响帧率,但在实际应用中,可以只修改其中的一个值,从而可以修改帧率,比如只修改Hts的值。Hts(行长; 会增加曝光时间),Vts(帧长,不占用曝光时间)。
HTS:行长,一行有多少个pixel;
VTS: 一帧曝光了多少行。
HTS*VTS 为这一帧画面里面所有的pixel;
1/pclk:是曝光一个像素点所用的时间。
row time = HTS *(1/pclk) 积分时间等于 1 的时候,此公式表示一行的曝光时间。
row time = 1/(FPS*VTS)S
一个时钟等于一个像素点
sensor根据曝光量计算时间exposure和gain的乘积,然后选一组最佳的exposure和gain组合,exposure根据timeline转换为曝光行,配置给寄存器。
曝光时间又是由什么决定的呢?
曝光时间的计算公式为:
exposure time = integration time * [ 行长 * (1 / pclk)]
(单位:us) (行为单位的积分时间) (单位:MHZ)
开启一次快门时间内所曝光的行数*每行曝光所用的时间,是一次快门的时间。
方法一:修改调整PCLK
PCLK的修改需要修改MCLK。对9M001型号的sensor,MCLK maximum data rate为48MHZ。我们可以把他改小,在麒麟的设备中,众趣的客户需要将帧率降为7/10/15FPS。
MT9M001 Reg初始化序列配置行场消隐、分辨率寄存器:
{0x03, 0x03ff}, // Row Size 帧长 V_Size=1023
{0x04, 0x04ff}, // Col Size 行长 H_Size=1279
{0x05, 0x0009}, // Horizontal Blanking H_Blank=9
{0x06, 0x0019}, // Vertical Blanking V_Blank=25
所以, HTS=1288,VTS=1048
方法二:曝光时间
3.total integration time (tINT):
tINT = Reg0x09 x row time - overhead time - reset delay,
where:
Row time = ((Reg0x04 + 1) + 244 + Reg0x05 - 19) pixel clock periods
Overhead time = 180 pixel clock periods
Reset delay = 4 x Reg0x0C pixel clock periods
4.各种像素时钟/帧速率的默认行时间:
Vertical Blanking (long integration time)=(Reg0x09 – Reg0x03) x (A + Q)
CLKIN: Clock in. Master clock into sensor (48 MHz maximum).
PIXCLK: Pixel clock. Pixel data outputs are valid during falling edge of this
clock. Frequency = (master clock).
tINT = Reg0x09 x row time - overhead
time - reset delay (where ,Reset delay = 0,Row time =
31.53662us,Overhead time = 3.7494us)
expposure = Reg0x09*31.53662us
- 3.7494 单位uS, expposure 0-8191(13bit), 注意曝光时间过长会影响帧率, VGA分辨率下, Reg0x09= 1049,曝光时间大概是33ms(注意SXGA下时钟4分频,Row time要x4 )
expposure 设置Reg0x09 寄存器
gain = set_gain / 1000, 范围是1000-15000, 对应是 1x-15x倍增益, 在1000-4000之间每个最小step是125对应是0.125倍增益,在4250-8000之间每个最小的step是250,对应0.25倍增益,9000-15000之间每个最小step是1000 对应1倍增益,其他不在这三个区间的值会被设成最大增益15x。
频率和时间关系转换:
1 Hz = 1 / s; 50 Hz = 0.02 s = 20 ms; 60 Hz = 1 / 60 s = 1000 / 60 ms
1 KHz = 1000 Hz
1 MHz = 1000 000 Hz
1 GHz = 1000 000 000 Hz
1S秒 = 1000 ms毫秒 = 1000_1000 us微妙 = 1000_000_000 ns纳秒
1GHz = 1000 MHz = 1000_000 KHz = 1000_000_000 Hz
曝光时间以行长为单位; PCLK以Hz为单位;
行长以周期数为单位,帧长以行长数为单位;其中周期数就是频率
T 周期以ms为单位;f 频率以Hz为单位;f = 1 / T;周期和频率都是时间单位,只是表现形式不同
更多推荐
所有评论(0)