天天看点

海思3516D闪屏问题-修复

海思3516D闪屏问题-修复

    • 结论:
    • 闪屏原因:
    • 以前使用错误:
    • 相机还存在问题:
    • ISP调试问题总结
      • 问题:在室内开灯场景下,屏幕闪烁。
      • 问题:图像从暗到亮的时间过长
      • 问题:人脸图像过暗
      • 问题:图像过曝
      • 问题:图像噪点过多
      • 问题:图像亮度不够
      • 问题:图像不清晰
      • 关于海思平台的自动降帧:
      • 关于暗光环境调试:
      • 宽动态模式下图像偏色问题:
      • 室内宽动态存在闪烁或者夜景模式下要求打开fusion模式,同时适当调节宽动态模式下的降噪强度。
      • 问题:如何确认当前环境是否逆光?
      • 问题:人脸在整个画面中偏暗

结论:

闪屏问题的根本原因是海思AE处理的有问题,而我们现场的问题尤为复杂,修改了以下几个地方:

1 去掉了抗闪功能,抗闪功能和WDR一同使用会有闪屏问题。

2 增加数字增益调节,sensor增益调节有again和dgain,代码中只有again的调节,没有dgain,经验证dgain也会或多或少影响闪烁。

3 调整感兴趣区域权重值。

4 目标亮度值从65改到128

调整了这4个地方后,闪屏问题得到解决。如果还有问题,还可以继续优化。

闪屏原因:

1 抗闪+WRD,同时使用很容易出现闪屏。抗闪功能一般室内使用,过滤灯光产生的波纹形闪烁。而我们设备抗闪一直处于打开状态。

2 AE的增益和曝光时间配置不对,我核对了imx290的芯片手册和海思的290demo,配置方式应该没有问题,只是数字增益写死是0了。这个也可能导致某些轻微的闪烁。

3 感兴趣区域权重值,此值过高,会使曝光策略为高光优先的模式,为了防止过曝,适当降低亮度值,而当AE算法发现画面亮度比目标亮度小了,又会增加亮度值,这一增一减,也会造成闪烁。

4 自动曝光调整速度,u8Speed,某些sensor在wdr模式下,此值>64也可能导致画面闪烁。

5 曝光时间和sensor增益不满足线性关系,比如曝光量为4096,可以分配曝光时间2,增益2048,或者曝光时间4,增益1024,效果是差不多的。如果不满足这种线性关系,AE调节也有可能导致闪烁。可以通过设置f32Offset解决。

6 系统增益分配不合理也可能导致闪烁。若(sensor模拟增益最小值sensor数字增益最小值ISP数字增益最小值)<系统增益最小值,则AE算法内部计算时最小增益会被限制到系统增益的最小值,若(sensor模拟增益最大值sensor数字增益最大值ISP数字增益最大值)>系统增益最大值,则AE算法内部计算时最大增益会被限制到系统增益的最大值,海思推荐通过设置系统增益的最大、最小值进行增益限制,分别限制sensor模拟增益、sensor数字增益和ISP数字增益时,若把较高精度的ISP数字增益限制到1倍,容易导致闪烁。

以前使用错误:

1 曝光策略,高光优先、低光优先使用错误。

2 曝光量偏差值,室内此值太低,画面过暗。

3 sensor数字增益调节,没有。

4 抗闪处理,一直打开。

5 感兴趣区域权重值(室内和室外),过高,导致室外模式亮度提不上去,画面过暗。

6 感兴趣区域对统计平均影响的最大程度值,过高,导致室外模式亮度提不上去,画面过暗。

相机还存在问题:

1 屏幕亮度优化。不管是室内还是室外,相机画面亮度都很低,目前采用开启wdr解决了亮度低的问题,但wdr有优点,也有缺点,会提高码率,增加噪点等等。

画面亮度过低原因也找到了,室外模式,曝光策略采用高光优先,同时,感兴趣区域权重值太高了,可以防止过曝,但对高光过于敏感,导致图像亮度提不上去;室内模式:曝光策略采用了低光优先,这时候是可以提亮度值的,但是曝光量偏差值(u16EVBias)设置过低,导致最终生效的的目标亮度(目标亮度*偏差值/1024)特别特别低,室内模式也很暗。

