26. PFR¶
26.1. 功能描述¶
色彩畸变校正, 因不同颜色的光折射率不同, 在高亮区与低亮区交界的物体周围容易形成紫边, 以此模块实现图像去紫边功能,改善图像边缘的紫边现象
26.2. API 参考¶
CVI_ISP_SetPFRAttr : 设置PFR属性参数
CVI_ISP_GetPFRAttr : 获取PFR属性参数
26.2.1. CVI_ISP_SetPFRAttr¶
【描述】
设置PFR属性参数
【语法】
CVI_S32 CVI_ISP_SetPFRAttr(VI_PIPE ViPipe, const ISP_PFR_ATTR_S *pstPFRAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstPFRAttr |
PFR属性参数 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无
【举例】
VI_PIPE ViPipe = 0;
ISP_PFR_ATTR_S stAttr;
CVI_ISP_GetPFRAttr(ViPipe, &stAttr);
stAttr.enOpType = OP_TYPE_AUTO;
CVI_ISP_SetPFRAttr(ViPipe, &stAttr);
【相关主题】
26.2.2. CVI_ISP_GetPFRAttr¶
【描述】
获取PFR属性参数
【语法】
CVI_S32 CVI_ISP_GetPFRAttr(VI_PIPE ViPipe, ISP_PFR_ATTR_S *pstPFRAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstPFRAttr |
PFR属性参数 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无
【举例】
无
【相关主题】
26.3. 数据类型¶
ISP_PFR_MANUAL_ATTR_S : 定义手动PFR属性参数
ISP_PFR_AUTO_ATTR_S : 定义自动PFR属性参数
ISP_PFR_ATTR_S : 定义PFR属性参数
26.3.1. ISP_PFR_MANUAL_ATTR_S¶
【说明】
定义手动PFR属性参数
【定义】
typedef struct _ISP_PFR_MANUAL_ATTR_S {
CVI_U8 LumaIniVal; /*Rw; Range:[0, 255]*/
CVI_U8 LumLevelTh; /*Rw; Range:[0, 255]*/
CVI_U8 LumLevelLut[PFR_LUMA_LEVEL]; /*Rw; Range:[0, 255]*/
} ISP_PFR_MANUAL_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
LumaIniVal |
Luma的初始值。建议不要调。 取值范围: [0, 255] 数据类型: CVI_U8 |
LumLevelTh |
Luma的阈值。大于这个阈值的地方消紫边参考Luma信息。 取值范围: [0, 255] 数据类型: CVI_U8 |
LumLevelLut |
Luma level的插值LUT表,一般不需要更改。 取值范围: [0, 255] 数据类型: CVI_U8 |
【注意事项】
无
【相关数据类型及接口】
26.3.2. ISP_PFR_AUTO_ATTR_S¶
【说明】
定义自动PFR属性参数
【定义】
typedef struct _ISP_PFR_AUTO_ATTR_S {
CVI_U8 LumaIniVal[ISP_AUTO_ISO_STRENGTH_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 LumLevelTh[ISP_AUTO_ISO_STRENGTH_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 LumLevelLut[PFR_LUMA_LEVEL][ISP_AUTO_ISO_STRENGTH_NUM]; /*Rw; Range:[0, 255]*/
} ISP_PFR_AUTO_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
LumaIniVal |
Luma的初始值。建议不要调。 取值范围: [0, 255] 数据类型: CVI_U8 |
LumLevelTh |
Luma的阈值。大于这个阈值的地方消紫边参考Luma信息。 取值范围: [0, 255] 数据类型: CVI_U8 |
LumLevelLut |
Luma level的插值LUT表,一般不需要更改。 取值范围: [0, 255] 数据类型: CVI_U8 |
【注意事项】
无
【相关数据类型及接口】
26.3.3. ISP_PFR_ATTR_S¶
【说明】
定义PFR属性参数
【定义】
typedef struct _ISP_PFR_ATTR_S {
CVI_BOOL Enable; /*Rw; Range:[0, 1]*/
ISP_OP_TYPE_E enOpType;
CVI_U8 UpdateInterval; /*Rw; Range:[0, 255]*/
CVI_BOOL TuningMode; /*Rw; Range:[0, 1]*/
CVI_BOOL LumaEN; /*Rw; Range:[0, 1]*/
CVI_BOOL UVENLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 1]*/
CVI_BOOL HueENLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 1]*/
CVI_U8 ULut[PFR_COLOR_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 VLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 UVDiffThLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 UVDiffLut0[PFR_COLOR_LUT_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 UVDiffLut1[PFR_COLOR_LUT_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 RWetLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 BWetLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 255]*/
CVI_U16 HueLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 359]*/
CVI_U8 HueRngLut[PFR_COLOR_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 HueTh; /*Rw; Range:[0, 255]*/
CVI_U8 EdgeThLut[PFR_EDGE_LUT_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 GDiffLut[PFR_COLOR_LUT_NUM]; /*Rw; Range:[0, 127]*/
ISP_PFR_MANUAL_ATTR_S stManual;
ISP_PFR_AUTO_ATTR_S stAuto;
} ISP_PFR_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
Enable |
模块使能开关 取值范围: [0, 1] 数据类型: CVI_BOOL |
enOpType |
工作类型 OP_TYPE_AUTO:自动模式 OP_TYPE_MANUAL:手动模式 数据类型: ISP_OP_TYPE_E |
UpdateInterval |
影响参数更新间隔,值越大画面变化越慢,效能越好。 取值范围: [0, 255] 数据类型: CVI_U8 |
TuningMode |
None 取值范围: [0, 1] 数据类型: CVI_BOOL |
LumaEN |
去紫边处理时,参考luma信息功能使能。紫边通常与Luma信息相关,建议开启。 0: 关闭。 1: 使能。 取值范围: [0, 1] 数据类型: CVI_BOOL |
UVENLut |
参考自定义紫边UV值使能。可以支持自定义两组UV值,由ULut、VLut定义。 0: 关闭。 1: 使能。 取值范围: [0, 1] 数据类型: CVI_BOOL |
HueENLut |
参考自定义紫边Hue值使能。可以支持自定义两组Hue值,由HueLut定义。 0: 关闭。 1: 使能。 取值范围: [0, 1] 数据类型: CVI_BOOL |
ULut |
标定的紫边的两组U值。一版情况下不建议修改default值。不同ISO或不同场景下,当紫边颜色与default值差异较大,可以根据情况修改。 取值范围: [0, 255] 数据类型: CVI_U8 |
VLut |
标定的紫边的两组V值。一版情况下不建议修改default值。不同ISO或不同场景下,当紫边颜色与default值差异较大,可以根据情况修改。 取值范围: [0, 255] 数据类型: CVI_U8 |
UVDiffThLut |
None 取值范围: [0, 255] 数据类型: CVI_U8 |
UVDiffLut0 |
None 取值范围: [0, 255] 数据类型: CVI_U8 |
UVDiffLut1 |
None 取值范围: [0, 255] 数据类型: CVI_U8 |
RWetLut |
None 取值范围: [0, 255] 数据类型: CVI_U8 |
BWetLut |
None 取值范围: [0, 255] 数据类型: CVI_U8 |
HueLut |
标定的紫边的两组Hue值。一版情况下不建议修改default值。不同ISO或不同场景下,当紫边Hue值与default值差异较大,可以根据情况修改。 取值范围: [0, 359] 数据类型: CVI_U16 |
HueRngLut |
与标定的Hue值可被允许的差异范围。超出这个阈值认为完全偏离标定值;在范围内与HUE标定值的距离越近是紫色的概率越大。range调太大会消除更多的颜色,调太小可能会消不全。 取值范围: [0, 255] 数据类型: CVI_U8 |
HueTh |
是否使用Hue修正后像素的阈值。小于等于这个阈值认为使用Hue修正后的像素;大于这个阈值使用原像素与修正后像素blend之后的结果 取值范围: [0, 255] 数据类型: CVI_U8 |
EdgeThLut |
根据纹理大小做分段,以此查找对应的Edge Weigting。 取值范围: [0, 255] 数据类型: CVI_U8 |
GDiffLut |
Gradient match模块里算G通道差异的LUT, 一版不需要更改。整个LUT分段开始和结束的值越小,判断越激进,紫边消除效果越强 取值范围: [0, 127] 数据类型: CVI_U8 |
stManual |
手动参数 |
stAuto |
自动参数 |
【注意事项】
无
【相关数据类型及接口】