这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » HI3518视频画面偏色解决办法

共2条 1/1 1 跳转至

HI3518视频画面偏色解决办法

高工
2018-05-30 12:35:21     打赏

    项目中用到的OV9712d Sensor,因为产品结构的问题,采用的是小镜头模组,不带滤光片,所以在傍晚时分的低色温情况下,视频画面80%呈绿色;白天时分高色温环境下,视频画面70%以上呈蓝色,这种偏色使监控画面看起来很奇怪。

这主要是因为:可见光的光谱成分随色温变化而变化,在低色温光源下,白色物体偏红,在高色温光源下,白色物体偏蓝。人眼可根据大脑的判断,识别物体的真实颜色,所以看起来偏色了。

        海思SDK中已经提供了ISP的WBWhite Balance)白平衡算法

        AWB 算法的功能是降低外界光源对物体真实颜色的影响,使得我们采集的颜色信息转变为在理想日光光源下的无偏色信息。

        色温:色温是按绝对黑体来定义的,光源的辐射在可见区和绝对黑体的辐射完全相同时,此时黑体的温度就称此光源的色温。

        白平衡:在不同色温的光源下,白色会偏蓝或偏红。白平衡算法通过调整 R, G, B三个颜色通道的强度,使白色真实呈现。

       AWB模块有硬件的 WB 统计信息模块及 AWB 控制策略算法 fireware 两部分组成。ISP的 WB 统计信息模块统计 sensor 输出的 R, G, B 三个颜色通道的平均比值。可提供整幅图像加权后的比值,还可提供将整幅图像分成 M*N 区块的每个区块的比值。支持将图像分成 M*N(M 行 N 列)区域,统计每个区域的G/R,G/B 均值以及参与统计的白点个数。

 

        海思SDK库中提供的AWB 控制接口如下:

            HI_MPI_ISP_SetWBType:设置白平衡类型

            HI_MPI_ISP_GetWBType:获取白平衡类型

            HI_MPI_ISP_GetAWBAttr:设置自动白平衡属性

            HI_MPI_ISP_GetAWBAttr:获取自动白平衡属性

            HI_MPI_ISP_SetMWBAttr:设置手动白平衡属性

            HI_MPI_ISP_GetMWBAttr:获取手动白平衡属性

            HI_MPI_ISP_SetAWBAlgType:设置白平衡算法类型

            HI_MPI_ISP_GetAWBAlgType:获取白平衡算法类型

            HI_MPI_ISP_SetAdvAWBAttr:设置 ADV 白平衡算法属性

            HI_MPI_ISP_GetAdvAWBAttr:获取 ADV 白平衡的属性

            HI_MPI_ISP_SetLightSource:设置独立光源点属性

            HI_MPI_ISP_GetLightSource:获取独立光源点属性

 

typedef struct hiISP_ADV_AWB_ATTR_S

{

    HI_BOOL bAccuPrior;

    HI_U8 u8Tolerance;

    HI_U16 u16CurveLLimit;

    HI_U16 u16CurveRLimit;

    HI_BOOL bGainNormEn;

    ISP_AWB_IN_OUT_ATTR_S stInOrOut;

    ISP_AWB_CT_LIMIT_ATTR_S stCTLimit;

} ISP_ADV_AWB_ATTR_S;

 

        以上结构体用来控制和调节ISP的白平衡效果,其中:

        bAccuPrior:  使能后,可提升室内普通场景白平衡精度。混合光源,大面积纯色,室外等场景建议关闭。

        u16CurveLLimit:  对色温曲线的左侧宽度做限制。取值范围为[0x0, 0xFF],取值越小,可支持的光源范围越宽,白平衡精度稍有下降。

        u16CurveRLimit:  对色温曲线的右侧宽度做限制。取值范围为[0x100, 0xFFF],取值越大,可支持的光源范围越宽,白平衡精度稍有下降。

        u16CurveLLimit: 取值<=0x100, u16CurveRLimit 取值>=0x100。u16CurveLLimit 参数可以排除绿色块的干扰,u16CurveRLimit 参数可以排除红色、蓝色块的干扰。

         


        所以,根据当前环境的色温情况,调节u16CurveLLimit 和u16CurveRLimit的值,即可调节图像偏绿、偏红或者偏蓝的情况,使视频画面最大程度的达到真实的效果。

图像经过AWB调节过后,颜色值要好很多,多次调整色温曲线的宽度值后,颜色基本接近正常。




管理员
2018-05-31 08:26:31     打赏
2楼

谢谢楼主分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]