主要参考食鱼者博客:https://blog.csdn.net/wtzhu_13/article/details/119301096,以及相关的论文,感谢食鱼者老师整理分享。
灰度世界和完全反射
灰度世界法和完全反射法分别是基于(Rmean, Gmean, Bmean)和(Rmax, Gmax, Bmax)来进行白平衡校正。具体校正公式也比较灵活,增益可以是Gmean/Rmean或者max(Rmax, Gmax, Bmax)/Rmax,应该没有很确切的方法定义,而只是两种校正思路。
QCGP
QCGP认为上述两种思路各有适用场景,所以希望融合。融合的方式是“二次正交”。
以往的校正都是线性增益,可以表示为。我们现在想融合两种方法,最先想到的会是将灰度世界所得增益和完全反射所得增益求平均,作为融合的增益。但是这种方式事实上是丢失信息的,因为只考虑二者的平均,没考虑差异。于是不能用这种线性加权的方式。
QCGP中引入两个参数的方式是二次正交。定义全新校正公式为,且给这个融合的校正公式输入,则输出应该为。而输入也同理得到。如此可以列出如下二元二次方程组,解得u和v两个参数。
模糊逻辑算法
不仅算法名字比较模糊,原论文A Method Of Automatic White Balance Using Fuzzy Logic和食鱼者老师讲的也都很模糊。我仅总结思路和考虑的方面。
总的来说,需要在Cr-Cb空间中找一个点来评价当前图像,所谓的白平衡即Cr=Cb=0,我们的任务是通过调整增益来使得调整后的图像评价为Cr=Cb=0。
评价的方式原文给了很详细的说明,逻辑如下:
- 分为8块,每块求各像素点的Cr-Cb值加权平均(对应到Cr-Cb空间中的一个点)
- 将8块的值加权求和,得到的即为整张图像的平均值。
- 第2步所提到的权值考虑的方面有:1)本块Cr值与周围块的Cr值偏差小,则本块的权重小。因为同属于一个大物体,所以此做法可以避免过度补偿。2)暗部和亮部的权重小。这样可以防止饱和测量值和低亮度下的噪声影响白平衡校正。3)每个块内部算平均Cr-Cb的时候,暗色的权重比亮色的小。
不过原文中并未给出校正的具体形式(是Cr'=K*Cr吗?),也未说明如何调整增益(K增大还是减小?),我暂时也不加探究,只知道其是一种迭代算法,每次调整后计算评价指标,评价指标符合条件时退出。
基于白点的方法
使用YUV空间做白点检测,将白点矫正为r=g=b
基于色温的方法
食鱼者老师又没给我讲懂,感觉他的讲解没点透本质。以下内容是我根据论文自己重新总结的。
Digital camera auto white balance based on color temperature estimation clustering
估计小块的色温
论文认为一个色温可以对应一种的比例,记为。函数是根据不同色温下拍摄灰卡测定的,它是一个单调的曲线,所以对于给定的RGB值,其色温就等于。
论文中提到一大堆公式,其本质就是的一种解析式。
估计图像的色温
如以上所示,得到若干小块色温。给常用灯光的色温列个表,用小块色温给列表中的色温投票,得票高者为最终估计的图像色温。
根据色温作白平衡校正
论文没提,所以即使把色温利用独立传感器准确测得,我也不知道怎么用。