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 所示

_images/AWB002.png

图 5.1 图4-1 AWB 工作原理图

5.4. API参考

5.4.1. AWB库接口

所有 AWB 库接口都只是针对 CVI AWB 库,如果客户自己实现 AWB 库,不需要管这些接口,同时也无法使用这些接口。

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 侧暂不支持。

_images/AWB004.png

图 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 控制模块

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

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

_images/AWB003.png

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值返回

【注意事项】

无。

【相关数据类型及接口】

无。