18. Demosaic

18.1. 功能描述

把图像由 Bayer Pattern 内插出完整的 RGB 而提升细节与清晰度。

18.2. API 参考

18.2.1. CVI_ISP_SetDemosaicAttr

【描述】

设置Demosaic属性参数

【语法】

CVI_S32 CVI_ISP_SetDemosaicAttr(VI_PIPE ViPipe, const ISP_DEMOSAIC_ATTR_S *pstDemosaicAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDemosaicAttr

Demosaic属性参数

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

18.2.2. CVI_ISP_GetDemosaicAttr

【描述】

获取Demosaic属性参数

【语法】

CVI_S32 CVI_ISP_GetDemosaicAttr(VI_PIPE ViPipe, ISP_DEMOSAIC_ATTR_S *pstDemosaicAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDemosaicAttr

Demosaic属性参数

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

18.2.3. CVI_ISP_SetDemosaicDemoireAttr

【描述】

设置Demosaic去马赛克属性参数

【语法】

CVI_S32 CVI_ISP_SetDemosaicDemoireAttr(VI_PIPE ViPipe, const ISP_DEMOSAIC_DEMOIRE_ATTR_S *pstDemosaicDemoireAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDemosaicDemoireAttr

Demosaic去马赛克属性参数

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

18.2.4. CVI_ISP_GetDemosaicDemoireAttr

【描述】

获取 Demosaic去马赛克属性参数

【语法】

CVI_S32 CVI_ISP_GetDemosaicDemoireAttr(VI_PIPE ViPipe, ISP_DEMOSAIC_DEMOIRE_ATTR_S *pstDemosaicDemoireAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstDemosaicDemoireAttr

Demosaic去马赛克属性参数

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

18.3. 数据类型

18.3.1. ISP_DEMOSAIC_MANUAL_ATTR_S

【说明】

Demosaic属性手动参数

【定义】

typedef struct _ISP_DEMOSAIC_MANUAL_ATTR_S {
  CVI_U16 CoarseEdgeThr;
  CVI_U16 CoarseStr;
  CVI_U16 FineEdgeThr;
  CVI_U16 FineStr;
  CVI_U16 RbSigLumaThd;
  CVI_U8 FilterMode;
} ISP_DEMOSAIC_MANUAL_ATTR_S;

【成员】

成员名称

描述

CoarseEdgeThr

边缘粗调侦测阈值。值越小,侦测为边缘的数量越多。建议搭配参数CoarseStr调试。

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

数据类型: CVI_U16

CoarseStr

边缘粗调强度值。值越小,越偏方向性的处理。反之,越偏无方向性的处理。

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

数据类型: CVI_U16

FineEdgeThr

边缘细调侦测阈值。值越小,侦测为边缘的数量越多。建议搭配参数FineStr调试。

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

数据类型: CVI_U16

FineStr

边缘细调强度值。值越小,越偏方向性的处理。反之,越偏无方向性的处理。

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

数据类型: CVI_U16

FilterMode

DC影像的锐化宽度, 数值越大,边缘被锐利化的宽度越宽,视觉上会越醒目。

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

18.3.2. ISP_DEMOSAIC_AUTO_ATTR_S

【说明】

Demosaic属性自动参数

【定义】

typedef struct _ISP_DEMOSAIC_AUTO_ATTR_S {
  CVI_U16 CoarseEdgeThr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 CoarseStr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 FineEdgeThr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 FineStr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 RbSigLumaThd[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 FilterMode[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_DEMOSAIC_AUTO_ATTR_S;

【成员】

成员名称

描述

CoarseEdgeThr

边缘粗调侦测阈值。值越小,侦测为边缘的数量越多。建议搭配参数CoarseStr调试。

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

数据类型: CVI_U16

CoarseStr

边缘粗调强度值。值越小,越偏方向性的处理。反之,越偏无方向性的处理。

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

数据类型: CVI_U16

FineEdgeThr

边缘细调侦测阈值。值越小,侦测为边缘的数量越多。建议搭配参数FineStr调试。

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

数据类型: CVI_U16

FineStr

边缘细调强度值。值越小,越偏方向性的处理。反之,越偏无方向性的处理。

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

数据类型: CVI_U16

FilterMode

DC影像的锐化宽度, 数值越大,边缘被锐利化的宽度越宽,视觉上会越醒目。

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

18.3.3. ISP_DEMOSAIC_ATTR_S

【说明】

Demosaic属性参数

【定义】

typedef struct _ISP_DEMOSAIC_ATTR_S {
  CVI_BOOL Enable;
  CVI_BOOL TuningMode;
  CVI_BOOL RbVtEnable;
  ISP_OP_TYPE_E enOpType;
  CVI_U8 UpdateInterval;
  ISP_DEMOSAIC_MANUAL_ATTR_S stManual;
  ISP_DEMOSAIC_AUTO_ATTR_S stAuto;
} ISP_DEMOSAIC_ATTR_S;

【成员】

成员名称

描述

Enable

Demosaic模块使能。0: 关闭。1: 使能。

取值范围: [0, 1]

数据类型: CVI_BOOL

TuningMode

输出调试方案,辅助调节参数。 0: Demosaic图像结果。 1: 平坦/垂直/水平边缘侦测图像结果。

取值范围: [0, 1]

数据类型: CVI_BOOL

enOpType

工作类型

OP_TYPE_AUTO: 自动模式

OP_TYPE_MANUAL: 手动模式

UpdateInterval

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

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

数据类型: CVI_U8

stManual

手动模式参数属性

stAuto

自动模式参数属性

【注意事项】

【相关数据类型及接口】

18.3.4. ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S

【说明】

Demosaic去马赛克属性手动参数

【定义】

typedef struct _ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S {
  CVI_U8 AntiFalseColorStr; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 SatGainIn[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 SatGainOut[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 ProtectColorGainIn[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 ProtectColorGainOut[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 UserDefineProtectColor1; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 UserDefineProtectColor2; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 UserDefineProtectColor3; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 EdgeGainIn[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 EdgeGainOut[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 DetailGainIn[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 DetailGaintOut[2]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 DetailDetectLumaStr; /*RW; Range:[0x0, 0xfff]*/
  CVI_U8 DetailSmoothStr; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 DetailWgtThr; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 DetailWgtMin; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailWgtMax; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailWgtSlope; /*RW; Range:[0x0, 0x400]*/
  CVI_U8 EdgeWgtNp; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 EdgeWgtThr; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 EdgeWgtMin; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 EdgeWgtMax; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 EdgeWgtSlope; /*RW; Range:[0x0, 0x400]*/
  CVI_U8 DetailSmoothMapTh; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 DetailSmoothMapMin; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailSmoothMapMax; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailSmoothMapSlope; /*RW; Range:[0x0, 0x400]*/
  CVI_U8 LumaWgt; /*RW; Range:[0x0, 0xff]*/
} ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S;

【成员】

成员名称

描述

DetailSmoothStr

细节平滑强度。值越大,平滑强度越强,对伪细节的抑制强度越大。

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

18.3.5. ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S

【说明】

Demosaic去马赛克属性自动参数

【定义】

typedef struct _ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S {
  CVI_U8 AntiFalseColorStr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 SatGainIn[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 SatGainOut[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 ProtectColorGainIn[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 ProtectColorGainOut[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 UserDefineProtectColor1[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 UserDefineProtectColor2[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 UserDefineProtectColor3[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 EdgeGainIn[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 EdgeGainOut[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 DetailGainIn[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 DetailGaintOut[2][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U16 DetailDetectLumaStr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xfff]*/
  CVI_U8 DetailSmoothStr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 DetailWgtThr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 DetailWgtMin[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailWgtMax[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x400]*/
  CVI_U8 EdgeWgtNp[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 EdgeWgtThr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 EdgeWgtMin[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 EdgeWgtMax[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 EdgeWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x400]*/
  CVI_U8 DetailSmoothMapTh[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U16 DetailSmoothMapMin[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailSmoothMapMax[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x100]*/
  CVI_U16 DetailSmoothMapSlope[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x400]*/
  CVI_U8 LumaWgt[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
}ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S;

【成员】

成员名称

描述

DetailSmoothStr

细节平滑强度。值越大,平滑强度越强,对伪细节的抑制强度越大。

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

18.3.6. ISP_DEMOSAIC_DEMOIRE_ATTR_S

【说明】

Demosaic去马赛克属性参数

【定义】

typedef struct _ISP_DEMOSAIC_DEMOIRE_ATTR_S {
  CVI_BOOL AntiFalseColorEnable; /*RW; Range:[0, 1]*/
  CVI_BOOL ProtectColorEnable; /*RW; Range:[0, 1]*/
  CVI_BOOL DetailDetectLumaEnable; /*RW; Range:[0, 1]*/
  CVI_BOOL DetailSmoothEnable; /*RW; Range:[0, 1]*/
  CVI_BOOL DetailMode; /*RW; Range:[0, 1]*/
  ISP_DEMOSAIC_DEMOIRE_MANUAL_ATTR_S stManual;
  ISP_DEMOSAIC_DEMOIRE_AUTO_ATTR_S stAuto;
} ISP_DEMOSAIC_DEMOIRE_ATTR_S;

【成员】

成员名称

描述

stManual

手动模式参数属性

stAuto

自动模式参数属性

【注意事项】

【相关数据类型及接口】

18.3.7. ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S

【说明】

Demosaic滤波器属性手动参数

【定义】

typedef struct _ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S {
    CVI_U16 DetailWgtThr;
    CVI_U8 DetailWgtSlope;
    CVI_U8 DetailWgtMin;
    CVI_U8 DetailWgtMax;
    CVI_U16 EdgeWgtThr;
    CVI_U8 EdgeWgtSlope;
    CVI_U8 EdgeWgtMin;
    CVI_U8 EdgeWgtMax;
    CVI_U16 LumaWgtThr;
    CVI_U8 LumaWgtSlope;
    CVI_U8 LumaWgtMin;
    CVI_U8 LumaWgtMax;
} ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S;

【成员】

成员名称

描述

DetailWgtThr

细节保留范围阈值。值越小,细节保留作用的范围越大。

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

数据类型: CVI_U16

DetailWgtSlope

细节保留强度。值越大,细节保留越多。

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

数据类型: CVI_U8

DetailWgtMin

边缘细节平滑保留允许之最小增益。

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

数据类型: CVI_U8

DetailWgtMax

边缘细节平滑保留允许之最大增益。

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

数据类型: CVI_U8

EdgeWgtThr

细节保留范围阈值。值越小,细节保留作用的范围越大。

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

数据类型: CVI_U16

EdgeWgtSlope

细节保留强度。值越大,细节保留越多。

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

数据类型: CVI_U8

EdgeWgtMin

边缘细节平滑保留允许之最小增益。

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

数据类型: CVI_U8

EdgeWgtMax

边缘细节平滑保留允许之最大增益。

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

数据类型: CVI_U8

LumaWgtThr

亮度细节平滑作用范围阈值。值越小,细节平滑作用的范围越大。

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

数据类型: CVI_U16

LumaWgtSlope

亮度细节平滑边缘保留强度。值越大,细节平滑强度越强。

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

数据类型: CVI_U8

LumaWgtMin

亮度细节平滑强度允许之最小增益。

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

数据类型: CVI_U8

LumaWgtMax

亮度细节平滑强度允许之最大增益。

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

数据类型: CVI_U8

【注意事项】

cv180x & cv181x不支持此功能

【相关数据类型及接口】

18.3.8. ISP_DEMOSAIC_FILTER_AUTO_ATTR_S

【说明】

Demosaic滤波器属性自动参数

【定义】

typedef struct _ISP_DEMOSAIC_FILTER_AUTO_ATTR_S {
    CVI_U16 DetailWgtThr[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 DetailWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 DetailWgtMin[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 DetailWgtMax[ISP_AUTO_ISO_STRENGTH_NUM];
   CVI_U16 EdgeWgtThr[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 EdgeWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 EdgeWgtMin[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 EdgeWgtMax[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U16 LumaWgtThr[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 LumaWgtSlope[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 LumaWgtMin[ISP_AUTO_ISO_STRENGTH_NUM];
    CVI_U8 LumaWgtMax[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_DEMOSAIC_FILTER_AUTO_ATTR_S;

【成员】

成员名称

描述

DetailWgtThr

细节保留范围阈值。值越小,细节保留作用的范围越大。

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

数据类型: CVI_U16

DetailWgtSlope

细节保留强度。值越大,细节保留越多。

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

数据类型: CVI_U8

DetailWgtMin

边缘细节平滑保留允许之最小增益。

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

数据类型: CVI_U8

DetailWgtMax

边缘细节平滑保留允许之最大增益。

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

数据类型: CVI_U8

EdgeWgtThr

细节保留范围阈值。值越小,细节保留作用的范围越大。

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

数据类型: CVI_U16

EdgeWgtSlope

细节保留强度。值越大,细节保留越多。

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

数据类型: CVI_U8

EdgeWgtMin

边缘细节平滑保留允许之最小增益。

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

数据类型: CVI_U8

EdgeWgtMax

边缘细节平滑保留允许之最大增益。

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

数据类型: CVI_U8

LumaWgtThr

亮度细节平滑作用范围阈值。值越小,细节平滑作用的范围越大。

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

数据类型: CVI_U16

LumaWgtSlope

亮度细节平滑边缘保留强度。值越大,细节平滑强度越强。

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

数据类型: CVI_U8

LumaWgtMin

亮度细节平滑强度允许之最小增益。

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

数据类型: CVI_U8

LumaWgtMax

亮度细节平滑强度允许之最大增益。

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

数据类型: CVI_U8

【注意事项】

cv180x & cv181x不支持此功能

【相关数据类型及接口】

18.3.9. ISP_DEMOSAIC_FILTER_ATTR_S

【说明】

Demosaic滤波器属性参数

【定义】

typedef struct _ISP_DEMOSAIC_FILTER_ATTR_S {
    ISP_OP_TYPE_E enOpType;
    ISP_DEMOSAIC_FILTER_MANUAL_ATTR_S stManual;
    ISP_DEMOSAIC_FILTER_AUTO_ATTR_S stAuto;
} ISP_DEMOSAIC_FILTER_ATTR_S;

【成员】

成员名称

描述

enOpType

工作类型

OP_TYPE_AUTO: 自动模式

OP_TYPE_MANUAL: 手动模式

stManual

手动模式参数属性

stAuto

自动模式参数属性

【注意事项】

cv180x & cv181x不支持此功能

【相关数据类型及接口】