4. AE

4.1. 概述

CVI AE 模块实现的功能是: 根据自动测光系统获得当前图像的曝光量,再自动配置镜头光圈、 sensor 快门及增益来获得最佳的图像质量。

自动曝光的算法主要分光圈优先、快门优先、增益优先。

光圈优先时算法会优先调整光圈到合适的位置,再分配曝光时间和增益,只适合 p-iris镜头,这样能均衡噪声和景深。

快门优先时算法会优先分配曝光时间,再分配 sensor 增益和 ISP 增益,这样拍摄的图像噪声会比较小。

增益优先则是优先分配 sensor 增益和 ISP 增益,再分配曝光时间,适合拍摄运动物体的场景。

当前 AE 算法也支持客户设定更灵活的曝光分配策略, AE模块的工作流程如 图 4.1 所示

_images/AE002.png

图 4.1 AE 模块工作流程图

4.2. 重要概念

  • 曝光时间:sensor 积累电荷的时间,是 sensor pixel 从开始曝光到电量被读出的这段时间。

  • 曝光增益:对 sensor 输出电荷的总放大系数,一般有数字增益和模拟增益,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。

  • 光圈:光圈是镜头中可以改变中间孔大小的机械装置。

  • 抗闪烁:由于电灯的电源工频与 sensor 的帧率不匹配而导致的画面闪烁,一般通过限定曝光时间和修改 sensor 的帧率来达到抗闪烁的效果。

4.3. 功能描述

AE 模块主要有 ISP 的 AE 统计信息模块及 AE 控制策略的 AE 算法 Firmware 两部分组成。

ISP 的 AE 统计信息模块主要是提供 sensor 输入数据的亮度信息统计。

其提供的统计信息包括直方图和平均值,可同时提供整幅图像的 256段的直方图和 R/Gr/Gb/B 四分量平均值统计信息,

还可提供将整幅图像分成 MxN 区块,每个区块的 R/Gr/Gb/B 四分量平均值统计信息,具体如 图 4.2 所示

_images/AE003.png

图 4.2 AE 256 段统计信息直方图

AE 算法的主要工作原理是即时获取输入图像的统计信息并与设定目标亮度进行比较,从而动态调节 sensor 的曝光时间和增益以及镜头光圈大小以达到实际亮度与设定目标亮度接近。其工作原理如 图 4.3 所示。

_images/AE004.png

图 4.3 AE 工作原理图

4.4. API 参考

4.4.1. AE 库接口

所有 AE 库接口都只是针对 CVI AE 库,如果客户自己实现 AE库,不需要关注这些接口,且无法使用这些接口。

4.4.1.1. CVI_AE_Register

【描述】

向 ISP 注册 AE 库。

【语法】

CVI_S32 CVI_AE_Register(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAeLib

AE 算法库结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • 此接口在双系统 SDK 的 linux 侧暂不支持。

【举例】

无。

【相关主题】

4.4.1.2. CVI_AE_UnRegister

【描述】

向 ISP 反注册 AE 库。

【语法】

CVI_S32 CVI_AE_UnRegister(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAeLib

AE 算法库结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • 该接口调用了 ISP 库提供的 AE 反注册回调接口,以实现 AE 向 ISP 库反注册的功能。

  • 此接口不支持多进程操作。

  • 此接口在双系统 SDK 的 linux 侧暂不支持。

【举例】

无。

【相关主题】

4.4.1.3. CVI_AE_SensorRegCallBack

【描述】

AE 库提供的 sensor 注册的回调接口。

【语法】

CVI_S32 CVI_AE_SensorRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, ISP_SNS_ATTR_INFO_S *pstSnsAttrInfo, AE_SENSOR_REGISTER_S *pstRegister);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAeLib

AE 算法库结构体指针

输入

pstSnsAttrInfo

向 AE 注册的 Sensor 的属性

输入

pstRegister

Sensor 注册结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • SensorId 是 sensor 库中自定义的值,主要用于校对向 ISP 注册的 sensor 和向 3A 注册的 sensor 是否为同一个 sensor。

  • AE 通过 sensor 注册的一系列回调接口,获取差异化的初始化参数,并控制sensor。

  • 此接口不支持多进程操作。

  • 此接口在双系统 SDK 的 linux 侧暂不支持。

_images/AE005.png

图 4.4 图3-4 AE 库与 sensor 库间的接口

【举例】

无。

【相关主题】

4.4.1.4. CVI_AE_SensorUnRegCallBack

【描述】

AE 库提供的 sensor 反注册的回调接口。

【语法】

CVI_S32 CVI_AE_SensorUnRegCallBack(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, SENSOR_ID SensorId);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAeLib

AE 算法库结构体指针

输入

SensorId

向 AE 反注册的 Sensor 的 Id

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • SensorId 是 sensor 库中自定义的值,主要用于校对向 ISP 注册的 sensor 和向 3A 注册的 sensor 是否为同一个 sensor。

  • 此接口不支持多进程操作。

  • 此接口在双系统 SDK 的 linux 侧暂不支持。

【举例】

无。

【相关主题】

4.4.2. AE 控制模块

曝光控制接口:

4.4.2.1. CVI_ISP_SetExposureAttr

【描述】

设定 AE 曝光属性。

【语法】

CVI_S32 CVI_ISP_SetExposureAttr(VI_PIPE ViPipe, const ISP_EXPOSURE_ATTR_S *pstExpAttr)

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstExpAttr

AE 曝光属性结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • AE 曝光控制类型为自动时,曝光时间,曝光增益都由 AE 算法自动控制,可以通过配置自动曝光属性结构体 stAuto 里面的参数得到不同的曝光效果。

  • AE 曝光控制类型为手动时,可以通过配置手动曝光属性结构体 stManual 控制使能类型(曝光时间使能、ISO num 使能、sensor 模拟增益使能、 sensor 数字增益使能、 ISP 数字增益使能)及相应的曝光参数(曝光时间、 ISO Num、sensor 模拟增益、 sensor 数字增益、 ISP数字增益)。

  • AE 曝光控制类型为自动时,配置手动曝光属性的参数无效。 同理, AE曝光控制类型为手动时,配置自动曝光属性的参数无效。

  • AE 曝光控制类型为手动时,若曝光参数设置超出最大(小)值,将使用 sensor 支持的最大(小)值代替。

  • 无论是自动曝光还是手动曝光,曝光时间的单位为微秒(us),曝光增益的单位为10bit 精度的倍数,即 1024 代表 1 倍, 2048 代表 2 倍等。

【举例】

// 自动曝光属性设置
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_AUTO;
stExpAttr.stAuto.stExpTimeRange.u32Max = 40000;
stExpAttr.stAuto.stExpTimeRange.u32Min = 10;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

stExpAttr.stAuto.u8Speed = 0x40;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

stExpAttr.stAuto.enAEStrategyMode = AE_EXP_HIGHLIGHT_PRIOR;
stExpAttr.stAuto.u16HistRatioSlope = 0x8;
stExpAttr.stAuto.u8MaxHistOffset = 0x10;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

stExpAttr.stAuto.stAntiflicker.bEnable = CVI_TRUE;
stExpAttr.stAuto.stAntiflicker.enFrequency = AE_FREQUENCE_50HZ;
stExpAttr.stAuto.stAntiflicker.enMode = ISP_ANTIFLICKER_NORMAL_MODE;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

stExpAttr.stAuto.stAEDelayAttr.u16BlackDelayFrame = 10;
stExpAttr.stAuto.stAEDelayAttr.u16WhiteDelayFrame = 0;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//手动曝光属性设置(使用 gain 控制):
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enExpTimeOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enAGainOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enDGainOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enISPDGainOpType = OP_TYPE_MANUAL;

stExpAttr.stManual.enGainType = AE_TYPE_GAIN;
stExpAttr.stManual.u32AGain = 0x400;
stExpAttr.stManual.u32DGain = 0x400;
stExpAttr.stManual.u32ISPDGain = 0x400;
stExpAttr.stManual.u32ExpTime= 0x40000;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//手动曝光属性设置(使用 ISO Num 控制):
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enExpTimeOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enISONumOpType= OP_TYPE_MANUAL;

stExpAttr.stManual.enGainType = AE_TYPE_ISO;
stExpAttr.stManual.u32ISONum = 1600;
stExpAttr.stManual.u32ExpTime= 0x40000;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//自动模式设定最大增益 32x(使用 gain 控制)
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_AUTO;
stExpAttr.stAuto.enGainType = AE_TYPE_GAIN;
stExpAttr.stAuto.stSysGainRange.u32Max = 32767;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//自动模式设定最大增益 32x(使用 ISO Num 控制)
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_AUTO;
stExpAttr.stAuto.enGainType = AE_TYPE_ISO;
stExpAttr.stAuto.stISONumRange.u32Max = 3200;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//快门模式(33333 us)设定最大增益 32x
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_AUTO;
stExpAttr.stAuto.stExpTimeRange.u32Min = 33333;
stExpAttr.stAuto.stExpTimeRange.u32Max = 33333;
stExpAttr.stAuto.enGainType = AE_TYPE_ISO;
stExpAttr.stAuto.stISONumRange.u32Max = 3200;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//手动模式设固定增益(32x, 使用 ISO Num)
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enGainType = AE_TYPE_ISO;
stExpAttr.stManual.enISONumOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.u32ISONum = 3200;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//手动模式设固定增益(32x, 使用 Gain)
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enGainType = AE_TYPE_ISO;
stExpAttr.stManual.enAGainOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enDGainOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.enISPDGainOpType = OP_TYPE_MANUAL;

stExpAttr.stManual.u32AGain = 0x8000;
stExpAttr.stManual.u32DGain = 0x400;
stExpAttr.stManual.u32ISPDGain = 0x400;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//自动快门
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_AUTO;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//手动设定快门 (16384 us)
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.stManual.enExpTimeOpType = OP_TYPE_MANUAL;
stExpAttr.stManual.u32ExpTime = 16384;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//快门模式 (16384 us)
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bByPass = CVI_FALSE;
stExpAttr.enOpType = OP_TYPE_AUTO;
stExpAttr.stAuto.stExpTimeRange.u32Min = 16384;
stExpAttr.stAuto.stExpTimeRange.u32Max = 16384;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//设定 antiflicker 50Hz
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.stAuto.stAntiflicker.bEnable = 1;
stExpAttr.stAuto.stAntiflicker.enMode = ISP_ANTIFLICKER_NORMAL_MODE;
stExpAttr.stAuto.stAntiflicker.enFrequency = AE_FREQUENCE_50HZ;
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

//设定各 LV 的目标亮度
#define TABLE_SIZE  21
CVI_U8 target_max[TABLE_SIZE] = {15, 15, 15, 15,
  15, 15, 15, 20, 20, 25, 30, 35, 40, 40, 50, 50, 55, 60, 60,
  60, 60};
CVI_U8 target_min[TABLE_SIZE] = {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 45,
      50, 50, 50, 50, 50, 50, 60, 60, 60};

CVI_U8 i;
VI_PIPE ViPipe = 0;
ISP_EXPOSURE_ATTR_S stExpAttr;
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);

for (i = 0; i < TABLE_SIZE;i++) {
  stExpAttr.stAuto.au8AdjustTargetMin[i] = target_min[i];
  stExpAttr.stAuto.au8AdjustTargetMax[i] = target_max[i];
}
CVI_ISP_SetExposureAttr(ViPipe, &stExpAttr);

【相关主题】

4.4.2.2. CVI_ISP_GetExposureAttr

【描述】

获取 AE 曝光属性。

【语法】

