5. AWB¶
5.1. 概述¶
色温随可见光的光谱成分变化而变化,在低色温光源下,白色物体偏红,在高色温光源下,白色物体偏蓝。人眼可根据大脑的记忆判断,识别物体的真实颜色, AWB 算法功能是降低外界光源对物体真实颜色的影响,使得我们采集的颜色信息转变为在理想日光光源下的无偏色信息
5.2. 重要概念¶
色温:色温是按绝对黑体来定义的, 光源的辐射在可见区和绝对黑体的辐射完全相同时,此时黑体的温度就称此光源的色温。
白平衡: 在不同色温的光源下,白色在传感器中的响应会偏蓝或偏红。白平衡算法通过调整R, G, B 三个颜色通道的强度,使白色真实呈现。
5.3. 功能描述¶
AWB 模块有硬件的 WB 信息统计模块及 AWB 策略控制算法 firmware 两部分组成。
ISP的 WB 信息统计模块判断 sensor 输出的每个像素是否满足用户设定的白点条件,计算所有满足条件的像素的 R、 G、 B 三个颜色通道平均值。
其支持将图像分成 M*N(M 行 N 列)区域,统计每个区域的 R、 G、 B 均值以及参与统计的白点个数,也支持输出整幅图像的 R、 G、 B 均值以及参与统计的白点个数。
AWB 工作原理如图 4-1 所示

图 5.1 图4-1 AWB 工作原理图¶
5.4. API参考¶
5.4.1. AWB库接口¶
所有 AWB 库接口都只是针对 CVI AWB 库,如果客户自己实现 AWB 库,不需要管这些接口,同时也无法使用这些接口。
CVI_AWB_Register :向 ISP 注册 AWB 库。
CVI_AWB_UnRegister :向 ISP 注销 AWB 库。
CVI_AWB_SensorRegCallBack : AWB 库提供的 sensor 注册的回调接口
CVI_AWB_SensorUnRegCallBack : AWB库提供的 sensor 注消的回调接口
5.4.1.1. CVI_AWB_Register¶
【描述】
向 ISP 注册 AWB 库。
【语法】
CVI_S32 CVI_AWB_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstAwbLib |
AWB 算法库结构体指针 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
该接口调用了 ISP 库提供的 AWB 注册回调接口 CVI_ISP_AWBLibRegCallBack ,以实现 AWB 向 ISP 库注册的功能。
此接口不支持多进程操作。
此接口在双系统 SDK 的 linux 侧暂不支持。
【举例】
无。
【相关主题】
无。
5.4.1.2. CVI_AWB_UnRegister¶
【描述】
向 ISP 反注册 AWB 库。
【语法】
CVI_S32 CVI_AWB_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstAwbLib |
AWB 算法库结构体指针 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
该接口调用了 ISP 库提供的 AWB 反注册回调接口 CVI_ISP_AWBLibUnRegCallBack ,以实现 AWB 向 ISP 库反注册的功能。
此接口不支持多进程操作。
此接口在双系统 SDK 的 linux 侧暂不支持。
【举例】
无。
【相关主题】
无。
5.4.1.3. CVI_AWB_SensorRegCallBack¶
【描述】
AWB 库提供的 sensor 注册的回调接口。
【语法】
CVI_S32 CVI_AWB_SensorRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib, ISP_SNS_ATTR_INFO_S *pstSnsAttrInfo, AWB_SENSOR_REGISTER_S *pstRegister);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstAeLib |
AWB 算法库结构体指针 |
输入 |
pstSnsAttrInfo |
向 AWB 注册的 Sensor 的属性 |
输入 |
pstRegister |
Sensor 注册结构体指针 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
SensorId 是 sensor 库中自定义的值,主要用于校对向 ISP 注册的 sensor 和向 3A 注册的 sensor 是否为同一个 sensor。
AWB 通过 sensor 注册的一系列回调接口,获取差异化的初始化参数,并控制sensor。
此接口不支持多进程操作。
此接口在双系统 SDK 的 linux 侧暂不支持。

