本文系微信公众号《大话成像》,知乎专栏《all in camera》原创文章,转载请注明出处。大话成像读者QQ 交流群2 :833282006 大话成像技术论坛:ww.dahuachengxiang.com本站教学视频《图像传感器技术与应用》《成像系统图像质量调试》《成像算法基础(python版)》 《成像系统镜头光学》《新版图像质量测试测量与国际标准》《新版cmos sensor测试测量与国际标准》《新版数字成像系统42讲》课程大话成像淘宝教育官方网店有售:https://shop322456667.taobao.com/
公众号在以前的文章里讲过多光谱成像,最近在大话成像QQ群里有群友讨论Spectral sensor及其在手机上的应用,我们这一期就来讲一讲这个话题。
Spectral sensor可以说是多光谱成像的一个变种。多光谱成像一般是用在食品、工业检测,以及地球遥感成像领域。我们普通的Bayer sensor只有RGB三个颜色通道,也就是只有三波段的光谱分辨能力。而高光谱成像则是有几个到几十个颜色通道,形成更高的光谱分辨能力。
这种特性有很多应用,比如可以帮助食品安全检测,比如在食品封装前可以检测是不是有包装纸,或者金属等污染了食品,如果有这些杂质污染食品,从多光谱图像中就可以看到某个频段的响应会很高。如下图所示,树莓之外的这些污染物,比如金属,塑料,纸等等都可以通过多光谱上的特征被识别出来。树莓被标记成绿色,其它污染物被标记成粉色蓝色等各种颜色。
Spectral sensor是多光谱成像的一个变种,它的目的是检测出当前的光源特征,并不需要成像,所以它的像素数只有几个到几十个。它的颜色通道数也从几个到十几个不等。最早在手机上使用类似spectral sensor的是Nokia,在Lumia 1020上,Nokia使用了一个额外的RGBW传感器,帮助改进其白平衡。这种方法也不是Nokia首创。日本的佳能、富士,早在2007年就申请了相关专利,在数码相机的测光系统中使用如下面所示Pattern的RGBW传感器。十多年前,笔者和一个佳能相机的朋友聊天,他们在那时候已经利用辅助传感器和类似后来machine learning的方法在做白平衡了。
继Nokia之后,LG在2015年在其LG4手机上使用了Spectral sensor。
华为在P40的手机也使用了8 channel 的spectral sensor。
华为在P50上使用了10 channel的spectral sensor
现在市面上手机用的Spectral sensor从几个通道到十几个通道都有,基本结构如下图所示:
sensor的感光部分有个开口,开口上方会放置一个diffuser,这样sensor得到的光就是环境光源的光线而不是某一个角度进来的特定的光线。
Sensor Array 如下图所示(以AMS的AS7341为例)
有从可见光到NIR近红外(350-1000nm)的11个channel,还有50/60Hz flicker 检测的通道。
每个颜色通道实际就是在wafer的表面镀了不同‘带通’的膜,膜的光谱特性是关键,要求透过率高,而且带通的截止频率陡峭,可以精确的控制需要频率的光通过,德国的布勒莱宝提供了这种镀膜技术。
这款传感器(AS7341)的尺寸很小,对于相机的结构设计来说也不是什么负担。
芯片手册给出的典型应用如下图所示:
I2C连接到MCU,它还提供了一个GPIO和LDR来控制LED flash,也就是除了做辅助白平衡,还可以用来实现色彩检测、校准之类的应用。
尽管器件不大,价格可能也不贵,但是还是有很多人会问,为什么需要额外的器件来帮助解决白平衡等颜色问题呢?难道只靠算法无法解决自动白平衡吗?
对这个问题的回答是:确实,只靠Bayer图像和白平衡算法有一些根本性的问题无法解决。
白平衡基础问题一:没有白色,且场景内色彩饱和度高又数量非常有限的场景。
类似下图所示。读者可以自行拿出手机拍照试试看。
自动白平衡算法都是在场景内找到参考白点,以此来做白平衡。对于这种场景,既不存在白色,‘灰世界假设’也不成立,所以自动白平衡算法就没辙了。
有的朋友会说,这个场景有黑色,也算是一种中性色,可以用来作为参考白点,这就说出了白平衡的基础问题2 —— 线性化问题。
像黑色的区域,信号幅度比较低,image sensor在这个区域的线性化不好,所以以此作为参考白点得到的白平衡也不准。同样的原因,低光下的白平衡也是容易出现不准确。
如果有了Spectral sensor,在不同的光源下,sensor会输出不同的光谱数据,如下图所示:
用这些光谱特征来训练机器学习模型,可以得到很稳定的光源分类的结果。这就把传统白平衡算法无法解决的问题完美搞定了。
那么剩下的问题就变成了数据科学的问题,我们应该如何解决spectral sensor输出这些光谱数据的有效性问题——即哪些波长(频率)的光源光谱数据对于机器学习更有用。说到这个问题,我们就得谈到白平衡的第三个基础性问题:标准光源与非标准光源的问题。
CIE定义的标准光源色温,都来自于黑体加热发光辐射这一理论。但是我们现实中的光源很多并不是来自黑体加热发光,比如荧光灯,它是靠水银蒸气在电子作用下发出紫外光,被荧光粉吸收后发出可见光。所以其光谱特征不像黑体光源那种平滑连续,而是有很多尖刺,如下图所示。
以往的白平衡都假定这种光源(人造荧光灯等)的生产厂家会控制其光源质量,认为人造光源频谱‘滤波’平均后,其色温值与对应的标准光源色温值一致,sensor的响应也可以近似对光源的一种滤波。但实际上这种人造光源的偏差一直存在,而且到现在越来越多的LED光源,使这种偏差没有缩小反而变大了。
对于低端相机,基本上白平衡算法追求的主要是稳定,对于准确性要求就是‘大差不差’,因为人眼也有一定的色彩宽容度。但是对于高端相机,色彩历来都是核心卖点,区别地识别这些人造光源才能更好地进行色彩重建。
所以为了提高spectral sensor获得数据的有效性,就要对市面上的光源光谱进行不断分析,在光源光谱变化不连续的地方要增加采样,这也就是为什么spectral sensor的颜色通道会从开始的几个增加到了十几个甚至二十几个。
做辅助自动白平衡只是spectral sensor的一个应用,多光谱传感是未来几年手机成像领域的一个热点,比如手机检测肤色——匹配化妆品。目前已经有美国的一些化妆品公司推出了相关的硬件产品,相信用不了多久就可能被移植到手机上。