11. RLSC¶
11.1. 功能描述¶
LSC,即Lens shading correction,镜头阴影校正。
在 cv184x 系列中,LSC会分成两个部分:一个是LSC,即MLSC(Mesh Lens shading correction),主要用来校正Color Shading。在处理器中 LSC 算法使用网格方法对图像先做标定,然后矫正,算法会将Bayer上的域画面划分成 37×37 个子区块。Bayer域四个通道由三组不同的RGB增益数组来做计算。由于只做颜色上的校正,所以一般G通道的增益保持一倍的设定,即512。当标定MLSC组数为复数组时,则会根据当前的色温选出邻近的两色温之MLSC标定表进行内插,产生对应当前色温的MLSC增益。标定的组数则由 LscGainLutSize 参数定义之。
另一个是RLSC(Radius Lens shading correction),主要用来校正Luma Shading。在LSC算法中,会以画面的亮度中心为圆心,各像素点和圆心之间的距离为半径,做不同程度亮度补偿。一般离亮度中心越远,补偿强度越大。
这里主要介绍RLSC的相关API和数据结构,MLSC 已经在上一章节介绍。
11.2. API 参考¶
CVI_ISP_SetRadialShadingAttr : 设置Radius Shading算法参数
CVI_ISP_GetRadialShadingAttr : 获取Radius Shading算法参数
CVI_ISP_SetRadialShadingGainLutAttr : 设置LSC 半径形式补偿增益表
CVI_ISP_GetRadialShadingGainLutAttr : 获取LSC 半径形式补偿增益表
11.2.1. CVI_ISP_SetRadialShadingAttr¶
【描述】
设置Radius Shading算法参数
【语法】
CVI_S32 CVI_ISP_SetRadialShadingAttr(VI_PIPE ViPipe, const ISP_RADIAL_SHADING_ATTR_S *pstRadialShadingAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstRadialShadingAttr |
Radius Shading算法参数 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无
【举例】
VI_PIPE ViPipe = 0;
ISP_RADIAL_SHADING_ATTR_S stAttr;
CVI_ISP_GetRadialShadingAttr(ViPipe, &stAttr);
stAttr.enOpType = OP_TYPE_AUTO;
CVI_ISP_SetRadialShadingAttr(ViPipe, &stAttr);
【相关主题】
11.2.2. CVI_ISP_GetRadialShadingAttr¶
【描述】
获取Radius Shading算法参数
【语法】
CVI_S32 CVI_ISP_GetRadialShadingAttr(VI_PIPE ViPipe, ISP_RADIAL_SHADING_ATTR_S *pstRadialShadingAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstRadialShadingAttr |
Radius Shading算法参数 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无
【举例】
无
【相关主题】
11.2.3. CVI_ISP_SetRadialShadingGainLutAttr¶
【描述】
设置LSC 半径形式补偿增益表
【语法】
CVI_S32 CVI_ISP_SetRadialShadingGainLutAttr(VI_PIPE ViPipe, const ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S *pstRadialShadingGainLutAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstRadialShadingGainLutAttr |
LSC 半径形式补偿增益表 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无
【举例】
VI_PIPE ViPipe = 0;
ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S stAttr;
CVI_ISP_GetRadialShadingGainLutAttr(ViPipe, &stAttr);
stAttr.enOpType = OP_TYPE_AUTO;
CVI_ISP_SetRadialShadingGainLutAttr(ViPipe, &stAttr);
【相关主题】
11.2.4. CVI_ISP_GetRadialShadingGainLutAttr¶
【描述】
获取LSC 半径形式补偿增益表
【语法】
CVI_S32 CVI_ISP_GetRadialShadingGainLutAttr(VI_PIPE ViPipe, ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S *pstRadialShadingGainLutAttr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
ViPipe |
VI_PIPE 号 |
输入 |
pstRadialShadingGainLutAttr |
LSC 半径形式补偿增益表 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功 |
非 0 |
失败,其值为 错误码。 |
【需求】
头文件: cvi_isp.h, cvi_comm_isp.h
库文件: libisp.so
【注意】
无
【举例】
无
【相关主题】
11.3. 数据类型¶
ISP_RADIAL_SHADING_MANUAL_ATTR_S : 定义手动Radius Shading算法参数
ISP_RADIAL_SHADING_AUTO_ATTR_S : 定义自动Radius Shading算法参数
ISP_RADIAL_SHADING_ATTR_S : 定义Radius Shading算法参数
ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S : 定义LSC 半径形式补偿增益表
11.3.1. ISP_RADIAL_SHADING_MANUAL_ATTR_S¶
【说明】
定义手动Radius Shading算法参数
【定义】
typedef struct _ISP_RADIAL_SHADING_MANUAL_ATTR_S {
CVI_U16 RadiusStr; /*Rw; Range:[0, 4095]*/
CVI_U8 NDStr; /*Rw; Range:[0, 255]*/
CVI_U8 NDThr; /*Rw; Range:[0, 255]*/
} ISP_RADIAL_SHADING_MANUAL_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
RadiusStr |
RLSC的全局强度。 取值范围: [0, 4095] 数据类型: CVI_U16 |
NDStr |
调节噪声保留的强度,值越大,噪声保留越多。 取值范围: [0, 255] 数据类型: CVI_U8 |
NDThr |
允许保留噪声的最大值。 取值范围: [0, 255] 数据类型: CVI_U8 |
【注意事项】
无
【相关数据类型及接口】
11.3.2. ISP_RADIAL_SHADING_AUTO_ATTR_S¶
【说明】
定义自动Radius Shading算法参数
【定义】
typedef struct _ISP_RADIAL_SHADING_AUTO_ATTR_S {
CVI_U16 RadiusStr[ISP_AUTO_ISO_STRENGTH_NUM]; /*Rw; Range:[0, 4095]*/
CVI_U8 NDStr[ISP_AUTO_ISO_STRENGTH_NUM]; /*Rw; Range:[0, 255]*/
CVI_U8 NDThr[ISP_AUTO_ISO_STRENGTH_NUM]; /*Rw; Range:[0, 255]*/
} ISP_RADIAL_SHADING_AUTO_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
RadiusStr |
RLSC的全局强度。 取值范围: [0, 4095] 数据类型: CVI_U16 |
NDStr |
调节噪声保留的强度,值越大,噪声保留越多。 取值范围: [0, 255] 数据类型: CVI_U8 |
NDThr |
允许保留噪声的最大值。 取值范围: [0, 255] 数据类型: CVI_U8 |
【注意事项】
无
【相关数据类型及接口】
11.3.3. ISP_RADIAL_SHADING_ATTR_S¶
【说明】
定义Radius Shading算法参数
【定义】
typedef struct _ISP_RADIAL_SHADING_ATTR_S {
CVI_BOOL Enable; /*Rw; Range:[0, 1]*/
ISP_OP_TYPE_E enOpType;
CVI_U8 UpdateInterval; /*Rw; Range:[0, 255]*/
CVI_U16 CenterX; /*Rw; Range:[0, 8191]*/
CVI_U16 CenterY; /*Rw; Range:[0, 8191]*/
CVI_U16 RadiusScaleRGB; /*Rw; Range:[0, 32767]*/
ISP_RADIAL_SHADING_MANUAL_ATTR_S stManual;
ISP_RADIAL_SHADING_AUTO_ATTR_S stAuto;
} ISP_RADIAL_SHADING_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
Enable |
模块使能开关 取值范围: [0, 1] 数据类型: CVI_BOOL |
enOpType |
工作类型 OP_TYPE_AUTO:自动模式 OP_TYPE_MANUAL:手动模式 数据类型: ISP_OP_TYPE_E |
UpdateInterval |
影响参数更新间隔,值越大画面变化越慢,效能越好。 取值范围: [0, 255] 数据类型: CVI_U8 |
CenterX |
径向阴影校正的中心点 X 坐标。 取值范围: [0, 8191] 数据类型: CVI_U16 |
CenterY |
径向阴影校正的中心点 Y 坐标。 取值范围: [0, 8191] 数据类型: CVI_U16 |
RadiusScaleRGB |
控制径向阴影校正的半径缩放比例,影响 RGB 通道的校正范围。 取值范围: [0, 32767] 数据类型: CVI_U16 |
stManual |
手动参数 |
stAuto |
自动参数 |
【注意事项】
无
【相关数据类型及接口】
11.3.4. ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S¶
【说明】
定义LSC 半径形式补偿增益表
【定义】
typedef struct _ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S {
CVI_U16 GGain[ISP_RLSC_WINDOW_SIZE]; /*Rw; Range:[0, 4095]*/
} ISP_RADIAL_SHADING_GAIN_LUT_ATTR_S;
【成员】
成员名称 |
描述 |
|---|---|
GGain |
亮度补偿增益表,由标定得来。 取值范围: [0, 4095] 数据类型: CVI_U16 |
【注意事项】
无
【相关数据类型及接口】