定义自动曝光属性。
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数字增益的限制也同理。手动模式下,系统增益不起作用,不对某项增益的值进行限制。
该值相当于对提高hist_ratio_slope时增加的权重做限制,若该值为0,无论hist_ratio_slope多大,也不会对高光或低光区域做特殊处理,此时的统计平均值就是原始值。通过合理设置该值,可以保证任何场景AE稳定后画面平均亮度都在一定范围内,在高光优先曝光模式下,如果该值设置较大,在对比度稍高一些的场景,如睛天室外场景,有天空有树木,则可能导致整体画面亮度偏低,因为此时优先保证了亮区天空的效果,通过限制该值从而限制对亮区的倾斜程度可以解决该问题。
平滑切换的前提是切换前/后短帧曝光量与长帧曝光量相等。当曝光比较大时,由于正常 WDR 模式会限制增益,而长帧模式为了保证低照度效果会放开增益限制,可能会导致切换前/后短帧曝光量与长帧曝光量不等,这样切换就会有几帧突然之间变亮或者变暗,属于正常现象。若要避免这种现象,可以在切换完成之后再放开增益限制。