图 5.2 图4-2 AWB 库与 sensor 库间的接口¶
【举例】
无。
【相关主题】
无。
5.4.1.4. CVI_AWB_SensorUnRegCallBack¶
【描述】
AWB 库提供的 sensor 反注册的回调接口。
【语法】
CVI_S32 CVI_AWB_SensorUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAwbLib, SENSOR_ID SensorId);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstAwbLib |
AWB 算法库结构体指针 |
输入 |
SensorId |
向 AWB 反注册的 Sensor 的 Id |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
SensorId 是 sensor 库中自定义的值,主要用于校对向 ISP 注册的 sensor 和向 3A 注册的 sensor 是否为同一个 sensor。
此接口不支持多进程操作。
此接口在双系统 SDK 的 linux 侧暂不支持。
【举例】
无。
【相关主题】
无。
5.4.2. AWB 控制模块¶
CVI_ISP_SetWBAttr :设置白平衡属性。
CVI_ISP_GetWBAttr :获取白平衡属性。
CVI_ISP_SetAWBAttrEx :设置白平衡扩展属性。
CVI_ISP_GetAWBAttrEx :获取白平衡扩展属性。
CVI_ISP_QueryWBINfo :获取当前白平衡增益系数,检测色温,饱和度值,颜色校正矩阵系数。
CVI_ISP_SetAWBLogPath :使用CVI Awb lib 时,存放AWB 调试日志的路径。
CVI_ISP_SetAWBLogName :使用CVI Awb lib 时,存放AWB 调试日志的名称。
CVI_ISP_GetGrayWorldAwbInfo :获取灰世界WB信息。
5.4.2.1. CVI_ISP_SetWBAttr¶
【描述】
设置白平衡属性。
【语法】
CVI_S32 CVI_ISP_SetWBAttr(VI_PIPE ViPipe, const ISP_WB_ATTR_S *pstWBAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstWBAttr |
白平衡属性结构体指针 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
白平衡控制类型为自动时, AWB 算法自动调节白平衡系数。
白平衡控制类型为手动时, AWB 算法失效,需自行设定 Rgain、 Ggain、 Bgain。
环境色温、照度会影响白点的分布范围,CVI AWB 算法在运行过程中,会根据环境参数自动刷新 AWB Byaer 域统计信息的白点参数。用户希望在 CVI AWB 算法运行时修改 AWB统计参数,需要调用 CVI_ISP_SetWBAttr接口,关闭统计参数自动刷新功能。用户关闭统计参数自动刷新功能,到 ISP 收到配置并响应,有 2帧的延时。因此,用户设置后需要等待 2帧时间再修改 AWB 统计参数。
【举例】
无。
【相关主题】
5.4.2.2. CVI_ISP_GetWBAttr¶
【描述】
获取白平衡属性。
【语法】
CVI_S32 CVI_ISP_GetWBAttr(VI_PIPE ViPipe, ISP_WB_ATTR_S *pstWBAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstWBAttr |
白平衡属性结构体指针 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
无。
【举例】
无。
【相关主题】
5.4.2.3. CVI_ISP_SetAWBAttrEx¶
【描述】
设置白平衡扩展属性。
【语法】
CVI_S32 CVI_ISP_SetAWBAttrEx(VI_PIPE ViPipe, const ISP_AWB_ATTR_EX_S *pstAWBAttrEx);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
PstAWBAttrEx |
扩展白平衡属性结构体指针 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
当 CVI_ISP_SetWBAttr 接口成员 pstWBAttr->enAlgType 为 AWB_ALG_ADVANCE时,此接口才有效。
【举例】
无。
【相关主题】
5.4.2.4. CVI_ISP_GetAWBAttrEx¶
【描述】
获取白平衡扩展属性。
【语法】
CVI_S32 CVI_ISP_GetAWBAttrEx(VI_PIPE ViPipe, ISP_AWB_ATTR_EX_S *pstAWBAttrEx);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
pstAWBAttrEx |
扩返回展白平衡属性结构体指针 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
无。
【举例】
无。
【相关主题】
5.4.2.5. CVI_ISP_QueryWBInfo¶
【描述】
获取当前白平衡增益系数、检测色温、饱和度值、颜色校正矩阵系数。
【语法】
CVI_S32 CVI_ISP_QueryWBInfo(VI_PIPE ViPipe, ISP_WB_INFO_S *pstWBInfo);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe 号 |
输入 |
PstWBInfo |
颜色相关状态参数 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
无。
【举例】
无。
【相关主题】
无。
5.4.2.6. CVI_ISP_SetAWBLogPath¶
【描述】
使用CVI Awb lib 时,存放AWB 调试日志的路径。
【语法】
CVI_S32 CVI_ISP_SetAWBLogPath(const char *szPath)
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
szPath |
调试日志路径 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
默认路径为 /var/log
此接口在双系统 SDK 的 linux 侧暂不支持。
【举例】
无。
【相关主题】
无。
5.4.2.7. CVI_ISP_SetAWBLogName¶
【描述】
使用CVI Awb lib 时,存放AWB 调试日志的档名。
【语法】
CVI_S32 CVI_ISP_SetAWBLogName(const char *szName)
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
szName |
文件名 |
输入 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
预设文件名为AwbLog0.txt
此接口在双系统 SDK 的 linux 侧暂不支持。
【举例】
无。
【相关主题】
无。
5.4.2.8. CVI_ISP_GetGrayWorldAwbInfo¶
【描述】
获取灰度世界WB信息。
【语法】
CVI_S32 CVI_ISP_GetGrayWorldAwbInfo(VI_PIPE ViPipe, CVI_U16 *pRgain, CVI_U16 *pBgain);
【参数】
参数名称 |
描述 |
输入/输出 |
---|---|---|
ViPipe |
ViPipe号 |
输入 |
pRgain |
R通道增益 |
输出 |
pBgain |
B通道增益 |
输出 |
【返回值】
返回值 |
描述 |
---|---|
0 |
成功。 |
非 0 |
失败,请参见 错误码。 |
【需求】
头文件:cvi_awb.h
库文件:libawb.a
【注意】
无。
【举例】
无。
【相关主题】
无。
5.5. 数据类型¶
5.5.1. Register¶
AWB_SENSOR_REGISTER_S :定义 sensor 注册结构体。
AWB_SENSOR_EXP_FUNC_S :定义 sensor 回调函数结构体。
AWB_SENSOR_DEFAULT_S :定义 AWB 算法库的初始化参数结构体。
AWB_SPEC_SENSOR_DEFAULT_S :定义 SPECAWB 算法的初始化参数结构体。
AWB_AGC_TABLE_S : 定义饱和度初始化参数结构体。
AWB_CCM_TAB_S : 定义不同色温下自动颜色校正矩阵系数。
AWB_CCM_S : 定义 CCM 颜色校正矩阵属性。
5.5.2. WB¶
ISP_AWB_ATTR_S :定义 ISP 自动白平衡属性。
ISP_AWB_CBCR_TRACK_ATTR_S : 定义 Bayer 域统计信息的联动参数。
ISP_AWB_LUM_HISTGRAM_ATTR_S : 定义白平衡的亮度直方图统计参数。
ISP_AWB_ALG_E :定义白平衡的计算方式属性。
ISP_AWB_CT_LIMIT_ATTR_S :定义白平衡的增益范围限制属性。
ISP_MWB_ATTR_S :定义 ISP 手动白平衡属性。
ISP_WB_ATTR_S :定义白平衡属性。
ISP_AWB_ALG_TYPE_E :定义AWB算法属性。
ISP_AWB_ATTR_EX_S :定义自动白平衡扩展属性。
ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S :定义独立光源点的信息。
ISP_AWB_IN_OUT_ATTR_S :对场景作室内外的判定。
ISP_AWB_MULTI_LS_TYPE_E :定义混合光源下的 AWB 策略类型。
ISP_AWB_INDOOR_OUTDOOR_STATUS_E :定义AWB室内室外状态。
ISP_WB_INFO_S :定义白平衡、饱和度、颜色校正信息。
5.5.2.1. ISP_MWB_ATTR_S¶
【说明】
定义手动WB
【定义】
typedef struct _ISP_MWB_ATTR_S {
CVI_U16 u16Rgain;
CVI_U16 u16Grgain;
CVI_U16 u16Gbgain;
CVI_U16 u16Bgain;
} ISP_MWB_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
u16Rgain |
MWB 时的R 通道增益 |
u16Grgain |
MWB 时的Gr 通道增益 |
u16Grgain |
MWB 时的Gb 通道增益 |
u16Bgain |
MWB 时的B 通道增益 |
【注意事项】
RGB通道增益一倍为0x400
【相关数据类型及接口】
无。
5.5.2.2. ISP_AWB_CT_LIMIT_ATTR_S¶
【说明】
定义白平衡的增益范围限制属性
【定义】
typedef struct _ISP_AWB_CT_LIMIT_ATTR_S {
CVI_BOOL bEnable;
ISP_OP_TYPE_E enOpType;
CVI_U16 u16HighRgLimit;
CVI_U16 u16HighBgLimit;
CVI_U16 u16LowRgLimit;
CVI_U16 u16LowBgLimit;
} ISP_AWB_CT_LIMIT_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
bEnable |
白平衡的增益范围限制开关 |
enOpType |
自动或手动设定自平衡的增益范围 |
u16HighRgLimit |
手动模式下高色温下的最大R增益 |
u16HighBgLimit |
手动模式下高色温下的最小B增益 |
u16LowRgLimit |
手动模式下低色温下的最小R增益 |
u16LowBgLimit |
手动模式下低色温下的最大B增益 |
【注意事项】
自动模式下AWB算法会自己计算上下限增益值,当切换为手动模式时,会使用上述四个R.B 增益的限制值
一倍增益为0x400
【相关数据类型及接口】
无。
5.5.2.3. ISP_AWB_ALG_E¶
【说明】
定义AWB 算法类别
【定义】
typedef enum _ISP_AWB_ALG_E {
ALG_AWB,
ALG_AWB_SPEC,
ALG_BUTT
} ISP_AWB_ALG_E;
【成员】
成员名称 |
描述 |
---|---|
AWB |
一般 AWB 算法返回 |
ALG_AWB_SPEC |
基于 machine learning 的 AWB 算法,目前不支持。 |
【注意事项】
无。
【相关数据类型及接口】
无。
5.5.2.4. ISP_AWB_ATTR_S¶
【说明】
定义自动WB属性
【定义】
typedef struct _ISP_AWB_ATTR_S {
CVI_BOOL bEnable;
CVI_U16 u16RefColorTemp;
CVI_U16 au16StaticWB[ISP_BAYER_CHN_NUM];
CVI_S32 as32CurvePara[AWB_CURVE_PARA_NUM];
ISP_AWB_ALG_TYPE_E enAlgType;
CVI_U8 u8RGStrength;
CVI_U8 u8BGStrength;
CVI_U16 u16Speed;
CVI_U16 u16ZoneSel;
CVI_U16 u16HighColorTemp;
CVI_U16 u16LowColorTemp;
ISP_AWB_CT_LIMIT_ATTR_S stCTLimit;
CVI_BOOL bShiftLimitEn;
CVI_U16 u16ShiftLimit[AWB_CURVE_BOUND_NUM];
CVI_BOOL bGainNormEn;
CVI_BOOL bNaturalCastEn;
ISP_AWB_CBCR_TRACK_ATTR_S stCbCrTrack;
ISP_AWB_LUM_HISTGRAM_ATTR_S stLumaHist;
CVI_BOOL bAWBZoneWtEn;
CVI_U8 au8ZoneWt[AWB_ZONE_ORIG_ROW * AWB_ZONE_ORIG_COLUMN];
} ISP_AWB_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
bEnable |
自动白平衡算法开关 |
u16RefColorTemp |
静态 白平衡的光源色温值,建议为5000K灯源 |
au16StaticWB |
静态白平衡系数,由AWB 标定工具给出。返回 取值范围:[0, 0x3FFF]。 |
as32CurvePara |
CurvePara[0-2] 普朗克曲线系数,由AWB 标定工具给出。普朗克曲线描绘白色块返回 在不同色温的标准光源下的颜色表现。 CurvePara[3-5] 色温曲线系数,由AWB标定工具给出。色温曲线描 绘 白色块的颜色表现与色温的对应关系。 |
enAlgType |
AWB算法类别选择, AWB_ALG_LOWCOST,AWB_ALG_ADVANCE两种 ISP_AWB_ATTR_EX_S 扩展属性只有在AWB_ALG_ADVANCE才有作用 |
u8RGStrength |
自动白平衡R通道校准强度。 取值范围:[0, 255] |
u8BGStrength |
自动白平衡B通道校准强度。 取值范围:[0, 255] |
u16Speed |
自动白平衡算法收敛速度。 取值范围:[0, 4095] |
u16ZoneSel |
参数 为0或255时,采用近似灰世界的白平衡算 法,其他值则为进行分类筛选,提升精度 |
u16HighColorTemp |
自动白平衡算法的色温上限。 取值范围:[8000, 10000] |
u16LowColorTemp |
自动白平衡算法的色温下限。 取值范围:[0x0, u8HighColorTemp) |
stCTLimit |
手动或自动限制白平衡增益值 |
bShiftLimitEn |
AWB超过类白点范围的增益映像回白点范围的开关 |
u16ShiftLimit |
AWB 计算白点范围参数 |
bGainNormEn |
对 RGB 通道增益进行返回 限制,可以改善低色温、低照度场景的 信噪比,预设开启 |
bNaturalCastEn |
低色温下AWB风格喜好开关。预设关闭 |
stCbCrTrack |
AWB统计范围与ISO的连动参数 |
stLumaHist |
AWB亮度与权重参数 |
bAWBZoneWtEn |
画面分区权重开关,预设为关闭 |
au8ZoneWt |
32x32画面权重,取值范围[0,0xFF] (尚未实作)返回 |
【注意事项】
无。
【相关数据类型及接口】
无。
5.5.2.5. ISP_AWB_ALG_TYPE_E¶
【说明】
定义AWB算法属性
【定义】
typedef enum _ISP_AWB_ALG_TYPE_E {
AWB_ALG_LOWCOST,
AWB_ALG_ADVANCE,
AWB_ALG_BUTT
} ISP_AWB_ALG_TYPE_E;
【成员】
成员名称 |
描述 |
---|---|
AWB_ALG_LOWCOST |
简易低运算量的AWB算法 |
AWB_ALG_ADVANCE |
进阶扩 展AWB算法,与ISP_AWB_ATTR_EX_S相关 |
AWB_ALG_BUTT |
无效设定值返回 |
【注意事项】
无。
【相关数据类型及接口】
5.5.2.6. ISP_AWB_CBCR_TRACK_ATTR_S¶
【说明】
定义AWB统计范围与ISO的连动参数
【定义】
typedef struct _ISP_AWB_CBCR_TRACK_ATTR_S {
CVI_BOOL bEnable;
CVI_U16 au16CrMax[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U16 au16CrMin[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U16 au16CbMax[ISP_AUTO_ISO_STRENGTH_NUM];
CVI_U16 au16CbMin[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_AWB_CBCR_TRACK_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
bEnable |
AWB统计范围与ISO的连动开关 |
au16CrMax |
不同ISO下R/G的最大值 |
au16CrMin |
不同ISO下R/G的最小值 |
au16CbMax |
不同ISO下B/G的最大值 |
au16CbMin |
不同ISO下B/G的最小值 |
【注意事项】
建议在低色温下标定CrMax(R/G),CbMin(B/G)
【相关数据类型及接口】
无。
5.5.2.7. ISP_AWB_LUM_HISTGRAM_ATTR_S¶
【说明】
定义AWB亮度与权重参数
【定义】
typedef struct _ISP_AWB_LUM_HISTGRAM_ATTR_S {
CVI_BOOL bEnable;
ISP_OP_TYPE_E enOpType;
CVI_U8 au8HistThresh[AWB_LUM_HIST_NUM];
CVI_U16 au16HistWt[AWB_LUM_HIST_NUM];
} ISP_AWB_LUM_HISTGRAM_ATTR_S;
宏定义如下
#define AWB_LUM_HIST_NUM (6)
【成员】
成员名称 |
描述 |
---|---|
bEnable |
不同亮度是否开启权重,预设开启 |
enOpType |
自动模式:AWB自动分配权重 手动模式:用户可自行设定亮度分类与权重 |
au8HistThresh |
亮度分类的阈值(手动模式下有效) |
au16HistWt |
亮度分类的权重(手动模式下有效) |
【注意事项】
au8HistThresh[0] 固定为0,au8HistThresh[5]固定为255.
au8HistThresh[i+1]必须大于au8HistThresh[i];
au16HistWt 权重范围为32~512
【相关数据类型及接口】
无。
5.5.2.8. ISP_WB_ATTR_S¶
【说明】
定义白平衡属性
【定义】
typedef struct _ISP_WB_ATTR_S {
CVI_BOOL bByPass;
CVI_U8 u8AWBRunInterval;
ISP_OP_TYPE_E enOpType;
ISP_MWB_ATTR_S stManual;
ISP_AWB_ATTR_S stAuto;
ISP_AWB_ALG_E enAlgType;
CVI_U8 u8DebugMode;
} ISP_WB_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
bByPass |
白平衡模块Bypass使能,默认值 CVI_FALSE。返回 |
u8AWBRunInterval |
白平衡模块工作频率。 取值范围:[0x1, 0xFF] |
enOpType |
自动白平衡和手动白平衡切换。 |
stManual |
手动参数 |
stAuto |
自动参数 |
enAlgType |
AWB 算法类别返回 |
u8DebugMode |
Debug 时使用,一般不需设定 |
【注意事项】
bByPass为TRUE时,WB其他参数设定不生效,RGB通道增益固定为一倍0x400
u8AWBRunInterval默认值为6,表示每6帧执行一次AWB,可根据需求增加此数值,让AWB运行频率降低
【相关数据类型及接口】
无。
5.5.2.9. ISP_AWB_ATTR_EX_S¶
【说明】
定义自动白平衡扩展属性
【定义】
typedef struct _ISP_AWB_ATTR_EX_S {
CVI_U8 u8Tolerance;
CVI_U8 u8ZoneRadius;
CVI_U16 u16CurveLLimit;
CVI_U16 u16CurveRLimit;
CVI_BOOL bExtraLightEn;
ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S stLightInfo[AWB_LS_NUM];
ISP_AWB_IN_OUT_ATTR_S stInOrOut;
CVI_BOOL bMultiLightSourceEn;
ISP_AWB_MULTI_LS_TYPE_E enMultiLSType;
CVI_U16 u16MultiLSScaler;
CVI_U16 au16MultiCTBin[AWB_CT_BIN_NUM];
CVI_U16 au16MultiCTWt[AWB_CT_BIN_NUM];
CVI_BOOL bFineTunEn;
CVI_U8 u8FineTunStrength;
//AWB Algo 6
struct ST_ISP_AWB_INTERFERNCE_S stInterfernce;
struct ST_ISP_AWB_SKIN_S stSkin;
struct ST_ISP_AWB_SKY_S stSky;
struct ST_ISP_AWB_GRASS_S stGrass;
struct ST_ISP_AWB_CT_WGT_S stCtLv;
struct ST_ISP_AWB_SHIFT_LV_S stShiftLv;
struct ST_ISP_AWB_REGION_S stRegion;
CVI_U8 adjBgainMode;
CVI_U8 reserve[239];
} ISP_AWB_ATTR_EX_S;
// 宏定义如下:
#define AWB_CT_BIN_NUM (8)
#define AWB_LS_NUM (4)
【成员】
成员名称 |
描述 |
---|---|
u8Tolerance |
AWB调整的偏差返回 范围,误差在此范围内时,AWB不做调整 |
u8ZoneRadius |
AWB统计值分区的大小。该值越小,AWB 精度越高,但会降低 AWB 算法稳定性 |
u16CurveLLimit |
AWB色温曲线返回 的左边界限(R/G,B/G), 取值范围:[0x0, 0x200] |
u16CurveRLimit |
AWB色温曲线的右边界限(R/G,B/G),范围:[0x200, 0x3FF] |
bExtraLightEn |
是否开启独立光源 |
stLightInfo |
AWB计算时是否考虑色 温曲线外的独立光源点,最多四个独立点 |
stInOrOut |
AWB对场景做室内外判断的参数 |
bMultiLightSourceEn |
AWB检测当前场返回 景是否为混合光源,来调整饱和度或CCM |
enMultiLSType |
调整饱和度或是CCM |
u16MultiLSScaler |
当混合光源下调整饱和度或CCM的强度 |
au16MultiCTBin |
色温分段参数,须为递增序列 |
au16MultiCTWt |
色温分段权重,范围:[0x0, 0x400] |
bFineTunEn |
AWB特殊色检测开关,例如肤色 |
u8FineTunStrength |
肤色、蓝色等特殊色检测的强度 |
【注意事项】
ISP_AWB_ATTR_EX_S 扩展属性只有在 pstWBAttr->enAlgType 为AWB_ALG_ADVANCE才有作用
u8Tolerance为AWB的灵敏度参数,值为0时,AWB参数会实时更新,值比较大时,环境色温微微变化时并不会更新AWB参数,画面会轻微的偏色,建议户外为0,室内设置为2
u16CurveLLimit 取值<512,主要为排除绿色物体, u16CurveRLimit取值>512,为排除偏紫色区域
bMultiLightSourceEn 开启后,AWB会判断场景是否为混光源,在这样的场景下会降低饱和度或是CCM,以减少偏色
WDR模式下会自动关闭混光源侦测功能
【相关数据类型及接口】
无。
5.5.2.10. ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S¶
【说明】
定义独立光源点的参数
【定义】
typedef struct _ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S {
CVI_U16 u16WhiteRgain;
CVI_U16 u16WhiteBgain;
CVI_U16 u16ExpQuant;
CVI_U8 u8LightStatus;
CVI_U8 u8Radius;
} ISP_AWB_EXTRA_LIGHTSOURCE_INFO_S;
【成员】
成员名称 |
描述 |
---|---|
u16WhiteRgain |
特殊光源点的R通道增益 |
u16WhiteBgain |
特殊光源点的B通道增益 |
u16ExpQuant |
根据外在亮度做判断。 ExpQuant 为开启的亮度限制值 例如 ExpQuant = 6, 表示LV6以下返回 开启此WB光源点(一般夜景为LV6以下) ExpQuant =106 表示LV6以上开启 ExpQuant =112 表示LV12以上开启(LV12一般为户外) |
u8LightStatus |
特殊光源点的种类, 0:不作动 1:加入光源点返回 2:删除光源点附近的计算 |
u8Radius |
特殊光源点的区域大小, 取值范围:[0x0, 0xFF] |
【注意事项】
无。
【相关数据类型及接口】
无。
5.5.2.11. ISP_AWB_IN_OUT_ATTR_S¶
【说明】
定义AWB对场景做户外室内判断的参数
【定义】
typedef struct _ISP_AWB_IN_OUT_ATTR_S {
CVI_BOOL bEnable;
ISP_OP_TYPE_E enOpType;
ISP_AWB_INDOOR_OUTDOOR_STATUS_E enOutdoorStatus;
CVI_U32 u32OutThresh;
CVI_U16 u16LowStart;
CVI_U16 u16LowStop;
CVI_U16 u16HighStart;
CVI_U16 u16HighStop;
CVI_BOOL bGreenEnhanceEn;
CVI_U u8OutShiftLimit;
} ISP_AWB_IN_OUT_ATTR_S;
【成员】
成员名称 |
描述 |
---|---|
bEnable |
判断场景为室内室外的开关 |
enOpType |
判断室内室外(自动或手动) |
enOutdoorStatus |
室内或室外模式(手动模式下) |
u32OutThresh |
判定室内室外的阈值, 亮度小于时,则判定为室内,户外LV大多超过 15 |
u16LowStart |
将低色温的权返回 重拉低,低色温区的起始点,建议为5000K |
u16LowStop |
将低色温的权重返回 拉低,低色温区的终止点,建议为4500K, 取值范围:(0,u16LowStart) |
u16HighStart |
将 高色温的权重拉低,高色温区的起始点, 建议为6500K, 取值范围:(u16LowStart, 0xFFFF] |
u16HighStop |
将高色温的权重返回 拉低,高色温区的终止点,建议为8000K, 取值范围:(u16HighStart, 0xFFFF] |
bGreenEnhanceEn |
在 绿色植物场景下,对绿色通道增加的开关 |
u8OutShiftLimit |
当判定 为户外场景时,AWB算法的白点范围限制 |
【注意事项】
户外亮度大多LV大于15所以u32OutThresh 建议为大于15
四个参数的取值范围要求:u16LowStop<u16LowStart<u16HighStart<u16HighStop
【相关数据类型及接口】
如下图, u16LowStop为3800K, u16LowStart为5000K
u16HighStart为6200K, u16HighStop为7200K
一般权重为32,室外色温最高权重为256

5.5.2.12. ISP_AWB_MULTI_LS_TYPE_E¶
【说明】
定义混光源下AWB的策略
【定义】
typedef enum _ISP_AWB_MULTI_LS_TYPE_E {
AWB_MULTI_LS_SAT,
AWB_MULTI_LS_CCM,
AWB_MULTI_LS_BUTT
} ISP_AWB_MULTI_LS_TYPE_E;
【成员】
成员名称 |
描述 |
---|---|
AWB_MULTI_LS_SAT |
混合光源下调整饱和度 |
AWB_MULTI_LS_CCM |
混合光源下调整CCM |
AWB_MULTI_LS_BUTT |
无效 |
【注意事项】
无。
【相关数据类型及接口】
无。
5.5.2.13. ISP_AWB_INDOOR_OUTDOOR_STATUS_E¶
【说明】
定义AWB室内室外状态
【定义】
typedef enum _ISP_AWB_INDOOR_OUTDOOR_STATUS_E {
AWB_INDOOR_MODE,
AWB_OUTDOOR_MODE,
AWB_INDOOR_OUTDOOR_BUTT
} ISP_AWB_INDOOR_OUTDOOR_STATUS_E;
【成员】
成员名称 |
描述 |
---|---|
AWB_INDOOR_MODE |
室内模式 |
AWB_OUTDOOR_MODE |
室外模式 |
AWB_INDOOR_OUTDOOR_BUTT |
无效 |
【注意事项】
无。
【相关数据类型及接口】
无。
5.5.2.14. ISP_WB_INFO_S¶
【说明】
定义白平衡,饱和度,颜色校正信息
【定义】
typedef struct _ISP_WB_INFO_S {
CVI_U16 u16Rgain;
CVI_U16 u16Grgain;
CVI_U16 u16Gbgain;
CVI_U16 u16Bgain;
CVI_U16 u16Saturation;
CVI_U16 u16ColorTemp;
CVI_U16 au16CCM[CCM_MATRIX_SIZE];
CVI_U16 u16LS0CT;
CVI_U16 u16LS1CT;
CVI_U16 u16LS0Area;
CVI_U16 u16LS1Area;
CVI_U8 u8MultiDegree;
CVI_U16 u16ActiveShift;
CVI_U32 u32FirstStableTime;
ISP_AWB_INDOOR_OUTDOOR_STATUS_E enInOutStatus;
CVI_S16 s16Bv;
} ISP_WB_INFO_S;
【成员】
成员名称 |
描述 |
---|---|
u16Rgain |
当前R通道增益值 |
u16Grgain |
当前Gr通道增益值 |
u16Gbgain |
当前Gb通道增益值 |
u16Bgain |
当前B通道增益值 |
u16Saturation |
目前饱和度返回 |
u16ColorTemp |
目前推算的色温值 |
au16CCM |
当前 的颜色校正矩阵,10bit小数精度。bit 15 是符号位,0 表示正数,1 表示负数,例如0x8010表 示-16 |
u16LS0CT |
混光源场景的主光源色温 |
u16LS1CT |
混光源场景的次光源色温 |
u16LS0Area |
混光源场景的主光源面积 |
u16LS1Area |
混光源场景的次光源面积 |
u8MultiDegree |
目前场景是混光源的机率 |
u16ActiveShift |
目前白平衡范围的限制值 |
u32FirstStableTime |
首次AWB收敛稳定的时间,以帧数为单位 |
ISP_AWB_INDOOR_OUTDOOR_STATUS_E |
室内室外侦测结果 |
s16Bv |
当前环境的bv值返回 |
【注意事项】
无。
【相关数据类型及接口】
无。