26. PFR

26.1. 功能描述

色彩畸变校正, 因不同颜色的光折射率不同, 在高亮区与低亮区交界的物体周围容易形成紫边, 以此模块实现图像去紫边功能,改善图像边缘的紫边现象

26.2. API 参考

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. 数据类型

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

自动参数

【注意事项】

【相关数据类型及接口】