admin管理员组

文章数量:1794759

Anti

Anti

Anti_flicker(去水波纹即闪光)与HB,VB与CLK的关系。
在某sensor中,消除灯管频率导致的flicker问题,需要同时配置exposure step register(0xD6)和Hb({0x10[1:0],0x01}),Vb({0x10[5:4],0x02}),exp_level(0x28~0x2f)来实现。消除flicker的原理即是曝光时间是灯管周期的整数倍。
计算方法为:
step * row_time = N * T 
注:
1)step便是0xD6要写入的值。
2)row_time=(Hb + Sh_delay + Win_width + 4)* pclk周期其中Hb由0x10[1:0]和0x01所设。Sh_delay由0x1f所设。Win_width由0x0b和0x0c所设
3)N为大于等于1的整数。
4)T为灯管频率的周期。即工频为50Hz时,T=0.01s=10ms 工频为60Hz时,T=1/120s=8.333ms 另外,当曝光时间小于一个step的时候,还是会出flicker,这时应该配合VB将相位固定住。公式为:(488+Vb)* rowtime = N* T 示例如下:
如果MCLK=24MHz; 50Hz 此时win_width = 640 sh_delay=50 有:
step * (694 + Hb) * 1/12000000 = 0.01*N 
满足条件的step 和Hb有:
HB HB(hex)  steps steps(hex) 
56  38  160 A0 
106 6A 150 96 
266 10A 125 7D 
306 132 120 78 
506 1FA 100 64 
556 22C 96 60 
806 326 80 50 
906 38A 75 4B 
当选择step=150,Hb=106时,为固定banding,Vb的设置可有:
VB VB(hex) min_frame_time  max_FPS 
112 70 40 25 
262 106 50 20 
412 19C 60 16.66667 
562 232 70 14.28571 
712 2C8 80 12.5 
862 35E 90 11.11111 
1012  3F4 100 10 

Exp_level的设置很简单,只用是所计算出来的step的整数倍即可,可按照想要的帧率配置,如在该实例下,选step=150,Hb=106,Vb=112 
Exp_level1 {0x28[3:0],0x29} = 0x258 --对应帧率为25fps 
Exp_level2 {0x2a[3:0],0x2b} = 0x4b0 --对应帧率为12.5fps 
Exp_level3 {0x2c[3:0],0x2d} = 0x708 --对应帧率为8.33fps 
Exp_level4 {0x2e[3:0],0x2f} = 0xE10 --对应帧率为4.17fps 

本文标签: anti