2 wdr场景优化,现在现场相机默认都开启了wdr功能,可以优化成只有少数特殊场景下开启wdr。

3 日夜切换功能优化,室外,白天:关闭抗闪功能,关闭wdr,夜晚:默认关闭抗闪,关闭wdr,特殊场景自行打开wdr;室内,白天:关闭抗闪功能,关闭wdr,夜晚:默认关闭抗闪,关闭wdr,特殊场景自行打开wdr。

4 对于室内非wdr场景,可以通过DRC控制图像亮度。

5 调整曝光策略,白天:根据场景选择开启高光优先策略。夜晚,低光优先策略。

6 曝光权重表,可以指定特定区域曝光权重。(此优化需要大幅修改IE界面,可以先不做)

ISP调试问题总结

问题:在室内开灯场景下,屏幕闪烁。

解决:确认屏幕亮度是否为100,若不是则配为100;仍然闪烁则打开抗闪功能,配置抗闪频率为交流电频率。

问题:在没有开灯场景下,屏幕依旧闪烁。

解决:确认屏幕亮度是否为100,若不是则配为100;适当调节AE模块的u8Speed和u8Tolerance参数

问题:图像从暗到亮的时间过长

解决:调节AE模块的u8Speed和u16BlackSpeedBias参数

问题:人脸图像过暗

解决:配置AE模块的enAEStrategyMode参数为AE_EXP_LOWLIGHT_PRIOR模式,同时增大u16HistRatioSlop的值;适当调节gamma参数;也调用海思提供的API HI_MPI_ISP_GetStatisticsConfig(ViPipe,&pstStatCfg); 和 HI_MPI_ISP_SetStatisticsConfig(ViPipe,&pstStatCfg) 设置图像权重;wdr模式下还可调节曝光比和曝光时间范围。

问题:图像过曝

解决:(1)在光线条件良好情况下,确认是否开启抗闪功能,尤其是室外,若开启则关闭抗闪;(2)确认曝光时间范围是否合理,调节曝光时间范围参数,减小最小曝光时间;(3)wdr模式下则减小最小曝光比参数;(4)确认图像权重配置表是否合理,不能全为0。

问题:图像噪点过多

解决:首先确认曝光时间范围的最大值是否过小(30帧下最大曝光时间为33306),如果太小则增大曝光时间最大值;确认模拟、数字、ISP三个增益大小,适当降低增益,调节顺序为ISP–数字—模拟(模拟增益带来的噪声最小),同时适当减小AE的u8Compensation亮度补偿参数,开启海思ISP后端去噪算法模块,增强去噪强度;若还无法去除增益,可调用HI_MPI_ISP_GetPubAttr(ViPipe, &pstPubAttr); 和 HI_MPI_ISP_SetPubAttr( ViPipe, &pstPubAttr); 这两个API适当降低帧率(人脸识别最低帧率为6fps)。

问题:图像亮度不够

解决:确认曝光时间范围的最小值是否过小(30帧下最大曝光时间为33306),如果太小则增大曝光时间最小值;提高AE的u8Compensation亮度补偿参数;调节gamma等亮度相关参数;适当增加增益,调节顺序为模拟—数字-- ISP(模拟增益带来的噪声最小)。

问题:图像不清晰

解决:首先确认镜头焦距是否调到最优,确认焦距是否打在想要的物体的位置上;调节gamma、sharpen等相关IPM参数。

为获取需要显示的较清楚的图像,海思首先调节sensor的曝光时间,如果在没有超过最大曝光时间情况下就能够使图像达到设定的目标亮度,就不会再调节增益,这样可以最大程度减少因为增益带来的噪声;如果曝光时间超过曝光时间范围仍然无法达到设定的目标亮度,就会调节模拟增益,如此类推下去。所以海思调节顺序为曝光时间—模拟增益—数字增益—ISP数字增益(不调节光圈的情况)。曝光时间范围与帧率相关,例如在帧率为30fps下,每帧图像的显示时间最大为33.333ms,除去最小的显示时间以及一些必要等待时间,一帧图像最大曝光时间约为33.3ms,如果曝光时间超过这个最大值,sensor将不再调节曝光转而调节增益,增益带来最大问题是噪声(通常是亮度噪声、随机噪声),所以后端需要去噪。另外适当减小u8Compensation、u16HistRatioSlope 这两个参数,降低目标亮度值,让增益降下去也能达到降噪效果。

