上一篇讲了自动白平衡的基本算法演进,最后提到,自动白平衡算法的不完美—-总有个场景会让白平衡失败。
这一篇就说说解决白平衡问题的三个层次。
层次1 :如何发现问题。
根据国际电联的标准ITUP910, ITU-R BT500-11,
可以归纳出24个典型场景。
1. 暖光源(含人)
2. 白天雪景
3. 大片绿色(多云天)
4. 强日光
5.办公室暖白
6. 办公室暖白混合阴天日光
7.阴天
8.酒吧暖光源
9. 蓝晴天
10. 暖白混晴天日光
11. 超市暖白
12. 有云晴天
13.大阴天
14.蓝天晴天带水面反射
15. 日出/落
16. 蓝天绿地有云晴天
17 . 阴天有云
18.大晴天(含木头和人)
19.部分蓝天晴天(绿黄灰物体)
20. 大晴天人像
21.大晴天(绿地+人)
22. 晴天的阴影
23. 晴天的阴暗处(含白色物体)
24.火堆旁人像
下表是各场景对应CCT, EV ,色坐标。
总得来说:这些场景是日常拍照的实际场景,是‘有无灰色’,‘有无人’,‘有无大色块’‘一光源混合光源’,以及主要‘记忆色彩’(天蓝,绿地,树叶,肤色)的混合。
根据相机的设计需要,需要增删主要应用场景,比如车载相机就要主要兼顾路灯以及停车场光源。
现在就以这24个典型应用场景说说白平衡典型问题的解决方法。
层次2:如何解决问题。
问题1 :普选制算法造成的决策偏差
英国前段时间投票决定脱欧,按照我同事的说法,就是这个国家傻瓜过多,出现了傻瓜决定国家未来的情况。那些不了解国民经济的普通老百姓,投票决定了脱欧。白平衡普选算法也存在同样的问题。那些根本就不是白色的点也混进来投票,导致最后的结果谬以千里。如何筛选掉这些点,就是普选制算法的主要课题之一。
方法一:照度筛选。
大部分的情况,人造的光源的亮度都不超过1000lux,而户外的晴天,太阳的照度基本上是10000lux起步。利用这个特点,一下就可以把参与投票的区域锁定到一个相对较小的范围5000k 到 6500k 之间。这就好比要选国家主席,选举人的范围就是人民大会堂那几千个人大代表。
同样道理白平衡什么意思,低照度以及sensor的响应特征也可以用来限定投票的范围。
方法二:多算法估计结果筛选。
上一篇文章中提到过几种白平衡算法,实际上根据不同的原理设计的白平衡算法还有很多,比如灰边法,colour gammut mapping,bayes 估计法等等。有论文对各算法性能做了排名。
从实际应用来说,这个排名没多少意义,因为人主观上也分不出来那些细小的偏差。但是从算法设计来讲,由于这些算法是从不同的原理出发计算白平衡,所以他们互相可以裨补缺益。可以利用多算法产生的不同结果,对选区进行进一步的缩小。这次选举有人大代表证也不行了,得是政治局委员才能投票。
方法三:直方图特征法以及其他特征
图像在可以利用校准提取光源响应的直方图特征,在运行期对直方图进行特征比对,进一步压缩选区。
这次基本上是政治局常委才能投票了。
以上方法做好,什么肤色,木头色,浅蓝,浅棕这些容易混进革命队伍的捣乱分子,就都可以搞定了。
方法四:各种光谱特征检测传感器
本质上白平衡的算法就是把各个光源区分开,按照标定的白平衡进行补偿。所以如果有个传感器直接检测出来当前是哪个光源,也就直接解决了这个问题。但是这涉及到成本和空间问题。太贵—-装不起,太大—-装不下。现在整个手机厚度的瓶颈就是相机模组,您再搞一个大光谱传感器放里边,结构工程师就得辞职了。
所以大部分情况也就是用个sensor能够辅助决策,这也就不错了。对此,成像算法工程师已经可以表示非常满足了。每加一个元件那可都是钱啊。
问题2:同色异谱问题
同色异谱,顾名思义,就是同色温,光谱却不同。有读者在上一篇文章里提问,比如户外有自然光6500K,室内有灯光D65也是6500K,我该怎么区分?这就是同色异谱问题。
大家表面上看都是黄皮肤黑眼睛,但是其实我是汉族你是蒙古族。你听到歌声想跳舞,我听到歌声只想睡觉。大家对同样的输入响应不同。这样在一起住就有点不方便,于是我们伟大光荣正确的党想出了民族区域自治的方法。我划块专属的地方给你,美其名曰少数民族自治区。在算法里这也同样适用。在主区域里退一点,再扣出来一个区域给光源2,您在特区搞港人治港吧,对你我特别处理。当大多白点都在特区的时候,那就特区决定图像白点。
单一光源的问题到此基本解决。然而,问题总是源源不断的出现的,有问题要解决,没有问题创造问题也要解决。
问题3:混合光源。
问题一和二解决了单一光源的问题,如果遇到混合光源怎么办?
场景6和场景10是两种典型的混合光源场景。基本上是室外的自然光与室内的人造光源混合。基本上是室外6500k–5000k与室内4000–3000k,有人说为什么不考虑2000K和户外的光源混合。2000K基本上是蜡烛火炉之类的,照度非常微弱,大白天在屋子里点一蜡烛,那点光都被阳光淹没了。
方法1:照度投票法
D_Final = lux_A x D_A + lux_B x D_B,哪头亮就权重高。
这就好比闹革命的,领头的基本都是大嗓门的,说话声音大人家才听得到,所以也顺其自然就成了领导。当然,一般领导都有咽喉炎。
方法2:领地面积法:
照度法的问题是,A光源可能就照到一点点地方,却以它作为最终决策,这明显不对。于是方法2选择谁照的地方多,就听谁的。
D_Final = Area_A x D_A + Area_B x D_B ,哪头面积大就权重高。
无论方法1还是方法2都不是人眼的工作方式,人眼的工作方式是local 白平衡。
方法3: Local 白平衡。
区域A 被A光源照到,区域B被B光源照到,分别对A 区和B区做白平衡。这种方法现在还处于试验阶段,也有公司提供解决方案。对于有的场景,效果还不错。
层次3:如何犯错误? ——白平衡失败之后
总是有的场景,白平衡处理失败白平衡什么意思,这是当前白平衡算法领域的一个基本事实。重要的是:什么样的失败程度是可接受的,以及什么样的失败是人眼喜欢的。
图中可以看到四个方向偏差:planckian轴向正负偏差,等温线方向正负偏差。
关于偏差的视觉主观影响,以及色貌模型,都是非常有趣的课题,将在以后介绍。