19. Sharpen

19.1. 功能描述

此模块用于增强图像清晰度,位于3DNR之后,主要锐化图像中的大边缘。

19.2. API 参考

19.2.1. CVI_ISP_SetSharpenAttr

【描述】

设置锐化属性参数

【语法】

CVI_S32 CVI_ISP_SetSharpenAttr(VI_PIPE ViPipe, const ISP_SHARPEN_ATTR_S * pstSharpenAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstSharpenAttr

锐化属性参数

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

19.2.2. CVI_ISP_GetSharpenAttr

【描述】

获取锐化属性参数

【语法】

CVI_S32 CVI_ISP_GetSharpenAttr(VI_PIPE ViPipe, ISP_SHARPEN_ATTR_S * pstSharpenAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstSharpenAttr

锐化属性参数

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

19.3. 数据类型

19.3.1. ISP_SHARPEN_MANUAL_ATTR_S

【说明】

锐化属性手动参数

【定义】

typedef struct _ISP_SHARPEN_MANUAL_ATTR_S {
  CVI_U8 LumaAdpGain[SHARPEN_LUT_NUM]; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 DeltaAdpGain[SHARPEN_LUT_NUM];
  CVI_U8 LumaCorLutIn[EE_LUT_NODE]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 LumaCorLutOut[EE_LUT_NODE]; /*RW; Range:[0x0, 0x20]*/
  CVI_U8 MotionCorLutIn[EE_LUT_NODE]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionCorLutOut[EE_LUT_NODE]; /*RW; Range:[0x0, 0x20]*/
  CVI_U8 MotionCorWgtLutIn[EE_LUT_NODE]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionCorWgtLutOut[EE_LUT_NODE]; /*RW; Range:[0x0, 0x80]*/
  CVI_U8 GlobalGain; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 OverShootGain; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 UnderShootGain; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 HFBlendWgt; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MFBlendWgt; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 OverShootThr; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 UnderShootThr; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 OverShootThrMax; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 UnderShootThrMin; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionShtGainIn[EE_LUT_NODE]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionShtGainOut[EE_LUT_NODE]; /*RW; Range:[0x0, 0x80]*/
  CVI_U8 HueShtCtrl[SHARPEN_LUT_NUM]; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 SatShtGainIn[EE_LUT_NODE]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 SatShtGainOut[EE_LUT_NODE]; /*RW; Range:[0x0, 0x80]*/
} ISP_SHARPEN_MANUAL_ATTR_S;

【成员】

成员名称

描述

LumaAdpGain[33]

亮度锐化权重

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

数据类型: CVI_U8

LumaCorLutIn[EE_LUT_NODE]

基于luma的coring,此为输入节点,输入luma

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

数据类型: CVI_U8

LumaCorLutOut[EE_LUT_NODE]

基于luma的coring,此为输出节点,输出对应coring值

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

数据类型: CVI_U8

MotionCorLutIn[EE_LUT_NODE]

基于motion的coring,此为输入节点,输入为motion

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

数据类型: CVI_U8

MotionCorLutOut[EE_LUT_NODE]

基于motion的coring,此为输出节点,输出对应coring值

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

数据类型: CVI_U8

MotionCorWgtLutIn[EE_LUT_NODE]

基于motion调整luma coring以及motion coring的权重,此为输入节点,输入motion的大小

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

数据类型: CVI_U8

MotionCorWgtLutOut[EE_LUT_NODE]

基于motion调整luma coring以及motion coring的权重,此为输出节点,输出motion coring的权重。(max = 128)

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

数据类型: CVI_U8

GlobalGain

全局锐化权重

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

数据类型: CVI_U8

OverShootGain

白边锐化权重

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

数据类型: CVI_U8

UnderShootGain

黑边锐化权重

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

数据类型: CVI_U8

EdgeGlobalGain

全局边缘锐化权重

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

数据类型: CVI_U8

DeltaShtCtrl[33]

根据边缘侦测的结果定义边缘增强的程度

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

数据类型: CVI_U8

DeltaShtCtrlUnit

边缘侦测的强度调控

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

数据类型: CVI_U8

YNoiseLevel

亮度锐化噪声值放大倍率,一倍为64。数值越大亮度锐化噪声越被放大,反之则缩小

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

数据类型: CVI_U8

HFBlendWgt

高频边缘加强的权重

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

数据类型: CVI_U8

MFBlendWgt

中频边缘加强的权重

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

数据类型: CVI_U8

OverShootThr

白边锐化上限幅度

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

数据类型: CVI_U8

UnderShootThr

黑边锐化下限幅度

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

数据类型: CVI_U8

OverShootThrMax

白边锐化最大上限幅度

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

数据类型: CVI_U8

UnderShootThrMin

黑边锐化最大下限幅度

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

数据类型: CVI_U8

MotionShtGainIn[4]

针对motion区决定边缘增强程度的 LUT,此为水平节点,输入值为motion值

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

数据类型: CVI_U8

MotionShtGainOut[4]

针对motion区决定边缘增强程度的LUT,此为垂直节点,输出值为motion所对应的增强强度

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

数据类型: CVI_U8

NoiseSuppressMode

加强去噪的滤波器模式,设1为采用较平滑的滤波器

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

数据类型: CVI_BOOL

HueShtCtrl[SHARPEN_LUT_NUM]

基于指定的色彩做边缘增强

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

数据类型: CVI_U8

SatShtGainIn[EE_LUT_NODE]

基于指定的饱和度做边缘增强,此为输入节点,输入饱和度

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

数据类型: CVI_U8

SatShtGainOut[EE_LUT_NODE]

基于指定的饱和度做边缘增强,此为输出节点,输出对应饱和度的边缘强度。(max = 128)

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

19.3.2. ISP_SHARPEN_AUTO_ATTR_S

【说明】

锐化属性自动参数

【定义】

typedef struct _ISP_SHARPEN_MANUAL_ATTR_S {
  CVI_U8 LumaAdpGain[SHARPEN_LUT_NUM][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 DeltaAdpGain[SHARPEN_LUT_NUM][ISP_AUTO_ISO_STRENGTH_NUM];
  CVI_U8 LumaCorLutIn[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 LumaCorLutOut[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x20]*/
  CVI_U8 MotionCorLutIn[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionCorLutOut[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x20]*/
  CVI_U8 MotionCorWgtLutIn[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionCorWgtLutOut[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x80]*/
  CVI_U8 GlobalGain[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 OverShootGain[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 UnderShootGain[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 HFBlendWgt[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MFBlendWgt[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 OverShootThr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 UnderShootThr[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 OverShootThrMax[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 UnderShootThrMin[ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionShtGainIn[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 MotionShtGainOut[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x80]*/
  CVI_U8 HueShtCtrl[SHARPEN_LUT_NUM][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x3f]*/
  CVI_U8 SatShtGainIn[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 SatShtGainOut[EE_LUT_NODE][ISP_AUTO_ISO_STRENGTH_NUM]; /*RW; Range:[0x0, 0x80]*/
} ISP_SHARPEN_AUTO_ATTR_S;

【成员】

成员名称

描述

LumaAdpGain[33]

亮度锐化权重

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

数据类型: CVI_U8

LumaCorLutIn[EE_LUT_NODE]

基于luma的coring,此为输入节点,输入luma

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

数据类型: CVI_U8

LumaCorLutOut[EE_LUT_NODE]

基于luma的coring,此为输出节点,输出对应coring值

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

数据类型: CVI_U8

MotionCorLutIn[EE_LUT_NODE]

基于motion的coring,此为输入节点,输入为motion

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

数据类型: CVI_U8

MotionCorLutOut[EE_LUT_NODE]

基于motion的coring,此为输出节点,输出对应coring值

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

数据类型: CVI_U8

MotionCorWgtLutIn[EE_LUT_NODE]

基于motion调整luma coring以及motion coring的权重,此为输入节点,输入motion的大小

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

数据类型: CVI_U8

MotionCorWgtLutOut[EE_LUT_NODE]

基于motion调整luma coring以及motion coring的权重,此为输出节点,输出motion coring的权重。(max = 128)

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

数据类型: CVI_U8

GlobalGain

全局锐化权重

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

数据类型: CVI_U8

OverShootGain

白边锐化权重

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

数据类型: CVI_U8

UnderShootGain

黑边锐化权重

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

数据类型: CVI_U8

EdgeGlobalGain

全局边缘锐化权重

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

数据类型: CVI_U8

DeltaShtCtrl[33]

根据边缘侦测的结果定义边缘增强的程度

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

数据类型: CVI_U8

DeltaShtCtrlUnit

边缘侦测的强度调控

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

数据类型: CVI_U8

YNoiseLevel

亮度锐化噪声值放大倍率,一倍为64。数值越大亮度锐化噪声越被放大,反之则缩小

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

数据类型: CVI_U8

HFBlendWgt

高频边缘加强的权重

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

数据类型: CVI_U8

MFBlendWgt

中频边缘加强的权重

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

数据类型: CVI_U8

OverShootThr

白边锐化上限幅度

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

数据类型: CVI_U8

UnderShootThr

黑边锐化下限幅度

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

数据类型: CVI_U8

OverShootThrMax

白边锐化最大上限幅度

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

数据类型: CVI_U8

UnderShootThrMin

黑边锐化最大下限幅度

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

数据类型: CVI_U8

MotionShtGainIn[4]

针对motion区决定边缘增强程度的LUT,此为水平节点,输入值为motion值

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

数据类型: CVI_U8

MotionShtGainOut[4]

针对motion区决定边缘增强程度的LUT,此为垂直节点,输出值为motion所对应的增强强度

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

数据类型: CVI_U8

NoiseSuppressMode

加强去噪的滤波器模式,设1为采用较平滑的滤波器

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

数据类型: CVI_BOOL

HueShtCtrl[SHARPEN_LUT_NUM]

基于指定的色彩做边缘增强

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

数据类型: CVI_U8

SatShtGainIn[EE_LUT_NODE]

基于指定的饱和度做边缘增强,此为输入节点,输入饱和度

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

数据类型: CVI_U8

SatShtGainOut[EE_LUT_NODE]

基于指定的饱和度做边缘增强,此为输出节点,输出对应饱和度的边缘强度。(max = 128)

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

数据类型: CVI_U8

【注意事项】

【相关数据类型及接口】

19.3.3. ISP_SHARPEN_ATTR_S

【说明】

锐化属性参数

【定义】

typedef struct _ISP_SHARPEN_ATTR_S {
  CVI_BOOL Enable; /*RW; Range:[0x0, 0x1]*/
  ISP_OP_TYPE_E enOpType;
  CVI_U8 UpdateInterval; /*RW; Range:[0x1, 0xFF]*/
  CVI_U8 TuningMode; /*RW; Range:[0x0, 0xb]*/
  CVI_BOOL LumaAdpGainEn; /*RW; Range:[0x0, 0x1]*/
  CVI_BOOL DeltaAdpGainEn; /*RW; Range:[0x0, 0x1]*/
  CVI_BOOL NoiseSuppressEnable; /*RW; Range:[0, 1]*/
  CVI_BOOL SatShtCtrlEn; /*RW; Range:[0, 1]*/
  CVI_BOOL SoftClampEnable; /*RW; Range:[0x0, 0x1]*/
  CVI_U8 SoftClampUB; /*RW; Range:[0x0, 0xff]*/
  CVI_U8 SoftClampLB; /*RW; Range:[0x0, 0xff]*/
  ISP_SHARPEN_MANUAL_ATTR_S stManual;
  ISP_SHARPEN_AUTO_ATTR_S stAuto;
} ISP_SHARPEN_ATTR_S;

【成员】

成员名称

描述

Enable

Y Sharpen 模块使能

取值范围: [0, 1]

数据类型: CVI_BOOL

enOpType

工作类型

OP_TYPE_AUTO: 自动模式

OP_TYPE_MANUAL: 手动模式

UpdateInterval

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

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

数据类型: CVI_U8

TuningMode

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

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

数据类型: CVI_U8

LumaAdpCoringEn

自动亮度噪声抑止阈值开关

取值范围: [0, 1]

数据类型: CVI_BOOL

LumaAdpGainEn

亮度锐化权重使能

取值范围: [0, 1]

数据类型: CVI_BOOL

DeltaAdpGainEn

锐化权重使能

取值范围: [0, 1]

数据类型: CVI_BOOL

DeltaAdpGain[SHARPEN_LUT_NUM]

锐化权重

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

数据类型: CVI_U8

NoiseSuppressEnable

加强去噪使能。针对边缘侦测的影像做加强去噪的前处理后再做边缘增强

取值范围: [0, 1]

数据类型: CVI_BOOL

SatShtCtrlEn

由饱和度调整边缘增强的使能

取值范围: [0, 1]

数据类型: CVI_BOOL

SoftClampEnable

平滑的处理边缘加强

取值范围: [0, 1]

数据类型: CVI_BOOL

SoftClampUB

平滑处理边缘加强的上界,设定的值越大,则边缘加强的越连续,但加强的效果也越弱

取值范围: [0, 0xff]

数据类型: CVI_U8

SoftClampLB

平滑处理边缘加强的下界,设定的值越大,则边缘加强的越连续,但加强的效果也越弱

取值范围: [0, 0xff]

数据类型: CVI_U8

stManual

手动模式参数属性

stAuto

自动模式参数属性

【注意事项】

【相关数据类型及接口】