图像从暗到亮收敛完成后,会闪烁一下的问题分析

1、问题背景

调试OV的一款sensor,客户反馈亮度从暗到亮变化后,画面会闪一下。

有发现是和开启了降帧有关系,当关闭降帧后,就看不到闪烁了,这里主要分析一下开启降帧后,导致图像闪一下的原因是什么。

从暗到亮变化时,画面会闪一下-CSDN直播

2、问题分析

之前的想法是,肯定是和AE算法有关的,当帧率发生变化时,曝光时间和增益都会发生变化,AE会重新计算、重新收敛,所以图像出现闪烁。

看过程现象,降帧和AE收敛是都存在的。

整个过程是手捂住画面,图像先变暗(会达到降帧阈值,开启降帧),然后手放开,画面亮度恢复,AE收敛完成(降帧恢复)。

所以这个问题需要分开来看;

a、关闭降帧,执行此过程,图像是否闪烁。

b、固定亮度场景,切换帧率,图像是否闪烁。

目前是执行a后,没看到有闪烁了,执行b的话,就会明显闪一下,所以这肯定是和降帧有关系了。

但实际上降帧不会导致亮度变化,降帧只是增加了最大曝光时间,是表示曝光支持的一个上限值有变化,并不是曝光有变化。

比如在固定亮度场景下,手动设置200行曝光+1倍增益,和100行曝光+2倍增益,

出来的亮度是一样的,不应该有亮度的变化,切换也不应该有亮度跳变。

切换帧率导致的亮度闪烁,算法那边回复应该是曝光和增益写给 sensor 的时间不同步导致的,和AE没有关系,是驱动要保证的。

那怎么做到曝光和增益可以同时写给 sensor 呢?

一般在写 sensor 寄存器时,sensor 中会提供一个hold的功能,可以多个寄存器同时去写,

所以可以在执行降帧后,同时去写曝光和增益的寄存器就可以了 , sensor datasheet中关于hold 的描述如下:

图片

如下是关于sensor驱动中增加 hold 后的简单说明。

static set_fps(){
    .......
    sensor_write_reg (0x3208,0x0)   //当进入降帧函数后,group 0 hold start
}


static set_exposure(){
    .......
    sensor_write_reg(EXPOSURE, (value >> 8) & 0xFF);
    sensor_write_reg(EXPOSURE_L, value & 0xFF);

    sensor_write_reg (0x3208,0x10)  //上面的曝光寄存器写进group 0以后,group 0 hold end
    sensor_write_reg (0x3208,0xE0)  //快速启动 group 0,曝光和增益数据都在 group 0 里
}


static set_gain(){
    .......
    sensor_write_reg(GAIN, value_H);
    sensor_write_reg(GAIN_L, value_L);

    sensor_write_reg (0x3208,0x10) //上面的增益寄存器写进group 0以后,group 0 hold end
    sensor_write_reg (0x3208,0xE0) //快速启动 group 0,曝光和增益数据都在 group 0 里
}

3、问题总结

另外有个问题,当不降帧时,曝光和增益没加hold,为什么不会出现闪烁呢?

因为一般AE的工作策略是曝光优先,画面从亮到暗时,先走曝光行,曝光行走满了,再走增益。

从暗到亮时,也是先减增益,再减曝光行,所以不存在同步的说法。

但帧率变化时涉及到曝光和增益的同时变化,所以为了避免闪烁,需要做同步的操作。

问题现象的视频,可查看此链接:

图像从暗到亮收敛完成后,会闪烁一下的问题分析

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值