32. DIS

32.1. 功能描述

DIS模块通过比较当前图像以及前一帧图像来计算出当前的位移量,并将其传递至后级模块进行图像裁切, 进而实现防抖动的效果。

32.2. API 参考

32.2.1. CVI_ISP_SetDISAttr

【描述】

设置DIS属性参数

【语法】

CVI_S32 CVI_ISP_SetDisAttr(VI_PIPE ViPipe,  const ISP_DIS_ATTR_S *pstDisAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDisAttr

DIS属性参数

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

无。

【举例】

无。

【相关主题】

32.2.2. CVI_ISP_GetDISAttr

【描述】

获取DIS属性参数

【语法】

CVI_S32 CVI_ISP_GetDisAttr(VI_PIPE ViPipe, ISP_DIS_ATTR_S *pstDisAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDisAttr

DIS属性参数

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

无。

【举例】

无。

【相关主题】

32.2.3. CVI_ISP_SetDISConfig

【描述】

获取DIS属性参数

【语法】

CVI_S32 CVI_ISP_SetDisConfig(VI_PIPE ViPipe,  const ISP_DIS_CONFIG_S *pstDisConfig);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDisConfig

DIS控制参数

输入

【返回值】

返回值

描述

0

成功。

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

无。

【举例】

无。

【相关主题】

32.2.4. CVI_ISP_GetDISConfig

【描述】

获取DIS属性参数

【语法】

CVI_S32 CVI_ISP_GetDisConfig(VI_PIPE ViPipe,  const ISP_DIS_CONFIG_S *pstDisConfig);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDisConfig

DIS控制参数

输出

【返回值】

返回值

描述

0

成功。

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

无。

【举例】

无。

【相关主题】

32.3. 数据类型

32.3.1. ISP_DIS_ATTR_S

【说明】

DIS属性参数

【定义】

typedef struct _ISP_DIS_ATTR_S {
   CVI_BOOL enable;
   CVI_U32 movingSubjectLevel;
   CVI_U32 horizontalLimit;
   CVI_U32 verticalLimit;
   CVI_BOOL stillCrop;
} ISP_DIS_ATTR_S;

【成员】

成员名称

描述

enable

DIS 使能开关

CVI_FALSE:不使能

CVI_TRUE:使能

movingSubjectLevel

用于判断物体是否移动的参数, 值越小防抖效果越好,但容易出现偏移,反之抖动容易变大,但减少偏移现象。

取值范围:[0, 6]

数据类型: CVI_U32

horizontalLimit

水平方向的位移限制,当大面 积物体位移造成背景位移达到一定幅度,则不做防抖效果。计算方式为 image_width * horizontalLimit / 1000

取值范围: [0, 0x3E8]

数据类型: CVI_U32

verticalLimit

垂直方向的位移限制,当大面 积物体位移造成背景位移达到一定幅度,则不做防抖效果。计算方式为 image_height * verticalLimit / 1000

取值范围: [0, 0x3E8]

数据类型: CVI_U32

stillCrop

关闭 DIS 防抖效果,但影像保持裁剪比例输出, 避免影像大小变化

CVI_FALSE:不使能

CVI_TRUE:使能

【注意事项】

无。

【相关数据类型及接口】

32.3.2. ISP_DIS_CONFIG_S

【说明】

DIS设定参数

【定义】

typedef struct _ISP_DIS_CONFIG_S {
   DIS_MODE_E mode;
   DIS_MOTION_LEVEL_E motionLevel;
   CVI_U32 cropRatio;
} ISP_DIS_CONFIG_S;

【成员】

成员名称

描述

mode

数字防 抖动算法模式,目前只支持一种算法模式

取值范围:[0, 0]

数据类型:DIS_MODE_E

motionLevel

Camera的运动级别, 目前只支持 DIS_MOTION_LEVEL_NORMAL

取值范围:[1, 1]

数据类型: DIS_MOTION_LEVEL

cropRatio

DIS输出的影像裁切比例, 数值越大则保留的影像越大, 反之则越小。 建议默认值为94

取值范围: [50, 98]

数据类型: CVI_U32

【注意事项】

cropRatio 会影响DIS算法能支持的最大位移程度, 假设CropRatio为98, 表示只剩下2%的宽高能做位移

【相关数据类型及接口】

32.3.3. DIS_MODE_E

【说明】

定义DIS防抖算法模式

【定义】

typedef enum _ISP_DIS_MODE_E {
   DIS_MODE_2_DOF_GME = 0, /* Only use with GME in 2 dof */
   DIS_MODE_DEBUG,
   DIS_MODE_DOF_BUTT,
} DIS_MODE_E;

【成员】

成员名称

描述

DIS_MODE_2_DOF_GME

二自由度GME算法

DIS_MODE_DEBUG

调试模式

【注意事项】

无。

【相关数据类型及接口】

32.3.4. DIS_MOTION_LEVEL_E

【说明】

定义镜头的运动级别

【定义】

typedef enum _ISP_DIS_MOTION_LEVEL_E {
   DIS_MOTION_LEVEL_NORMAL = 1,
   DIS_MOTION_LEVEL_BUTT
} DIS_MOTION_LEVEL_E;

【成员】

成员名称

描述

DIS_MOTION_LEVEL_NORMAL

正常级别的镜头晃动幅度

【注意事项】

无。

【相关数据类型及接口】