20. PreSharpen

20.1. 功能描述

此模块用于增强图像清晰度,位于3DNR之前,主要锐化图像中具方向性的边缘和细节纹理。

20.2. API 参考

20.2.1. CVI_ISP_SetPreSharpenAttr

【描述】

设置锐化属性参数

【语法】

CVI_S32 CVI_ISP_SetPreSharpenAttr(VI_PIPE ViPipe, const ISP_PRESHARPEN_ATTR_S * pstPreSharpenAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstPreSharpenAttr

锐化属性参数

输入

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

20.2.2. CVI_ISP_GetPreSharpenAttr

【描述】

获取锐化属性参数

【语法】

CVI_S32 CVI_ISP_GetPreSharpenAttr(VI_PIPE ViPipe, ISP_PRESHARPEN_ATTR_S * pstPreSharpenAttr);

【参数】

参数名称

描述

输入/输出

ViPipe

VI_PIPE 号

输入

pstPreSharpenAttr

锐化属性参数

输出

【返回值】

返回值

描述

0

成功

非 0

失败,其值为 错误码

【需求】

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

  • 库文件: libisp.so

【注意】

【举例】

【相关主题】

20.3. 数据类型

20.3.1. ISP_PRESHARPEN_MANUAL_ATTR_S

【说明】

锐化属性手动参数

【定义】

typedef struct _ISP_PRESHARPEN_MANUAL_ATTR_S {
    CVI_U8 LumaAdpGain[SHARPEN_LUT_NUM]; /*RW; Range:[0x0, 0x3f]*/
    CVI_U8 DeltaAdpGain[SHARPEN_LUT_NUM]; /*RW; Range:[0x0, 0x3f]*/
    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_PRESHARPEN_MANUAL_ATTR_S;

【成员】

成员名称

描述

EdgeGain

边缘的增强参数

值越大时,边缘锐化强度越大

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

数据类型: CVI_U8

TextureGain

细节纹理的增强参数

值越大时,细节纹理锐化强度越大

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

数据类型: CVI_U16

EdgeFreq

图像具方向性的边缘频段控制

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

数据类型: CVI_U8

TextureFreq

图像无方向性的细节纹理频段控制

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

数据类型: CVI_U8

LumaAdpCoring[33]

亮度锐化噪声值,细节纹理或边缘的增强会排除该容忍值所贡献的增强。数值越小锐化的效果越明显但也越容易将噪声锐化。数值越大则不易将噪声锐化,但锐化的效果则越不明显

取值范围: [0x0, 0x3ff] 数据类型: CVI_U16

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, 0xff]

数据类型: CVI_U8

GlobalGain

全局锐化权重

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

数据类型: CVI_U8

EdgeGlobalGain

全局边缘锐化权重

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

数据类型: CVI_U8

DeltaShtCtrl[33]

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

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

数据类型: CVI_U8

DeltaShtCtrlUnit

边缘侦测的强度调控

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

数据类型: CVI_U8

OverShootGain

白边锐化上限幅度的倍率。(1x = 16)

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

数据类型: CVI_U8

HFBlendWgt

高频边缘加强的权重

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

数据类型: CVI_U8

MFBlendWgt

中频边缘加强的权重

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

数据类型: CVI_U8

OverShootThr

白边锐化上限幅度

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

数据类型: CVI_U8

UnderShootThr

黑边锐化下限幅度

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

数据类型: CVI_U8

YNoiseLevel

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

取值范围: [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, 0xff]

数据类型: CVI_U8

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

【注意事项】

【相关数据类型及接口】

20.3.2. ISP_PRESHARPEN_AUTO_ATTR_S

【说明】

锐化属性自动参数

【定义】

typedef struct _ISP_PRESHARPEN_AUTO_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]; /*RW; Range:[0x0, 0x3f]*/
    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_PRESHARPEN_AUTO_ATTR_S;

【成员】

成员名称

描述

EdgeGain

边缘的增强参数

值越大时,边缘锐化强度越大

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

数据类型: CVI_U8

OverShootThr

白边锐化上限幅度

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

数据类型: CVI_U8

UnderShootThr

黑边锐化下限幅度

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

数据类型: CVI_U8

YNoiseLevel

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

取值范围: [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, 0xff]

数据类型: CVI_U8

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

【注意事项】

【相关数据类型及接口】

20.3.3. ISP_PRESHARPEN_ATTR_S

【说明】

锐化属性参数

【定义】

typedef struct _ISP_PRESHARPEN_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_PRESHARPEN_MANUAL_ATTR_S stManual;
     ISP_PRESHARPEN_AUTO_ATTR_S stAuto;
} ISP_PRESHARPEN_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

TuningModeLevelShift

针对TuningMode 1, 2,及3的辅助调节参数增益

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

数据类型: CVI_U8

FilterCoefByISOFuncEn

动态滤波系数使能

取值范围: [0, 1]

数据类型: CVI_BOOL

FilterCoefByISOLowThd

动态滤波系数下阈值,低于此值偏好使用有向性滤波系数

取值范围: [0, 0xffffffff]

数据类型: CVI_U32

FilterCoefByISOHighThd

动态滤波系数上阈值,低于此值偏好使用无向性滤波系数

取值范围: [0, 0xffffffff]

数据类型: CVI_U32

FilterCoefNonDirType

动态滤波系数类别

取值范围: [0, 0xff]

数据类型: CVI_U32

LumaAdpCoringEn

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

取值范围: [0, 1]

数据类型: CVI_BOOL

LumaAdpGainEn

亮度锐化权重使能

取值范围: [0, 1]

数据类型: CVI_BOOL

DeltaAdpGainEn

锐化权重使能

取值范围: [0, 1]

数据类型: CVI_BOOL

WdrCoringCompensationEn

亮度锐化噪声值在wdr模式的补偿使能。

取值范围: [0, 1]

数据类型: CVI_BOOL

WdrCoringCompensationMode

亮度锐化噪声值在wdr模式的补偿模式。

0:根据WdrCoringHighThrd与 WdrCoringLowthd补偿亮度锐化噪声。 1:根据DRC tone mapping curve自动补偿亮度锐化噪声。

取值范围: [0, 1]

数据类型: CVI_BOOL

WdrCoringToleranceLevel

亮度锐化噪声值在wdr模式补偿的容忍值。数值越小锐化的效果越明显但也越容易将噪声锐化。数值越大则不易将噪声锐化,但锐化的效果则越不明显。

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

数据类型: CVI_U16

WdrCoringHighThr

亮度锐化噪声wdr模式补偿的高临界值。亮度低于此临界值则不进行噪声补偿。亮度高于此临界值则根据WdrCoringToleranceLevel数值进行噪声补偿。亮度介于WdrCoringLowThrd与Wdr CoringHighThrd之间则按比例进行补偿。

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

数据类型: CVI_U8

WdrCoringLowThr

亮度锐化噪声wdr模式补偿的低临界值。亮度低于此临界值则不进行噪声补偿。亮度高于此临界值则根据WdrCoringToleranceLevel数值进行噪声补偿。亮度介于WdrCoringLowThrd与Wdr CoringHighThrd之间则按比例进行补偿。

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

数据类型: CVI_U8

NoiseSuppressEnable

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

取值范围: [0, 1]

数据类型: CVI_BOOL

stManual

手动模式参数属性

stAuto

自动模式参数属性

【注意事项】

【相关数据类型及接口】