相机白平衡:灰度世界(Gray World Assumption)和白点法(White Patch Retinex)

目录

​​​​​​前言

相机成像

一、White Patch Retinex

二、Gray World Assumption

1.引入库

2.读入数据

总结


​​​​​​前言

       颜色恒常性(Color Constancy)是人眼观察颜色的一个重要特性,即处于改变的观察条件下,人们仍可以分辨出某种颜色的色貌。例如,无论在早晨或者傍晚的阳光下,我们可以准确地看出一张白纸是白色的。

        Auto White Balance(AWB)是ISP Pipeline中重要的处理步骤。受到拍摄光场以及环境的影响,图像画面的颜色可能会出现一定的偏移。因此,消除光源信息或将图像调整至标准光源下观察颜色成为相机准确记录人眼观察颜色、模仿颜色恒常性的重要过程。常用的AWB算法有灰度世界(Gray World Assumption)和白点法(White Patch Retinex)。


相机成像

        对于相机成像模型,我们可以这样表示:

p_{i}=c\int_{a}^{b}L\left ( \lambda \right )S_{i}\left ( \lambda \right )d\lambda \; \; \; \; \; \; \; \; \; \; \; i=r,g,b

其中p_{i}为该相机在某像素点的红、绿或蓝通道值,c为几何参数,L\left ( \lambda \right )为入射光信息,其中包含光源与目标物体反射率的乘积,即:

p_{i}=c\int_{a}^{b}E\left ( \lambda \right )R\left ( \lambda \right )S_{i}\left ( \lambda \right )d\lambda \; \; \; \; \; \; \; i=r,g,b

其中E\left ( \lambda \right )为光源的光谱功率分布,R\left ( \lambda \right )为目标物体反射率。对于相机Sensor的响应函数S_{i}\left ( \lambda \right ),可以将其简化为互相独立的仪器函数,如图所示。

相机白平衡:灰度世界(Gray World Assumption)和白点法(White Patch Retinex)_第1张图片

仪器函数化的相机响应函数可以表示为:

S_{i}\left ( \lambda \right )=\delta \left (\lambda -\lambda _{i} \right )\; \; \; \; \; \; i=r,g,b

因此对于三个通道,相机响应可以简化为:

p_{i}\left ( x,y \right )=cE\left ( \lambda_{i} \right )R\left ( \lambda_{i} \right )=G\left ( x,y \right )E_{i}\left ( x,y \right )R_{i}\left ( x,y \right )\; \; \; \; \; \; i=r,g,b

        其中G\left ( x,y \right )为几何参数,E_{i}\left ( x,y \right )R_{i}\left ( x,y \right )为光源和物体在对应通道波段的光谱功率分布和反射率。而E_{i}\left ( x,y \right )就是造成成像颜色不平衡的主要原因。如何消除光源信息,就是白平衡算法目标解决的问题。

一、White Patch Retinex

        假设光场的照明是均匀的\left ( E_{i}\left ( x,y \right )=E_{i} \right ),则照片中白色色块部分的相机响应为:

p_{i}\left ( W \right )=G\left ( W \right )E_{i}R_{i}\left ( W \right )\; \; \; \; \; \; i=r,g,b

而白色物体的反射率假定为1,则

\left \{ p_{i}\left ( x,y \right ) \right \}_{max}=p_{i}\left ( W \right )=G\left ( W \right )E_{i}\; \; \; \; \; \; i=r,g,b

而相机的响应为:

p_{i}\left ( x,y \right )=G\left ( x,y \right )E_{i}R_{i}\left ( x,y \right )\; \; \; \; \; \; i=r,g,b

因此可以获得消除了光源信息的相机响应:

o_{i}\left ( x,y \right )=\frac{p_{i}\left ( x,y \right )}{p_{i}\left ( W \right )}=\frac{1}{G\left ( W \right )}G\left ( x,y \right )R_{i}\left ( x,y \right )\; \; \; \; \; \; i=r,g,b

至此,相机成像中的光源信息就被消除了。将o_{i}\left ( x,y \right )进行相应的范围缩放(0~255),就得到了最终的白平衡后图像。通过对每个通道的直方图操作,也可以在一定的舍弃比例的约束下选择白点,可以获得更好的效果。

        White Patch Retinex白平衡法操作过程简单,只需要将相机响应与白点RGB相比即可获得白平衡后图像。但正是由于对白色点的过于依赖,可能由单个像素影响整个白平衡操作的效果。如果原图像中各通道的最大值不能表示光源信息,而由亮度过高导致的像素位数的最大取值,则该白平衡算法会导致偏色。

二、Gray World Assumption

        灰度世界(Gray World Assumption)是一种非常常用的白平衡算法。令a_{i}为图像中每个通道的响应均值,并用求和代替积分,则:

a_{i}=\frac{1}{n}\sum_{x,y}^{}p_{i}\left ( x,y \right )=\frac{E_{i}}{n}\sum_{x,y}^{}G\left ( x,y \right )R_{i}\left ( x,y \right )=E_{i}E\left ( GR_{i} \right )\; \; \; \; \; \; i=r,g,b

其中a_{i}为各通道的响应均值,E\left ( GR_{i} \right )为关于几何参数和反射率内积的期望,由于常数平均值的期望不变,因此消去\frac{1}{n}。此外,由于几何参数和反射率相互独立,故E\left ( GR_{i} \right )=E\left ( G \right )E\left ( R_{i} \right )。且反射率的范围在0~1内,则:

E\left ( GR_{i} \right )=E\left ( G \right )\int_{0}^{1}xdx=E\left ( G \right )/2\; \; \; \; \; \; i=r,g,b

故:

a_{i}=\frac{1}{n}\sum_{x,y}^{}p_{i}\left ( x,y \right )=E_{i}E\left ( G \right )/2\; \; \; \; \; \; i=r,g,b

即:

E_{i}=\frac{2a_{i}}{E\left ( G \right )}=fa_{i}\; \; \; \; \; \; i=r,g,b

f为常数,因此可以这样消去光源信息E_{i}

o_{i}\left ( x,y \right )=\frac{p_{i}\left ( x,y \right )}{a_{i}}=f\frac{p_{i}\left ( x,y \right )}{E_{i}}=f*G\left ( x,y \right )*R_{i}\left ( x,y \right )\; \; \; \; \; \; i=r,g,b

即每个通道的响应分别比上该通道的响应均值。而消除后的响应只是每个通道等比例的缩放,因此只需要同时再次缩放即得到白平衡后的相机响应。详见Buchsbaun(1980)。


总结

        本文主要介绍了主流白平衡算法White Patch Retinex和 Gray World Assumption的理论推导过程,以及实现方法。由于这些算法的基础实现过程比较简单,本文不再赘述。其他关于白平衡的优化算法如使用直方图等则将在后续文章中描述。

你可能感兴趣的:(Color,Science,isp,计算机视觉)