hi_isp_awb_attr_ex
说明
定义自动白平衡扩展属性。
定义
typedef struct { hi_u8 tolerance; hi_u8 zone_radius; hi_u16 curve_l_limit; hi_u16 curve_r_limit; hi_bool extra_light_en; hi_isp_awb_extra_light_source_info light_info[HI_ISP_AWB_LS_NUM]; hi_isp_awb_in_out_attr in_or_out; hi_bool multi_light_source_en; hi_isp_awb_multi_ls_type multi_ls_type; hi_u16 multi_ls_scaler; hi_u16 multi_ct_bin[HI_ISP_AWB_MULTI_CT_NUM]; hi_u16 multi_ct_wt[HI_ISP_AWB_MULTI_CT_NUM]; hi_bool fine_tun_en; hi_u8 fine_tun_strength; } hi_isp_awb_attr_ex;
成员
成员名称 |
描述 |
---|---|
tolerance |
自动白平衡调整的偏差范围,检测误差在门限范围内时,AWB不动作。 取值范围:[0x0,0xFF] |
zone_radius |
自动白平衡统计中对像素分类时用的距离范围。该值越小,AWB精度越高,但会降低 AWB算法稳定性。 取值范围:[0x0,0xFF] |
curve_l_limit |
自动白平衡色温曲线的左边界限。取值范围:[0x0,0x100] |
curve_r_limit |
自动白平衡色温曲线的右边界限。取值范围:[0x100,0xFFF] |
extra_light_en |
自动白平衡计算时是否考虑色温曲线外的独立光源点。 取值范围:
|
light_info[HI_ISP_AWB_LS_NUM] |
色温曲线外的独立光源点的信息, 最多可以添加 4 个。 #define HI_ISP_AWB_LS_NUM 4 |
in_or_out |
自动白平衡对场景做室内外判断的参数。 |
multi_light_source_en |
自动白平衡检测当前场景是否为混合光源,根据混合光源程度调整饱和度或CCM。 取值范围:
|
multi_ls_type |
混合光源调整策略选择,支持调整饱和度或CCM。 取值范围:
|
multi_ls_scaler |
混合光源下,饱和度或CCM最大调整幅度。实际调整幅度还和场景混合光源程度有关。 取值范围:[0x0, 0x100] |
multi_ct_bin[HI_ISP_AWB_MULTI_CT_NUM] |
混合光源下的色温分段参数。 取值范围:[0x0, 0xFFFF],要求为单调递增序列。 #define HI_ISP_AWB_MULTI_CT_NUM 8 |
multi_ct_wt[HI_ISP_AWB_MULTI_CT_NUM] |
混合光源下的色温权重参数。 取值范围:[0x0, 0x400] #define HI_ISP_AWB_MULTI_CT_NUM 8 |
fine_tun_en |
自动白平衡特殊色检测开关,包括肤色检测等。 取值范围:
|
fine_tun_strength |
肤色、蓝色等单色检测的强度。仅在fine_tun_en使能时有效。取值范围:[0x0, 0xFF] |
图 色温曲线的参数示意
图 混合光源场景色温权重设置示例说明(n 为色温分段点个数)
注意事项
- tolerance是AWB的灵敏度参数。该值为0时,AWB系数实时更新,CPU占用较高;该值较大时,AWB在检测到环境色温变化时再更新AWB系数,CPU占用较低,但在环境色温微调时,AWB可能出现轻微的偏色。推荐室外应用时tolerance置为 0,室内应用时置为 2。
- zone_radius是选择光源环境白色块的色差半径。zone_radius越大,白色块的限制条件越宽,找到的白色块较多,稳定性稍好,精度稍低;zone_radius越小,白色块的限制条件越严格,找到的白色块较少,AWB精度更高。在混合光源的应用场景,推荐zone_radius比普通场景稍大。
- curve_l_limit取值<=0x100, curve_r_limit取值>=0x100。curve_l_limit和curve_r_limit两个参数用来排除颜色块。如图4-3 所示,curve_l_limit排除了左侧的阴影区域,curve_l_limit排除了右侧的阴影区域。
- AWB算法支持在色温曲线外,再增加独立光源点信息,提升特殊光源下的AWB表现。
- multi_light_source_en使能后,AWB算法判断场景是否混合光源,在混合光源场景,自动降低饱和度或调整CCM,以减弱偏色程度。最大调整幅度由multi_ls_scaler决定。调整CCM方式会改变色调。
- multi_ls_type= HI_ISP_AWB_MULTI_LS_SAT时,调整饱和度来改善混合光源场景的偏色。multi_ls_scaler/0x100表示饱和度增益系数的下限。multi_ls_scaler=0xC0,表示饱和度的增益系数下限是0xC0/0x100 = 0.75,图像饱和度的波动范围是[0.75, 1.0]( 1.0 表示关闭 multi_light_source_en 功能的图像饱和度); multi_ls_scaler=0x0,表示饱和度的增益系数下限是 0x0/0x100 =0,图像饱和度的波动范围是[0, 1],在混合光源下图像可能变黑白。multi_ls_scaler取值越小,图像饱和度的波动范围越大,颜色稳定性下降。
- multi_ls_type= HI_ISP_AWB_MULTI_LS_CCM时,调整CCM来改善混合光源场景的偏色。multi_ls_scaler/0x100表示CCM 的调整幅度,取值越大,图像饱和度越低。multi_ls_scaler=0xC0,表示CCM的最大调整幅度为0xC0; multi_ls_scaler=0x0,表示CCM的最大调整幅度为0,等效于multi_light_source_en=0。
- 昇腾AWB算法在WDR模式自动关闭混合光源判断功能。
- multi_ct_bin、multi_ct_wt两组参数的合理配置,可以改善混合光源高色温或低色温区域颜色表现。在非混合光源场景,参数配置不生效。图4-3说明色温和权重配置的映射关系。
- 如果混合光源场景希望使能色温权重来改善AWB表现,但不做饱和度或CCM调解,可配置如下:multi_light_source_en=HI_TRUE, multi_ls_type=HI_ISP_AWB_MULTI_LS_SAT,multi_ls_scaler=0x100。
- fine_tun_en打开,AWB会自动检测肤色等特殊色,改善肤色场景AWB表现,提高AWB精度。但可能在蓝色背景+3500K 光源时发生误判,导致图像轻微偏黄。
- fine_tun_strength调整肤色检测的强度,取值越大,肤色场景AWB表现越好,但肤色误判时的副作用越明显。推荐采用默认值0x80。