【自有技术大讲堂】白平衡算法的相关介绍
白平衡一般代指三基色:红、绿、蓝三色的比例关系,在机器视觉中表现为物体白色部分的RGB灰度值比例达到1:1:1的平衡关系,使白色成像接近物体的真实白色,从而还原物体的真实颜色。
由于白光可由RGB三基色合成,彩色相机sensor接受到光线后,会通过RGB彩色通道转化对应的电信号分量,通过电路补偿放大后,使得RGB灰度值比例达到1 : 1 : 1 的关系。
在实际的彩色图像采集过程中,图像的颜色与物体的真实颜色会产生偏差,需要进行白平衡来还原物体真实的颜色,造成颜色偏差的原因主要有2个:
1、光源的色温变化。光源不同色温下,同一物体的反射光谱会不一样,从而导致物体在不同色温的光源下呈现的颜色不同;
2、相机的色彩通道增益偏差。色彩通道增益的偏差,会造成图像色彩与真实色彩存在差异,使得图像不能反映物体的真实色彩。
因为存在上述原因,所以需要白平衡来保持图像颜色的正确性。
自动白平衡(AWB):即Auto White Balance。该功能的作用是在图像处理的过程中, 对物体的白色成像部分进行色彩还原和校正, 去除外部光源色温的影响, 使其在图像上也显示白色,从而还原物体真实的颜色。
AWB算法主要分为局部白平衡和全局白平衡两种,其中,全局白平衡是根据整幅图像来计算调整比例,以灰度世界法为例。
而局部白平衡是根据一定的判断条件选取图像的局部来计算调整比例,所选取的局部的像素点称为参考点,以全反射算法和白点统计法为例。
灰度世界法:
当图像内有足够的色彩变化时,它画面整体的RGB分量均值会趋于相等(即灰色)。
在实际应用中这个模型的基本假设经常是不成立的,在面对图像色彩变化小且灰度极值差异大的情况下效果较差,所以实用的灰度世界模型都会对基本假设做出各种修正以适应假设失效的场景。一种修正的方法是限定RGB分量的取值范围,抛弃偏离灰色太远的像素。
算法原理:
1、计算各个颜色通道的平均值;
2、寻找一个参考值,一般情况选取G(由于人眼对绿光最敏感,通过模拟人眼的视觉算法中G即绿色通道分量也相对较高,对亮度影响较大);
3、计算Rgain = G/R, Bgain = G/B;
4、对图像中的每个像素都乘以对应的gain值进行校正,使得RGB比例为1:1:1。
缺点:对于纯色场景,由于其颜色变化不够充足,灰度世界法不适用。
完全反射法:
一幅图像中某个像素点最亮,代表它对各个波段的光线都近乎完全反射,其颜色能够反映光源的光谱特性,它的真实颜色应该是白色的,即R=G=B,且RGB的值最大。如果原始图像中最亮的那个点不是白色, 那就针对偏离白色的数值进行补偿。
该算法基本存在误差较大的缺点,因为传感器的坏像素、噪声、动态范围等因素都会对算法形成干扰,因此有实用价值的该类算法往往是基于原始算法的改进版本。
算法原理:
1、搜索图像中的最亮,且RGB的值最大的点,以此点为参考点;
2、计算Rgain = G/R,Bgain = G/B;
3、将计算出来的Rgain和Bgain作用到每一个像素点。
缺点:如果图像色彩变化复杂或者没有高光区域,则效果较差。
白点法:
该算法假设正常的画面中总会存在一些白色(消色差)区域,这些区域在不同光照条件下会表现出不同的(R/G,B/G)比值。可以通过事先标定参考白色在不同色温下的RGB比值,然后实际测量时通过统计白色平均比值计算环境色温,选择合适的RGB增益。
为了更好的筛选白点,有一组模糊规则被提出:
1、如果像素的亮度Y过大或过小,则该像素携带的色度信息较少,应赋予较小的权重;
2、在一定亮度范围内,亮度高的像素权重应大于亮度低的像素,因为亮度低的像素受噪声影响更大;
3、白平衡统计时通常会把图像划分为MxN个分区,如果多个相邻分区的颜色几乎相同,应赋予较小的权重,防止单一物体权重过大;
4、如果某颜色的分量区间可能是白色,应赋予较大权重。
算法原理:
1、获取不同色温光源下sensor对不同白色成像的R/G,B/G权重值;
2、真实环境下,获取到整幅图像的R/G,B/G值,判断出当前处于什么色温环境;
3、根据色温给出对应的Rgain和Bgain。
缺点:在实际应用中,当画面亮度很低,或者一些比较特殊的场景,该算法效果较差。
除了上述算法外,随着近年深度学习的发展,还有基于神经网络的白平衡算法,该类算法可以在一定程度上理解图像内容,来帮助白平衡算法进行光源色温的估计等。