由Sensor光谱响应曲线联想到的白平衡增益计算
由于传感器硬件的限制,传感器在某个预定波长范围内的响应不可能是100% 响应。现实中都是类似于正态分布的单峰函数。如果仅做粗略计算,由一个中心波长和半高宽(也成半波宽)完全可以由数学公式计算出一个高斯分布曲线。这个分布曲线就叫波谱响应函数。
波谱响应函数反映了传感器通道获取能量的情况。实际上每个传感器厂商都提供了具体的光谱响应函数,一般由两列数据组成,一列数据是波长,另一列数据是相对响应强度。下图某sensor光谱的响应的波谱响应函数。
由于人眼的亮度响应曲线峰值更接近绿色频率范围(550nm左右),通过G可得到接近人眼实际观察到的亮度信息。另外,由光谱响应曲线可知,sensor对绿色波段的光谱响应强度普遍比蓝色波段和红色波段要强,且响应波长范围较广。是否意味着对可见光而言,sensor经过色彩滤波阵列之后,对绿色、蓝色、红色波段的光谱响应响度依旧保持上述曲线相对关系。
由于对绿色波段光谱响应较强,sensor传感器获取到的绿色波段的能量较多,反应在图像的RAW数据上,意味着RAW域中的G分量灰度值普遍要比R分量和B分量大。也就意味着,我们在做白平衡的时候,对于每一个像素而言,绝大部分只需要对R分量和B分量进行增益的调整。
不同的波长的可见光投射到物体表面,一部分波长的光被吸收,另外一部分波长的光被反射,而反射的波长的光进入到人眼,通过视觉神经传输到大脑,大脑经过解析形成人眼所识别的颜色。由于不存在100%对单一频率光的响应而对其他波段完全透明的材料,因此,由上述sensor的光谱响应曲线可知,可见光波段范围400nm-781nm范围内,在经过彩色滤波整列之后,sensor的G 分量在500-650nm左右的波长频谱响应幅度较大,而且G分量基本覆盖了所有可见光的波段。因此,sensor采集中性灰或者白色区域的RAW数据时,我们可以看到RAW数据中的Gr/Gb分量要大于B/R分量。是否应因为这个原因,导致在白平衡在统计某一色温下满足白点条件的像素点的时候,统计参数中GTotal的数量要大于BTotal、RTotal分量。这也就是为什么以灰度世界法和完美反射法计算白平衡增益的时候都是以G分量作为参考,只需要对R\B通道进行增益的调整。
以下是某款sensor第20块灰阶在各个色温下R/Gr/Gb/B中各个像素的分布情况。
以上是某sensor在各个常见色温下,对于20灰阶的像素灰度值表现。我们可看到:
1.各个色温下Gr/Gb通道的像素灰度值要大于R、B通道像素的灰度值
2.从低色温到高色温,R通道的像素灰度值逐渐变小;B通道的灰度值逐渐变大,Gr/Gb通道灰度值没有明显变化趋势。
3.从低色温到高色温,白平衡R通道增益值逐渐变大,B通道增益值逐渐变小
4.在比较低色温或比较高色温情况下,20灰阶的像素灰度值表现将会是常见色温情况下表现一样。
较低色温下R通道的灰度值将大于Gr/Gb B通道灰度值,白平衡只针对Gr/Gb B通道进行增益调整
较高色问下B通道的灰度值将大于Gr/Gb R通道的灰度值,白平衡只针对Gr/Gb R通道进行增益调整
我们熟悉的简单的白平衡算法诸如灰度世界法和完美反射法中都是以G通道为参考通道,只针对R/B通道进行白平衡增益的调整。
同时,有sensor的光谱响应曲线我们可知:
可见光的波长范围在350~770纳米之间。波长不同的电磁波,引起人眼的颜色感觉不同。770--622nm,感觉为红色;622~597nm,橙色;597-'-577nm,黄色;577~492nm,绿色;492----455nm,蓝靛色;455----350nm,紫色。而一般摄像头对光谱不可能区分的这么准确,尤其是性能较差的摄像头。有些摄像头可能会出于对黑夜成像的要求,增加对红外光谱的吸收,使得红色和红外光谱吸收过多。
从开篇的光谱响应曲线图中可以看到,红、绿、蓝通道都会在红外部分多吸收一些光谱。而红色通道吸收的更多,我们将这个现象称之为红外穿透现象。这会导致摄像头获取图像的色偏,主要是偏红色,并且使得AWB很难纠正。所以可以考虑将红外部分去除,同时将红色通道过多吸收的光谱屏蔽掉。白天情况下,我们可以使得滤光片切换到红片,可以完成这个工作,使用650nm的滤光片,可以将650nm以上的光谱全部屏蔽,得到纯净的可见光。夜视情况下,可以把ircut切换为白片,使得更多的红外光线进入到sensor,图像亮度得到提升。
以上想法只是一个猜想,观点不一定正确,需要实际验证。抛砖引玉,欢迎探讨。