CVI_S32 CVI_ISP_GetExposureAttr(VI_PIPE ViPipe, ISP_EXPOSURE_ATTR_S *pstExpAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstExpAttr

AE 曝光属性结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.3. CVI_ISP_SetWDRExposureAttr

【描述】

设置 WDR 模式下的 AE 曝光属性。

【语法】

CVI_S32 CVI_ISP_SetWDRExposureAttr(VI_PIPE ViPipe, const ISP_WDR_EXPOSURE_ATTR_S *pstWDRExpAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstWDRExpAttr

WDR 模式下的AE 曝光属性结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

//手动设定曝光比 8x
VI_PIPE ViPipe = 0;

ISP_WDR_EXPOSURE_ATTR_S stWdrExpAttr;
CVI_ISP_GetWDRExposureAttr(ViPipe, &stWdrExpAttr);
stWdrExpAttr.enExpRatioType = OP_TYPE_MANUAL;
stWdrExpAttr.au32ExpRatio[0] = 512;
CVI_ISP_SetWDRExposureAttr(ViPipe, &stWdrExpAttr);

//设定自动模式曝光比限制在 8x ~ 16x
ISP_WDR_EXPOSURE_ATTR_S stWdrExpAttr;
CVI_ISP_GetWDRExposureAttr(ViPipe, &stWdrExpAttr);
stWdrExpAttr.enExpRatioType = OP_TYPE_AUTO;
stWdrExpAttr.u32ExpRatioMin = 512;
stWdrExpAttr.u32ExpRatioMax = 1024;
CVI_ISP_SetWDRExposureAttr(ViPipe, &stWdrExpAttr);

//设定长/短帧各 LV 的目标亮度
#define TABLE_SIZE  21
CVI_U8 LeTarget[TABLE_SIZE] = {15, 15, 15, 15,
  15, 15, 15, 20, 20, 25, 30, 35, 40, 40, 50, 50, 55, 60, 60,
  60, 60};

CVI_U8 SeTarget[TABLE_SIZE] = {5, 5, 5, 5,
  5, 5, 5, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 20, 20,
  20, 20};

CVI_U8 i;
ISP_WDR_EXPOSURE_ATTR_S stWdrExpAttr;
CVI_ISP_GetWDRExposureAttr(ViPipe, &stWdrExpAttr);

for (i = 0; i < TABLE_SIZE;i++) {
  stWdrExpAttr.au8LEAdjustTargetMin[i] =
  stWdrExpAttr.au8LEAdjustTargetMax[i] = LeTarget[i];

  stWdrExpAttr.au8SEAdjustTargetMin[i] =
  stWdrExpAttr.au8SEAdjustTargetMax[i] = SeTarget[i];

}
CVI_ISP_SetWDRExposureAttr(ViPipe, &stWdrExpAttr);

【相关主题】

4.4.2.4. CVI_ISP_GetWDRExposureAttr

【描述】

获取 WDR 模式下的 AE 曝光属性。

【语法】

CVI_S32 CVI_ISP_GetWDRExposureAttr(VI_PIPE ViPipe, ISP_WDR_EXPOSURE_ATTR_S *pstWDRExpAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstWDRExpAttr

WDR 模式下的 AE 曝光属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.5. CVI_ISP_SetAERouteAttr

【描述】

设置 AE 曝光分配策略。

【语法】

CVI_S32 CVI_ISP_SetAERouteAttr(VI_PIPE ViPipe, const ISP_AE_ROUTE_S *pstAERouteAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteAttr

AE 曝光分配策略结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

此接口用于设定AE曝光分配路线,AE计算得到的曝光量将按照设定的路线进行分配,用户可以根据自己的需求设定曝光优先、增益优先、光圈优先。

AE分配路线遵循以下规则:

  • 最大支持16个节点,每个节点有曝光时间、增益、光圈三个分量,增益包含模拟增益、数字增益、ISP数字增益。

  • 节点中曝光时间的单位为us,不能设置为0,也不能设置太小导致实际对应的曝光行数为0,否则可能产生异常。

  • 光圈分量仅支持P-Iris,不支持DC-Iris,因为DC-Iris无法精确控制,所以DC-Iris和手动光圈镜头光圈分量是无效的。即光圈类型为DC-Iris时,节点光圈分量不会对曝光量分配产生任何影响。

  • 节点的曝光量是曝光时间、增益和光圈的乘积,节点曝光量需为单调递增,后一个节点的曝光量应大于或等于前一个节点的曝光量,第一个节点的曝光量最小,最后一个节点的曝光量最大。

  • 如果相邻节点的曝光量增加,那么应该有一个分量增加,其他分量固定,增加的分量决定该段路线的分配策略。例如曝光时间分量增加,那么该段路线的分配策略是曝光时间优先。

  • 不支持设置等曝光量节点。

用户可以根据不同的场景设置不同的路线,分配路线支持动态切换。

  • 针对DC-Iris和手动光圈镜头,默认AE分配策略是首先分配曝光时间,其次分配增益。针对P-Iris镜头,默认AE分配策略是首先调节光圈,将光圈调至最大后调节曝光时间,最后再分配增益。如果当前曝光量不在用户设定的路线范围当中,按默认策略分配。

  • 在线进行DC-Iris和P-Iris切换,AE route会重置为与光圈类型相匹配的默认分配策略,用户可以根据需要在切换光圈类型时自行设置AE route。

  • 自动降帧时,最大曝光时间的改变会更新到分配路线中。

  • 帧率切换时,若用户设置的最大曝光目标时间大于切换后1帧所允许的最大曝光时间,那么分配路线的最大曝光时间会更新为切换后1帧所允许的最大曝光时间。

  • 发生自动降帧、线性与WDR模式切换、帧率切换、限制曝光时间或增益的最大最小值等情况时,实际生效的AE route可能与MPI设置的不一致,此时可以通过CVI_ISP_QueryExposureInfo获取实际生效的AE route。

【举例】

//设定 gain 128x的 route
VI_PIPE ViPipe = 0;

ISP_AE_ROUTE_S   stRoute;
CVI_ISP_SetAERouteAttr(ViPipe, &stRoute);

stRoute.u32TotalNum = 3;

stRoute.astRouteNode[0].u32IntTime = 30;
stRoute.astRouteNode[0].u32SysGain= 1024;
stRoute.astRouteNode[0].enIrisFNO = 10;
stRoute.astRouteNode[0].u32IrisFNOLin = 1024;

stRoute.astRouteNode[1].u32IntTime = 33333;
stRoute.astRouteNode[1].u32SysGain = 1024;
stRoute.astRouteNode[1].enIrisFNO = 10;
stRoute.astRouteNode[1].u32IrisFNOLin = 1024;

stRoute.astRouteNode[2].u32IntTime = 33333;
stRoute.astRouteNode[2].u32SysGain = 131072;
stRoute.astRouteNode[2].enIrisFNO = 10;
stRoute.astRouteNode[2].u32IrisFNOLin = 1024;

CVI_ISP_SetAERouteAttr(ViPipe, &stRoute);

【相关主题】

4.4.2.6. CVI_ISP_GetAERouteAttr

【描述】

获取 AE 曝光分配策略。

【语法】

CVI_S32 CVI_ISP_GetAERouteAttr(VI_PIPE ViPipe, ISP_AE_ROUTE_S *pstAERouteAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteAttr

AE 曝光分配策略结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.7. CVI_ISP_SetAERouteAttrEx

【描述】

设置AE曝光分配扩展属性,支持分别设置AE分配策略中的sensor模拟增益,sensor数字增益和ISP数字增益。

【语法】

CVI_S32 CVI_ISP_SetAERouteAttrEx(VI_PIPE ViPipe, const ISP_AE_ROUTE_EX_S *pstAERouteAttrEx);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteAttrEx

AE 曝光分配策略扩展属性结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • 此接口用于设定AE曝光分配扩展属性,AE计算得到的曝光量将按照设定的路线进行分配, 用户可以根据自己的需求设定曝光时间优先、sensor模拟增益优先、sensor数字增益优先、ISP数字增益优先和光圈优先。 该接口可用于设置WDR模式下的曝光分配路线,减轻正常室内照度多帧合成WDR产生的工频闪现象,优化WDR模式图像效果。

  • AE曝光分配扩展属性是否生效可通过配置CVI_ISP_SetExposureAttr接口中的bAERouteExValid来实现。 bAERouteExValid为CVI_TRUE时使用扩展AE route,否则使用正常AE route。

  • 其它注意事项与 CVI_ISP_SetAERouteAttr 的规则相同

【举例】

无。

【相关主题】

4.4.2.8. CVI_ISP_GetAERouteAttrEx

【描述】

获取AE曝光分配策略扩展属性。

【语法】

CVI_S32 CVI_ISP_GetAERouteAttrEx(VI_PIPE ViPipe, ISP_AE_ROUTE_EX_S *pstAERouteAttrEx);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteAttrEx

AE曝光分配策略扩展属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

VI_PIPE ViPipe = 0;

ISP_EXPOSURE_ATTR_S stExpAttr;
ISP_AE_ROUTE_EX_S stRouteEx;
CVI_U32 au32RouteExNode[6][5]
= {{   30,  1024,  1024, 1024, 0},
{   30,  1024,  1024, 1024, 10},
{   30, 16384,  1024, 1024, 10},
{400000, 16384,  1024, 1024, 10},
{400000, 16384, 4096, 1024, 10},
{400000, 16384, 4096, 4096, 10}};
CVI_ISP_GetAERouteAttrEx(ViPipe, &stRouteEx);
CVI_ISP_GetExposureAttr(ViPipe, &stExpAttr);
stExpAttr.bAERouteExValid = CVI_TRUE;
stRouteEx.u32TotalNum = 6;
memcpy(stRouteEx.astRouteExNode, au32RouteExNode, sizeof(au32RouteExNode));

【相关主题】

4.4.2.9. CVI_ISP_QueryExposureInfo

【描述】

获取 AE 内部状态信息,包括256 段直方图和平均亮度等统计信息, 同时还可获取 AE 运行状态中的曝光时间、增益、曝光量、当帧的亮度、 目前的环境亮度和实际生效的 AE route等信息。

【语法】

CVI_S32 CVI_ISP_QueryExposureInfo(VI_PIPE ViPipe, ISP_EXP_INFO_S *pstExpInfo);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstExpInfo

曝光内部状态信息结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

获取的曝光时间以微秒(us)为单位,获取的sensor模拟增益、sensor数字增益和ISP数字增益以倍数为单位,精度是10bit。

【举例】

// get sensor again, sensor dgain, isp dgain and exposure ratio
VI_PIPE ViPipe = 0;
ISP_EXP_INFO_S stExpInfo;

CVI_ISP_QueryExposureInfo(ViPipe, &stExpInfo);

printf("sensor used time = %d\n", stExpInfo. u32ExpTime);
printf("sensor used again = %d\n", stExpInfo. u32AGain);
printf("sensor used dgain = %d\n", stExpInfo. u32DGain);
printf("isp used dgain = %d\n", stExpInfo. u32ISPDGain);
printf("WDR Exposure ratio = %d\n", stExpInfo. u32WDRExpRatio);
printf("Light Value = %f\n", stExpInfo. fLightValue);

【相关主题】

无。

4.4.2.10. CVI_ISP_SetAntiFlicker

【描述】

设置 AE anti flicker 功能。

【语法】

CVI_S32 CVI_ISP_SetAntiFlicker(VI_PIPE ViPipe, CVI_BOOL enable, CVI_U8 frequency);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

enable

AE anti flicker 使能

输入

frequency

抗闪频率

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

//设定 AE anti flicker 50Hz
VI_PIPE ViPipe = 0;
CVI_U8 enable, frequency;
enable = 1;
frequency = 50;

CVI_ISP_SetAntiFlicker(ViPipe, enable, frequency);

【相关主题】

4.4.2.11. CVI_ISP_GetAntiFlicker

【描述】

获取 AE anti flicker 设定。

【语法】

CVI_S32 CVI_ISP_GetAntiFlicker(VI_PIPE ViPipe, CVI_BOOL *pEnable, CVI_U8 *pFrequency);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pEnable

AE anti flicker 使能指针

输入

pFrequency

抗闪频率指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

无。

4.4.2.12. CVI_ISP_QueryFps

【描述】

获取 AE 当前fps。

【语法】

CVI_S32 CVI_ISP_QueryFps(VI_PIPE ViPipe, CVI_FLOAT *pFps);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pFps

AE fps指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.13. CVI_ISP_GetCurrentLvX100

【描述】

用于获取当前 AE 的测光结果,即环境光亮度值 LV。可用于判断黑夜和白天,达到类似光敏电阻的效果。

【语法】

CVI_S32 CVI_ISP_GetCurrentLvX100(VI_PIPE ViPipe, CVI_S16 *ps16Lv);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

ps16Lv

返回当前 LV 的值

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

#include "cvi_ae.h"

#define ENTER_NIGHT_LV_LEVEL 0
#define ENTER_DAY_LV_LEVEL   700
#define CHECK_COUNT          5

bool checkDayOrNight(void)
{
    static bool dayOrNight = true;
    static CVI_U8 checkDayCount = 0;
    static CVI_U8 checkNightCount = 0;
    CVI_S16 lv = 0;

    CVI_ISP_GetCurrentLvX100(0, &lv);
    if (lv > ENTER_DAY_LV_LEVEL) {
      if (checkDayCount < CHECK_COUNT) {
            checkDayCount++;
      } else {
            dayOrNight = true;
      }
      checkNightCount = 0;
    } else if (lv < ENTER_NIGHT_LV_LEVEL) {
        if (checkNightCount < CHECK_COUNT) {
              checkNightCount++;
        } else {
              dayOrNight = false;
        }
        checkDayCount = 0;
    } else {
        checkDayCount = 0;
        checkNightCount = 0;
    }
    return dayOrNight;
}
int main(void)
{
    while (1) {
      sleep(1);
      printf("checkDayOrNight: %s\n", checkDayOrNight() ? "day" : "night");
    }
    return 0;
}

【相关主题】

无。

4.4.2.14. CVI_ISP_SetSmartExposureAttr

【描述】

设置智能模式下的AE 曝光属性。仅在有智能信息时生效。

【语法】

CVI_S32 CVI_ISP_SetSmartExposureAttr(VI_PIPE ViPipe, const ISP_SMART_EXPOSURE_ATTR_S *pstSmartExpAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstSmartExpAttr

智能模式下的AE 曝光属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

#include "cvi_ae.h"

VI_PIPE ViPipe = 0;
ISP_SMART_EXPOSURE_ATTR_S   stSmartExpAttr;

CVI_ISP_GetSmartExposureAttr(ViPipe, &stSmartExpAttr);

stSmartExpAttr.bEnable = 1;
stSmartExpAttr.u8LumaTarget = 56;
stSmartExpAttr.u16ExpCoef= 1024;
stSmartExpAttr.u16ExpCoefMax= 4096;
stSmartExpAttr.u16ExpCoefMin = 256;
stSmartExpAttr.u8SmartInterval = 1;
stSmartExpAttr.u8SmartSpeed = 32;
stSmartExpAttr.u16SmartDelayNum = 5;
stSmartExpAttr.u8Weight = 80;
stSmartExpAttr.u8NarrowRatio = 75;

CVI_ISP_SetSmartExposureAttr(ViPipe, &stSmartExpAttr);

【相关主题】

无。

4.4.2.15. CVI_ISP_GetSmartExposureAttr

【描述】

获取智能模式下的AE 曝光属性。仅在有智能信息时生效。

【语法】

CVI_S32 CVI_ISP_GetSmartExposureAttr(VI_PIPE ViPipe, ISP_SMART_EXPOSURE_ATTR_S *pstSmartExpAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstSmartExpAttr

智能模式下的AE 曝光属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.16. CVI_ISP_SetAERouteSFAttr

【描述】

设置 AE WDR 短侦曝光分配策略。

【语法】

CVI_S32 CVI_ISP_SetAERouteSFAttr(VI_PIPE ViPipe, const ISP_AE_ROUTE_S *pstAERouteSFAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteSFAttr

AE WDR 短侦曝光分配策略结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.17. CVI_ISP_GetAERouteSFAttr

【描述】

获取 AE WDR 短侦曝光分配策略。

【语法】

CVI_S32 CVI_ISP_GetAERouteSFAttr(VI_PIPE ViPipe, ISP_AE_ROUTE_S *pstAERouteSFAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteSFAttr

AE WDR 短侦曝光分配策略结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.18. CVI_ISP_SetAERouteSFAttrEx

【描述】

设置AE WDR短侦曝光分配扩展属性,支持分别设置AE分配策略中的sensor模拟增益,sensor数字增益和ISP数字增益。

【语法】

CVI_S32 CVI_ISP_SetAERouteSFAttrEx(VI_PIPE ViPipe, const ISP_AE_ROUTE_EX_S *pstAERouteSFAttrEx);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteSFAttrEx

AE WDR短侦曝光分配策略扩展属性结构体指针

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.2.19. CVI_ISP_GetAERouteSFAttrEx

【描述】

获取AE WDR短侦 曝光分配策略扩展属性。

【语法】

CVI_S32 CVI_ISP_GetAERouteSFAttrEx(VI_PIPE ViPipe, ISP_AE_ROUTE_EX_S *pstAERouteSFAttrEx);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstAERouteSFAttrEx

AE WDR短侦曝光分配策略扩展属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

4.4.3. Deep Learning 控制模块

4.4.3.1. CVI_ISP_SetIrisAttr

【描述】

设定光圈的控制属性,该函数可实现手动光圈属性和光圈类型等参数的设置。

【语法】

CVI_S32 CVI_ISP_SetIrisAttr(VI_PIPE ViPipe, const ISP_IRIS_ATTR_S *pstIrisAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstIrisAttr

光圈控制属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

  • 根据实际对接镜头光圈类型,设置正确的光圈类型属性, 由此再去设置相关的 DC-Iris/P-Iris控制属性。 若对接的是手动光圈镜头,可将光圈类型设置为ISP_IRIS_DC_TYPE,建议此时关闭Deep Learning使能。

  • 手动光圈属性主要用于调试,可通过该MPI进行设置。 对于P-Iris镜头,手动enIrisFNO 值会受到最大、最小光圈目标值的影响。 自动光圈属性的更多参数需要调用 CVI_ISP_SetDcirisAttrCVI_ISP_SetPirisAttr 进行设置。

【举例】

无。

【相关主题】

4.4.3.2. CVI_ISP_GetIrisAttr

【描述】

获取光圈的控制属性。

【语法】

CVI_S32 CVI_ISP_GetIrisAttr(VI_PIPE ViPipe, ISP_IRIS_ATTR_S *pstIrisAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstIrisAttr

光圈控制属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

无。

4.4.3.3. CVI_ISP_SetDcirisAttr

【描述】

设定DC-Iris Deep Learning算法的控制属性,该函数可实现DC-Iris自动光圈的参数设置。

【语法】

CVI_S32 CVI_ISP_SetDcirisAttr(VI_PIPE ViPipe, const ISP_DCIRIS_ATTR_S *pstDcirisAttr);;

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstIrisAttr

DC-Iris自动光圈控制属性结构体指针

输入/输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

DC-Iris光圈控制采用PID算法,算法根据画面亮度,调节PWM占空比对光圈大小进行控制。 当曝光时间和增益达到最小目标值之后,会进入光圈控制区域。 当光圈控制能满足目标亮度的要求时,AE 直接返回,保持曝光时间和增益不变。 当画面亮度稳定且PWM占空比维持在打开值一段时间后,Deep Learning算法会认为光圈已经打开至最大, 退出光圈控制区,将控制权交还给AE

【举例】

无。

【相关主题】

4.4.3.4. CVI_ISP_GetDcirisAttr

【描述】

获取DC-Iris自动光圈的控制属性。

【语法】

CVI_S32 CVI_ISP_GetDcirisAttr(VI_PIPE ViPipe, ISP_DCIRIS_ATTR_S *pstDcirisAttr);;

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstIrisAttr

DC-Iris自动光圈控制属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

无。

【举例】

无。

【相关主题】

无。

4.4.3.5. CVI_ISP_SetPirisAttr

【描述】

设定P-Iris自动光圈的控制属性

【语法】

CVI_S32 CVI_ISP_SetPirisAttr(VI_PIPE ViPipe, const ISP_PIRIS_ATTR_S *pstPirisAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstPirisAttr

P-Iris自动光圈控制属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

目前尚未支持 P-iris

【举例】

无。

【相关主题】

4.4.3.6. CVI_ISP_GetPirisAttr

【描述】

获取P-Iris自动光圈的控制属性。

【语法】

CVI_S32 CVI_ISP_GetPirisAttr(VI_PIPE ViPipe, ISP_PIRIS_ATTR_S *pstPirisAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

ViPipe 号

输入

pstIrisAttr

P-Iris自动光圈控制属性结构体指针

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,请参见 错误码

【需求】

  • 头文件:cvi_ae.h

  • 库文件:libae.a

【注意】

目前尚未支持 P-iris

【举例】

无。

【相关主题】

4.5. 数据类型

4.5.1. Register

4.5.1.1. AE_SENSOR_REGISTER_S

【说明】

定义sensor注册结构体。

【定义】

typedef struct _AE_SENSOR_REGISTER_S
{
  AE_SENSOR_EXP_FUNC_S stAeExp;
} AE_SENSOR_REGISTER_S;

【成员】

成员名称

描述

stAeExp

Sensor注册的回调函数结构体

【注意事项】

无。

【相关数据类型及接口】

4.5.1.2. AE_SENSOR_EXP_FUNC_S

【说明】

定义sensor回调函数结构体。

【定义】

typedef struct _AE_SENSOR_EXP_FUNC_S
{
  CVI_S32(*pfn_cmos_get_ae_default)(VI_PIPE ViPipe, AE_SENSOR_DEFAULT_S *pstAeSnsDft);
  CVI_VOID(*pfn_cmos_fps_set)(VI_PIPE ViPipe, CVI_FLOAT f32Fps,
  AE_SENSOR_DEFAULT_S *pstAeSnsDft);
  CVI_VOID(*pfn_cmos_slow_framerate_set)(VI_PIPE ViPipe, CVI_U32 u32FullLines, AE_SENSOR_DEFAULT_S *pstAeSnsDft);
  CVI_VOID(*pfn_cmos_inttime_update)(VI_PIPE ViPipe, CVI_U32 *u32IntTime);
  CVI_VOID(*pfn_cmos_gains_update)(VI_PIPE ViPipe, CVI_U32 *u32Again, CVI_U32 *u32Dgain);
  CVI_VOID (*pfn_cmos_again_calc_table)(VI_PIPE ViPipe, CVI_U32 *pu32AgainLin, CVI_U32 *pu32AgainDb);
  CVI_VOID (*pfn_cmos_dgain_calc_table)(VI_PIPE ViPipe, CVI_U32 *pu32DgainLin, CVI_U32 *pu32DgainDb);
  CVI_VOID (*pfn_cmos_get_inttime_max)(VI_PIPE ViPipe, CVI_U16 u16ManRatioEnable, CVI_U32 *au32Ratio, CVI_U32 *au32IntTimeMax, CVI_U32 *au32IntTimeMin, CVI_U32 *pu32LFMaxIntTime);
  CVI_VOID(*pfn_cmos_ae_fswdr_attr_set)(VI_PIPE ViPipe, AE_FSWDR_ATTR_S *pstAeFSWDRAttr);
} AE_SENSOR_EXP_FUNC_S;

【成员】

成员名称

描述

pfn_cmos_get_ae_default

获取AE算法库初始值的回调函数指针。

pfn_cmos_fps_set

设置sensor的帧率。

pfn_cmos_slow_framerate_set

设置sensor的降帧。

pfn_cmos_inttime_update

设置sensor的曝光时间。

pfn_cmos_gains_update

设置sensor的模拟增益和数字增益。

pfn_cmos_again_calc_table

计算TABLE类型sensor模拟增益。

pfn_cmos_dgain_calc_table

计算TABLE类型sensor数字增益。

pfn_cmos_get_inttime_max

WDR模式下,计算短帧最大 曝光时间的回调函数指针,与sensor强相关。

pfn_cmos_ae_fswdr_attr_set

2to1LineWDR模式下,设置长帧模式

【注意事项】

  • 如果回调函数指针不需要赋值,需要置为NULL。

  • pfn_cmos_inttime_update和pfn_cmos_gains_update 中设置的曝光时间和增益如何转换成sensor的配置值与sensor强相关,请参阅sensor手册。

【相关数据类型及接口】

4.5.1.3. AE_SENSOR_DEFAULT_S

【说明】

定义AE算法库的初始化参数结构体。

【定义】

typedef struct _AE_SENSOR_DEFAULT_S
{
  CVI_U8 au8HistThresh[HIST_THRESH_NUM];
  CVI_U8 u8AeCompensation;
  CVI_U32 u32LinesPer500ms;
  CVI_U32 u32FlickerFreq;
  CVI_U32 u32HmaxTimes;
  CVI_U32 u32InitExposure;
  CVI_U32 u32InitAESpeed;
  CVI_U32 u32InitAETolerance;
  CVI_U32 u32FullLinesStd;
  CVI_U32 u32FullLinesMax;
  CVI_U32 u32FullLines;
  CVI_U32 u32MaxIntTime;
  CVI_U32 u32MinIntTime;
  CVI_U32 u32MaxIntTimeTarget;
  CVI_U32 u32MinIntTimeTarget;
  AE_ACCURACY_S stIntTimeAccu;
  CVI_U32 u32MaxAgain;
  CVI_U32 u32MinAgain;
  CVI_U32 u32MaxAgainTarget;
  CVI_U32 u32MinAgainTarget;
  AE_ACCURACY_S stAgainAccu;
  CVI_U32 u32MaxDgain;
  CVI_U32 u32MinDgain;
  CVI_U32 u32MaxDgainTarget;
  CVI_U32 u32MinDgainTarget;
  AE_ACCURACY_S stDgainAccu;
  CVI_U32 u32MaxISPDgainTarget;
  CVI_U32 u32MinISPDgainTarget;
  CVI_U32 u32ISPDgainShift;
  CVI_U32 u32MaxIntTimeStep;
  CVI_U32 u32LFMaxShortTime;
  CVI_U32 u32LFMinExposure;
  ISP_AE_STRATEGY_E enAeExpMode;
  CVI_U16 u16ISOCalCoef;
  CVI_U8 u8AERunInterval;
  CVI_FLOAT f32Fps;
  CVI_FLOAT f32MinFps;
  CVI_U32 denom;
  CVI_U32 u32AEResponseFrame;
  CVI_U32 u32SnsStableFrame;
  AE_BLC_TYPE_E enBlcType;
  ISP_SNS_GAIN_MODE_E   enWDRGainMode;
} AE_SENSOR_DEFAULT_S;

【成员】

成员名称

描述

u8AeCompensation

AE亮度目标值,取值范围为[0,255],建议用0x38~0x40。

u32LinesPer500ms

每500ms的总行数。

u32FlickerFreq

抗闪频率,数值为当前电源频率的256倍。

u32HmaxTimes

Sensor读出一行的时间,单位:ns。

u32InitExposure

默认初始 曝光量,等于曝光时间(行数)*系统增益(6bit小数精度)。AE算法采用该值作为初始5帧的曝光量

u32InitAESpeed

默认 初始AE调节速度,AE算法采用该值作为初始100帧的调节速度

u32InitAETolerance

默认初始AE曝光容忍偏差,AE算 法采用该值作为初始100帧的曝光容忍偏差值,可用于设置得到首次AE收敛稳定标志的亮度范围

u32FullLinesStd

基准帧率时1帧的有效行数。

u32FullLinesMax

sensor降帧后1帧所能达到的最大行数,一般设为sensor所支持的最大行数。

u32FullLines

sensor每帧实际生效的总行数。使用CVI AE算法时,回调cmos_fps_set和cmos_slow_framerate_set时必须给该值赋值,用于返回每帧实际生效的总行数。

u32MaxIntTime

最大曝光时间,以行为单位。

u32MinIntTime

最小曝光时间,以行为单位。

u32MaxIntTimeTarget

最大曝光时间目标值,以行为单位。

u32MinIntTimeTarget

最小曝光时间目标值,以行为单位。

stIntTimeAccu

曝光时间精度。

u32MaxAgain

最大模拟增益,以倍为单位。

u32MinAgain

最小模拟增益,以倍为单位。

u32MaxAgainTarget

最大模拟增益目标值,以倍为单位。

u32MinAgainTarget

最小模拟增益目标值,以倍为单位。

stAgainAccu

模拟增益精度。

u32MaxDgain

最大数字增益,以倍为单位。

u32MinDgain

最小数字增益,以倍为单位。

u32MaxDgainTarget

最大数字增益目标值,以倍为单位。

u32MinDgainTarget

最小数字增益目标值,以倍为单位。

stDgainAccu

数字增益精度。

u32MaxISPDgainTarget

最大ISP数字增益目标值,以倍为单位。

u32MinISPDgainTarget

最小ISP数字增益目标值,以倍为单位。

u32ISPDgainShift

ISP数字增益精度。

u32MaxIntTimeStep

短帧曝光时间减小的最大调整步长,以行数为单位。仅在两帧合成模式下有效。

u32LFMaxShortTime

自动长帧模式下短帧最大曝光时间。

u32LFMinExposure

自动长帧模式下强制输出长帧的最小曝光量

enAeExpMode

默认曝光策略,高光优先或低光优先。建议 FSWDR模式设置为低光优先,线性模式及BuiltInWDR设置 为高光优先。若不设置该值,默认为高光优先。

u16ISOCalCoef

ISO标定系数,用于保证拍照所需DCF信息中显示的ISO是标准的,8bit精度。

取值范围:[0x0, 0xFFFF],

默认值:为0x100。

u8AERunInterval

默认AE算法运行间隔,以 帧为单位。若不设置,则默认AE每帧执行一次。

取值范围:(0x0, 0xFF]

f32Fps

基准帧率

u32AEResponseFrame

Sensor 曝光时间/增益同步生效的所需的帧数

【注意事项】

  • 线性/WDR模式切换时,会回调pfn_cmos_get_ae_default函数更新AE相关默认参数。 若WDR模式要使用AE扩展分配路线而线性模式不需要,建议在cmos_get_ae_default函数里面先对AE路线清零:bAERouteExValid = CVI_FALSE,stAERouteAttr.u32TotalNum= 0,stAERouteAttrEx.u32TotalNum = 0,然后视需要在WDR分支赋值。

  • u32LFMaxShortTime为自动长帧模式下短帧曝光时间的最大值,如果此参数设置过小会导致自动长帧模式下亮区噪声表现变差。

【相关数据类型及接口】

  • ISP_SENSOR_EXP_FUNC_S

4.5.1.4. AE_ACCURACY_E

【说明】

定义曝光时间、增益的精度类型的枚举。

【定义】

typedef enum _AE_ACCURACY_E
{
  AE_ACCURACY_DB = 0,
  AE_ACCURACY_LINEAR,
  AE_ACCURACY_TABLE,
  AE_ACCURACY_BUTT,
} AE_ACCURACY_E;

【成员】

成员名称

描述

AE_ACCURACY_DB DB

精度类型。

AE_ACCURACY_LINEAR

线性精度类型。

AE_ACCURACY_TABLE

表格类型。

【注意事项】

无。

【相关数据类型及接口】

4.5.1.5. AE_ACCURACY_S

【说明】

定义曝光时间、增益的精度的结构体

【定义】

typedef struct _AE_ACCURACY_S
{
  AE_ACCURACY_E enAccuType;
  float f32Accuracy;
  float f32Offset;
} AE_ACCURACY_S;

【成员】

成员名称

描述

enAccuType

精度类型,包括线性类型、DB类型和TABLE类型。。

f32Accuracy

精度值。

f32Offset

曝光时间的偏移量,支持正负偏移量设置,以行为单位,该值配置与sensor强相关。

【注意事项】

无。

【相关数据类型及接口】

无。

4.5.2. AE

4.5.2.1. ISP_AE_MODE_E

【说明】

定义自动曝光的模式。

【定义】

typedef enum _ISP_AE_MODE_E
{
  AE_MODE_SLOW_SHUTTER = 0,
  AE_MODE_FIX_FRAME_RATE  = 1,
  AE_MODE_BUTT
} ISP_AE_MODE_E;

【成员】

成员名称

描述

AE_MODE_SLOW_SHUTTER

自动降帧模式,即SLOW_SHUTTER模式。

AE_MODE_FIX_FRAME_RATE

固定帧率模式。

【注意事项】

  • 自动降帧模式是指自动曝光调节时会优先增大曝光时间来尽量减小增益。当sensor增益达到用户设置的最大值时,自动曝光调节会逐渐降帧率并延长曝光时间,持续到曝光时间等于自动曝光的最大时间为止。低照度环境下噪声较小但帧率会降低。

  • 固定帧率模式是指自动曝光调节时保持帧率不变,低照度环境下噪声会较大。

【相关数据类型及接口】

无。

4.5.2.2. ISP_AE_STRATEGY_E

【说明】

定义AE曝光策略模式。

【定义】

typedef enum _ISP_AE_STRATEGY_E
{
  AE_EXP_HIGHLIGHT_PRIOR = 0,
  AE_EXP_LOWLIGHT_PRIOR  = 1,
  AE_STRATEGY_MODE_BUTT
} ISP_AE_STRATEGY_E;

【成员】

成员名称

描述

AE_EXP_HIGHLIGHT_PRIOR

高光优先曝光模式。

AE_EXP_LOWLIGHT_PRIOR

低光优先曝光模式。

【注意事项】

  • 线性模式下,AE算法默认曝光策略为高光优先,尽量避免画面过曝,但在逆光场景时,暗处亮度较低。此时若要关注暗处区域,可采用低光优先模式,但亮处容易过曝。

  • WDR模式下,AE算法默认使用低光优先模式,控制长帧曝光,此时手动曝光时间、最大最小曝光时间、 AE_Route、AE_Route_Ex中曝光时间参数影响长帧曝光时间。如果切换为高光优先模式,则控制短帧曝光, 此时手动曝光时间、最大最小曝光时间、AE_Route、AE_Route_Ex中曝光时间参数影响短帧曝光时间。

【相关数据类型及接口】

无。

4.5.2.3. ISP_AE_DELAY_S

【说明】

定义AE延时属性。

【定义】

typedef struct _ISP_AE_DELAY_S
{
  CVI_U16 u16BlackDelayFrame;
  CVI_U16 u16WhiteDelayFrame;
} ISP_AE_DELAY_S;

【成员】

成员名称

描述

u16BlackDelayFrame

图像亮度小于目标亮度时间超过u 16BlackDelayFrame帧时,AE开始调节。

u16WhiteDelayFrame

图像亮度大于目标亮度时间超过u 16WhiteDelayFrame帧时,AE开始调节。

【注意事项】

  • u16BlackDelayFrame/u16WhiteDelayFrame设置越大,在AE调节步长相同的情况下,调节至目标亮度需要越长时间。人眼对于过曝比较敏感,建议u16WhiteDelayFrame要设置得比u16BlackDelayFrame小一些。

  • 若帧率较低时,建议u16BlackDelayFrame/u16WhiteDelayFrame不要设置过大,否则AE收敛时间会较长。

【相关数据类型及接口】

无。

4.5.2.4. ISP_AE_RANGE_S

【说明】

定义曝光时间或增益的最大值和最小值。

【定义】

typedef struct _ISP_AE_RANGE_S
{
  CVI_U32 u32Max;
  CVI_U32 u32Min;
} ISP_AE_RANGE_S;

【成员】

成员名称

描述

u32Max

最大值。

u32Min

最小值。

【注意事项】

最小值不能大于最大值。

【相关数据类型及接口】

无。

4.5.2.5. ISP_ANTIFLICKER_MODE_E

【说明】

定义抗闪模式。

【定义】

typedef enum _ISP_ANTIFLICKER_MODE_E
{
  ISP_ANTIFLICKER_NORMAL_MODE = 0x0,
  ISP_ANTIFLICKER_AUTO_MODE = 0x1,
  ISP_ANTIFLICKER_MODE_BUTT
} ISP_ANTIFLICKER_MODE_E;

【成员】

成员名称

描述

ISP_ANTIFLICKER_NORMAL_MODE

普通抗闪模式。

ISP_ANTIFLICKER_AUTO_MODE

自动抗闪模式。

【注意事项】

  • ISP_ANTIFLICKER_NORMAL_MODE为普通抗闪模式,曝光时间可以根据亮度进行调节,最小曝光时间固定为1/120 sec(60Hz)或1/100 sec(50Hz),不受曝光时间最小值的限制。

    • 有灯光的环境:曝光时间可与光源频率相匹配,能够防止图像闪烁。

    • 高亮度的环境:亮度越高,要求曝光时间就越短。而普通抗闪模式的最小曝光时间并不会根据高亮度进行调节,因此会产生过曝情况。

  • ISP_ANTIFLICKER_AUTO_MODE为自动抗闪模式,曝光时间可以根据亮度进行调节,最小曝光时间可达到sensor的最小曝光时间。与普通抗闪模式的差别主要在高亮度的环境体现。

    • 高亮度的环境:最小曝光时间可以达到sensor的最小曝光时间,能够有效抑制过曝,但此时抗闪失效。

【相关数据类型及接口】

无。

4.5.2.6. ISP_ANTIFLICKER_S

【说明】

定义抗闪属性。

【定义】

typedef struct _ISP_ANTIFLICKER_S
{
  CVI_BOOL bEnable;
  ISP_AE_ANTIFLICKER_FREQUENCE_E   enFrequency;
  ISP_ANTIFLICKER_MODE_E enMode;
} ISP_ANTIFLICKER_S;

【成员】

成员名称

描述

bEnable

bEnable

为CVI_TRUE时使能图像抗闪,

为CVI_FALSE时不使能图像抗闪。

enFrequency

抗闪频率值。

取值范围:[0, 1],

默认值:为0。0: 60Hz 1: 50Hz

enMode

抗闪模式,普通抗闪或自动抗闪。

【注意事项】

抗闪开启后曝光时间会受到最大/最小曝光时间的限制,若最小抗闪时间大于最大曝光时间,那么开启抗闪后曝光时间将被限制为最大曝光时间。

【相关数据类型及接口】

4.5.2.7. ISP_SUBFLICKER_S

【说明】

定义ISP图像亚抗闪属性。

【定义】

typedef struct _ISP_SUBFLICKER_S
{
  CVI_BOOL bEnable;
  CVI_U8   u8LumaDiff;
} ISP_SUBFLICKER_S;

【成员】

成员名称

描述

bEnable

bEnable 为CVI_TRUE时使能图像亚抗闪功能,为CVI_FALSE时不使能图像亚抗闪。

u8LumaDiff

抗闪程度设置,范围 [0x0, 0x64]。亚抗闪功能生效时,该值越大越接近于抗闪。

【注意事项】

  • 强制抗闪模式时,最小曝光时间固定为1/120 sec(60Hz)或1/100 sec(50Hz),在某些场景(如室内对准室外窗户的背光场景)画面可能会过曝严重,但不抗闪画面工频闪又比较厉害。 在这种情况下引入亚抗闪模式是为了取得过曝与闪烁之间的平衡。在强制抗闪模式下,当亚抗闪功能生效时,若画面亮度小于(AeCompensation + u8LumaDiff),那么曝光时间仍会固定为最小抗闪时间1/120 sec(60Hz)或1/100 sec(50Hz)以防止图像闪烁。 若画面亮度大于(AeCompensation + u8LumaDiff),则取消抗闪,调整画面目标亮度为(AeCompensation + u8LumaDiff),通过引入一定程度的画面闪烁来避免画面过曝严重。

  • 只有在满足打开抗闪、强制抗闪模式且抗闪频率值不等于0的前提下,亚抗闪功能才能生效。

【相关数据类型及接口】

无。

4.5.2.8. ISP_FSWDR_MODE_E

【说明】

定义ISP FSWDR运行模式。

【定义】

typedef enum _ISP_FSWDR_MODE_E
{
  ISP_FSWDR_NORMAL_MODE = 0x0,
  ISP_FSWDR_LONG_FRAME_MODE = 0x1,
  ISP_FSWDR_AUTO_LONG_FRAME_MODE = 0x2,
  ISP_FSWDR_MODE_BUTT
}ISP_FSWDR_MODE_E;

【成员】

成员名称

描述

ISP_FSWDR_NORMAL_MODE

正 常FSWDR模式,此时AE和合成模块按照自动/手动曝光比进行工作。

ISP_FSWDR_LONG_FRAME_MODE

长帧模式,此时AE将短帧曝光时 间设置为最小值,长帧曝光时间接近1帧所允许的最大值,合成模块只输出长帧数据,可用于优化弱宽动态场景或低照度时的图像质量。

ISP_FSWDR_AUTO_LONG_FRAME_MODE

自动长帧模式,此时AE短帧曝光时间不会超过sensor限制的长帧模式下短帧最大曝光时间,在曝光量超过sensor设置的阈值时,自动切换为长帧模式,合成模块只输出长帧数据。

【注意事项】

  • 长帧模式仅在行模式WDR下有效,自动长帧模式仅在2to1行模式WDR下有效,并且为了保证图像质量,WDR模块的运动检测及长短帧融合阈值均为自动配置,不支持手动配置。在线将模式切换到WDR模式,默认为正常FSWDR模式。

  • 自动长帧模式下,手动曝光比生效,如果手动曝光比大于1,即使曝光量大于设置的阈值也不会进入长帧模式;如果手动曝光比为1,则会自动进入长帧模式。

【相关数据类型及接口】

无。

4.5.2.9. ISP_AE_GAIN_TYPE_E

【说明】

定义增益使用的方式。

【定义】

typedef enum _ISP_AE_GAIN_TYPE_E {
  AE_TYPE_GAIN = 0,
  AE_TYPE_ISO = 1,
  AE_TYPE_BUTT
} ISP_AE_GAIN_TYPE_E;

【成员】

成员名称

描述

enGainType

0 : 使用 gain 的方式

1 : 使用 ISO num的方式

【注意事项】

无。

4.5.2.10. ISP_AE_ATTR_S

【说明】

定义自动曝光属性。

【定义】

typedef struct _ISP_AE_ATTR_S
{
  ISP_AE_RANGE_S stExpTimeRange;
  ISP_AE_RANGE_S stAGainRange;
  ISP_AE_RANGE_S stDGainRange;
  ISP_AE_RANGE_S stISPDGainRange;
  ISP_AE_RANGE_S stSysGainRange;
  CVI_U32 u32GainThreshold;
  CVI_U8 u8Speed;
  CVI_U16 u16BlackSpeedBias;
  CVI_U8 u8Tolerance;
  CVI_U8 u8Compensation;
  CVI_U16 u16EVBias;
  ISP_AE_STRATEGY_E enAEStrategyMode;
  CVI_U16 u16HistRatioSlope;
  CVI_U8 u8MaxHistOffset;
  ISP_AE_MODE_E enAEMode;
  ISP_ANTIFLICKER_S stAntiflicker;
  ISP_SUBFLICKER_S stSubflicker;
  ISP_AE_DELAY_S stAEDelayAttr;
  CVI_BOOL bManualExpValue;
  CVI_U32 u32ExpValue;
  ISP_FSWDR_MODE_E enFSWDRMode;
  CVI_BOOL bWDRQuick;
  CVI_U16 u16ISOCalCoef;
  ISP_AE_GAIN_TYPE_E enGainType;
  ISP_AE_RANGE_S stISONumRange;
  CVI_S16 s16IRCutOnLv;
  CVI_S16 s16IRCutOffLv;
  ISP_AE_IR_CUT_FORCE_STATUS enIRCutStatus;
  CVI_U8 au8AdjustTargetMin[LV_TOTAL_NUM];
  CVI_U8 au8AdjustTargetMax[LV_TOTAL_NUM];
  CVI_U16 u16LowBinThr;
  CVI_U16 u16HighBinThr;
  CVI_BOOL bEnableFaceAE;
  CVI_U8 u8FaceTargetLuma;
  CVI_U8 u8FaceWeight;
  CVI_U8 u8GridBvWeight;
  CVI_U32 au32Reserve[RESERVE_SIZE];
  CVI_U8 u8HighLightLumaThr;
  CVI_U8 u8HighLightBufLumaThr;
  CVI_U8 u8LowLightLumaThr;
  CVI_U8 u8LowLightBufLumaThr;
  CVI_BOOL bHistogramAssist;
} ISP_AE_ATTR_S;

【成员】

成员名称

描述

stExpTimeRange

曝光时间范围,设 置最大值和最小值,以微秒(us)为单位。

取值范围:[0x0, 0xFFFFFFFF],

具体范围与:sensor相关。

stISONumRange

ISO num 范围, 设置最大值和最小值, 此设定只在enGainType = AE_TYPE_ISO 时有效。

取值范围:[0x64, 0xFFFFFFFF],

具体范围与:sensor相关。

stAGainRange

Sensor模拟增益范围 ,设置最大值和最小值,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF],

具体范围与:sensor相关。

stDGainRange

Sensor数字增益范围 ,设置最大值和最小值,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF],

具体范围与:sensor相关。

stISPDGainRange

ISP数字增益范围 ,设置最大值和最小值,10bit小数精度。

取值范围:[0x400, 0x7FFF]。

stSysGainRange

系统增益范围 ,设置最大值和最小值,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF],

具体范围与:sensor相关。

u32GainThreshold

自动降 帧时的系统增益门限值,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF],

默认值:为 0x400000

u8Speed

自动曝光调整时的速度。

取值范围:[0x0, 0xFF],

默认值:为0x40。

u16BlackSpeedBias

画面由暗到亮AE调节速度的偏差值 ,该值越大,画面从暗到亮的速度越快。

取值范围:[0x0, 0xFFFF],

默认值:为0x90。

u8Tolerance

自动曝光调整时对画面亮度的容忍偏差。

取值范围:[0x0, 0xFF],

默认值:为0x2。

u8Compensation

自动曝光调整时的目标亮度。

取值范围:[0x0, 0xFF],

默认值:为0x38。

u16EVBias

自动曝光 调整时的曝光量偏差值,10bit小数精度。

取值范围:[0x0, 0xFFFF],

默认值:为0x400。

enAEStrategyMode

自动曝光策略,高光优先或低光优先,

默认值:为 AE_EXP_HIGHLIGHT_PRIOR

u16HistRatioSlope

高/低光优先时, 调整目标亮度的步幅。

取值范围:[0x0, 0xFFFF],

默认值:为0x8。

u8MaxHistOffset

感 兴趣区域对统计平均值影响的最大程度。

取值范围:[0x0, 0xFF],

默认值:为0x10。

enAEMode

自动曝光模式,自动降帧模式或固定帧率模式。

默认值:为 AE_MODE_FIX_FRAME_RATE

stAntiflicker

抗闪属性设置。默认抗闪不使能。

stSubflicker

亚抗闪属性设置。默认亚抗闪不使能。

stAEDelayAttr

延时属性设置。默认u16BlackDelayFrame=0u16WhiteDelayFrame=0。

bManualExpValue

手动曝光量使 能,该值为CVI_TRUE时,AE算法采用u32ExpValue作为当前曝光量进行曝光时间和增益等的分配,为CVI_FALSE时采用自动计算的曝光量进行分配。

默认值:为CVI_FALSE。

u32ExpValue

手动曝光量值,等于曝光时间(行数)*系统增益(6bit小数精度)。

默认值:为 0 取值范围:(0x0, 0xFFFFFFFF]。

enFSWDRMode

FSWDR运行模式。默认为ISP_FSWDR_NORMAL_MODE。

bWDRQuick

WDR模式下,AE算法从稳定状态(亮度误 差小于等于容忍偏差值u8Tolerance)重新调整时,默认前50帧调整会进行时域滤波,以调整更加平滑。该值为CVI_TRUE时,取消50帧时域滤波,使AE收敛速度更快。默认值为CVI_FALSE。

u16ISOCalCoef

ISO标定系数,用于保证拍照所需D CF信息中显示的ISO是标准的,8bit精度。

取值范围:[0x0, 0xFFFF],

默认值:为0x100。

enGainType

选择以ISO Num或者是 Gain 的方式来控制增益

au8AdjustTargetMin

设定环境亮度各 LV AE收敛的目标亮度的最小值

取值范围::(0x0, 0x100) LV -5 ~ 15 的

默认值:为{ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 45, 50, 50, 50, 50, 50, 50, 60, 60, 60}

au8AdjustTargetMax

设定环境亮度各 LV AE收敛的目标亮度的最大值

取值范围::(0x0, 0x100) LV -5 ~ 15 的

默认值:为{ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 60, 60, 60, 60, 60, 60, 60, 70, 70, 70}

u16LowBinThr

AE window 统计值低于lowBinThr(8 bits)时且累积 window数低于总 window 数 25%, AE不使用此window 的统计值测光,

默认值:为 10

u16HighBinThr

AE window 统计值高于HighBinThr(8 bits) 时且 累积 window数低于总 window数 10%, AE不使用此window的统计值测光,

默认值:为 256

s16IRCutOnLv

IR Cut 可切换时, 使用 IR Cut 的环境Lv 值, 精度为 100 阈值,

默认值:为 0

s16IRCutOffLv

IR Cut 可切换时, 不使用 IR Cut 的环境 Lv 值, 精度为 100

默认值:为 700

enIRCutStatus

IR Cut 可切换时, IR Cut切换的模式设定,

默认值:为AE_IR_CUT_FORCE_AUTO

bEnableFaceAE

人脸辨识连动 AE 测光(Face AE)使能

u8FaceTargetLuma

人脸测光的目标亮度(8 bits)

u8FaceWeight

人脸测光与整体环境测光的权重比例

u8GridBvWeight

AE 测光分成以block luma / bvStep 平均这 2 种, 默认以 luma 为主, 此参数可设定 luma 为主的测光混合 bvStep 的测光权重, 高光优先若觉得画像太暗, 可适当调高此参数权重

au32Reserve[RESERVE_SIZE]

保留字段,无意义

u8HighLightLumaThr

高亮区的亮度阈值

u8HighLightBufLumaThr

高亮缓冲区的亮度阈值

u8LowLightLumaThr

低亮区的亮度阈值

u8LowLightBufLumaThr

低亮缓冲区的亮度阈值

bHistogramAssist

使用直方图统计值 来辅助高光策略,应对高光区域小于一个block size 的情况

【注意事项】

  • 自动模式下,更改手动曝光属性的值不会生效。

  • 自动曝光的最大最小时间及增益。

可根据不同的场景对曝光时间及增益进行限定,如有高速运动物体场景可限定最大曝光时间值为较小值,这样可减轻运动物体拖影现象。

  • 自动曝光的系统增益

若(sensor模拟增益最小值*sensor数字增益最小值*ISP数字增益最小值)小于系统增益最小值,则AE算法内部计算时最小增益会被限制到系统增益的最小值。若(sensor模拟增益最大值*sensor数字增益最大值*ISP数字增益最大值)大于系统增益最大值,则AE算法内部计算时最大增益会被限制到系 统增益的最大值。推荐通过设置系统增益的最大、最小值进行增益限制,分别限制sensor模拟增益、sensor数字增益和ISP数字增益时,若把较高精度的ISP数字增益限制到1倍,容易导致闪烁。实际上,AE算法内部利用系统增益来计算最大/最小曝光量,而并不是直接限制某项增益的值。比如说系统增益最大值限制为 1倍,但sensor模拟增益的最小值限制为2倍,则实际生效的结果以sensor模拟增益的限制为准,sensor数字增益及ISP数字增益的限制也有同理。

  • 自动降帧时的系统增益门限值

在SLOW_SHUTTER模式下,当系统增益达到所设置的门限值时,系统将自动进入SLOW_SHUTTER模式。

  • u8Speed用于设定自动曝光时的收敛速度,该值越大曝光的收敛速度越快,但也会导致收敛过程中出现反复震荡。

  • u16BlackSpeedBias用于设定画面由暗到亮AE调节速度的偏差值。默认u8Speed下,画面从亮到暗的速度会快于画面从暗到亮的速度,若想双方向的AE调节速度差不多,可以调高u16BlackSpeedBias。

  • 亮度补偿属性u8Compensation用于调节曝光的目标亮度。曝光亮度补偿值越大则图像亮度越高。

  • 曝光偏差属性u16EVBias用于在特殊场景下对画面的目标亮度进行微调,也可认为是更高精度的亮度补偿值,通过调节该值来改变画面目标亮度,真实生效的AE目标亮度为u8Compensation* u16EVBias/1024。u8Compensation不变时,该值越大则图像亮度越高。

  • 曝光容忍偏差属性u8Tolerance用于调节曝光对环境的灵敏度,曝光容忍偏差值越大则曝光越不敏感,且可能导致同一目标亮度值多次调节得到的亮度差异越大,所以该属性推荐不能设定过大。

  • 曝光策略属性enAEStrategyMode用于选择对高光优先或低光优先的曝光策略。 高光优先意味着对高光敏感,尽量避免画面过曝。 低光优先意味着对低光敏感,尽量看清楚暗处区域,不管画面是否过曝。 默认的曝光策略是高光优先,用户可根据场景需要进行调整, 高光优先时, 用户可设定u8HighLightLumaThr 来决定高光区域的亮度阈值, 当画面中有超过此亮度阈值的 windows (该 windows 的权重不为 0)时, 则会降低目标亮度来抑制此高光 windows的亮度,当所有的 windows 的亮度都小u8HighLightBufLumaThr 时, 则恢复到原本设定的目标亮度,低光优先时, 当画面中有低于此 u8LowLightLumaThr 亮度阈值的 windows (该 windows 的权重不为 0)时, 则会提高目标亮度来拉亮此低光 windows的亮度,当所有的 windows 的亮度都大于 u8LowLightBufLumaThr时, 则恢复到原本设定的目标亮度。

  • u16HistRatioSlope用于设定感兴趣区域的权重。若是高光优先曝光模式,则该值设置的是高光区域的权重,该值越大,则意味着对高光区域越敏感。 反之,若是低光优先模式,则该值设置的是低光区域的权重,该值越大,则意味着对暗处区域越敏感, 建议u16HistRatioSlope的值设置不要超过0x100。

  • 自动曝光时,可设定感兴趣区域对统计平均值影响的最大程度u8MaxHistOffset。 该值相当于对提高u16HistRatioSlope时增加的权重做限制,若该值为0 , 无论u16HistRatioSlope多大,也不会对高光或低光区域做特殊处理,此时的统计平均值就是原始值。 通过合理设置该值,可以保证任何场景AE稳定后画面平均亮度都在一定范围内,在高光优先曝光模式下, 如果该值设置较大,在对比度稍高一些的场景,如睛天室外场景,有天空有树木,则可能导致整体画面亮度偏低,因为此时优先保证了亮区天空的效果,通过限制该值从而限制对亮区的倾斜程度可以解决该问题。

  • 曝光策略切换时,最好同时更新u16HistRatioSlope和u8MaxHistOffset的值,否则这2个值会采用上一种策略下的配置,效果可能与预期不符。

  • 在做强光抑制方案时,建议在高光优先曝光模式下,通过降低AE目标亮度,同时合理设置u16HistRatioSlope和u8MaxHistOffset来抑制强光,暗区则可以通过使能DRC来看清楚。低光优先则可以用于实现非指定区域的背光补偿。

  • AE曝光控制类型为自动时,可设定曝光模式enAEMode。该值可设定为慢快门模式(SLOW_SHUTTER)或固定帧率模式。慢快门模式通常用于低照度场景下进行自动降帧,以减少画面噪声。

  • 抗闪属性结构体stAntiflicker可用于设定抗闪使能,抗闪频率和抗闪模式等属性。FSWDR模式下,只对长帧抗闪有效。由于随着曝光比的变化,短帧曝光时间的最大值会受到限制,建议FSWDR模式使用自动抗闪模式。

  • 亚抗闪属性结构体stSubflicker可用于设定亚抗闪使能及抗闪程度属性。若有自动光圈,建议关闭亚抗闪功能。

  • AE曝光控制类型为自动时,可设定AE延时生效属性结构体stAEDelayAttr。该值的合理设置可提高画面亮度的稳定性,防止快速运动物体经过导致画面亮度发生变化。低码率设置时应该适当增加该值,以避免AE调节时出现块效应。

  • 用户可以通过将bManualExpValue置为CVI_TRUE,手动设置曝光量u32ExpValue来屏蔽AE算法的曝光量调整部分,只用到曝光量分配部分。u32ExpValue的值会受到最大、最小曝光量的限制。最大、最小曝光量分别对应最大、最小曝光时间与增益的乘积。

  • FSWDR运行模式改变时,需要相应修改cmos.c中的以下回调函数:

cmos_get_ae_default,cmos_fps_set,cmos_get_inttime_max,以保证长、 短帧曝光时间在合理范围内。正常WDR和长帧模式切换时, 会回调cmos_get_ae_default,更新曝光时间最大/最小值,增益最大/最小值,光圈最大/最小值和AE compensation等参数,同时,AE内部会将u16HistRatioSlope和u8MaxHistOffset更新为算法默认值。 需要注意的是,此时曝光比相关设置不会更新,仍会保持上一次的值。

  • au8AdjustTargetMin/ au8AdjustTargetMax 可针对不同的环境亮度设定不同的目标亮度最小/大值, AE 会根据当前的环境亮度收敛目标亮度到该区间内

  • u16LowBinThr/ u16HighBinThr 可设定该参数来排除AE 测光时, 影像中 太暗及太亮的部分, 建议 u16LowBinThr 不要超过 10( 8 bits)

  • enIRCutStatus/ s16IRCutOnLv/ s16IRCutOffLv 当产品的 IR Cut 为可切换时,该参数才会有作用,切换模式为Auto 时, 会根据设定的 On/Off 的环境亮度来切换IR Cur, 建议这 2 个环境亮度差要超过 6 个 LV 以上, 才不会发生频繁的反复切换的情况

【相关数据类型及接口】

4.5.2.11. ISP_ME_ATTR_S

【说明】

定义手动曝光属性。

【定义】

typedef struct _ISP_ME_ATTR_S
{
  ISP_OP_TYPE_E enExpTimeOpType;
  ISP_OP_TYPE_E enAGainOpType;
  ISP_OP_TYPE_E enDGainOpType;
  ISP_OP_TYPE_E enISPDGainOpType;
  CVI_U32 u32ExpTime;
  CVI_U32 u32AGain;
  CVI_U32 u32DGain;
  CVI_U32 u32ISPDGain;
  ISP_OP_TYPE_E enISONumOpType;
  ISP_AE_GAIN_TYPE_E enGainType;
  CVI_U32 u32ISONum;
} ISP_ME_ATTR_S;

【成员】

成员名称

描述

enExpTimeOpType

手动曝光 时间使能,

默认值:为OP_TYPE_AUTO

enAGainOpType

手动sensor模拟 增益使能,

默认值:为OP_TYPE_AUTO

enDGainOpType

手动sensor数字 增益使能,

默认值:为OP_TYPE_AUTO

enISPDGainOpType

手动ISP数字 增益使能,

默认值:为OP_TYPE_AUTO

u32ExpTime

手动曝光时间,以微秒(us)为单位,

默认值:为0x4000。

取值范围:[0x0, 0xFFF FFFFF],

具体范围与:sensor相关。

u32AGain

手动sensor模拟增益, 10bit小数精度,

默认值:为0x400。

取值范围:[0x400, 0xFFF FFFFF],

具体范围与:sensor相关。

u32DGain

手动sensor数字增益, 10bit小数精度,

默认值:为0x400。

取值范围:[0x400, 0xFFF FFFFF],

具体范围与:sensor相关。

u32ISPDGain

手动ISP数字增益, 10bit小数精度,

默认值:为0x400。

取值范围:[0x400, 0x 40000],

具体范围与:sensor相关。

enISONumOpType

选择以 ISO Num 或 gain 的方式控制增益,

默认值:为 0

enGainType

增益使用的方式

u32ISONum

手动 ISO Num 增益,

默认值:为100, 只在 enGainType = AE_TYPE_ISO 有作用。

【注意事项】

  • 手动模式下,手动曝光时间和增益的值会受到自动模式下最大/最小曝光时间和增益的限制。

  • 手动曝光使能参数有效时,必须设置相应的手动曝光参数,若不设置,则采用系统默认值:。

  • 增益单位为10bit小数精度的倍数,即1024代表1倍。

  • 若曝光参数设置超出最大(小)值,将使用sensor支持的最大(小)值代替。

【相关数据类型及接口】

4.5.2.12. ISP_EXPOSURE_ATTR_S

【说明】

定义ISP曝光属性。

【定义】

typedef struct _ISP_EXPOSURE_ATTR_S
{
  CVI_BOOL bByPass;
  ISP_OP_TYPE_E enOpType;
  CVI_U8 u8AERunInterval;
  CVI_BOOL bHistStatAdjust;
  CVI_BOOL bAERouteExValid;
  ISP_ME_ATTR_S stManual;
  ISP_AE_ATTR_S stAuto;
  CVI_U8   u8DebugMode;
  ISP_AE_METER_MODE_E   enMeterMode;
  CVI_BOOL bAEGainSepCfg;
} ISP_EXPOSURE_ATTR_S;

【成员】

成员名称

描述

bByPass

AE模块byp ass功能使能,默认为CVI_FALSE。

enOpType

自动曝光或手动 曝光开关,默认为OP_TYPE_AUTO。

u8AERunInterval

A E算法运行的间隔,取值范围为[1,255]。

取值为1时表示每帧都运行AE算法; 取值为2时表每2帧运行1次AE算法,依此类推。

建议该值设置不要大于2,

否则AE调节速度会受到影响。

WDR模式时,该值建议设置为1,这样AE收敛会更加平滑。该值默认为1。

bHistStatAdjust

此参数会压低 AE 对于亮区的测光亮度, 使亮区更亮,对于大面积天空场景,若测光偏暗,可设定此参数默认为 0

bAERouteExValid

AE扩展分配路线是否生效开关

CVI_TRUE时使用AE扩展分配路线,否则使用普通AE分配路线。

默认为CVI_FALSE。

stManual

手动曝光属性结构体

stAuto

自动曝光属性结构体

u8DebugMode

设置 AE 的debug mode,用于dumplog等debug功能,正常为 0

enMeterMode

AE 测光方式

0 : AE_METER_MULTI 中央加权测光

1 : AE_METER_AVERAGE 平均加权测光

2 :AE_METER_HIGHLIHGT_PRIORITY 亮区优先测光,适合 IR sensor 使用,

默认值:为AE_METER_MULTI

bAEGainSepCfg

长短帧增益是否分开分配

【注意事项】

  • AE ByPass为CVI_TRUE时,AE模块被bypass,任何AE配置都不会对图像亮度产生影响。ISP_AE_RESULT_S`_ 保持为AE bypass前一帧的值。

  • WDR/线性模式切换时,u8AERunInterval会重置为1,用户可以在切换完成后,根据需要修改该值。

  • bAEGainSepCfg仅在2to1WDR 模式下配置且sensor 支持此功能才能生效。

  • 手动模式不支持长短帧增益分开分配

【相关数据类型及接口】

4.5.2.13. ISP_WDR_EXPOSURE_ATTR_S

【说明】

定义WDR模式下的曝光属性。

【定义】

#define EXP_RATIO_NUM       (3)
typedef struct _ISP_WDR_EXPOSURE_ATTR_S
{
  ISP_OP_TYPE_E enExpRatioType;
  CVI_U32 au32ExpRatio[EXP_RATIO_NUM];
  CVI_U32 u32ExpRatioMax;
  CVI_U32 u32ExpRatioMin;
  CVI_U16 u16Tolerance;
  CVI_U16 u16Speed;
  CVI_U16 u16RatioBias;
  CVI_U8 u8SECompensation;
  CVI_U16 u16SEHisThr;
  CVI_U16 u16SEHisCntRatio1;
  CVI_U16 u16SEHisCntRatio2;
  CVI_U16 u16SEHis255CntThr1;
  CVI_U16 u16SEHis255CntThr2;
  CVI_U8 au8LEAdjustTargetMin[LV_TOTAL_NUM];
  CVI_U8 au8LEAdjustTargetMax[LV_TOTAL_NUM];
  CVI_U8 au8SEAdjustTargetMin[LV_TOTAL_NUM];
  CVI_U8 au8SEAdjustTargetMax[LV_TOTAL_NUM];
  CVI_U8 u8AdjustTargetDetectFrmNum;
  CVI_U32 u32DiffPixelNum;
  CVI_U16 u16LELowBinThr;
  CVI_U16 u16LEHighBinThr;
  CVI_U16 u16SELowBinThr;
  CVI_U16 u16SEHighBinThr;
  CVI_U8 au8FrameAvgLumaMin[LV_TOTAL_NUM];
  CVI_U8 au8FrameAvgLumaMax[LV_TOTAL_NUM];
} ISP_WDR_EXPOSURE_ATTR_S;

【成员】

成员名称

描述

enExpRatioType

仅在多帧合成WDR模式下有效。

OP_TYPE _AUTO:根据场景自动计算长短帧曝光比;

O P_TYPE_MANUAL:手动配置长短帧曝光比。

au32ExpRatio

仅在多帧合成WDR模式下有效。

当enExpRatioType为OP_TYPE_AUTO时,au32ExpRatio无效。

当enExpRatioType为OP_TYPE_MANUAL时,au32ExpRatio表示二帧合成WDR相邻2帧曝光比期望值。

其中au32ExpRatio[0]作为长侦/短侦曝光比,。6bit小数精度,0x40表示曝光比为1倍。

取值范围:[0x40, 0xFFF]

u32ExpRatioMax

仅在多帧合成WDR模式下有效。

当enExpRatioType为 OP_TYPE_AUTO时,u32ExpRatioMax表示最长帧与最短帧曝光时间比值的最大值。

即2帧合成时表示长侦/短侦曝光比的最大值。

当enExpRatioType为O P_TYPE_MANUAL时,u32ExpRatioMax无效。 6bit小数精度,0x40表示曝光比为1倍。

取值范围:[0x40, 0x4000]

u32ExpRatioMin

仅在多帧合成WDR模式下有效。

当enExpRatioType为OP_TYPE_AUTO时,u32ExpRatioMin表示长帧曝光时间与短帧曝光时间比值的最小值。

当enExpRatioType为OP_TYPE_MANUAL时,u32ExpRatioMin无效。

格式为无符号 6.6bit定点,0x40表示长帧曝光时间与短帧曝光时间的比值为1倍。

默认值:为0x40。

取值范围:[0x40,u32ExpRatioMax]

u16Tolerance

曝光调整时对画面亮度的容忍偏差 ,仅在两帧合成WDR模式下有效。

默认值:为5 取值范围:[0x0, 0xFF]

u16Speed

自动曝光比 调节速度,仅在两帧合成WDR模式下有效。

当enExpRa tioType为OP_TYPE_AUTO时,该值越大,自动曝光比调节速度越快。

默认值:为0x20。

取值范围:[0x0, 0xFF]

u16RatioBias

曝光比偏差值,仅在多帧合成WDR模式下有效。

当enExpRatioType为 OP_TYPE_AUTO时,该值越大,自动曝光比越大。

默认值:为0x400,表示不对自动曝光比算法的计算结果进行调整。

经过该值调整的曝光比会受到曝光比最大/最小值的限制。

取值范围:[0x0, 0xFFFF]

u8SECompensation

短侦的目标亮度

默认值:为 56

au8LEAdjustTargetMin

设定长侦环境亮度各 LV AE 收敛的目标亮度的最小值

取值范围::(0x0, 0x100),LV -5 ~ 15 的

默认值:为{ 15, 15, 15, 15,15, 15, 15, 20, 20, 25, 30, 35, 40, 40, 50, 50, 55, 60, 60, 60, 60}

au8LEAdjustTargetMax

设定长侦环境亮度各 LV AE 收敛的目标亮度的最大值

取值范围:(0x0, 0x100),LV -5 ~ 15 的

默认值:为{25, 25, 25, 25,25, 25, 25, 30, 30, 35, 40, 45, 50, 50, 60, 60, 70, 75, 75,75, 75}

au8SEAdjustTargetMin

设定短侦环境亮度各 LV AE 收敛的目标亮度的最小值

取值范围:(0x0, 0x100),LV -5 ~ 15 的

默认值:为{5, 5, 5, 5, 5, 5, 5, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 20, 20, 20, 20}

au8SEAdjustTargetMax

设定长侦环境亮度各 LV AE 收敛的目标亮度的最大值

取值范围:(0x0, 0x100),LV -5 ~ 15 的

默认值:为{15, 15, 15, 15,15, 15, 15, 20, 20, 25, 25, 25, 25, 30, 40, 50, 60, 60, 60, 60, 60}

u16LELowBinThr

长侦 AE window 统计值低于lowBinThr(8bits) 时, 长侦AE不使用此window 的统计值测光,

默认值:为 0

u16LEHighBinThr

长侦AE window 统计值高于HighBinThr(8bits) 时且累计 window 数不超过全 window数的 25% 时, 长侦AE不使用此window 的统计值测光,

默认值:为 240

u16SELowBinThr

短侦 AE window 统计值低于lowBinThr(8bits) 时, 短侦AE不使用此window 的统计值测光,

默认值:为 8

u16SEHighBinThr

短侦AE window 统计值高于HighBinThr(8bits) 时, 短侦AE不使用此window 的统计值测光,

默认值:为 246

au8FrameAvgLumaMax

不受u16LELowBinThr/ u16LEHighBinThr 的限制, 长侦画面的平均加权亮度阈值, 当长侦画面的平均加权亮度(可由 ExposureInfo u8LEFrameAvgLuma 知道此亮度)超过此阈值时, 曝光会限制亮度在此阈值

【注意事项】

  • 针对某些对短帧最大曝光时间有限制的sensor,曝光比较小时,长帧最大曝光时间较短,图像动态范围及噪声表现较差,导致自动曝光比计算不准确,此时建议限制最小曝光比,保证长帧最大曝光时间至少达到3ms。

  • 建议u16Speed不要设置小于0x8,避免某些场景由于计算精度不足导致曝光比调节太慢甚至不调。u16Speed过大可能导致曝光比变化太快,造成画面亮度出现振荡。

  • 建议手动模式下u32ExpRatio不要设置大于0x400。如果曝光比大于0x400,在较亮的超宽动态场景,适当调高曝光比会优化长帧图像噪声表现。但是在较暗或低宽动态场景,如果曝光比过大,由于短帧最大曝光时间会被压缩,导致图像噪声表现会变差,而且会出现明显的噪声不连续,运动表现也会变差。

【相关数据类型及接口】

4.5.2.14. ISP_AE_ROUTE_NODE_S

【说明】

定义AE分配路线节点属性。

【定义】

typedef struct _ISP_AE_ROUTE_NODE_S
{
  CVI_U32 u32IntTime;
  CVI_U32 u32SysGain;
  ISP_IRIS_F_NO_E enIrisFNO;
  CVI_U32 u32IrisFNOLin;
} ISP_AE_ROUTE_NODE_S;

【成员】

成员名称

描述

u32IntTime

节点曝光时间,单位为微秒(us)。

取值范围:(0x0, 0xFFFFFFFF]

u32SysGain

节点增益,包括sensor模拟增益,sensor数字增益和ISP数字增益,10bit精度。

取值范围:[0x400, 0xFFFFFFFF]

enIrisFNO

节点光圈F 值大小,仅支持P-Iris,不支持DC-Iris。

取值范围:[ISP_IRIS_F_NO_32_0, ISP_IRIS_F_NO_1_0]。

u32IrisFNOLin

节点光圈F值等效增 益大小,仅支持P-Iris,不支持DC-Iris。

取值范围:[1, 1024]

【注意事项】

无。

【相关数据类型及接口】

4.5.2.15. ISP_AE_ROUTE_S

【说明】

定义AE曝光分配策略属性。

【定义】

#define ISP_AE_ROUTE_MAX_NODES (16)
typedef struct _ISP_AE_ROUTE_S
{
  CVI_U32 u32TotalNum;
  ISP_AE_ROUTE_NODE_S astRouteNode[ISP_AE_ROUTE_MAX_NODES];
} ISP_AE_ROUTE_S;

【成员】

成员名称

描述

u32TotalNum

曝光分配路线节点数目,目前最大为16。

astRouteNode[ISP_AE_ROUTE_MAX_NODES]

曝光分配路线节点属性。

【注意事项】

无。

【相关数据类型及接口】

4.5.2.16. ISP_AE_ROUTE_EX_NODE_S

【说明】

定义AE扩展分配路线节点属性。

【定义】

typedef struct _ISP_AE_ROUTE_EX_NODE_S
{
  CVI_U32 u32IntTime;
  CVI_U32 u32Again;
  CVI_U32 u32Dgain;
  CVI_U32 u32IspDgain;
  ISP_IRIS_F_NO_E enIrisFNO;
  CVI_U32 u32IrisFNOLin;
} ISP_AE_ROUTE_EX_NODE_S;

【成员】

成员名称

描述

u32IntTime

节点曝光时间,单位为微秒(us)。

取值范围:(0x0, 0xFFFFFFFF]

u32Again

sensor模拟增益,10bit精度。

取值范围:[0x400, 0x3FFFFF]

u32Dgain

sensor数字增益,10bit精度。

取值范围:[0x400, 0x3FFFFF]

u32IspDgain

ISP数字增益,10bit精度。

取值范围:[0x400, 0x40000]

enIrisFNO

节点光圈F值 大小,仅支持P-Iris,不支持DC-Iris。

取值范围:[ISP_IRIS_F_NO_32_0, ISP_IRIS_F_NO_1_0]

u32IrisFNOLin

节点光圈F值等效增益大小,仅支持P-Iris,不支持DC-Iris。

取值范围:[1, 1024]

【注意事项】

无。

【相关数据类型及接口】

4.5.2.17. ISP_AE_ROUTE_EX_S

【说明】

定义AE曝光分配策略扩展属性。

【定义】

#define ISP_AE_ROUTE_EX_MAX_NODES (16)
typedef struct _ISP_AE_ROUTE_EX_S
{
  CVI_U32 u32TotalNum;
  ISP_AE_ROUTE_EX_NODE_S astRouteExNode[ISP_AE_ROUTE_EX_MAX_NODES];
} ISP_AE_ROUTE_EX_S;

【成员】

成员名称

描述

u32TotalNum

曝光扩展分配路线节点数目,目前最大为16。

astRouteExNode[ISP_AE_ROUTE_EX_MAX_NODES]

曝光扩展分配路线节点属性。

【注意事项】

无。

【相关数据类型及接口】

4.5.2.18. ISP_EXP_INFO_S

【说明】

定义ISP曝光内部状态信息。

【定义】

#define HIST_NUM (256)
typedef struct _ISP_EXP_INFO_S
{
  CVI_U32 u32ExpTime;
  CVI_U32 u32ShortExpTime;
  CVI_U32 u32MedianExpTime;
  CVI_U32 u32LongExpTime;
  CVI_U32 u32AGain;
  CVI_U32 u32DGain;
  CVI_U32 u32ISPDGain;
  CVI_U32 u32Exposure;
  CVI_BOOL bExposureIsMAX;
  CVI_S16 s16HistError;
  CVI_U32 au32AE_Hist256Value[HIST_NUM];
  CVI_U8 u8AveLum;
  CVI_U32 u32LinesPer500ms;
  CVI_U32 u32PirisFNO;
  CVI_U32 u32Fps;
  CVI_U32 u32ISO;
  CVI_U32 u32ISOCalibrate;
  CVI_U32 u32RefExpRatio;
  CVI_U32 u32FirstStableTime;
  ISP_AE_ROUTE_S stAERoute;
  ISP_AE_ROUTE_EX_S stAERouteEx;
  CVI_U8 u8WDRShortAveLuma;
  CVI_U32 u32WDRExpRatio;
  CVI_U8 u8LEFrameAvgLuma;
  CVI_U8 u8SEFrameAvgLuma;
  CVI_FLOAT fLightValue;
  CVI_U32 u32AGainSF;
  CVI_U32 u32DGainSF;
  CVI_U32 u32ISPDGainSF;
  CVI_U32 u32ISOSF;
  ISP_AE_ROUTE_S stAERouteSF;
  ISP_AE_ROUTE_EX_S stAERouteSFEx;
  CVI_BOOL bGainSepStatus;
}ISP_EXP_INFO_S;

【成员】

成员名称

描述

u32ExpTime

当前曝光时间,单位为微秒(us)。

取值范围:[0x0, 0xFFFFFFFF]

u32ShortExpTime

FSW DR模式下,表示当前短帧(S)曝光时间,单位为微秒(us)。线性模式不用关注该值。

取值范围:[0x0, 0xFFFFFFFF]

u32LongExpTime

FSWDR模式下,表 示当前长帧曝光时间,单位为微秒(us)。

取值范围:[0x0, 0xFFFFFFFF]

u32AGain

当前sensor模拟增益,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF]

u32DGain

当前sensor数字增益,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF]

u32ISPDGain

当前ISP数字增益,10bit小数精度。

取值范围:[0x400, 0xFFFFFFFF]

u32Exposure

当前曝光量,等于曝光时间 与曝光增益的乘积,其中曝光时间的单位为曝光行数,曝光增益为6bit小数精度。

取值范围:[0x40, 0xFFFFFFFF]

bExposureIsMAX

0:ISP未达到最大曝光水平;1:ISP达到最大曝光水平。

s16HistError

统计信息,AE的目标亮度值与实际值的差,该值为正表示当前期望的亮度信息大于实际的亮度信息,该值为负表示期望的亮度信息小于实际的亮度信息。

au32AE_Hist256Value

全局256段直方图统计信息 取值范围:[0x0, 0xFFFFFFFF]

u8AveLum

平均亮度信息取值范围:[0x0, 0xFF]

u32LinesPer500ms

当前每500ms对应的曝光行数,可 用于将曝光时间的单位由us转换成行数。

取值范围:[0x0, 0xFFFFFFFF]

u32PirisFNO

当前P-Iris光圈F值对应的等效增益。 取值范围:[0x0, 0x400]

u32Fps

实际图像帧率 * 100

取值范围::[0x0, 0xFFFFFFFF]

u32ISO

当 前sensor模拟增益*sensor数字增益*ISP数字增益*100,其中增益的精度都为10bit。

取值范围:[0x64, 0xFFFFFFFF]

u32ISOCalibrate

标准ISO, 用于拍照DCF信息显示。 u32ISOCalibrate = u32ISO * 256 / u16ISOCalCoef。

u32RefExpRatio

参考曝光比,用于估计当前场景的动态范围,会受到ISP_WDR_EXPOSURE_ATTR_S中Tolerance和Speed等值的影响。

取值范围:[0x40, 0x4000]

u32FirstStableTime

首 次AE收敛稳定的时间,单位为微秒(us)。

取值范围:[0x0, 0xFFFFFFFF]

stAERoute

实际生效的AE route,各个节点中的曝光时间以us为单位, 增益为10bit精度,光圈取值范围为[ISP_IRIS_F_NO_32_0,ISP_IRIS_F_NO_1_0]。 光圈类型为DC-Iris时,节点光圈值不会对曝光量分配产生影响。

stAERouteEx

实际生效的扩展AE route,各个节点中 的曝光时间以us为单位,增益为10bit精度, 光圈取值范围为[ISP_IRIS_F_NO_32_0, ISP_IRIS_F_NO_1_0]。 光圈类型为DC-Iris时,节点光圈值不会对曝光量分配产生影响。

u32WDRExpRatio

WDR 长/短侦的曝光比, 6 bits 精度

u8WDRShortAveLuma

短侦的画面亮度

u8LEFrameAvgLuma

长侦的画面平均亮度

u8SEFrameAvgLuma

短侦的画面平均亮度

fLightValue

环境亮度值

【注意事项】

无。

【相关数据类型及接口】

4.5.2.19. ISP_SMART_EXPOSURE_ATTR_S

【说明】

定义智能模式下的AE 曝光属性。

【定义】

typedef struct _ISP_SMART_EXPOSURE_ATTR_S
{
  CVI_BOOL bEnable;
  CVI_BOOL bIRMode;
  ISP_OP_TYPE_E enSmartExpType;
  CVI_U8 u8LumaTarget;
  CVI_U16 u16ExpCoef;
  CVI_U16 u16ExpCoefMax;
  CVI_U16 u16ExpCoefMin;
  CVI_U8 u8SmartInterval;
  CVI_U8 u8SmartSpeed;
  CVI_U16 u16SmartDelayNum;
  CVI_U8 u8Weight;
  CVI_U8 u8NarrowRatio;
} ISP_SMART_EXPOSURE_ATTR_S;

【成员】

成员名称

描述

bEnable

智能 AE 是否使能,默认CVI_FALSE。

bIRMode

是否为红外模式,默认CVI_FALSE。CVI_TRUE 为红外模式;。CVI_FALSE 为普通模式。

enSmartExpType

OP_TYPE_AUTO:根据目 标检测结果自动调整曝光系数;OP_TY PE_MANUAL:手动配置曝光系数。

u8LumaTarget

识别区域(如人脸)目标亮度取值范围:[0x0, 0xFF]

u16ExpCoef

基于原始曝光调整的曝光系数,

值越大,图像整体亮度越高;

值越小,图像整体亮度越低。

当 enSmartExpType 为 OP_TYPE_AUTO 时,u16ExpCoef 为 AE算法根据 目标检测结果计算的曝光系数。

当 enExpRatioType 为 OP_TYPE_MANUAL时,u16ExpCoef 为手动配置的曝光系数。

10bit 小数精度,0x400 表示曝光系数为1 倍。

取值范围:[0x0, 0xFFFF]

u16ExpCoefMax

智能曝光系数最大值。

当 enSmartExpType 为 OP_TYPE_AUTO 时,u16ExpCoefMax 表示智能曝光系数最大值。

当enSmartExpType 为 OP_TYPE_MANUAL时,u16ExpCoefMax 无效。

10bit 小数精度,0x400表示曝光系数最大值为 1 倍。

取值范围:[0x0, 0xFFFF]

u16ExpCoefMin

智能曝光系数最小值。

当 enSmartExpType 为 OP_TYPE_AUTO 时,u16ExpCoefMin 表示。智能曝光系数最大值。

当enSmartExpType 为 OP_TYPE_MANUAL时,u16ExpCoefMin 无效。

10bit 小数精度,0x400表示曝光系数最小值为 1 倍。

取值范围:[0x0, 0xFFFF]

u8SmartInterval

智能 AE 运行间隔。

取值为 1 时表示每帧运行,

取值为 n 时,表示每 n 帧运行一次。

取值范围:[0x1, 0xFF]

u8SmartSpeed

智能 AE 调整速度。

默认值:为 0x40,值越小,调整 速度越慢;值越大,调整速度越快,也越容易出现震荡。

取值范围:[0x0, 0xFF]

u16SmartDelayNum

智能AE延时帧数,取值为4时表示4帧 未设置识别区域信息,清空检测区域信息ISP_SMART_INFO_S。

u8Weight

识别区域运算权重,仅智能模式生效

取值范围:[0x0, 0x64]

u8NarrowRatio

识别区域有效面积缩小比例

取值范围:[0x0, 0x64]

【注意事项】

无。

【相关数据类型及接口】

4.5.3. IRIS

4.5.3.1. ISP_IRIS_STATUS_E

【说明】

定义 ISP 光圈状态。

【定义】

typedef enum _ISP_IRIS_STATUS_E
{
    ISP_IRIS_KEEP = 0,
    ISP_IRIS_OPEN = 1,
    ISP_IRIS_CLOSE = 2,
    ISP_IRIS_BUTT
} ISP_IRIS_STATUS_E;

【成员】

成员名称

描述

ISP_IRIS_KEEP

光圈保持当前状态。

ISP_IRIS_OPEN

光圈全开。

ISP_IRIS_CLOSE

光圈全关。

【注意事项】

该值设置为ISP_IRIS_OPEN或ISP_IRIS_CLOSE时,光圈处于全开或全关的状态,可用于测试Deep Learning电路和驱动是否正确。OPEN 和CLOSE的优先级高于Deep Learning使能和手动/自动模式,Deep Learning算法运行时,为保证其能够正常工作,需将该值设置为ISP_IRIS_KEEP。

【相关数据类型及接口】

无。

4.5.3.2. ISP_IRIS_TYPE_E

【说明】

定义 ISP 光圈类型。

【定义】

typedef enum _ISP_IRIS_TYPE_E
{
  ISP_IRIS_DC_TYPE = 0,
  ISP_IRIS_P_TYPE,
  ISP_IRIS_TYPE_BUTT,
} ISP_IRIS_TYPE_E;

【成员】

成员名称

描述

ISP_IRIS_DC_TYPE

DC-Iris光圈

ISP_IRIS_P_TYPE

P-Iris光圈

【注意事项】

  • 必须设置正确的光圈类型,Deep Learning算法才能正常工作。

  • 若对接的是手动光圈镜头,可将该值设置为ISP_IRIS_DC_TYPE,建议此时关闭Deep Learning使能。

【相关数据类型及接口】

无。

4.5.3.3. ISP_IRIS_F_NO_E

【说明】

定义 ISP 光圈F值。

【定义】

typedef enum _ISP_IRIS_F_NO_E
{
  ISP_IRIS_F_NO_32_0 = 0,ISP_IRIS_F_NO_22_0,ISP_IRIS_F_NO_16_0,ISP_IRIS_F_NO_11_0,ISP_IRIS_F_NO_8_0,ISP_IRIS_F_NO_5_6,ISP_IRIS_F_NO_4_0,ISP_IRIS_F_NO_2_8,ISP_IRIS_F_NO_2_0,ISP_IRIS_F_NO_1_4,ISP_IRIS_F_NO_1_0,ISP_IRIS_F_NO_BUTT,
} ISP_IRIS_F_NO_E;

【成员】

成员名称

描述

等效增益

ISP_IRIS_F_NO_32_0

光圈F32.0

1

ISP_IRIS_F_NO_22_0

光圈F22.0

2

ISP_IRIS_F_NO_16_0

光圈F16.0

4

ISP_IRIS_F_NO_11_0

光圈F11.0

8

ISP_IRIS_F_NO_8_0

光圈F8.0

16

ISP_IRIS_F_NO_5_6

光圈F5.6

32

ISP_IRIS_F_NO_4_0

光圈F4.0

64

ISP_IRIS_F_NO_2_8

光圈F2.8

128

ISP_IRIS_F_NO_2_0

光圈F2.0

256

ISP_IRIS_F_NO_1_4

光圈F1.4

512

ISP_IRIS_F_NO_1_0

光圈F1.0

1024

【注意事项】

  • 针对P-Iris,AE 算法根据分配路线计算曝光量时,光圈F值要等效成一个增益,公式如下:等效增益FNO = 1 << ISP_IRIS_F_NO_XX_XX。由此可知F32.0 对应增益1,F22.0 对应增益2,F16.0 对应增益4,以此类推,F1.0 对应增益1024。

【相关数据类型及接口】

无。

4.5.3.4. ISP_MI_ATTR_S

【说明】

定义手动光圈属性。

【定义】

typedef struct _ISP_MI_ATTR_S
{
  CVI_U32 u32HoldValue;
  ISP_IRIS_F_NO_E enIrisFNO;
} ISP_MI_ATTR_S;

【成员】

成员名称

描述

u32HoldValue

Deep Learning校正值,用于DC-Iris 的调试。 取值范围为[0x0, 0x3E8]。

enIrisFNO

手动光圈大小,根据光圈F值进行区分,仅支持P-Iris,不支 持DC-Iris。

【注意事项】

  • 对接DC-Iris镜头时,若ISP_IRIS_STATUS_E 设置为ISP_IRIS_KEEP,手动光圈使能,u32HoldValue可用于DC-Iris的调试, 此时PWM的占空比即为u32HoldValue。

  • 对接P-Iris镜头时,若ISP_IRIS_STATUS_E设置为ISP_IRIS_KEEP,手动光圈使能,enIrisFNO 可用于P-Iris的调试,此时会 控制P-Iris步进电机走到光圈F值与enIrisFNO 最接近的位置。自动曝光模式下,P-Iris手动光圈不生效, 此时若要固定光圈为某个F值,可以将enMaxIrisFNOTarget/ enMinIrisFNOTarget设置为相同值来实现。

【相关数据类型及接口】

无。

4.5.3.5. ISP_DCIRIS_ATTR_S

【说明】

定义DC-Iris Deep Learning算法属性。

【定义】

typedef struct _ISP_DCIRIS_ATTR_S
{
  CVI_S32 s32Kp;
  CVI_S32 s32Ki;
  CVI_S32 s32Kd;CVI_U32 u32MinPwmDuty;CVI_U32 u32MaxPwmDuty;CVI_U32 u32OpenPwmDuty;
} ISP_DCIRIS_ATTR_S;

【成员】

成员名称

描述

s32Kp

比例增益,用于调节光圈的开关速度,该值越大光圈打开和关闭的速度越快。

该值过小光线剧烈变化收敛过程中容易出现振荡,该值过大容易出现超调,也会导致振荡。

该值的合理设置与电路特性和镜头相关。建议值为7000。

取值范围为[0, 100000]。

s32Ki

积分增益,用于调节光圈的开关速度,该值越大光圈打开和关闭的速度越快。

该值较小时,碰到强光收敛后画面会稳定在一个比较低的亮度上;该值较大时可能会导致强光场景光圈无法关闭。

该值的合理设置与电路特性和镜头相关。建议值为100,该值一般不需要修改。

取值范围为[0, 1000]。

s32Kd

微分增益,用于限制光线剧烈变化时光圈的开关速度,

该值越大光线剧烈变化时光圈打开和关闭的速度 越慢。

该值过大对于瞬间变化的亮度过于敏感,会导致场景亮度快速变化时画面出现振荡。

该值的合理设置与电路特性和镜头相关。建议值为3000。

取值范围为[0, 100000]。

u32MinPwmDuty

最小PWM占空比。该值越小过曝时光圈关闭速度越快,但容易导致光圈来回震荡。

该值的合理设置与电路特性和镜头相关。建议值为250。

取值范围为[0, 1000]。

u32MaxPwmDuty

最大P WM占空比。该值越大画面全黑时光圈打开速度越快,

该值过小则可能导致退出光圈控制区域时光圈仍未达到最大,造成画面噪声严重。

该值的合理设置与电路特性和镜头相关。建议值为950。

取值范围为[0, 1000]。

u32OpenPwmDuty

光圈打开时的PWM占空比。

当画面亮度稳定并且PWM占空比大于该值一段时间后,退出光圈控制区 域。

所以该值不能太小,否则容易导致光圈未达到最大就退出了光圈控制区域,造成画面噪声严重。

该值的合理设置与电路特性和镜头相关。建议值为800。

取值范围为[0, 1000]。

【注意事项】

  • 当光圈关闭出现震荡时,一般意味着光圈关闭速度太快了,可以通过适当减小s32Kp和增大u32MinPwmDuty来解决。

  • u32OpenPwmDuty的取值要求在u32MinPwmDuty和u32MaxPwmDuty之间,必须确保该值能将光圈较快的打开。

【相关数据类型及接口】

4.5.3.6. ISP_PIRIS_ATTR_S

【说明】

定义P-Iris 属性。

【定义】

无。

【成员】

成员名称

描述

【注意事项】

目前尚未实作支持 P- Iris

【相关数据类型及接口】

无。

4.5.3.7. ISP_IRIS_ATTR_S

【说明】

定义 ISP 光圈属性。

【定义】

typedef struct _ISP_IRIS_ATTR_S {
  CVI_BOOL bEnable;
  ISP_OP_TYPE_E enOpType;
  ISP_IRIS_TYPE_E enIrisType;
  ISP_IRIS_STATUS_E enIrisStatus;
  ISP_MI_ATTR_S stMIAttr;
} ISP_IRIS_ATTR_S;

【成员】

成员名称

描述

bEnable

自动光圈使能。

enOpType

自动光圈或手动光圈模式选择。

enIrisType

光圈类型,DC-Iris或P-Iris。

enIrisStatus

光圈状态。

stMIAttr

手动光圈属性设置结构体。

【注意事项】

该值设置为ISP_IRIS_OPEN或ISP_IRIS_CLOSE时, 光圈处于全开或全关的状态,可用于测试Deep Learning电路和驱动是否正确。 OPEN 和CLOSE的优先级高于Deep Learning使能和手动/自动模式, Deep Learning算法运行时,为保证其能够正常工作,需将该值设置为ISP_IRIS_KEEP。

【相关数据类型及接口】