网站 创意 方案,怎么制作网站模板,百度云做网站,wordpress 默认图片链接 基础知识
1秒(S)1000毫秒(ms)1000_000微妙(s)1000_000_000纳秒(ns)
1GHz1000Mhz1000_000KHz1000_000_000Hz
1Hz1/s
抗频闪原理
海思AE模块参数中有一个LinesPer500ms的参数#xff0c;意思为500ms对应的曝光行数。此个参数和抗频闪有关。
我们知道#xff1a;
50HZ… 基础知识
1秒(S)1000毫秒(ms)1000_000微妙(µs)1000_000_000纳秒(ns)
1GHz1000Mhz1000_000KHz1000_000_000Hz
1Hz1/s
抗频闪原理
海思AE模块参数中有一个LinesPer500ms的参数意思为500ms对应的曝光行数。此个参数和抗频闪有关。
我们知道
50HZ交流电能量周期T 1/(50*2)ssensor曝光一行 line_time line_length/pclkHTS*(1/pclk)line_length pclk * line_timefpspclk/(VTS*HTS) pclk/(frame_length*line_length)line_time 1/(frame_length *fps ) 1/(VTS *fps )为了避免flicker必须满足每一行获取的能量是交流电能量周期的整数倍否则会应为获取的能量不一致导致水波纹现象的产生。即line_time* Step n * T故Step n*T/line_timen*T/(1/(VTS *fps ))n*T*VTS*FPSn*VTS*FPS/100 (n取正整数)
Fps为一秒内的帧数因此line_time应该以秒为单位。或者说是pclk 以MHZ为单位需要转换为Hz为单位才与50Hz在同一个度量水平。而1Hz1/s所以line_time参数也是以s为单位。
linesPer500ms参数主要是进行以曝光行为单位的曝光时间和微妙为单位的曝光时间的转换。AE自动曝光算法内部还是以曝光行为单位进行AE的调整而调试工具界面除了曝光时间上下限是以曝光行为单位其他时间相关的都是以微妙为单位。
海思抗频闪方式描述如下
Lines_per_500mspclk/(Picture_widthWidth of the horizontal blanking region)/2pclk/HTS/2 上述公式怎么得到的呢
我们知道sensor一行的曝光时间为line_timeHTS/pclk那么500ms需要对应曝光多少曝光行呢
1/line_timex/0.5 注意等式两边时间单位是以s为单位
x0.5/line_timepclk/HTS/2
即500ms对应的需要曝光pclk/HTS/2曝光行才行。
抗频闪参数(Lines_per_500ms)定义的问题
以50HZ抗频闪为例50HZ抗频闪每行需要曝光10ms也即是pclk/HTS/100也即VTS*fps/100
那为什么不直接定义一个linesPer10ms10ms对应的曝光行数的参数去进行抗闪时间计算呢如果定义linesPer500ms的参数那还需要再此参数的基础上再除以50才能以转换为以每10ms为步进进行曝光。本质上linesPer10ms和linesPer500ms在此情景中是一样的作用。实际内部计算中用linesPer10ms去计算曝光时间根据方便些。
抗频闪参数(Lines_per_500ms)定义的问题
原因1
再继续思考定位。发现海思内部计算工频闪烁类型的时候有用到Lines_per_500ms参数。如下图描述 大概意思是利用获取到的3帧图像数据根据LinePerSecond变量计算出当前环境是有无工频闪。有工频闪时候是50HZ还是60Hz工频闪亦或是未知类型的工频闪。
计算工频闪烁的时候需要LinePerSecond即1秒的最大总曝光行数。
我们知道1s0.01*100s0.5*2s。假设当前帧率为8帧VTS等于1124为偶数我们以Lines_per_500msVTS*fps/2,Lines_per_10msVTS*fps/100分别计算得到Lines_per_500ms 1124*8/24496Lines_per_10ms 1124*8/10089然后以Lines_per_500ms 、Lines_per_10ms分别计算LinePerSecond分别得到4496*28992,、89*1008900。
以上以Lines_per_10ms计算得到的LinePerSecond存在误差而以Lines_per_500ms计算得到的LinePerSecond无误差假设当前帧率为8帧VTS等于1125为奇数我们以Lines_per_500msVTS*fps/2,Lines_per_10msVTS*fps/100分别计算得到Lines_per_500ms 1125*8/24500Lines_per_10ms 1125*8/10090
以上以Lines_per_10ms计算得到的LinePerSecond无误差而以Lines_per_500ms计算得到的LinePerSecond无误差
即使是帧率为奇数帧VTS为奇数根据Lines_per_500ms 、Lines_per_10ms分别计算LinePerSecond时以Lines_per_500ms计算得到的LinePerSecond也会比以Lines_per_10ms计算得到LinePerSecond误差要小些。
通过图像帧数据和LinePerSecond判断当前是否有误频闪的时候LinePerSecond参数越精确越好。如果以Lines_per_10ms为抗闪参数在计算LinePerSecond时会有些许误差。最后将导致判断频闪类型的时候可能会出现误判或者漏判的情况。所以海思的抗闪参数定义为Lines_per_500ms。
原因2
基于同样精度的原因在下述海思曝光行转换为微秒的关系式中由于Lines_per_10ms计算的值相对比Lines_per_500ms 计算得到的值误差要大些再按照下述关系转换为微秒的时候误差也较大相反的由微秒为单位的曝光时间转换为对应以曝光行为单位的曝光时间的时候前者转换后的结果所带来的误差也比后者大。
在应用层面上由于带来的误差可能将导致一些应用逻辑失效或者出错。 所以以Lines_per_500ms 为抗频闪参数为的是尽量减小精度保证相应逻辑正确的的前提下所设计的参数值。
其他原因 欢迎讨论补充