hi_isp_ae_attr
说明
定义自动曝光属性。
定义
typedef struct { hi_isp_ae_range exp_time_range; hi_isp_ae_range a_gain_range; hi_isp_ae_range d_gain_range; hi_isp_ae_range ispd_gain_range; hi_isp_ae_range sys_gain_range; hi_u32 gain_threshold; hi_u8 speed; hi_u16 black_speed_bias; hi_u8 tolerance; hi_u8 compensation; hi_u16 ev_bias; hi_isp_ae_strategy ae_strategy_mode; hi_u16 hist_ratio_slope; hi_u8 max_hist_offset; hi_isp_ae_mode ae_mode; hi_isp_antiflicker antiflicker; hi_isp_subflicker subflicker; hi_isp_ae_delay ae_delay_attr; hi_bool manual_exp_value; hi_u32 exp_value; hi_isp_fswdr_mode fswdr_mode; hi_bool wdr_quick; hi_u16 iso_cal_coef; } hi_isp_ae_attr;
成员
成员名称 |
描述 |
---|---|
exp_time_range |
曝光时间范围,设置最大值和最小值,以微秒(us)为单位。取值范围:[0x0, 0xFFFFFFFF],具体范围与sensor相关。 |
a_gain_range |
sensor模拟增益范围,设置最大值和最小值,10bit 小数精度。取值范围:[0x400, 0xFFFFFFFF],具体范围与sensor相关。 |
d_gain_range |
sensor数字增益范围,设置最大值和最小值,10bit 小数精度。取值范围:[0x400, 0xFFFFFFFF],具体范围与sensor相关。 |
ispd_gain_range |
ISP数字增益范围,设置最大值和最小值,10bit 小数精度。取值范围:[0x400, 0x40000]。 |
sys_gain_range |
系统增益范围,设置最大值和最小值,10bit 小数精度。 取值范围:[0x400, 0xFFFFFFFF],具体范围与sensor相关。 |
gain_threshold |
自动降帧时的系统增益门限值,10bit 小数精度。取值范围:[0x400, 0xFFFFFFFF]。 |
speed |
自动曝光调整时的速度。 取值范围:[0x0, 0xFF],默认值为 0x40。 |
black_speed_bias |
画面由暗到亮AE调节速度的偏差值,该值越大,画面从暗到亮的速度越快。 取值范围:[0x0, 0xFFFF],默认值为 0x90。 |
tolerance |
自动曝光调整时对画面亮度的容忍偏差。取值范围:[0x0, 0xFF],默认值为 0x2。 |
compensation |
自动曝光调整时的目标亮度。 取值范围:[0x0, 0xFF],默认值为 0x38。 |
ev_bias |
自动曝光调整时的目标亮度偏差值,10bit小数精度。取值范围:[0x0, 0xFFFF],默认值为0x400。 |
ae_strategy_mode |
自动曝光策略,高光优先或低光优先。 |
hist_ratio_slope |
感兴趣区域的权重。 取值范围:[0x0, 0xFFFF],默认值为 0x80。 |
max_hist_offset |
感兴趣区域对统计平均值影响的最大程度。 取值范围:[0x0, 0xFF],默认值为 0x10。 |
ae_mode |
自动曝光模式,自动降帧模式或固定帧率模式。 |
antiflicker |
抗闪属性设置。默认抗闪不使能。 |
subflicker |
亚抗闪属性设置。默认亚抗闪不使能。 |
ae_delay_attr |
延时属性设置。默认black_delay_frame=8, white_delay_frame=0。 |
manual_exp_value |
手动曝光量使能,该值为HI_TRUE时,AE算法采用exp_value作为当前曝光量进行曝光时间和增益等的分配,为HI_FALSE时采用自动计算的曝光量进行分配。默认为HI_FALSE。 |
exp_value |
手动曝光量值,等于曝光时间*系统增益,其中曝光时间的单位为微秒(us)。 取值范围:(0x0, 0xFFFFFFFF]。 |
fswdr_mode |
FSWDR运行模式。默认为HI_ISP_FSWDR_NORMAL_MODE。 |
wdr_quick |
WDR模式下,AE算法从稳定状态(亮度误差小于等于容忍偏差值tolerance)重新调整时,默认前 50 帧调整会进行时域滤波,以调整更加平滑。该值为HI_TRUE时,取消 50 帧时域滤波,使 AE 收敛速度更快。默认为HI_FALSE。 |
iso_cal_coef |
ISO标定系数,用于保证拍照所需DCF信息中显示的ISO是标准的,8bit精度。 取值范围:[0x0, 0xFFFF],默认值为 0x100。 |
注意事项
- 自动模式下,更改手动曝光属性的值不会生效。
- 自动曝光的最大最小时间及增益。
可根据不同的场景对曝光时间及增益进行限定,如有高速运动物体场景可限定最大曝光时间值为较小值,这样可减轻运动物体拖影现象。
为了防止图像过曝区域颜色不饱和,ISP内部会根据sensor黑电平自动修正Isp_dgain值,因此即使限制Isp_dgain最大值为 1024,Isp_dgain实际生效值仍会大于1024。如果需要强制ISPDGain为 1024, 可以通过手动模式实现,但是此时图像可能会出现亮区偏粉的问题。
- 自动曝光的系统增益
非扩展路径下,若(sensor模拟增益最小值*sensor数字增益最小值*ISP数字增益最小值)小于系统增益最小值,则AE算法内部计算时最小增益会被限制到系统增益的最小值。若(sensor模拟增益最大值*sensor数字增益最大值*ISP数字增益最大值)大于系统增益最大值,则AE算法内部计算时最大增益会被限制到系统增益的最大值。推荐通过设置系统增益的最大、最小值进行增益限制,分别限制sensor模拟增益、sensor数字增益和ISP数字增益时,若把较高精度的ISP数字增益限制到 1 倍,容易导致闪烁。
扩展路径下,采用系统增益的最大/最小值结合曝光时间的范围来限制曝光量的范围,sensor模拟增益、sensor数字增益及ISP 数字增益不直接受系统增益的影响。实际上,AE算法内部利用系统增益来计算最大/最小曝光量,而并不是直接限制某项增益的值。比如说系统增益最大值限制为 1 倍,但 sensor模拟增益的最小值限制为 2 倍,则实际生效的结果以sensor模拟增益的限制为准,sensor数字增益及ISP数字增益的限制也同理。手动模式下,系统增益不起作用,不对某项增益的值进行限制。
- 自动降帧时的系统增益门限值
- speed用于设定自动曝光时的收敛速度,该值越大曝光的收敛速度越快,但也会导致收敛过程中出现反复震荡。对于 Panasonic mn34220这款sensor,受sensor性能限制,在 2 帧合成WDR模式下,建议speed设置不能超过 64,否则在光线剧烈变化场景时可能出现闪烁。
- black_speed_bias用于设定画面由暗到亮AE调节速度的偏差值。默认speed下,画面从亮到暗的速度会快于画面从暗到亮的速度,若想双方向的AE调节速度差不多,可以调高black_speed_bias。
- 亮度补偿属性compensation用于调节曝光的目标亮度。曝光亮度补偿值越大则图像亮度越高。
- 曝光偏差属性ev_bias用于在特殊场景下对画面的目标亮度进行微调,也可认为是更高精度的亮度补偿值,通过调节该值来改变画面目标亮度,真实生效的AE目标亮度为compensation * ev_bias /1024。compensation不变时,该值越大则图像亮度越高。
- 曝光容忍偏差属性tolerance用于调节曝光对环境的灵敏度,曝光容忍偏差值越大则曝光越不敏感,且可能导致同一目标亮度值多次调节得到的亮度差异越大,所以该属性推荐不能设定过大。尤其当目标亮度较低时,tolerance较大,最终画面收敛亮度可能会有明显差异。通过改变ev_bias对画面目标亮度进行微调时,若tolerance较大,过小的ev_bias变化量可能会看不出调整效果。
- 曝光策略属性 ae_strategy_mode 用于选择对高光优先或低光优先的曝光策略。高光优先意味着对高光敏感,尽量避免画面过曝。低光优先意味着对低光敏感,尽量看清楚暗处区域,不管画面是否过曝。默认的曝光策略是高光优先,用户可根据场景需要进行调整。
- hist_ratio_slope用于设定感兴趣区域的权重。若是高光优先曝光模式,则该值设置的是高光区域的权重,该值越大,则意味着对高光区域越敏感。反之,若是低光优先模式,则该值设置的是低光区域的权重,该值越大,则意味着对暗处区域越敏感,建议 hist_ratio_slope的值设置不要超过 0x100。高光优先曝光模式下,如果该值过大,只要画面中有一小部分过曝区域,AE算法就会认为画面亮度远大于目标亮度,这样曝光量就会不断往下调,导致画面变得很黑,同时画面中的过曝区域也在快速变小,达到某个程度的话AE算法又会认为画面亮度比目标亮度小了,曝光量又会往上调,如此反复出现来回调的现象,看起来像是画面闪烁。类似的,在低光优先模式下,如果AE目标亮度设置得比较低,若画面中有黑色物体来回移动,对画面亮度也会有较大影响,此时调低曝光调整速度和提高容忍偏差tolerance能够缓解该问题。
- 自动曝光时,可设定感兴趣区域对统计平均值影响的最大程度max_hist_offset。
该值相当于对提高hist_ratio_slope时增加的权重做限制,若该值为0,无论hist_ratio_slope多大,也不会对高光或低光区域做特殊处理,此时的统计平均值就是原始值。通过合理设置该值,可以保证任何场景AE稳定后画面平均亮度都在一定范围内,在高光优先曝光模式下,如果该值设置较大,在对比度稍高一些的场景,如睛天室外场景,有天空有树木,则可能导致整体画面亮度偏低,因为此时优先保证了亮区天空的效果,通过限制该值从而限制对亮区的倾斜程度可以解决该问题。
- 曝光策略切换时,最好同时更新hist_ratio_slope和max_hist_offset的值,否则这2个值会采用默认配置,效果可能与预期不符。
- 在做强光抑制方案时,例如在RGBIR模式下,建议设置成高光优先曝光,通过降低AE目标亮度,同时适当设置 hist_ratio_slope和max_hist_offset为较大值来抑制强光,暗区则可以通过使能DRC来看清楚。低光优先则可以用于实现非指定区域的背光补偿。
- AE曝光控制类型为自动时,可设定曝光模式ae_mode。该值可设定为慢快门模式(SLOW_SHUTTER)或固定帧率模式。慢快门模式通常用于低照度场景下进行自动降帧,以减少画面噪声。
- 抗闪属性结构体antiflicker可用于设定抗闪使能,抗闪频率和抗闪模式等属性。FSWDR模式下,长帧抗闪有效,在优先帧为短帧且增益分开配置时,长短帧抗闪都有效。由于随着曝光比的变化,短帧曝光时间的最大值会受到限制,建议FSWDR模式使用自动抗闪模式。
- 亚抗闪属性结构体subflicker可用于设定亚抗闪使能及抗闪程度属性。若有自动光圈,建议关闭亚抗闪功能。
- AE曝光控制类型为自动时,可设定AE延时生效属性结构体ae_delay_attr。该值的合理设置可提高画面亮度的稳定性,防止快速运动物体经过导致画面亮度发生变化。低码率设置时可适当增加该值,以避免 AE 调节时出现块效应。
- 用户可以通过将manual_exp_value置为HI_TRUE,手动设置曝光量exp_value来屏蔽昇腾 AE 算法的曝光量调整部分,只用到曝光量分配部分。exp_value的值会受到最大、最小曝光量的限制。最大、最小曝光量分别对应最大、最小曝光时间与增益的乘积。
- WDR模式下,优先帧为长帧时,exp_time_range设置的是长帧的曝光时间范围,优先帧为短帧时,exp_time_range设置的是短帧的曝光时间范围。
- FSWDR运行模式改变时,需要相应修改cmos.c中的以下回调函数:cmos_long_frame_mode_set,cmos_get_ae_default,cmos_fps_set,cmos_get_inttime_max,以保证长、短帧曝光时间在合理范围内。正常WDR和长帧模式切换时,会回调 cmos_get_ae_default,更新曝光时间最大/最小值,增益最大/最小值,光圈最大/最小值和compensation等参数,同时,AE 内部会将hist_ratio_slope和max_hist_offset更新为算法默认值。需要注意的是,此时曝光比相关设置不会更新,仍会保持上一次的值。另外,长帧模式打开时,DRC强度会逐渐收敛至Auto目标值。客户可以根据需要,在切换完成后调用MPI接口修改参数。
平滑切换的前提是切换前/后短帧曝光量与长帧曝光量相等。当曝光比较大时,由于正常 WDR 模式会限制增益,而长帧模式为了保证低照度效果会放开增益限制,可能会导致切换前/后短帧曝光量与长帧曝光量不等,这样切换就会有几帧突然之间变亮或者变暗,属于正常现象。若要避免这种现象,可以在切换完成之后再放开增益限制。
- 长帧模式仅在行模式 WDR 下才有效,帧模式 WDR 把曝光比设置为 1:1,关闭运动检测,即可达到与行模式 WDR 长帧模式一样的效果。建议非行模式WDR 统一将 fswdr_mode 设置为 HI_ISP_FSWDR_NORMAL_MODE。
- 行模式 WDR 只曝光一次的 sensor 不支持长帧模式,如 OV2718。