13. BNR

13.1. 功能描述

在 Bayer Domain 进行的空域去噪算法。

13.2. API 参考

13.2.1. CVI_ISP_SetNRAttr

【描述】

设置Bayer降噪参数属性

【语法】

CVI_S32 CVI_ISP_SetNRAttr(VI_PIPE ViPipe, const ISP_NR_ATTR_S *pstNRAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstNRAttr

Bayer降噪参数属性

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

13.2.2. CVI_ISP_GetNRAttr

【描述】

获取 NR 属性参数

【语法】

CVI_S32 CVI_ISP_GetNRAttr(VI_PIPE ViPipe, ISP_NR_ATTR_S *pstNRAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstNRAttr

Bayer降噪参数属性

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

13.2.3. CVI_ISP_SetNRFilterAttr

【描述】

设置Bayer降噪滤波器属性

【语法】

CVI_S32 CVI_ISP_SetNRFilterAttr(VI_PIPE ViPipe, const ISP_NR_FILTER_ATTR_S *pstNRFilterAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstNRFilterAttr

Bayer降噪滤波器属性

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

13.2.4. CVI_ISP_GetNRFilterAttr

【描述】

获取Bayer降噪滤波器属性

【语法】

CVI_S32 CVI_ISP_GetNRFilterAttr(VI_PIPE ViPipe, ISP_NR_FILTER_ATTR_S *pstNRFilterAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstNRFilterAttr

Bayer降噪滤波器属性

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

13.3. 数据类型

13.3.1. ISP_NR_MANUAL_ATTR_S

【说明】

Bayer降噪参数手动属性

【定义】

typedef struct _ISP_NR_MANUAL_ATTR_S {
  CVI_U8 WindowType;
  CVI_U8 DetailSmoothMode;
  CVI_U8 NoiseSuppressStr;
  CVI_U8 FilterType;
  CVI_U8 NoiseSuppressStrMode;
} ISP_NR_MANUAL_ATTR_S;

【成员】

成员名称

描述

WindowType

去噪滤波局域程度。其值越小,作用越局域。

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

数据类型: CVI_U8

DetailSmoothMode

去噪细节平滑功能使能。

0: 关闭。

1: 使能。

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

数据类型: CVI_U8

NoiseSuppressStr

噪声抑制强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

FilterType

去噪滤波器强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

NoiseSuppressStrMode

亮噪去噪强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

13.3.2. ISP_NR_AUTO_ATTR_S

【说明】

Bayer降噪参数自动属性

【定义】

typedef struct _ISP_NR_AUTO_ATTR_S {
  CVI_U8 WindowType[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 DetailSmoothMode[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 NoiseSuppressStr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 FilterType[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 NoiseSuppressStrMode[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_NR_AUTO_ATTR_S;

【成员】

成员名称

描述

WindowType

去噪滤波局域程度。其值越小,作用越局域。

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

数据类型: CVI_U8

DetailSmoothMode

去噪细节平滑功能使能。

0: 关闭。

1: 使能。

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

数据类型: CVI_U8

NoiseSuppressStr

噪声抑制强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

FilterType

去噪滤波器强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

NoiseSuppressStrMode

亮噪去噪强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

13.3.3. ISP_NR_ATTR_S

【说明】

Bayer降噪参数属性

【定义】

typedef struct _ISP_NR_ATTR_S {
  CVI_BOOL Enable;
  ISP_OP_TYPE_E enOpType;
  CVI_U8 UpdateInterval;
  CVI_BOOL CoringParamEnable;
  ISP_NR_MANUAL_ATTR_S stManual;
  ISP_NR_AUTO_ATTR_S stAuto;
} ISP_NR_ATTR_S;

【成员】

成员名称

描述

Enable

BNR模块使能。

0: 关闭。

1: 使能。

取值范围: [0, 1]

数据类型: CVI_BOOL

enOpType

工作模式

0: 自动

1: 手动

UpdateInterval

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

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

数据类型: CVI_U8

CoringParamEnable

Coring 参数使能

取值范围: [0, 1]

数据类型: CVI_BOOL

stManual

Bayer降噪参数手动属性

stAuto

Bayer降噪参数自动属性

【注意事项】

【相关数据类型及接口】

13.3.4. ISP_NR_FILTER_MANUAL_ATTR_S

【说明】

Bayer降噪滤波器手动属性

【定义】

typedef struct _ISP_NR_FILTER_MANUAL_ATTR_S {
  CVI_U8 LumaStr[8];
  CVI_U8 VarThr;
  CVI_U16 CoringWgtLF;
  CVI_U16 CoringWgtHF;
  CVI_U8 NonDirFiltStr;
  CVI_U8 VhDirFiltStr;
  CVI_U8 AaDirFiltStr;
  CVI_U16 NpSlopeR; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpSlopeGr; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpSlopeGb; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpSlopeB; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLumaThrR; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLumaThrGr; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLumaThrGb; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLumaThrB; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLowOffsetR; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLowOffsetGr; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLowOffsetGb; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpLowOffsetB; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpHighOffsetR; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpHighOffsetGr; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpHighOffsetGb; /*RW; Range:[0x0, 0x3ff]*/
  CVI_U16 NpHighOffsetB; /*RW; Range:[0x0, 0x3ff]*/
} ISP_NR_FILTER_MANUAL_ATTR_S;

【成员】

成员名称

描述

LumaStr[8]

参考图像亮度从暗到亮分别调节去噪强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

VarThr

侦测边缘的阈值。值越大,判断为边缘的数量越少。

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

数据类型: CVI_U8

CoringWgtLF

调节在低频区域的随机噪声强度。值越大,在低频区域保留的噪声越多。

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

数据类型: CVI_U16

CoringWgtHF

调节在高频区域的随机噪声强度。值越大,在高频区域的保留的噪声越多。

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

数据类型: CVI_U16

NonDirFiltStr

调节在低频区的去噪强度。值越大,在低频区域去除的噪声越多。

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

数据类型: CVI_U8

VhDirFiltStr

调节在水平和垂直区的去噪强度。值越大,在水平和垂直边缘去除的噪声越多。

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

数据类型: CVI_U8

AaDirFiltStr

调节在对角线边缘的去噪强度。值越大,在对角线边缘去除的噪声越多。

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

数据类型: CVI_U8

NpSlopeR

Noise profile 在 R 通道的斜率

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

数据类型: CVI_U8

NpSlopeGr

Noise profile 在 Gr 通道的斜率

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

数据类型: CVI_U8 -

NpSlopeGb

Noise profile 在 Gb 通道的斜率

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

数据类型: CVI_U8

NpSlopeB

Noise profile 在 B 通道的斜率

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

数据类型: CVI_U8

NpLumaThrR

Noise profile 在 R 通道的亮度阈值

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

数据类型: CVI_U8

NpLumaThrGr

Noise profile 在 Gr 通道的亮度阈值

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

数据类型: CVI_U8

NpLumaThrGb

Noise profile 在 Gb 通道的亮度阈值

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

数据类型: CVI_U8

NpLumaThrB

Noise profile 在 B 通道的亮度阈值

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

数据类型: CVI_U8

NpLowOffsetR

Noise profile 在 R 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpLowOffsetGr

Noise profile 在 Gr 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpLowOffsetGb

Noise profile 在 Gb 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpLowOffsetB

Noise profile 在 B 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpHighOffsetR

Noise profile 在 R 通道可允许的最大 noise level

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

数据类型: CVI_U8

NpHighOffsetGb

Noise profile 在 Gr 通道可允许的最大 noise level

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

数据类型: CVI_U8

NpHighOffsetGr

Noise profile 在 Gb 通道可允许的最大 noise level

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

数据类型: CVI_U8

NpHighOffsetB

Noise profile 在 B 通道可允许的最大 noise level

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

13.3.5. ISP_NR_FILTER_AUTO_ATTR_S

【说明】

Bayer降噪滤波器自动属性

【定义】

typedef struct _ISP_NR_FILTER_AUTO_ATTR_S {
  CVI_U8 LumaStr[8][ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 VarThr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 CoringWgtLF[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 CoringWgtHF[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 NonDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 VhDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 AaDirFiltStr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpSlopeR[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpSlopeGr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpSlopeGb[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpSlopeB[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLumaThrR[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLumaThrGr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLumaThrGb[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLumaThrB[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLowOffsetR[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLowOffsetGr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLowOffsetGb[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpLowOffsetB[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpHighOffsetR[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpHighOffsetGr[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpHighOffsetGb[ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U16 NpHighOffsetB[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_NR_FILTER_AUTO_ATTR_S;

【成员】

成员名称

描述

LumaStr[8]

参考图像亮度从暗到亮分别调节去噪强度。值越大,亮噪去除强度越大。

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

数据类型: CVI_U8

VarThr

侦测边缘的阈值。值越大,判断为边缘的数量越少。

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

数据类型: CVI_U8

CoringWgtLF

调节在低频区域的随机噪声强度。值越大,在低频区域保留的噪声越多。

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

数据类型: CVI_U16

CoringWgtHF

调节在高频区域的随机噪声强度。值越大,在高频区域的保留的噪声越多。

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

数据类型: CVI_U16

NonDirFiltStr

调节在低频区的去噪强度。值越大,在低频区域去除的噪声越多。

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

数据类型: CVI_U8

VhDirFiltStr

调节在水平和垂直区的去噪强度。值越大,在水平和垂直边缘去除的噪声越多。

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

数据类型: CVI_U8

AaDirFiltStr

调节在对角线边缘的去噪强度。值越大,在对角线边缘去除的噪声越多。

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

数据类型: CVI_U8

NpSlopeR

Noise profile 在 R 通道的斜率

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

数据类型: CVI_U8

NpSlopeGr

Noise profile 在 Gr 通道的斜率

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

数据类型: CVI_U8

NpSlopeGb

Noise profile 在 Gb 通道的斜率

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

数据类型: CVI_U8

NpSlopeB

Noise profile 在 B 通道的斜率

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

数据类型: CVI_U8

NpLumaThrR

Noise profile 在 R 通道的亮度阈值

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

数据类型: CVI_U8

NpLumaThrGr

Noise profile 在 Gr 通道的亮度阈值

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

数据类型: CVI_U8

NpLumaThrGb

Noise profile 在 Gb 通道的亮度阈值

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

数据类型: CVI_U8

NpLumaThrB

Noise profile 在 B 通道的亮度阈值

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

数据类型: CVI_U8

NpLowOffsetR

Noise profile 在 R 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpLowOffsetGr

Noise profile 在 Gr 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpLowOffsetGb

Noise profile 在 Gb 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpLowOffsetB

Noise profile 在 B 通道可允许的最小 noise level

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

数据类型: CVI_U8

NpHighOffsetR

Noise profile 在 R 通道可允许的最大 noise level

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

数据类型: CVI_U8

NpHighOffsetGb

Noise profile 在 Gr 通道可允许的最大 noise level

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

数据类型: CVI_U8

NpHighOffsetGr

Noise profile 在 Gb 通道可允许的最大 noise level

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

数据类型: CVI_U8

NpHighOffsetB

Noise profile 在 B 通道可允许的最大 noise level

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

13.3.6. ISP_NR_FILTER_ATTR_S

【说明】

Bayer降噪滤波器属性

【定义】

typedef struct _ISP_NR_FILTER_ATTR_S {
  CVI_U8 TuningMode;
  ISP_NR_FILTER_MANUAL_ATTR_S stManual;
  ISP_NR_FILTER_AUTO_ATTR_S stAuto;
} ISP_NR_FILTER_ATTR_S;

【成员】

成员名称

描述

TuningMode

输出调试方案,辅助调节参数。

8: BNR图像结果。

11: 平坦/边缘侦测图像结果。

12: 垂直边缘侦测图像结果。

13: 水平边缘侦测图像结果。

14: 反对角线边缘侦测图像结果。

15: 对角线边缘侦测图像结果。

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

数据类型: CVI_U8

stManual

自动模式属性。

stAuto

手动模式属性。

【注意事项】

【相关数据类型及接口】

13.3.7. ISP_RLSC_MANUAL_ATTR_S

【说明】

Bayer降噪RLSC手动属性

【定义】

typedef struct cviISP_RLSC_MANUAL_ATTR_S {
  CVI_U16 RadialStr;
} ISP_RLSC_MANUAL_ATTR_S;

【成员】

成员名称

描述

RadialStr

用来调整RLSC标定后的强度。值越大,越接近标定后的强度。

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

数据类型: CVI_U16

【注意事项】

【相关数据类型及接口】

CVI_ISP_SetRLSCAttr

CVI_ISP_GetRLSCAttr

13.3.8. ISP_RLSC_AUTO_ATTR_S

【说明】

Bayer降噪RLSC自动属性

【定义】

typedef struct cviISP_RLSC_AUTO_ATTR_S {
  CVI_U16 RadialStr[ISP_AUTO_ISO_STRENGTH_NUM];
} ISP_RLSC_AUTO_ATTR_S;

【成员】

成员名称

描述

RadialStr

用来调整RLSC标定后的强度。值越大,越接近标定后的强度。

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

数据类型: CVI_U16

【注意事项】

【相关数据类型及接口】

CVI_ISP_SetRLSCAttr

CVI_ISP_GetRLSCAttr

13.3.9. ISP_RLSC_ATTR_S

【说明】

Bayer降噪RLSC属性

【定义】

typedef struct _ISP_RLSC_ATTR_S {
  CVI_BOOL RlscEnable;
  CVI_U16 RlscCenterX;
  CVI_U16 RlscCenterY;
  ISP_RLSC_MANUAL_ATTR_S stManual;
  ISP_RLSC_AUTO_ATTR_S stAuto;
} ISP_RLSC_ATTR_S;

【成员】

成员名称

描述

RlscEnable

用来调整RLSC标定后的强度。值越大,越接近标定后的强度。

取值范围: [0, 1]

数据类型: CVI_BOOL

RlscCenterX

X 中心位置

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

数据类型: CVI_U16

RlscCenterY

Y 中心位置

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

数据类型: CVI_U16

stManual

Bayer降噪RLSC手动模式属性

stAuto

Bayer降噪RLSC自动模式属性

【注意事项】

【相关数据类型及接口】

CVI_ISP_SetRLSCAttr

CVI_ISP_GetRLSCAttr