19. Sharpen¶
19.1. 功能描述¶
此模块用于增强图像清晰度,位于3DNR之后,主要锐化图像中的大边缘。
19.2. API 参考¶
CVI_ISP_SetSharpenAttr: 设置锐化属性参数
CVI_ISP_GetSharpenAttr: 获取锐化属性参数
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. 数据类型¶
ISP_SHARPEN_MANUAL_ATTR_S: 锐化属性手动参数
ISP_SHARPEN_AUTO_ATTR_S: 锐化属性自动参数
ISP_SHARPEN_ATTR_S: 锐化属性参数
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 |
自动模式参数属性 |
【注意事项】
无
【相关数据类型及接口】