根据图像成像时的光照条件,颜色恒常性计算可分为单一光照下的颜色恒常性计算与多光照下的颜色恒常性计算 [1,2] 。
单一光照下的颜色恒常性计算又可分为两个主要的方向:图像的光照估计(颜色恒常性计算)和颜色不变性描述。一般地,为了简单起见,很多论文中都将图像的光照估计直接称为颜色恒常性计算(Computational Color Constancy或Color Constancy Computation)。
图像的光照估计旨在将未知光照条件下的图像矫正到标准白光下的图像,这个过程一般可分为两个步骤 [3] :首先估计出图像成像时的光照颜色,然后利用对角模型将图像映射到标准白光下。由于第二步只是相对简单的计算过程,因此绝大多数的颜色恒常性算法都主要关注图像的光照估计问题。光照估计得越精确,图像矫正得就越准确,也就可以获得更好的白平衡效果。在不考虑相机本身对颜色影响的情况下,图像的光照估计也就是估计出光照颜色。但在整个成像过程中,由于光源的光谱分布和成像设备的感光函数都是未知的,因此图像的光照估计本身是一个“病态”的问题。在没有任何进一步的假设和限定条件下,图像的光照估计问题是不可解的。因此,几乎现有的所有光照估计算法都是基于特定的假设条件提出的。根据光照估计算法的过程,可将图像的光照估计算法分为无监督的算法、有监督的算法以及融合算法。
(1)无监督的颜色恒常性算法
无监督的颜色恒常性算法是指利用图像本身底层的颜色特征估计得到图像成像时的光照颜色,而不依赖于其他任何的先验知识。由于图像的光照估计本身是一个“病态”的问题,因此为了解决这个问题,各种各样的假设被提出。最简单的是White Patch假设 [4] :图像中RGB颜色通道的最大响应是由场景中的白色表面引起的,即White Patch假设认为图像中存在白色表面,于是RGB三个颜色通道的最大值将被用作图像的光照颜色。因此,White Patch算法又被称为max-RGB算法。Grey World算法 [5] 是另一个比较简单且应用广泛的颜色恒常性算法,该算法是基于Grey World假设提出的。Grey World假设认为:场景中所有物理表面的平均反射是无色差的(灰色的)。也就是说,在RGB三个颜色通道下,场景中对三个颜色通道的平均反射率是相等的。因此,三个通道的平均值可以看作图像的光照颜色。为了将Grey World算法更一般化,Finlayson等人 [6] 将闵可夫斯基范式(Minkowski-norm)引入Grey World算法,提出了Shades of Grey(SoG)算法。SoG算法利用Minkowski-norm距离代替简单求平均值的方法。最近,Weijer等人 [7] 通过对对立颜色空间(Opponent Color Space)上的图像颜色导数分布进行观察,提出了一种新的Grey Edge假设:场景中所有物理表面的平均反射差分是无色差的(灰色的)。基于新的Grey Edge假设,Weijer等人提出了一个统一的颜色恒常性计算框架,该框架不仅包含max-RGB、Grey World以及Shades of Grey算法,并且可将颜色恒常性计算推广到图像的高阶导数空间上进行。W. Xiong等人 [8] 借鉴Grey World和max-RGB算法的优点,提出了一种图像光照估计的技巧:由于场景中无色差(achromatic)表面(即标准白光下的灰色表面)能够完全反映入射光照的颜色,因此只要提取场景中这些无色差表面,然后利用这些表面的颜色就能精确地估计出图像的光照颜色。基于该思想,W. Xiong等人 [8] 提出了一种名为灰色表面提取(Grey Surface Identification,GSI)的颜色恒常性算法。除了上述算法外,无监督的颜色恒常性算法还有基于无色差表面的颜色恒常性算法 [9] 、基于局部均值的颜色恒常性计算等 [10] 。
(2)有监督的颜色恒常性算法
有监督的颜色恒常性算法是指通过对各种光照下可能出现的颜色(或色度)的学习而预测未知光照图像的光照颜色。色域映射算法(Gamut Mapping)是一种重要的有监督的颜色恒常性算法,它由Forsyth等人 [11] 提出,后经Finlayson等人 [12] 扩展,最近Gijsenij等人又将其提升到图像的高阶导数空间 [13] 。色域映射算法基于如下假设:在某一特定光照下可能出现的所有颜色在色度空间上构成一个封闭的、有界的凸集。详细的色域映射相关算法可参考文献 [11,12,13] 。基于贝叶斯推理的颜色恒常性计算(Bayesian Color Constancy)也是一种重要的有监督的颜色恒常性算法,它最早是由Brainard等人提出的 [14] ,后由Rosenberg [15] 、Gehler [16] 等人进行了一系列改进。为了克服基于贝叶斯推理的颜色恒常性算法计算复杂的缺点,Finlayson等人 [17] 提出了一种更实用化的算法——基于相关性的颜色恒常性计算(Color by Correlation)。实际上,Color by Correlation算法就是Bayesian Color Constancy算法的一种离散化的实现。Color by Correlation算法的最大问题在于所有光照估计的结果必须是在算法已给出的光照候选集中概率最大的。然而,由于候选集本身是离散的,因此不可能提供所有可能的光照色度。为了解决这个问题,Cardei等人 [18] 引入了BP神经网络的方法进行图像的光照估计,这种方法最直接的好处是能够给出连续的任意输出结果。W. Xiong等人 [19] 提出的基于支持向量回归(Support Vector Regression,SVR)的颜色恒常性算法也是一种重要的有监督的算法,相对于基于BP神经网络的方法,SVR是一种基于全局最优的回归算法。除此之外,其他有监督的方法还包括基于薄板样条插值的颜色恒常性计算 [20] 、基于KL-divergence的颜色恒常性计算 [21] 等。
(3)融合的颜色恒常性算法
除了无监督的颜色恒常性算法和有监督的颜色恒常性算法外,还有很多学者利用现有的颜色恒常性算法的融合进行光照估计,以提高光照估计的精确度。由于Grey Edge算法的提出使得系统地产生各种不同的颜色恒常性算法成为可能,因此,如何根据图像自身的特征从现有的颜色恒常性算法中选择一个最为合适的算法或算法组合也是颜色恒常性计算问题中的一个重要课题。现有的融合算法主要包括:基于委员会的融合算法 [22] 、基于自然图像统计的融合算法 [23] 、基于室内室外场景分类的融合算法 [24] 以及基于场景三维几何的融合算法 [25] 。
颜色不变性描述是实现颜色恒常性功能的另一种重要途径。由于图像的光照估计本身就是一个很难解决的问题,与图像的光照估计相比,颜色不变性描述的最大优点在于它不需要精确地估计出图像的光照,而是从图像中提取与光照无关的颜色特征信息。颜色作为一种最简单、直接且有效的特征已经广泛应用于计算机视觉的实际应用中,颜色直方图就是颜色特征的一种简单而有效的表现形式。Swain等人 [26] 提出的直方图相交算法应用于物体识别,取得了很好的效果。颜色直方图虽然具有对图像旋转、仿射等变换的鲁棒性,但是很容易受到光照变化的影响。为了消除光照强度对颜色的影响,可将RGB颜色空间转换为rg色度空间,从而构成色度直方图。但是,色度直方图仍然不能够消除光照颜色变化对图像颜色带来的影响。为了克服该问题,Fun等人 [27] 提出了一种既对光照强度变化鲁棒又对光照颜色变化鲁棒的颜色不变性描述子——颜色恒常性的颜色索引(Color Constancy Color Index,CCCI)。该描述子可利用颜色对数空间的导数消除光照的影响。Gevers等人 [28] 又将CCCI进行了扩展,进一步消除了视角和阴影对颜色的影响。由于CCCI描述子是基于颜色的导数得到的,因此依赖于图像的边缘信息,很容易受到图像模糊的干扰。为了克服CCCI描述子对图像模糊的敏感性,Weijer等人 [29] 提出了一种对模糊鲁棒的颜色不变性描述子的构造方案。除此之外,还有基于颜色比的颜色不变性描述 [30] 、基于直方图均衡化的颜色不变性描述 [31] 等。
相对于单一光照条件,多光照下的颜色恒常性计算要更困难、更复杂。现有的多光照条件下的颜色恒常性算法主要为E. Land等人提出的Retinex算法 [32] 。Retinex算法来源于E. Land等人对人类视觉的颜色感知的研究成果。该研究表明,人眼对颜色的感知不仅依赖于物体表面反射入人眼的光线的绝对值,而且与其周围表面的颜色也有很大的关系。E. Land认为这种视觉机制不仅与视网膜(Retinal)有关,还依赖于人脑(Cortex)的进一步处理,于是将该算法命名为Retinex(Retinal+Cortex)。Retinex算法假设图像中颜色平滑、微小的变化是由光照的变化引起的,而剧烈、快速的变化是由物体表面反射率的变化引起的。Retinex算法不需要精确估计图像中各像素点成像时的光照颜色,而是直接计算出其真实的颜色值。Retinex算法现在有很多改进版本 [32-35] ;最近,W. Xiong等人 [36] 又提出了一种新的Retinex算法——Stereo Retinex。Retinex算法不仅应用于颜色恒常性计算,还广泛地应用于图像增强、遥感图像处理等 [37-39] 。M. Ebner等人提出的多种多光照颜色恒常性算法都以像素点的局部平均颜色(Local Average Color)作为该点的初始光照值 [40-42] ,然后通过迭代的方法优化光照的估计结果。因此,可以将这类方法统称为基于局部均值的算法。除此之外,Barnard、Finlayson和Funt等人提出了一些变化光照下的颜色恒常性算法 [43,44] 。但是,目前更多的研究仍然集中在单一光照下的颜色恒常性的计算。单一光照下的颜色恒常性计算的前提是假设图像成像时场景中只有一种光照,即使存在多种光照,也将其平均地看作一种光照 [45] 。
Lou等人 [46] 是最早利用深度卷积神经网络进行光照色度估计的研究者,他们针对光源色度估计数据集的特点,提出了一种多步骤的训练方法,逐步将现有分类模型微调为适宜于光照色度估计的模型,这样分步训练的目的是获得颜色恒常视觉特征的层次结构。Barron [47] 将颜色恒常性作为二维色度空间内的定位任务,学习卷积滤波器以区别地估计色度平面中可能的光照色度。Oh等人的算法 [48] 将训练数据集中的光照色度聚类为若干类,利用卷积神经网络对图像所对应的光照颜色所属的簇进行分类判别,根据分类结果的概率加权求得场景光照估计。此类基于深度学习的算法将整体图像作为光源色度估计的输入,可以充分利用场景中更多的结构和语义上下文信息。还有一些代表性的算法在局部图像块上学习网络参数,也获得了不错的性能。Bianco等人 [49] 首次提出对局部图像块进行光源色度估计,使用构建的浅层卷积神经网络对图像块进行局部光源色度估计,从局部估计结果到全局估计使用了简单的池化方法并获得了不错的效果。DS-Net [50] 是在UV色度空间对图像块进行光源色度估计,得到了两种估计结果,选择网络通过从估计网络的两种估计结果中进行选择,得到了图像块的高精度估计,而局部到全局则采用中值池化的方式。FC4模型 [51] 是目前性能最优的网络模型,该模型利用全卷积网络得到输入图像各区域估计结果的可信度,通过对估计结果进行权重求和而得到最终的估计结果,该模型的输入尺寸不受限制,同时兼顾了局部与全局之间的平衡。
目前,颜色恒常性计算的研究越来越受到国内外研究机构和大学的关注。在国际上,有加拿大的西蒙弗雷泽大学,荷兰的阿姆斯特丹大学,美国的哈佛大学、宾夕法尼亚大学、伊利诺伊大学厄本那-香槟分校、卡耐基-梅隆大学,英国的东英吉利大学,德国的Max Planck研究所、蒂宾根大学,日本的东京大学等。在国内,主要有中国科学院自动化所、清华大学、北京交通大学以及山东大学等。
在图像处理领域中,HDR场景可视化技术得到了广泛的关注和深入的研究。本节就HDR场景可视化技术的国内外研究现状,分别从三方面进行梳理和介绍:HDR图像的获取;HDR图像的存储;HDR图像的显示。
在介绍和梳理HDR图像获取技术之前,首先简要介绍相机的成像原理。传统胶片相机成像过程是基于光化学理论,而现在通用的数码相机成像则是基于光电子学理论。用传统的胶片相机进行拍摄时,光线会通过相机的镜头到达胶片的感光介质上,使胶片的光学密度发生变化。通常是曝光度越高,光学密度越小,但是这种关系不是线性的。将得到的底片或照片经过扫描等非线性处理生成数字图像,就可以在显示设备上显示。与胶片相机不同,目前广泛应用的数码相机利用感光器件把接收到的光信号转变为正比于曝光量的模拟电信号,之后通过模拟/数字转换器的处理,将其变成数字信号,最后经过后续的非线性运算将其转换为图像文件进行存储。由这种通用的数码相机获取的图像被称为低动态范围(Low Dynamic Range,LDR)图像,它记录的亮度值被限制在显示设备或打印机所能承载的亮度范围内,所以它是“设备相关”或“输出相关”的。而高动态范围图像存储的信息是真实场景中的辐射亮度值,是“场景相关”的。目前,被广泛使用的CCD/CMOS图像传感器在获取该类场景内容时,其局限性越来越暴露出来,在一个明暗变化较大的环境中很难获得理想的图像,太亮的区域若为饱和输出,太暗的区域则可能根本无法分辨场景中的物体。针对该问题,如何获取HDR图像得到了研究者的广泛关注。提高图像传感器的动态范围是获取HDR场景信息的重要途径。下面对HDR图像获取技术进行简要介绍。
为了解决CCD摄像机成像动态范围小的问题,Mann和Picard率先尝试以多张不同曝光度的图像合成HDR图像 [52] 。该方法对一个观察场景做出可信度估计,然后对不同的曝光图像进行加权平均,从而得到该场景的高质量图像。随后,许多研究者基于该思想提出了各种不同的HDR图像获取方法。
Debevec等人通过多幅曝光图像融合成一幅HDR图像,可以得到较令人满意的结果 [53] ,但是必须要精确知道相机成像时的曝光参数,限制了该方法的实际应用。Konishi等人 [54] 设计了一种可进行两次曝光以合成一幅HDR图像的获取装置,该方法对一个静态场景按照不同的曝光时间进行拍摄,曝光时间短,有利于获取场景高亮区域的细节;反之,曝光时间长有利于获取暗区域的细节。该方法仅适用于静态场景,而且要求在多次曝光时,图像采集系统、场景及其光照情况相对不变。Mitsunaga等人用N次多项式模拟响应函数 [55] ,使用曝光度比的估计值计算多项式的系数,然后用计算出来的多项式重新估计曝光度比,重复上述过程直到算法收敛,可以得到相机的相应函数。该算法的稳定性不高,当迭代结束条件的精度设置得稍高时容易发散,而且当曝光度比的估计值偏离正确值稍远时会收敛到错误的结果。为了解决这个问题,文献[56]对其进行了改进,它不需要给定初始曝光度比,也能够得到较好的实验效果。
文献[57]中提出了采用多个成像系统(如采用分光镜)产生同一场景的多个影像。成像时,每幅影像都有单独的图像传感器,它的曝光参数是预先设置好的,比如通过光学衰减器或者感光器件的曝光时间等方式实现,然后将多幅曝光量不同的图像融合为一幅HDR图像。这与算法 [53] 中的分时多次曝光不同,这种方法采用了多个感光器件同时曝光的方法,因此可用于动态场景。但是这种方法需要多个感光器件,光学系统较为复杂。
图像传感器感光单元的动态范围受很多因素的影响,其中很重要的一点就是它所能容纳的电荷数。如果感光单元容纳的电荷数一定,为了不使其饱和,可以改变一些参数,如减少曝光时间等;反之,如果入射光强度小,则可以增大曝光时间,使感光单元的输出尽可能处于其线性工作区。基于这个思想,美国卡耐基-梅隆大学的Brajovic等人 [58] 设计了一款模拟VLSI,在每个感光单元处增加了一个局部处理电路,相邻的几个局部处理电路都与一个全局处理电路相连。每个局部处理电路能够完成一定的预设或者预编程的功能。这种方法虽然能得到较好的结果,但是在高分辨率的情况下,受加工工艺和成本的限制,实现起来很困难。另外,在光线较暗时,由于曝光时间长,对运动场景来说易造成“运动模糊”。
美国哥伦比亚大学的Nayar等人提出的SVE(Spatially Varying Pixel Exposures)方法用于HDR图像的获取 [59] ,该方法在感光阵列之前增加一个模板,在该模板上,每4个方格构成一组,对应于感光阵列上的4个相邻像素。每个方格对入射光的吸收是不同的,在成像单元曝光积分时间一定时,感光阵列上对应点的曝光量是确定的。通过灰度差值的方法得到饱和点或者暗点的灰度值,从而得到一幅HDR图像。Aggarwal [60] 提出了光束分离的方法以获取HDR图像,成像过程中采用特定的光路,使所有图像能够一次性获取,从而大大提高了成像的效率,使用多面的分光棱镜将光束分成多束,每个分光面对应一个传感器,这样便可以通过设定每个传感器的曝光时间或者采用非均匀的分光策略,得到同一场景具有不同曝光度的图像序列。Robertson等人考虑了成像过程中的噪声影响,从噪声分布的概率统计角度解决扩展动态范围的问题 [61] 。利用输入图像的加权平均方法构造HDR图像,该方法使得具有高曝光度的图像可以分配到较大的权值。
2003年的ICCV国际会议上发表了一篇采用光学衰减器获取自适应HDR图像的文章 [62] ,它采用光学衰减器对入射光强进行控制,以调整对应点的曝光量。从光学衰减器平面上的点映射到图像平面上的点是透视变换关系,要根据入射光强控制光学衰减器,还要准确透视变换矩阵,因此需要进行系统标定才能使用。2004年的CVPR国际会议上提出了数字micromirror阵列技术 [63] ,采用可编程控制的微反射镜阵列实现HDR图像的获取。这种微反射镜阵列的工作原理是,在阵列上的每个微反射镜角度能够被高位置精度和速度控制,当场景光通过微反射镜阵列时,可以选择是否让其通过,或者对入射光进行调制,不同的控制对应于不同的图像获取功能 [64] 。
JPEG、PNG和BMP等图像存储格式能够存储的亮度范围十分有限,仅解决了对普通LDR图像的存储,无法胜任于对HDR场景亮度信息的存储。因此,HDR图像的存储格式也是重要的研究内容。一般采用浮点数进行数据存储,这样可以大范围、高精度地记录真实场景的光照信息。常用的HDRI存储格式包括Pixar的log-encoded TIFF [65] 格式、SGI的Log Luv TIFF格式、ILM的OpenEXR [66] 格式和Radiance的RGBE格式 [67] 等。
Pixar的log-encoded TIFF格式存储的是红、绿、蓝3种颜色的对数值,并且每种颜色用11位二进制数存储,这样每个像素占用33位存储空间。这种格式可以利用ZIP熵编码无损压缩,但同样不能表现所有可见光,动态范围不是很广。SGI将logencoded TIFF格式扩展,得到Log Luv TIFF格式,它以人的视觉感知为基础,它的量子化步长低于人眼区分颜色和对比度的门限值,适合人眼感知。这种存储格式将亮度和色度通道分开,并对亮度通道进行对数编码。它有两种具体的编码格式:24b Log Luv TIFF格式,即每个像素用24位存储所有的亮度和颜色信息,此格式的动态范围能达到4.8个数量级;32b Log Luv TIFF格式,即每个像素占用32位,此格式的动态范围能达到38个数量级。尽管Log Luv格式具有很多优点,但是,一方面人们不愿意放弃习惯的色彩空间,另一方面没有合作者的加盟,因此这种格式还没有得到较广泛的应用。ILM(Industrial Light and Magic)公司在2002年提出了HDR图像的OpenEXR存储格式 [65] ,利用半数据类型保存浮点型像素值,每种颜色占16位,其中1位保存符号,5位保存指数,10位保存尾数,即每个像素占用48位。这种格式可以表示整个色域,动态范围达107个数量级。
文献[67]采用以Radiance RGBE格式存储的HDR图像作为测试图像。RGBE格式是由美国Berkeley国家实验室提出的一种HDR图像格式,每个像素用32位存储,像素值被分为两部分——尾数和指数。其中,尾数部分用3位分别存储R、G、B颜色分量,另用8位存储公用的以2为底的指数。该格式的优点是既保证了小数的精度,又节省了空间。将小数像素值转化成整数时,先将原始的R、G、B值标准化成尾数和以2为底的指数相乘的形式,并保证尾数的最大值为0.5~1.0;再将每个尾数线性映射成0~255的整数。RGBE格式可以存储的动态范围可达到76个数量级。
另外,微软和惠普公司合作开发的scRGB格式 [68] 在2001年的Win HEC年会上被确定为IEC标准。scRGB格式分为两类,一类是每个像素用48位保存,另一类是用36位保存。这种格式在扩展色域的同时减少了动态范围。
近年来,图形图像、计算机视觉等领域对获取和使用HDR图像的需求不断上升 [69] 。随着半导体技术的飞速发展,图像传感器的动态范围有了较大程度的提高 [70] ,有专用相机可以直接对HDR场景进行信息获取。另外,相应的软件方法也逐渐成熟,HDR场景获取技术也取得了很大进展。但是,数字图像显示设备和传播媒介承载动态范围的能力无法适应于图像获取设备技术的迅速发展,主流的显示设备的动态范围仅为1~2个数量级。通过线性变换映射HDR图像到较低的显示设备上往往会导致高亮区域和暗区域的细节信息严重丢失:较暗区域的细节变得不易从黑色中识别,而高亮区域的细节变得不易从白色中分辨 [71] 。因此,如何使HDR场景信息在常规的显示设备上得到最优化的输出,使其符合人类视觉系统的感知,还需要进一步研究。
随着深度学习 [72] 在计算机图形学和计算机视觉领域的兴起 [73—77] ,立足于卷积神经网络对数字图像强大的处理和解析能力 [76] ,深度模型也开始应用于HDR图像生成领域 [78] 。由于深度学习技术的日渐成熟与计算框架的简化 [79] ,基于深度模型的HDR图像生成算法比传统的算法模型更加简便快速。