hi_isp_sharpen_manual_attr
说明
定义图像锐化的手动属性。
定义
typedef struct { hi_u8 luma_wgt[HI_ISP_SHARPEN_LUMA_NUM]; hi_u16 texture_strength[HI_ISP_SHARPEN_GAIN_NUM]; hi_u16 edge_strength[HI_ISP_SHARPEN_GAIN_NUM]; hi_u16 texture_freq; hi_u16 edge_freq; hi_u8 over_shoot; hi_u8 under_shoot; hi_u8 shoot_sup_strength; hi_u8 shoot_sup_adj; hi_u8 detail_ctrl; hi_u8 detail_ctrl_threshold; hi_u8 edge_filt_strength; hi_u8 edge_filt_max_cap; hi_u8 r_gain; hi_u8 g_gain; hi_u8 b_gain; hi_u8 skin_gain; hi_u16 max_sharp_gain; } hi_isp_sharpen_manual_attr;
成员
成员名称 |
描述 |
---|---|
luma_wgt[HI_ISP_SHARPEN_LUMA_NUM] |
亮度锐化权重。 满量程0-255的亮度被32个等分点平均分为32段亮度区间,每一段亮度区间对应一个亮度权重。比如0-7的亮度区间的权重是luma_wgt[0],8-15的亮度区间的权重是 luma_wgt[1],依次类推。如图1所示。值越大,图像锐化程度越高,反之,越弱。 取值范围:[0, 127],建议值 127。 #define HI_ISP_SHARPEN_LUMA_NUM 32 |
texture_strength[HI_ISP_SHARPEN_GAIN_NUM] |
该参数用于设置图像无方向的细节纹理的锐度。 该值越大,无方向的细节纹理的清晰度越高。 该参数是一个长度为32的数组,是一个32段的连续的强度曲线,如图2所示。 取值范围:[0, 4095],建议值300。 #define HI_ISP_SHARPEN_GAIN_NUM 32 |
edge_strength[HI_ISP_SHARPEN_GAIN_NUM] |
该参数用于设置图像带方向的边缘的锐度。 该值越大,带方向的边缘的锐度越高。 该参数是一个长度为32的数组,是一个32段的连续的强度曲线,如图3所示。 取值范围:[0, 4095],建议值400。 |
texture_freq |
该参数用于设置图像的无方向细节纹理增强的频率。 该值越大,细节纹理的增强就越偏向于高频增强,细节纹理就越细碎。反之,该值越小,细节纹理就越粗越圆润。 texture_freq对应于强度参数texture_strength。texture_freq越大,图像的细节纹理就越细碎,该值过大,会导致图像的细节纹理过于细碎而不自然,甚至感觉模糊。 取值范围:[0, 4095],建议值128。 |
edge_freq |
该参数用于设置图像的带方向的边缘增强频率。 该值越大,边缘的增强就越偏向于高频增强,图像的边缘就越纤薄越窄。反之,该值越小,边缘就越粗越圆润。edge_freq对应于强度参数edge_strength。edge_freq越大,图像的边缘就越纤薄越窄,该值过大,会导致图像的边缘过于纤薄而出现虚边现象。 取值范围:[0, 4095],建议值96。 |
over_shoot |
设置图像的overshoot(锐化后的白边白点)的强度。 该值越小,锐化后的白边白点越弱,清晰度也会下降。该值过小,图像会呈油画效果。 取值范围:[0, 127],建议值100。 |
under_shoot |
设置图像的undershoot(锐化后的黑边黑点)的强度。 该值越小,锐化后的黑边黑点越弱,清晰度也会下降。该值过小,图像会呈油画效果。 取值范围:[0, 127],建议值127。 |
shoot_sup_strength |
设置图像锐化后的overshoot和undershoot的抑制强度。用于在保证清晰度不明显下降的前提下,抑制锐化后的图像的overshoot和undershoot的宽度和幅度。 该值越大,锐化后的图像的overshoot和undershoot的宽度越窄、强度越小。该值变大,理论上不会影响图像的清晰度,只是黑白边变窄以后,会减弱人眼的锐度感受。 该参数需要和shoot_sup_adj配合使用。 取值范围:[0, 255],建议值8。 |
shoot_sup_adj |
用于对图像锐化后的overshoot和undershoot的抑制强度进行调节。 该参数配合shoot_sup_strength使用,用于调节shoot_sup_strength作用的区域范围。该值越小,则越多的纹理区域的shoot会被shoot_sup_strength抑制;该值越大,则只有很强的边缘的shoot会被shoot_sup_strength抑制,纹理区域的shoot不会被抑制。 取值范围:[0, 15],建议值9。 |
detail_ctrl |
用于控制图像的细节纹理区域的shoot强度,shoot越大,细节纹理区的清晰度越高。
取值范围:[0, 255]。 |
detail_ctrl_threshold |
图像的细节纹理区的shoot强度的控制阈值。 该值配合detail_ctrl使用,用于区分detail_ctrl所控制shoot的纹理区和边缘,也即纹理区和边缘的区分阈值。小于该值的区域为纹理区,该纹理区域的shoot会被detail_ctrl 单独控制,而大于该阈值的边缘区域的shoot依然等于over_shoot和under_shoot。 取值范围:[0, 255],建议值160。 |
edge_filt_strength |
边缘滤波强度调试参数,实现图像锐化边缘的范围和边缘平滑强度的控制。 该值越大,判为边缘的区域越多、也越宽,edge_strength起作用的图像边缘就越多,而且,该值越大,沿着边缘方向的平滑滤波强度也越大,边缘就越平滑。反之,判为边缘的区域越少、也越窄,edge_strength起作用的图像区域越少,边缘平滑就越弱。 取值范围:[0, 63],建议值53。 |
edge_filt_max_cap |
边缘滤波强度范围的调试参数,该值越大,边缘滤波的最大强度也最大,edge_filt_strength的可调试范围也越大。 一般建议该值大小控制30以内。 取值范围:[0, 47],建议值18。 |
r_gain |
深红色区域的锐化增益控制参数。该值越大,则深红色区域的锐化强度越大。 取值范围:[0, 31],建议值28。 |
g_gain |
绿色区域的锐化增益控制参数。该值越大,则绿色区域的锐化强度越大。 取值范围:[0, 255],建议值32。 |
b_gain |
深蓝色区域的锐化增益控制参数。该值越大,则深蓝色区域的锐化强度越大。 取值范围:[0, 31],建议值 28。 |
skin_gain |
肤色区域的锐化增益控制参数。该值越大,则肤色区域的锐化强度越大。 取值范围:[0, 31],建议值23。 |
max_sharp_gain |
图像锐化的最大增益限制值参数。该值越大,图像的锐化幅度越大,反之,锐化幅度越小。适当的调小该参数,可以减少图像的过锐化,减少图像锐化后的黑白点。 取值范围:[0, 0x7FF],建议值0xA0。 |
强度曲线的横坐标var是从图像中提取的方差统计特征,横坐标var被均分为32段,用于区分出图像的Flat Area(平坦区域)、Weak Texture(弱纹理)、Texture(纹理)和 Strong Texture(强纹理)。纵坐标就是强度参数texture_strength的32个强度值,用户可以通过设置该曲线上的32个强度值来为平坦区域、弱纹理区域、纹理区域和强纹理区域设置不同的锐化强度。这4个区域并没有明显的区分界限,都是连续过渡,用户可以通过实际效果来调整纵坐标强度来为不同的区域设置不同的强度。
强度曲线的横坐标var是从图像中提取的方差统计值,横坐标var被均分为32段,用于区分出图像的Flat Area(平坦区域)、Weak Edge(弱边缘)、Edge(边缘)和Strong Edge(强边缘)。纵坐标是强度参数edge_strength的32个强度值,用户可以通过设置该曲线上的32个强度值来为平坦区域、弱边缘、边缘和强边缘设置不同的锐化强度。这4个区域并没有明显的区分界限,都是连续过渡,用户可以通过实际效果来调整纵坐标强度来为不同的区域设置不同的强度。