摘要:我们在本文介绍的算法阐述了如何使用运行在嵌入式处理器(诸如Zynq处理平台采用的ARM9核)上的软件,控制执行像素级色彩校正的定制图像和视频处理算法。
图像视频传感器广泛用于手机、视频监视产品、汽车以及导弹系统等各种应用。几乎所有这些应用都要求白平衡校正(也称为色彩校正),以便生成无论是在日光、白炽灯、荧光灯还是其它光照条件下都会产生与人眼视觉相一致的图像色彩。
对以前使用ASIC或ASSP器件的众多开发人员来说,现在用赛灵思FPGA或Zynq-7000 All Programmable SoC这样的可编程逻辑器件来实现自动白平衡校正可能会是一个全新的挑战。首先让我们看一下运行在嵌入式处理器上的软件(如运行在Zynq-7000 All Programmable SoC上的ARM9处理系统)是如何控制定制图像/视频处理逻辑来执行实时像素级色彩/白平衡校正的。
要了解是如何实现这一功能,首先需要了解色彩知觉和相机校准这些基本概念。
相机校准
要测量一个自身不发光或不透光的小型均匀表面物体反射光的色彩和强度,取决于三大函数:光源的光谱功率分布(I(λ))、表面材质的光谱反射特性(R(λ))、成像系统的光谱敏感性(S(λ))。
检测器测量到的信号功率可表达为:
要得到有彩色图像,摄影与摄像设备与人眼一样,均使用有不同光谱响应的相邻传感器。人的视觉依赖三类光敏视椎细胞来形成色彩知觉。在开发基于人类感知的色彩模型时,国际照明委员会(CIE)定义了三个色彩匹配函数。这三个函数可视为三个线性光检测器的光谱敏感度曲线。三个线性光检测器可产生CIE XYZ三色激励值Px、Py和Pz,这三个值也被统称为CIE标准观察者。
数字图像传感器主要采用两种方法测量三色刺激值。一种方法是在固有的单色光敏二极管上加一组滤色片阵列;另一种方法是使用堆叠光敏二极管测量光子吸收深度,这个深度与波长λ成正比。
但这两种方法都不能产生与人眼相似的响应。因此,不同的光检测和复制设备的色彩测量值存在差异,即在拍摄具有相同(Iλ)和(Rλ)的相同场景,图像传感器的测量值与观测者的目测值之间也存在差异。
因此,相机校准的目的是转换和校正相机或图像传感器测得的三色刺激值,实现与CIE标准观察者相符的光谱响应。
白平衡
您可观察自然光以及火焰、白织灯或荧光灯等不同光照条件下的任何物体,发现人的视觉都会认为物体有相同的颜色。这种现象被称为“颜色适应”或者“色彩恒常性”。但是,如果相机不具备针对不同光源进行调整或自动补偿的功能,获得的色彩就会发生变化。而相机对这种情况进行校正的行为,就称为白平衡校正。
图1右侧的等式分别用于描述光源的光谱、场景中各种物质的反射特性以及检测器的光谱敏感度。这三者共同决定最终的色彩测量。因此即便是采用相同的检测器,测量结果还是会把物体固有的色彩与光源的光谱混合在一起。只要满足下列条件,就有可能实现白平衡,或者说将固有的反射特性R(λ)与光源的光谱I(λ)分离。
● 采用启发法,比如光源上的空间频率限制,或者先验性地知道物体的色彩。例如,在日光下拍摄场景时,可以预计光源的光谱特性将在整个图像上保持恒定。与此相反,如果将图像投影到白屏幕上,光源的光谱特性会随像素发生显著的变化,但场景(幕布)的反射特性保持恒定。如果光源的特性和发射特性均有显著的变化,就难以将场景中的物体和光源区分开来。
● 检测器的敏感度S(λ)和光源光谱I(λ)在观测的光谱范围内不会为零。观测者无法获得光源光谱范围外物体的任何反射特性信息。例如,如果场景中用单色红光源照明,蓝色物体和绿色物体都会是黑色。
早期方法
在数字成像系统中,已知光源的相机校准问题可以表达为一个离散三维向量函数:
其中F(x)为映射向量函数,为R、G、B主要色彩分量的离散向量(一般为8位、10位或12位)。根据是否要进行线性映射以及是否要独立校正色彩分量,该映射函数可按照表1分类。