hi_isp_shading_lut_attr
说明
定义Mesh Shading增益表属性。
定义
typedef struct { hi_u8 mesh_scale; hi_u16 x_grid_width[HI_ISP_MLSC_X_HALF_GRID_NUM]; hi_u16 y_grid_width[HI_ISP_MLSC_Y_HALF_GRID_NUM]; hi_isp_shading_gain_lut lsc_gain_lut[HI_ISP_MLSC_GAIN_LUT_NUM]; hi_isp_bnr_lsc_gain_lut bnr_lsc_gain_lut; } hi_isp_shading_lut_attr;
成员
成员名称 |
描述 |
---|---|
mesh_scale |
增益表精度控制参数。当选择的精度较低时(比如mesh_scale为3),画面衰减幅度大,可能会出现格子现象,可以提高精度(比如7)重新标定。 取值范围:[0, 7]。 |
x_grid_width[HI_ISP_MLSC_X_HALF_GRID_NUM] |
用来储存各grid分区宽度大小信息。该接口各分量最小值为4,总和应为原画面宽度的四分之一。(例如原画面大小为 1080p,则该接口各参数总和应为480) 取值范围:[4,width/4 - 60],width为原画面的宽度。 #define HI_ISP_LSC_GRID_COL 33 #define HI_ISP_MLSC_X_HALF_GRID_NUM ((HI_ISP_LSC_GRID_COL - 1) / 2) |
y_grid_width[HI_ISP _MLSC_Y_HALF_GRID_NUM] |
用来储存各 GRID 分区高度大小信息。该接口各分量最小值为 4,总和应为原画面高度的四分之一。(例如原画面大小为 1080p,则该接口各参数总和应为 270) 取值范围:[4,height/4 - 60],height为原画面的高度。 #define HI_ISP_LSC_GRID_ROW 33 #define HI_ISP_MLSC_Y_HALF_GRID_NUM ((HI_ISP_LSC_GRID_ROW - 1) / 2) |
lsc_gain_lut[HI_ISP_MLSC_GAIN_LUT_NUM] |
两组色温下的增益表配置。硬件基于这两组表以及blend_ratio进行当前色温下校正增益表的计算。 取值范围:[0, 1023]。 #define HI_ISP_MLSC_GAIN_LUT_NUM 2 |
bnr_lsc_gain_lut |
用于BNR LSC参考所用的增益表。 取值范围:[0, 65535]。 |
注意事项
- 调整x_grid_width或y_grid_width里的值即调整分区宽度或者高度。注意由于整体画面为上下、左右对称,因此每当设置一个分区的宽度或者高度时,其对称分区的宽度或高度也会相应发生变化。改变后的分区宽度与高度请满足总和为原画面大小宽度或高度的四分之一。由于调节比较复杂并容易造成Color Shading现象,一般不建议手动调节。分辨率切换的时候,x_grid_width与 y_grid_width自动重新配置。
- 硬件基于配置的两组色温下的增益表以及blend_ratio进行插值得到当前色温下的校正增益表的计算,从而校正整幅图像的shading现象,其中blend_ratio为lsc_gain_lut[0]对应的权重。
- 在单光源模式下,lsc_gain_lut结构体需要配置成一致,此时需要配置成标定的第一个光源。
- 增益位宽为10bit,即最大值为1023。
− 当mesh_scale为 0 至 3 时,增益的表示与其他算法一致,增益精度从高到低,取值范围从小变大,1倍增益不为 0;
− 当mesh_scale为 4 至 7 时,精度从高到低,取值范围从小变大,增益的表示方式略有差异,实际的增益计算方式为通用增益减去对应精度的 1倍增益,比如mesh_scale为 5时,按照增益精度为1.9,若通用增益为886,1倍对应增益512,那么实际的增益为886-512=374,这种表示方式下,最小的增益为1倍,但是表示的范围比上一种要大。
- 在能够完全校正的情况下,增益精度mesh_scale应该下尽量选择精度高的档位,提高校正的准确度,例如当mesh_scale为0或4时都能校正,应当选择4。对于某些镜头阴影特别严重的极端情况下,存在无法完全校正的可能,当选择较大增益倍数(如mesh_scale为3)校正时,可能会在边缘处出现暗条纹,此时需要降低增益倍数来提高精度(设 mesh_scale为2或 7),重新标定,直到暗条纹消失为止。