20. PreSharpen¶
20.1. 功能描述¶
此模块用于增强图像清晰度,位于3DNR之前,主要锐化图像中具方向性的边缘和细节纹理。
20.2. API 参考¶
CVI_ISP_SetPreSharpenAttr: 设置锐化属性参数
CVI_ISP_GetPreSharpenAttr: 获取锐化属性参数
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. 数据类型¶
ISP_PRESHARPEN_MANUAL_ATTR_S: 锐化属性手动参数
ISP_PRESHARPEN_AUTO_ATTR_S: 锐化属性自动参数
ISP_PRESHARPEN_ATTR_S: 锐化属性参数
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 |
自动模式参数属性 |
【注意事项】
无
【相关数据类型及接口】