关于海思平台的自动降帧:

使能AE模块中的enAEMode参数,调节u32GainThreshold系统增益门限值和u8Compensation,这两个值的大小对降帧程度有影响,在极低照度下为了得到较好图像质量,同时画面不卡顿,需要平衡好u32GainThreshold以及sensor的模拟增益范围stAGainRange中的最小增益值的大小。在暗光环境下,一般u32GainThreshold大于12000,模拟增益最小值设为50000以上或者最大。同时适当减小u8Compensation、u16HistRatioSlope 这两个参数,降低目标亮度值,最大程度避免增益带来噪声,也可避免降帧后帧率过小。

关于暗光环境调试:

在黑暗环境下,为了得到质量较高的图像,需要从曝光时间、增益、曝光补偿等参数调节。在尽量不引入噪声的情况下,优先调节帧率,通过降低帧率使每帧图像曝光时间加长,极限最低不得低于6帧(一般为12帧),否则画面会卡顿;然后调节模拟增益,模拟增益有分高、低模式,有些sensor默认配为低增益模式(约最高增益的1/3,如技术支持给的驱动),这样模拟增益无法达到最高导致需要调节数字增益,会引入更多噪声,所以确定驱动是否使用高增益模式,同时cmos.c中的增益表可配最大值配为与sensor最高增益一致。另外亮度补偿等与亮度相关参数调低,避免ISP调节数字增益和ISP增益。如果AE Route路径的曝光时间和增益无法自动配置为sensor可配的最大值,还需要配置好AE Route参数。

宽动态模式下图像偏色问题:

技术支持说法是这个不可避免,这是为了减少鬼影和色域引起的噪声等副作用。通过提高饱和度,降低rgb通道去噪强度可以一定程度提升图像颜色质量。怀疑是CCM标定工作未做好的问题。

宽动态模式下室内图像会闪烁:

室内宽动态存在闪烁或者夜景模式下要求打开fusion模式,同时适当调节宽动态模式下的降噪强度。

问题:如何确认当前环境是否逆光?

解决:在目前我们产品中,确认环境是否逆光前提是在白天或光线较好的场景下判定,而对白天或光线条件的判定,我们使用光敏获取环境光线情况来判定;在光线良好情况下,判定为逆光环境的条件为:经过测试发现,在光线较好场景下,逆光与非逆光最大区别是ISP对ISO参数的调整。光线较好非逆光时,在低光优先模式下,sensor一般通过调节曝光时间即可满足目标亮度要求,如果调节曝光还不满足也只会微调ISO,一般调整ISO不超过250;光线较好逆光时,在低光优先模式下,人脸因为逆光而变黑,sensor仅调节曝光时间一般无法满足目标亮度要求,且会较大幅度调节ISO(模拟增益、数字增益)值,当ISO超过一定值则可认为逆光(目前我设置的逆光时ISO阈值为280,经过测试,该阈值可设为250-350,根据场景进行微调)。

注意:这只能适应一般光线较好的环境,且精准性不会非常高,而精准性需要依靠光敏对环境判定的精准性、对各个参数的获取的实时性、以及对各个参数的综合和代码逻辑实现的准确性。而在黑夜逆光环境下的精准性很可能会大幅下降,导致wdr和线性两种模式来回切换。另外,为了尽可能避免人脸距离镜头太近使镜头进光量减少导致ISP继续调大曝光甚至ISO过大引起误切换,亮度补偿值compensation稍微往下调(56-64即可)。

问题:人脸在整个画面中偏暗

解决:AE设置为低光优先模式,提升HistRatioSlope值,减小MaxHistOffset值,打开DRC,更换系数较低的gamma参数表,调整曝光权重表(增加中间区域的值,减低四周的值)。

继续阅读