22. DCI

22.1. 功能描述

Dynamic Contrast Improvement 的简称,藉由调整直方图来加强图像对比度,提升暗部细节。

22.2. API 参考

22.2.1. CVI_ISP_SetDCIAttr

【描述】

设置DCI 参数属性

【语法】

CVI_S32 CVI_ISP_SetDCIAttr(VI_PIPE ViPipe, const ISP_DCI_ATTR_S *pstDCIAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDCIAttr

DCI 参数属性

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

  • 头文件: cvi_isp.h, cvi_comm_isp.h

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

22.2.2. CVI_ISP_GetDCIAttr

【描述】

获取DCI 参数属性

【语法】

CVI_S32 CVI_ISP_GetDCIAttr(VI_PIPE ViPipe, ISP_DCI_ATTR_S *pstDCIAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDCIAttr

DCI 参数属性

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

  • 头文件: cvi_isp.h, cvi_comm_isp.h

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

22.3. 数据类型

22.3.1. ISP_DCI_MANUAL_ATTR_S

【说明】

DCI 参数手动属性

【定义】

typedef struct _ISP_DCI_MANUAL_ATTR_S {
    CVI_U16 ContrastGain;
    CVI_U8 BlcThr;
    CVI_U8 WhtThr;
    CVI_U16 BlcCtrl;
    CVI_U16 WhtCtrl;
  CVI_U16 DciGainMax;
} ISP_DCI_MANUAL_ATTR_S;

【成员】

成员名称

描述

ContrastGain

用来控制DCI的强度,值越大,对比度越大。

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

数据类型: CVI_U16

BlcThr

用来决定暗区范围的门阈值。值越大,包含的暗区范围越大。

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

数据类型: CVI_U8

WhtThr

用来决定亮区范围的门阈值。值越小,包含的亮区范围越大。

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

数据类型: CVI_U8

BlcCtrl

用来决定暗区的对比度。数值为256时,暗区对比度不变。比256大时,值越大,暗区对比度越大;反之,比256小时,值越小,暗区对比度越小。

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

数据类型: CVI_U16

WhtCtrl

用来决定亮区的对比度。数值为256时,亮区对比度不变。比256大时,值越大,亮区对比度越大;反之,比256小时,值越小,亮区对比度越小。

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

数据类型: CVI_U16

DciGainMax

用来控制对比度上限,数值越大,对比度可以越强。

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

数据类型: CVI_U16

【注意事项】

【相关数据类型及接口】

22.3.2. ISP_DCI_AUTO_ATTR_S

【说明】

DCI 参数自动属性

【定义】

typedef struct _ISP_DCI_AUTO_ATTR_S {
  CVI_U16 ContrastGain[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 BlcThr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 WhtThr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 BlcCtrl[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 WhtCtrl[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 DciGainMax[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_DCI_AUTO_ATTR_S;

【成员】

成员名称

描述

ContrastGain

用来控制DCI的强度,值越大,对比度越大。

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

数据类型: CVI_U16

BlcThr

用来决定暗区范围的门阈值。值越大,包含的暗区范围越大。

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

数据类型: CVI_U8

WhtThr

用来决定亮区范围的门阈值。值越小,包含的亮区范围越大。

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

数据类型: CVI_U8

BlcCtrl

用来决定暗区的对比度。数值为256时,暗区对比度不变。比256大时,值越大,暗区对比度越大;反之,比256小时,值越小,暗区对比度越小。

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

数据类型: CVI_U16

WhtCtrl

用来决定亮区的对比度。数值为256时,亮区对比度不变。比256大时,值越大,亮区对比度越大;反之,比256小时,值越小,亮区对比度越小。

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

数据类型: CVI_U16

DciGainMax

用来控制对比度上限,数值越大,对比度可以越强。

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

数据类型: CVI_U16

【注意事项】

【相关数据类型及接口】

22.3.3. ISP_DCI_ATTR_S

【说明】

DCI 参数属性

【定义】

typedef struct _ISP_DCI_ATTR_S {
   CVI_BOOL Enable;
   CVI_BOOL TuningMode;
   ISP_OP_TYPE_E enOpType;
   CVI_U8 UpdateInterval;
   CVI_U8 Method;
   CVI_U32 Speed;
   CVI_U16 DciStrength;
   CVI_U16 DciGamma;
   CVI_U8 DciOffset;
   CVI_U8 ToleranceY;
   CVI_U8 Sensitivity;
   ISP_DCI_MANUAL_ATTR_S stManual;
   ISP_DCI_AUTO_ATTR_S stAuto;
} ISP_DCI_ATTR_S;

【成员】

成员名称

描述

Enable

DCI模块使能。

0: 关闭。

1: 使能。

TuningMode

在同一画面同时显示原始图像和结果图像,辅助调节参数。

0: CAC图像结果。

1: 在同一画面同时显示原始图像和结果图像。

取值范围: [0, 1]

数据类型: CVI_BOOL

enOpType

工作类型

OP_TYPE_AUTO: 自动模式

OP_TYPE_MANUAL: 手动模式

UpdateInterval

影响参数更新间隔,值越大画面变化越慢, 效能越好。

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

数据类型: CVI_U8

Method

用来选择DCI algo 版本, 0:自适应版本, 1: 手动调整版本

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

数据类型: CVI_U8

Speed

Smooth 强度, 值越高, 则变化越慢

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

数据类型: CVI_U16

DciStrength

保留每个BIN最低斜率, 值越大斜率越小

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

数据类型: CVI_U16

DciGamma

用来控制对比度,数值越大,对比越大,但画面亮度会降低。建议搭配 DciOffset 一起调试。

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

数据类型: CVI_U16

DciOffset

整体画面亮度的调整。数值越大,整体亮度越大。建议搭配DciGamma 一起调试。

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

数据类型: CVI_U8

ToleranceY

到达目标亮度可容忍的亮度误差

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

数据类型: CVI_U8

Sensitivity

灵敏度: 灵敏度越高,dci重运算的threadhold越低

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

数据类型: CVI_U8

stManual

手动模式参数属性

stAuto

自动模式参数属性

【注意事项】

【相关数据类型及接口】