快速傅立叶颜色恒常性的制作方法

文档序号:18093556发布日期:2019-07-06 10:54阅读:229来源:国知局
快速傅立叶颜色恒常性的制作方法

本申请要求于2016年11月15日提交的美国临时专利申请no.62/422,496的优先权,其全部内容通过引用合并于此。



背景技术:

图像的白平衡或颜色校正是指这样的处理:改变场景的图像的颜色,以校正用于生成该图像的照明的颜色、改善图像的美感或提供一些其他益处。颜色校正可以包括使用关于图像内容的“真实”颜色(例如,调色板的颜色或场景中存在的参考颜色)的信息来确定照明的颜色,并使用所确定的颜色来改变图像的颜色。在其他实施例中,颜色校正可以包括确定图像中像素的颜色的统计(例如,确定图像内像素的颜色值的直方图)并使用所确定的统计来预测照明的颜色。



技术实现要素:

各种应用包括调整图像的颜色,例如,以补偿图像捕获装置的属性,诸如用于生成图像的相机的像素的相对光谱灵敏度,以补偿存在于由图像表示的场景中的照明、和/或改善图像的美感。该处理可以被称为颜色校正或白平衡,并且可以被表征为确定照亮场景的照明的色度以允许场景的图像捕获。该处理还可以包括确定图像的统计(例如,确定图像的像素上的颜色分布)和调整图像的像素的颜色(例如,缩放图像的每个颜色通道),使得调整后的图像的统计与场景的预期统计相匹配(例如,使得图像中的平均颜色为灰色)。然而,这种统计方法在违反其基本假设的场景下表现不佳。

本公开提供了用于将颜色校正问题转换为对象识别和/或检测问题的各种方法。这些方法包括在变换的色度空间中构造图像的像素的颜色(例如,色度)的直方图,使得在变换的色度空间内确定的直方图的转换与改变图像的整体照明色度相对应。在这种变换的颜色空间中生成直方图可以包括将对数变换应用于图像的像素的色度信息。然后可以使用对象识别技术来确定图像中的照明的色度,例如,以定位在变换的色度空间内确定的直方图的质心。这种技术可以包括将滤色器(例如,经由卷积)应用于直方图并使用滤色后的直方图来确定变换的色度空间内与图像中表示的照明的色度相对应的位置(例如,通过选择滤色后的直方图的最大值)。

然而,使用这种方法来确定在期望的色度分辨率水平下的图像的照明色度可能需要确定非常大的直方图和/或具有如此大的直方图的大滤色器的卷积。这些处理可能是计算密集型的,妨碍了使用某些系统(例如,数码相机)来实施它们和/或妨碍了将它们“实时”地应用于视频流。为了加速该处理,可以在包裹的(wrapped)环形色度空间中确定图像的色度直方图。也就是说,这种直方图的每个元素可以表示图像中位于变换的色度空间内的规则间隔的点集合处的像素的数量。作为结果,色度空间“包裹”围绕直方图的两个边缘。通过应用这种“包裹”,可以显著减小所确定的直方图的大小而不牺牲色度空间内的分辨率。因此,该方法可用于在更短的时间内和/或使用更少的计算能力来确定图像的照明色度。一旦该方法用于确定“包裹的”色度空间中的照明色度,就可以确定未包裹的色度空间内的照明色度(例如,经由去混叠处理)。

可以基于训练图像的语料库和其确定真实(ground-truth)的照明色度来确定用于执行本文方法的(多个)滤色器。可以根据梯度下降或一些其他技术使用训练图像的语料库来训练滤色器。然后可以将训练的滤色器发送到和/或并入蜂窝电话、相机、或可以生成图像并将训练的滤色器应用于其上的其他设备中。

因此,该方法可以涉及获得输入图像。输入图像可以具有由色度值表示的白点,其在输入图像中定义白色。第一示例实施例还可以涉及基于输入图像的颜色,生成输入图像的二维色度直方图。第一示例实施例还可以涉及将二维色度直方图与滤色器卷积以创建二维图,其可以被视为“热图(heatmap)”。二维热图中的条目可以表示与各个条目相对应的各个色调与输入图像的白点有多接近的相应估计。更具体地,二维热图中的条目可以表示与各个条目相对应的各个色调与输入图像的白点有多接近的多个估计-即,热图中的每个条目可以包括对相应色调的估计。在一些实现方式中,卷积在频域中执行,并且具体地,傅立叶变换可以用于卷积。第一示例实施例可以另外涉及在二维图中选择表示在该图中的最大值的阈值内的特定值的条目,并且基于所选择的条目,对输入图像着色以形成输出图像。所选择的条目可以定义色调,更具体地定义照明的色调,其可以被称为照明色度。因此,更具体地,这可以涉及从与所选择的条目相关联的相应多个估计中选择特定估计,其可以被认为是估计照明色度。基于该特定估计,可以对输入图像着色以形成输出图像。因此,该方法可以涉及基于二维热图确定输入图像的照明色度,并且基于所确定的照明色度对输入图像着色以生成颜色校正的输出图像。更具体地,这可以通过将图像颜色值除以照明的颜色值来实现,因为输入图像像素颜色通常是真实颜色和照明颜色的乘积。

如上所述,环形色度直方图可以包括输入图像的色度的直方图,例如在二维u和v中。作为示例,环形可以意味着两个维度中的每一个维度包裹环绕使得输入图像的多于一个色度值映射到环形色度直方图中的相同值。这可以通过使用模运算来实现,使得更大的色度值“包裹环绕”到更小的色度值。

在一些实现方式中,环形色度直方图的每个元素可与输入图像的多个像素相对应,该多个像素在色度空间内的相应位置集合处具有色度值。在一些示例中,对于环形色度直方图的特定元素在色度空间内的位置集合可以在色度空间内规则地间隔开。

如前所述,在一些实现方式中,在色度频域中执行卷积。环形色度直方图有助于使用周期性或循环卷积,诸如傅里叶变换,这可以减少计算负荷。可以例如使用基于确定真实的照明色度和估计照明色度的损失函数来学习卷积滤色器。在这种情况下,可以将周期n×n“图像”的学习权重重新参数化为傅里叶变换矢量,以便更快地学习。

如前所述,环形色度映射可以被认为是将问题混叠到较小的尺寸。因此,选择2d图中的条目(实际上选择色调)可以隐含地涉及去混叠。这种去混叠可以明确地涉及在多于一种可能的估计照明色度之间消除歧义。这可以通过许多方式实现。例如,可以选择估计照明色度以提供尽可能中性的平均图像颜色(“灰色世界去混叠”);或者在仔细的初始选择是直方图跨度的情况下,可以假设估计照明色度尽可能接近直方图的中心。其他方法也是可能的。

在一些实现方式中,环形色度直方图包括输入图像的对数色度的直方图。这是有利的,因为在该空间中,图像的着色仅仅是转换直方图。然而,这并不重要,因为如果没有这种途径,该方法仍然可行,尽管可能具有更有限的范围。

因此,在一些实现方式中,该方法可以包括对所选择的条目进行去混叠,并基于去混叠的所选择的条目对输入图像着色以形成输出图像。这可以通过确定输入图像的平均色度值并从与所选择的条目相关联的多个估计中选择特定的估计亮度来执行,从而基于特定的估计亮度对输入图像着色以形成输出图像,使得该输出图像展现比输入图像更大程度的中性色。附加地或替代地,去混叠可以包括从与所选择的条目相关联的多个估计中选择特定的估计亮度,使得特定的估计亮度比与所选择的条目相关联的多个估计中的任何其他估计都更接近环形色度直方图的中心。

在一些实现方式中,该方法可以进一步包括基于所选择的条目确定损失值并基于损失值更新滤色器。例如,损失值可以从损失函数确定,该损失函数取决于二维图,例如取决于图中的图案的整体形状和/或分布。可以使用训练图像训练滤色器;损失值可用于根据诸如梯度上升或下降的反向传播方法或根据另一机器学习算法来更新滤色器。

在一些实现方式中,在二维图中选择表示在热图中的最大值的阈值内的特定值的条目可以包括:将与特定值相关联的每颜色概率分布函数映射到双变量vonmises分布,其中使用均值和协方差矩阵估计双变量vonmises分布。

可以通过在多个训练图像上的机器学习来确定滤色器,特别是利用相关联的确定真实的白点。这可以包括最小化损失函数以确定滤色器。损失函数可以基于或包括由平均值和协方差矩阵定义的高斯分布的负对数似然。

在一些实现方式中,基于所选择的条目对输入图像着色可以包括将滤色器应用于图像。可以通过所选择的条目来参数化滤色器。输出图像可以比输入图像更白平衡。

可以例如通过捕获数字图像的计算设备来获得数字图像。该方法然后可以包括将输入图像构造为小于数字图像的n×n图像。例如,输入图像的每个像素可以是与数字图像中的像素集合相关联的值的总和,其在任一维度上被n的倍数分开。

在一些示例中,一种方法可以包括由计算设备获得输入图像。输入图像可以包括具有相应颜色的多个像素。第二示例实施例还可以包括,基于输入图像的像素的颜色生成环形色度直方图。环形色度直方图的每个元素可以与输入图像的多个像素相对应,该多个像素在色度空间内的相应位置集合处具有色度值,使得对于环形色度直方图的特定元素的色度空间内的位置集合在色度空间内规则地间隔开。第二示例实施例还可以涉及将环形色度直方图与滤色器卷积以生成二维热图。第二示例实施例还可以涉及确定输入图像的照明色度,其中基于二维热图。第二示例实施例还可以包括,基于所确定的照明色度,对输入图像着色以生成颜色校正的输出图像。

第二示例实施例的环形色度直方图可以是环形对数色度直方图。第二实施例的环形色度直方图的中心元素可以位于环形色度直方图的中心区域内,使得色度空间内与环形色度直方图的中心元素相对应的位置集合中的特定一个位置与预期的照明色度相对应。在第二实施例的一些示例中,确定输入图像的照明色度可以包括:(i)选择环形色度直方图的一个元素;(ii)从色度空间内与环形色度直方图的所选择的元素相对应的位置集合中选择色度空间内的位置;以及(iii)基于色度空间内的所选择的位置确定输入图像的照明色度。第二实施例还可以涉及确定输入图像的平均色度。在这样的示例中,从色度空间内与环形色度直方图的所选择的元素相对应的位置集合中选择色度空间内的位置可以包括:从色度空间内的位置集合中选择色度空间内与输入图像的平均色度最相似的位置。在一些示例中,基于二维热图确定输入图像的照明色度可以包括确定二维热图的圆形平均值。基于二维热图确定输入图像的照明色度还可以包括确定二维热图的关于这样确定的圆形平均值的协方差。这样确定的二维热图的圆形平均值和协方差可以与双变量vonmises分布的平均值和协方差相对应。

在第二实施例的一些示例中,输入图像是第一输入图像,并且该方法还包括:(i)获得第二输入图像,该第二输入图像包括具有第二相应颜色的第二多个像素;(ii)基于第二输入图像的像素的颜色,生成第二环形色度直方图,其中第二环形色度直方图的每个元素与第二输入图像的多个像素相对应,该多个像素在色度空间内的第二相应位置集合处具有色度值,并且其中对于第二环形色度直方图的第二特定元素的色度空间内的第二位置集合在色度空间内规则地间隔开;(iii)将第二环形色度直方图与滤色器卷积以生成第二二维热图;以及(iv)基于第二二维热图和为第一输入图像确定的照明色度,确定第二输入图像的第二照明色度。

第二实施例可以另外涉及(i)基于输入图像确定增强图像,其中增强图像包括具有另外相应颜色的另外多个像素;(ii)基于增强图像的像素的颜色,生成增强环形色度直方图,其中增强环形色度直方图的每个元素与增强图像的多个像素相对应,该多个像素在色度空间内的另外相应位置集合处具有色度值,并且其中对于增强环形色度直方图的另外特定元素在色度空间内的另外位置集合在色度空间内规则地间隔开;(iii)将增强环形色度直方图与另外的滤色器卷积以生成增强二维热图;以及(iv)其中确定输入图像的照明色度包括基于增强二维热图确定照明色度。

本文描述的方法可以由执行存储在图像捕获设备的存储器中的程序指令的处理器执行,该处理器可以体现在计算设备中。

在一些示例中,一种方法可以包括:(i)由计算设备获得多个输入图像,其中所述多个输入图像中的每个输入图像包括具有相应颜色的多个像素;(ii)由服务器获得多个照明色度,其中多个照明色度中的每个照明色度与多个输入图像中的相应输入图像相对应;(iii)基于多个输入图像中的第一输入图像的像素的颜色,生成环形色度直方图,其中环形色度直方图的每个元素与第一输入图像的多个像素相对应,该多个像素在色度空间内的相应位置集合处具有色度值,并且其中对于环形色度直方图的特定元素的色度空间内的位置集合在色度空间内规则地间隔开;(iv)将环形色度直方图与滤色器卷积,以生成二维热图;(v)确定第一输入图像的估计照明色度,其中基于二维热图确定该照明色度;(vi)确定估计照明色度和多个照明色度中与第一输入图像相对应的第一照明色度之间的差;(vii)基于所确定的估计照明色度和第一照明色度之间的差来更新滤色器,以生成更新的滤色器;以及(viii)由服务器向远程系统发送更新的滤色器的指示。

通过适当地参考附图阅读以下详细描述,这些以及其他方面、优点和替代方案对于本领域普通技术人员将变得显而易见。此外,应该理解,在该发明内容部分和本文件的其他地方提供的描述旨在通过示例而非限制的方式说明所要求保护的主题。

附图说明

图1描绘了根据示例实施例的图像的三个色调和每个色调的相关联的色度直方图。

图2描绘了根据示例实施例的色度直方图。

图3描绘了根据示例实施例的对示例热图的统计拟合。

图4描绘了根据示例实施例的使用训练图像集确定的滤色器。

图5描绘了根据示例实施例的数码相机设备的前视图、右视图和后视图。

图6描绘了根据示例实施例的具有图像捕获能力的计算设备的框图。

图7是根据示例实施例的流程图。

图8是根据示例实施例的流程图。

图9是根据示例实施例的流程图。

具体实施方式

本文描述了示例方法、设备和系统。应当理解,词语“示例”和“示例性”在本文中用于表示“用作示例、实例或说明”。本文中描述为“示例”或“示例性”的任何实施例或特征不一定被解释为比其他实施例或特征更优选或更具优势。在不脱离本文提出的主题的范围的情况下,可以利用其他实施例,并且可以进行其他改变。

因此,本文描述的示例实施例不意味着限制。如本文中一般描述的和在附图中示出的本公开的各方面可以以各种不同的配置来布置、替换、组合、分离和设计,所有这些都在本文中考虑。

此外,除非上下文另有所指,否则每个附图中示出的特征可以彼此组合使用。因此,附图通常应被视为一个或多个整体实施例的组成方面,应理解并非所有示出的特征对于每个实施例都是必需的。

i.示例颜色模型

在一般意义上,该部分描述了可以在计算机屏幕或图像文件中表示颜色的方式。该信息在以下部分中描述的图像处理技术的上下文中可能是有用的。

可以使用多种颜色模型来数字地表示捕获的图像。例如,红-绿-蓝(rgb)颜色模型可用于在电子输出设备(诸如计算机屏幕)上显示图像。rgb是一种加色模型,其中红色、绿色和蓝色光以各种方式加在一起以产生色谱。例如,青色可以通过组合绿色和蓝色形成,黄色可以通过组合红色和绿色形成,品红色可以通过组合红色和蓝色形成,并且白色可以通过组合红色、绿色和蓝色形成。

rgb图像的特定像素可以表示为三平面元组(r,g,b),其每个平面可以从0变化到预定义的最大值(例如,255)。如果所有平面均为0,则结果可以为黑色。如果所有平面都处于最大值,则结果可以是最亮的可表示的白色。(本文描述的颜色平面也可以称为颜色通道。)

另一种颜色模型是ycbcr。在一些实现方式中,此颜色模型可用作图像的替代表示。具体地,y平面可以表示像素的亮度,并且cb和cr平面可以分别表示蓝黄色度和红绿色度。例如,蓝黄色度可以由rgb图像中的蓝色像素值除以rgb图像中的绿色像素值来表示,并且红绿色度可以由rgb图像中的红色像素值除以rgb图像中的绿色像素值来表示。因此,ycbcr颜色模型与rgb颜色模型具有明确定义的关系,并且可以相对容易地转换为rgb和从该rgb转换。

ii.示例白平衡

白平衡是数码相机设备或相关联的软件能够对捕获图像进行的一种调整,以试图确保图像中的白色适当地反映拍摄图像的真实世界场景中的实际白色。要理解白平衡,首先了解色温的概念是有帮助的。

色温基于图像或场景中的蓝光量与红光量的比率来测量光的质量。色温以开尔文(k)度为单位表示。具有较高色温(即,较大的开尔文值)的图像或场景比具有较低色温(即,较小的开尔文值)的图像或场景具有更多的蓝色。因此,“较冷”的光具有较高的色温,而较暖的光具有较低的色温。

人眼和大脑可以适应不同的色温。例如,无论是在强烈阳光下还是在用白炽灯照明的房间内观看,人类都将白色物体视为白色。数码相机设备通常具有用于测量场景的色温的内置传感器,并且可以使用算法来处理场景的捕获图像,使得最终结果接近人类将如何感知场景。这种使图像中的白色与场景中的白色相似的调整被称为白平衡或色彩校正。这样的处理可以包括估计用于照亮场景的照明的色度(从而允许图像的原始捕获是白平衡的)并且使用估计照明色度来调整图像的颜色(例如,通过对图像着色)。当前的白平衡算法可能生成对照明色度的不准确估计。作为结果,使用这种方法白平衡的图像的白点可能与图像所代表的场景的白点不相似。(图像的白点表示图像中定义“白色”的色度值。)

本文的实施例提供了可以与种类广泛的图像传感器硬件一起操作的高质量白平衡技术。这些技术被指定为需要比先前算法更少的计算资源(例如,存储器、处理器周期),允许使用本文描述的技术来对在软件中实时或接近实时地获取的图像进行白平衡(例如,提供表示来自图像传感器的视图随时间的白平衡视频流)。这可以消除对各种图像传感器或设备提供硬件特定的白平衡算法的需要。

为了实现该目标,本文的实施例将输入图像转换为二维色度空间中的直方图。直方图的每个元素表示输入图像中的多个像素,该多个像素在二维色度空间内的相应位置处具有颜色(或色度值)。因此,输入图像被转换为色度空间中的形状。指定色度空间,使得对色度空间内的对象(例如,与输入图像的直方图相对应)的转换与对该图像的着色和/或该图像的白点或白平衡的变化相对应。例如,色度直方图的元素可以根据对数标度在二维色度空间内间隔开(即,色度直方图可以是对数色度直方图)。因此,可以应用用于图像内的物体检测和/或定位的技术来确定输入图像的白点(和/或相应的照明色度)。然后可以基于所确定的白点对输入图像进行着色或以其他方式处理,以生成白平衡的输出图像。

因为本文描述的实施例将白平衡的问题转换为物体检测和定位的问题,所以不必为了将这些算法应用于用不同图像捕获装置(例如,不同的图像传感器、不同的相机)拍摄的图像而校准这些算法。这意味着,例如,如果一个相机生成始终着色为青色的图像、而另一个相机生成始终着色为紫色的图像,则本文的白平衡算法可以生成相同的白平衡输出图像(假设两个图像具有相似的辐射度属性-黑色电平已被校正、图像是线性的,等等)。这意味着如果本文的白平衡算法在由一个制造商的硬件捕获的图像上被训练(例如,通过一个或多个机器学习或本文所述的其他技术),则它应该仍然适用于由另一个制造商的硬件捕获的图像。

本文描述的算法的这种特性还简化了训练。通常,为新的相机传感器实施白平衡算法涉及利用该传感器收集较大的图像数据集,并且手动注释每个图像的光源颜色,这是缓慢且昂贵的命题。但是利用本文描述的方法,可以基于公开可用的图像来训练白平衡算法,使得白平衡算法再现那些图像的白平衡。

本文的白平衡算法不仅可以生成高质量的结果,而且目前与学术文献中的现有技术相比在误差方面减少10%-12%,而计算速度提高250-3000倍。此外,该方法改进了当前现有技术,因为当前的现有技术并未设计为在不同的图像传感器之间进行推广。此外,本文的算法允许确定在可能的光源色度空间上的完整后验分布。当将该算法应用于视频流的白平衡图像时,这种后验信息可用于实现时间平滑。

为了正式地构造问题,考虑完美的光度线性图像,其中已经发生了黑电平校正并且其中没有像素值饱和(例如,像素的每个颜色通道中的颜色强度低于某些阈值,诸如255)。为方便起见,下面可以使用对数空间表示。

如上所述,rgb像素[ir,ig,ib]可以是“真实”或白平衡颜色[wr,wg,wb]与场景的光源[lr,lg,lb]的乘积。因此:

ir=wrlr(1)

ig=wglg(2)

ib=wblb(3)

尽管如此,等式(1)、(2)和(3)是问题的过度简化,因为它们忽略了阴影、反射特性、空间变化照明等。无论如何,给定i,目标是估计l并且由此生成估计的白平衡图像像素w=i/l。为此,可以定义i和w的色度表示:

iu=log(ig/ir)(4)

iv=log(ig/ib)(5)

wu=log(wg/wr)(6)

wv=log(wg/wb)(7)

可以基于这种映射(例如,基于根据等式(4)和(5)对于输入图像的像素确定的iu和iv)为输入图像生成色度直方图。可以指定这种直方图的箱(bin)宽度/位置以便于在色度空间内的特定应用和/或映射。例如,可以使用这种空间内的等间隔的箱来生成色度直方图。在对数色度空间内具有规则空间箱的这种色度直方图可以称为对数色度直方图。

由于在本文的实施例中不需要明确地考虑w的绝对缩放,因此估计光源l的问题进一步简化为估计l的色度,其可以仅表示为两个数字:

lu=log(lg/lr)(8)

lv=log(lg/lb)(9)

按照对数的性质,等式(1)、(2)和(3)的公式可以在对数色度空间中重写为:

wu=iu-lu(10)

wv=iv-lv(11)

因而,校正图像的白平衡减少到确定两个量:lu和lv。由于绝对标度模糊,因此从rgb空间到(lu,lv)的uv空间的逆映射是不确定的。因此,确定lu和lv,可以假设l是允许恢复(lr,lg,lb)的单位范数:

这种对数色度公式比rgb公式更易于使用。有2个未知数而不是3个,并且存在与w和i相关的线性约束而不是乘法约束。

为了确定具有真实照明l的输入图像i的这些值(lu,lv)和最终(lr,lg,lb),可以构造二维色度直方图n。在该直方图中,n(u,v)指示i中色度接近(u,v)的像素的数量。形式上:

其中方括号表示指示符函数,并且ε是直方图的箱宽度。在对数色度空间中具有规则间隔的箱的、根据等式(16)确定的色度直方图可以称为对数色度直方图。

在构造直方图n之后,可以将其归一化为具有恒定质量。此外,可以采用每个箱中的计数的平方根,这可以改进直方图特征的有效性。尽管如此,只要对整个直方图应用相同的变换,任何特定归一化都是可能的。

图1包含顶行中相同图像的三个着色版本、以及底行中每个图像的对应色度直方图(根据上面的等式(16)确定)。图1描绘了使用不同亮度水平来表现不同的像素颜色/色度的黑白图像。在图1中的图像的颜色版本中,左列中的图像被着色为绿黄色,中间列中的图像被白平衡,以及右列中的图像被着色为红黄色。

从每个色度直方图的x轴的左端移动到右端表示将相关联的图像的蓝黄色调从主导蓝色改变为主导黄色。同样地,从每个色度直方图的y轴的顶端移动到底端表示将相关联的图像的红绿色调从主导红色改变为主导绿色。总的来说,每个色度直方图表示具有落入该x-y色度图上的每个位置的色度的像素的相对数量。因此,左列色度直方图中的点簇指示绿色和黄色色调,中间列色度直方图中的点簇指示中性(白平衡)色调,以及右列色度直方图中的点簇指示红色和黄色色调。

每个点簇的中心表示相关联的图像的白点,并且色度直方图的原点是对人类看起来“白色”的。通过对图像着色使得着色后的图像的色度直方图中的点簇的中心位于色度直方图的原点附近,可以实现中性色调。

每个图像的色度直方图是其他色度直方图的转换的版本(忽略由直方图操作引入的采样),并且直方图的形状不改变。因此,仅通过直方图空间中的转换来对图像着色可能会影响图像的色度直方图。这是按本文原样定义u和v的结果-调整rgb通道等同于偏移对数色度通道。亮度对此转换没有影响。

图像着色和直方图偏移之间的等同性有利于如本文所述的白平衡。具体地,白平衡算法可以通过以下步骤来操作:考虑图像的一些或所有可能的色调,对每个着色图像进行评分,然后提供最高得分色调(或者更确切地说,其逆)作为输入图像的估计照明色度。例如,期望与中间列色度直方图相关联的色调具有最高分数,使得白平衡算法将输入图像着色为中性。

简单地说,进行该评分可能看起来像昂贵的命题,因为它需要对所有可能的色调进行强力搜索,其中在每个色调处应用一些评分函数。然而,假如评分函数是直方图箱的线性组合,则这种强力搜索实际上只是n与一些滤色器f的卷积,并且有许多方式可以使卷积运算有效。

因此,在高水平,白平衡算法可以执行以下步骤:(i)从输入图像i构造色度直方图n,(ii)将该直方图与一些滤色器f卷积,以及(iii)使用高评分(例如,最高评分)的照度来生成更正式的:

其中*是卷积运算符。

然而,对全尺寸色度直方图(例如,如图1所描绘的色度直方图)执行这样的卷积和最大搜索可能在计算上存在不可接受地昂贵。例如,使用数码相机上可用的存储器、处理器和处理器速度来执行这样的操作可能使得对于数码相机以特定速率(例如,30赫兹)生成的图像无法实时地执行这种白平衡处理(例如,为数码相机的取景器显示器生成白平衡图像)。

为了减少执行本文所述的算法所需的计算成本和/或时间,可以确定较小的色度直方图。这种色度直方图可以表示较大色度直方图的“包裹”版本,使得包裹的色度直方图的每个元素表示输入图像中的、在色度空间内的多个规则间隔位置中的任何一个位置附近具有色度的像素总数。表示较大的平坦色度空间的“包裹”版本的这种尺寸减小的色度直方图可以称为环形色度直方图。这是因为相对于由环形色度直方图的元素表示的像素的色度,环形色度直方图内的接近度环绕环形色度直方图的相对边缘。举例来说,沿着这种环形直方图的左边缘在某个垂直位置处的第一元素,与接近沿直方图的左边缘与第一元素相邻的第三元素一样,接近沿着色度直方图的右边缘在某个垂直位置处的第二元素。

这在图2中以举例的方式示出。图2示出了平坦色度空间中的示例色度直方图210(例如,平坦的对数色度空间,类似于图1中所示的那些)。平坦色度直方图210的元素的值通过阴影示出,较暗的阴影与较高的直方图计数相对应。用于生成平坦色度直方图210的相同图像可用于确定环形色度直方图。对应于与平坦色度直方图210相同的输入图像的示例环形色度直方图250也在图2中示出。环形色度直方图250的元素的值通过阴影示出,较暗的阴影与较高的直方图计数相对应。

由于环形色度直方图250表示平坦色度直方图210的包裹版本,因此环形色度直方图250的区域映射到平坦色度直方图210的多个非重叠区域。这些区域在图2中由虚线水平和垂直线示出。因此,环形色度直方图250的每个位置和/或元素与平坦色度直方图210的相应位置和/或元素集合相对应。例如,环形色度直方图250的第一元素260与平坦色度直方图210的第一规则间隔元素集合220a-i相对应。在另一示例中,环形色度直方图250的第二元素265与平坦色度直方图210的第二规则间隔元素集合225a-i相对应。在又一示例中,由环形色度直方图250表示的环形色度空间内的特定位置270与由平坦色度直方图210表示的平坦色度空间内的规则间隔的位置集合230a-i相对应。

因此,环形色度直方图250的每个元素(例如,260)与输入图像的多个像素相对应,该多个像素在色度空间内的相应位置集合(例如,220a-i)处具有色度值。此外,对于环形色度直方图的特定元素的色度空间内的位置集合在色度空间内规则地间隔开。因此,在图2所示的环形直方图中,nt(u,v)指示输入图像i中其色度接近规则间隔的色度集合{un,m,vn,m}中的任何一个色度的像素数。形式上:

其中i,j为0索引,n是环形色度直方图中的箱数(例如,n=64),h是箱尺寸(例如,h=1/32),并且(ulo,vlo)是直方图的起点(在图2中作为示例起始位置241示出)。根据等式(18)确定的、在对数色度空间中具有规则间隔的箱的色度直方图可以被称为对数色度直方图。例如通过将环形直方图缩放为具有单位质量,通过应用softmax函数,或者通过应用一些其他预处理,可以在任何后续操作之前归一化确定的环形直方图nt。

然后可以将确定的环形色度直方图nt与滤色器f卷积以生成二维热图,该二维热图与特定色度值是输入图像中存在的照明色度的似然性相关。由于环形色度直方图250表示包裹的直方图,所以可以使用快速傅里叶变换技术来执行这种卷积,例如,以降低卷积的计算成本和/或提高卷积的速度。然后可以基于所生成的二维热图确定照明色度,例如通过确定二维热图内的最大值的位置。然后可以根据各种应用使用估计照明色度,例如,以生成输入图像的白平衡版本,以生成可以用于更新或以其他方式训练滤色器f或其他一些应用的误差信号(例如,基于输入图像的估计照明色度和已知照明色度之间的差)。

然而,由于环形色度直方图250的每个位置和/或元素与平坦色度直方图210内的不同位置集合相对应,并且因此与不同的潜在照明色度集合相对应,因此必须执行去混叠步骤。这通过示例的方式说明:

μ←f(nt*f)(19)

其中f是基于二维热图确定色度位置的函数,μ是基于二维热图nt*f估计的环形色度直方图内的色度位置,de_alias是基于输入色度位置μ确定照明色度的函数(例如,通过从与μ相关联的色度集合中选择输出照明色度),并且是输出照明色度的确定的值。所确定的环形色度空间内的位置可以以各种方式进行去混叠到平坦色度空间内的相应位置(例如,到预测的照明色度)。在确定色度位置之前,函数f可以包括归一化函数、softmax函数或一些其他预处理函数或算法。

在一些示例中,确定输入图像的照明色度可以包括:(i)选择从输入图像确定的环形色度直方图250的特定元素;(ii)从色度空间内与环形色度直方图250的所选择的元素相对应的位置集合中选择色度空间内的位置;以及(iii)基于色度空间内的所选择的位置确定输入图像的照明色度。这在图2中通过环形色度直方图250的示例元素270示出。示例元素270与平坦色度直方图210的色度空间内的位置集合230a-i相对应。可以通过各种方法选择该位置集合230a-i中的特定一个位置。

可以基于与输入图像的平均色度的接近度(例如,输入图像的平均对数色度值)从该集合中选择该特定位置。例如,可以从色度空间内与环形色度直方图250的所选择的元素270相对应的位置集合230a-i中选择特定位置,该特定位置是色度空间内与输入图像的平均色度最相似的位置。这种确定可以是基于输入图像所表示的场景的平均颜色是中性的假设(所谓的“灰色世界”去混叠技术)。附加地或替代地,可以基于一些其他考虑或信息来选择该位置集合230a-i中的特定一个位置,例如基于与附加输入图像的确定的照明色度的接近度,其中该附加输入图像在时间上接近于正为其确定照明色度的输入图像(例如,基于场景的照明色度不太可能在短时间内突然改变的假设)。

在一些示例中,可以指定环形色度直方图250的元素与色度空间的位置之间的对应关系,使得环形色度直方图250的中心与预期的照明色度相对应(所谓的“灰度光”去混叠技术)。在这样的示例中,环形色度直方图(例如,275)的中心元素位于环形色度直方图250的中心区域内。环形色度直方图250的元素与平坦色度空间中的位置之间的对应关系是指定的(例如,通过设置ulo和vlo的值),使得与环形色度直方图250的中心元素275相对应的色度空间内的位置集合中的特定一个位置(例如,245)与预期的照明色度245相对应(例如,白光的色度位置(u,v))。

可以采用各种方法来基于如上所述的二维热图确定估计照明色度(其本身可以如上所述地去混叠)。例如,可以从二维热图中选择在热图内具有最大值的元素,或者具有在这样的最大值的阈值内的值的元素。附加地或替代地,可以将概率分布或一些其他圆形统计量拟合到二维热图,并且可以使用这种拟合分布或统计量的一个或多个参数(例如,平均色度)来估计照明色度。可以相对于由环形色度图250表示的色度空间的包裹的环形特性来指定这种概率分布或统计量。

例如,可以基于这样的二维热图确定圆形平均值,并且用于确定估计照明色度(例如,通过将圆形平均值应用于去混叠方法和/或其他一些方法函数)。圆形平均值是用于确定变量(例如,具有圆形分布的变量)的“平均值”的统计量,其在圆形或其他环状空间(例如,环形空间)上定义。这种圆形平均值考虑到这样的事实:由于圆形空间的环状拓扑,圆形空间的一个“边缘”附近的值接近圆形空间的相对“边缘”附近的值。因此,位于圆形空间的一个或另一个边缘附近的值的集合的圆形平均值是圆形空间的一个边缘附近的值,而该值的集合的算术平均值可能是不能准确反映值集合的质量的、圆形空间内的位置的一些中间值。

另外,可以确定关于这种圆形平均值的二维热图的协方差并用于提供一些益处。例如,这种协方差可以用于确定先前输入图像的确定的圆形平均值和确定的照明色度的加权组合(例如,以便于视频流的估计照明色度的时间平滑序列)。在特定示例中,所确定的圆形平均值和协方差可以与双变量vonmises分布的均值和协方差相对应。

这通过示例的方式示出:

p←f(nt*f)(21)

(μ,∑)←fit_bvm(p)(22)

其中f是基于环形色度直方图nt和滤色器f的卷积确定二维热图p的预处理函数,μ是p的圆形均值,σ是p的协方差,fit_bvm是将双变量vonmises分布拟合到二维热图p的函数,de_alias是基于圆形平均值μ确定照明色度的函数(例如,通过从与μ相关联的色度集合中选择输出照明色度),并且是输出照明色度的确定的值。在确定色度位置之前,函数f可以包括归一化函数、softmax函数或一些其他预处理函数或算法。例如,f可以是以下形式的softmax函数:

使用vonmises分布来基于如本文所述的二维热图确定估计照明色度可以提供各种益处。对于环形空间定义的双变量vonmises分布适合于由环形色度直方图250表示的环形色度空间。这在图3中示出,其包含三个示例性二维热图。对于每个热图,平均值和协方差分别用“x”和虚线椭圆表示。平均值和协方差是通过简单地确定热图的二维平均值和协方差来确定的,而不考虑由热图表示的下面的空间是环形的并因此包裹热图的边缘这一事实。相反,根据vonmises分布,对于每个热图,确定的圆形平均值(由“+”符号表示)和协方差(由实线椭圆表示)考虑到了二维热图的环形、包裹的性质。作为结果,与初始确定的平均值和协方差相比,圆形平均值和协方差更准确地反映了热图内的结构,特别是当热图的“中心”靠近热图的边缘时(例如,在图3的中间和右侧示例热图中示出)。

确定如本文所述的二维热图的双变量vonmises分布(或其他适当的圆形概率分布)还可以提供与估计照明色度的序列的时间平滑相关(例如,对于视频流的输入图像的序列)和/或与滤色器或其他算法参数的训练相关(例如,通过在热图上提供完整的后验分布)的益处。在一些示例中,可以使用本文描述的方法为第一输入图像确定第一照明色度。然后,可以基于第一照明色度对第二输入图像确定第二照明色度,并且可以使用本文的方法基于第二输入图像确定二维热图。为第二图像热图确定的vonmises(或其他圆形、二维概率分布)可以通知第一照明色度和第二图像热图的组合以生成第二照明色度。例如,可以根据第一图像照明色度和对第二图像热图确定的圆形平均值或其他统计量的定向加权组合来确定第二图像照明色度。

可以基于示例图像集合和其已知的照明色度来训练或以其他方式确定滤色器f。无论确定方法如何,滤色器f都反映白平衡场景中的颜色分布。此外,由于与f组合的环形色度直方图的移位不变性被评估为卷积,所以f与训练图像的色调无关。因此,学习的滤色器f不限于特定的图像传感器或图像捕获设备,并且可以应用于为使用各种图像传感器或图像捕获设备捕获的图像确定照明色度,而不需要任何特殊的校准或配准处理。

对滤色器f的训练可以包括使用本文描述的方法来对训练集合中的多个训练图像确定相应的估计照明色度。然后可以将估计照明色度与训练集合中的图像的各个已知照明色度进行比较,并且这些差可以用于例如根据梯度下降方法或其他机器学习算法更新滤色器。这样确定的损失可以通过本文描述的方法的元素反向传播,以便于这样训练滤色器(即,本文描述的每个功能、算法或其他步骤可以是分析上可区分的)。

在一些示例中,可以使用损失函数将这种差转换为可以用于更新滤色器的损失值(例如,通过反向传播)。这种损失函数可以考虑二维热图(例如,vonmises分布)内的图案的整体形状或分布。例如,根据以下等式,特定滤色器和输入训练图像的损失可能与相对于输入训练图像的真实照明色度的高斯的负对数似然有关:

其中是训练输入图像的真实光源的色度,并且μ和σ分别是为输入训练图像确定的二维热图的圆形平均值和协方差(例如,与拟合到热图的双变量vonmises分布相对应)。这种损失函数可以通过附加项来增强,例如,以减小滤色器f的系数的范数。

然后可以使用根据这种方法训练的滤色器对附加图像(例如对于由蜂窝电话捕获的图像)估计照明色度。在一些示例中,这可以包括服务器或其他系统向可以捕获附加图像的另一系统(例如,手机、数码相机)发送训练的滤色器的指示(例如,发送包括训练的滤色器的应用数据)。这种传输可以包括对运行中的设备的无线或有线传输(例如,经由蜂窝数据网络)。附加地或替代地,这种传输可以包括在这种设备的制造期间(例如,在这种设备的编程期间、和/或在存储器或设备其他组件的编程期间)将训练的滤色器提供给设备。

iii.白平衡方法的示例扩展

上述方法可以以各种方式扩展,以改进由此估计照明色度的准确度或其他性质,或提供一些其他益处。例如,用于基于滤色器和环形色度直方图的卷积来确定和/或预处理二维热图的函数可以通过偏置图和/或增益图来增强。可以提供这样的增强以允许算法不同地(例如,基于对自然光源的期望)加权不同的估计照明色度,以相对于特定色度空间锚定模型(例如,以补偿环形色度直方图的色度偏移不变性质),或提供一些其他益处。附加地或替代地,可以基于输入图像确定增强图像(例如,以强调输入图像中的边缘或其他特征),并且可以结合输入图像使用那些增强图像来估计输入图像的照明色度。在一些实施例中,通过使用来自时间上在先的图像(例如,视频流的在先帧)的信息(例如,估计照明色度),时间平滑可以用于改进图像的照明色度估计(例如,视频流的图像)。

作为说明,代替算法可以从单个图像i构造和分类单个环形直方图nt,来自“增强”图像集合{ic}(其可以包括原始输入图像)的直方图集合{nc}可以被组合和/或滤色(例如,通过应用相应的滤色器fc)以生成二维热图(其然后可以用于确定输入图像的照明色度)。这些增强图像可以反映输入图像i的边缘和空间统计,从而使得模型能够组合除了单独像素色度之外的多个色度信息源。

可以通过对i简单地应用常见的图像处理操作,诸如应用滤色器组、中值滤色器、形态学运算等,来构造这些增强图像{ic}。但是,构造色度直方图的图像应该将颜色缩放映射到输入图像的通道以在色度直方图空间中偏移。这意味着增强图像应保留此属性,并将每通道缩放映射到直方图空间中的相同偏移。因此,可能存在有限的可能的增强图像集合供使用。

可以证明,对于要满足的颜色缩放/直方图偏移属性,映射应该保留标量乘法-输入图像i中的通道的缩放后滤色(scaled-then-filtered)版本应该等于该通道的滤色后缩放(filtered-then-scaled)版本。另外,映射的输出应该是非负的,因为可以采用这些值的对数。此外,选择计算上便宜的增强来执行是有利的,因为本文描述的方法可以在具有有限计算资源的设备(例如,数码相机)上执行。

对于输入图像中的每个像素,示例性增强是确定输入图像中的绝对偏差的局部度量。这由以下公式说明:

其中x和y是输入图像i中的像素索引,而增强图像e和c是颜色通道索引。然后可以基于增强图像确定附加的环形色度直方图,并且与滤色器卷积以生成增强二维热图。然后,该增强二维热图可以与从输入图像的环形色度直方图确定的二维热图结合使用,以确定输入图像的照明色度。可以经由类似于所描述的方法来学习与增强图像环形色度直方图卷积的滤色器。

上述方法包括基于环形色度直方图确定照明色度。如上所述,这种环形直方图对于环形色度直方图的环形空间内的偏移是不变的。因此,对于这种直方图学习的滤色器可能缺乏直接表示关于预期光源的信息的能力。为了向本文的方法提供表示这种推论的能力,可以利用增益和/或偏置图(其可以如本文其他地方对于环形色度直方图滤色器所描述的那样进行训练)来增强该方法。这种增益和/或偏置图可以在归一化之前应用于滤色器与环形色度直方图的卷积、vonmises分布拟合、或用于从这样的环形色度直方图确定照明色度的其他处理。

这通过示例的方式示出:

其中nc是环形色度直方图(例如,分别根据输入图像的像素和输入图像的增强版本确定的两个直方图),fc是应用于环形色度直方图的滤色器,b是偏置图,g是应用于滤色器和环形直方图的卷积之和的增益图,并且f是应用于生成输出映射p的函数(例如,softmax函数)。输出图p然后可用于确定输入图像的照明色度(例如,通过将双变量vonmises分布拟合到p并对其圆形平均值进行去混叠),以确定输入图像的这种估计照明色度和已知的“真实”照明色度之间的差(例如,以确定可用于更新b、g或nc中的一个或多个的损失函数值),或提供一些其他益处。

附加地应用的偏置图b可以表示特定照明色度的“偏好”(例如,由于那些色度在训练图像集合中被特别地表示)。当某些色度被牵涉到(多个)滤色器与(多个)环形色度直方图的卷积时,被乘法地应用于滤色器-直方图卷积的求和元素的增益图g可以表示对这些色度的放大偏差。偏置映射b、增益映射g和滤色器fc可以如上所述地训练以用于直方图滤色器f。例如,可以基于训练图像使用这些元素来确定训练图像的估计照明色度。然后可以基于训练图像的估计照明色度和已知“真实”照明色度来应用损失函数,以确定偏置图b、增益图g和滤色器fc的损失值(例如,结合vonmises分布的参数,该参数拟合到使用b、g和fc应用的算法的输出)。然后可以使用所确定的损失值来更新b、g和fc(例如,经由采用例如反向传播的迭代处理)。

图4描绘了基于训练图像集合和对应的“确定真实”照明色度来训练的滤色器和图的可视化,如上所述。最左边的滤色器410通过卷积应用于从输入图像的像素确定的环形色度直方图。左中心滤色器420通过卷积应用于从根据上面的等式(26)确定的增强图像的像素确定的环形色度直方图。右中心图430是如上所述的增益图g,并且最右边的图440是如上所述的偏置映射b。

在一些实例中,可修改本文中所描述的方法以允许对时间上邻近的输入图像(例如,视频或视频流的帧)确定的照明色度的时间平滑。例如,可以使用对于特定输入图像的估计照明色度或与其相关的统计(例如,确定的圆形平均值、协方差或从二维热图确定的其他统计)来更新对于视频流的这些参数的运行估计。在说明性实施例中,对于由视频流表示的场景中的照明色度的平均值和协方差的运行估计可以是对于视频流的第一图像集合确定的。当获得视频流的附加图像(例如,由数码相机的图像传感器捕获)时,可以确定附加图像中存在的照明色度的平均值和协方差。然后,可以使用从附加图像确定的平均值和协方差来更新对于视频流的照明色度的平均值和协方差的运行估计。

这通过以下公式说明:

其中σt和μt分别是更新前照明色度的平均值和协方差的运行估计,σ0和μ0分别是从附加输入图像确定的平均值和协方差的估计。σt+1和μt+1是更新后照明色度的平均值和协方差的运行估计,以及α是定义照明色度随时间的预期方差的参数。

iv.示例系统和图像捕获设备

随着诸如相机的图像捕获设备变得更加流行,它们可以用作独立的硬件设备或者被集成到各种其他类型的设备中。例如,照相机和摄像机现在经常被包括在无线计算设备(例如,移动电话)、平板电脑、膝上型计算机、视频游戏接口、家庭自动化设备、甚至汽车和其他类型的车辆中。

相机的物理组件可包括光通过其进入的一个或多个光圈、用于捕获由光表示的图像的一个或多个记录表面、以及位于每个光圈前方以将图像的至少一部分聚焦在一个或多个记录表面上的透镜。光圈可以是固定尺寸或可调节的。在模拟相机中,记录表面可以是照相胶片。在数码相机中,记录表面可以包括电子图像传感器(例如,电荷耦合器件(chargecoupleddevice,ccd)或互补金属氧化物半导体(complementarymetal-oxide-semiconductor,cmos)传感器),以将捕获的图像传输到数据存储单元(例如,存储器)中和/或在其中存储捕获的图像。

一个或多个快门可以耦合到透镜或记录表面或附近。每个快门可以处于:关闭位置,在该关闭位置,其阻挡光到达记录表面;或者打开位置,在该打开位置,允许光到达记录表面。可以通过快门按钮来控制每个快门的位置。例如,快门可以默认处于关闭位置。当快门按钮被触发(例如,按下)时,快门可以从关闭位置改变到打开位置一段时间,称为快门周期。在快门周期期间,可以在记录表面上捕获图像。在快门周期结束时,快门可以改变回关闭位置。

替代地,快门处理可以是电子的。例如,在ccd图像传感器的电子快门“打开”之前,可以重置传感器以去除其光电二极管中的任何残余信号。当电子快门保持打开时,光电二极管可累积电荷。当快门关闭时或之后,这些电荷可以转移到长期数据存储。机械和电子快门的组合也是可能的。

无论何种类型,都可以通过除快门按钮之外的其他东西来激活和/或控制快门。例如,可以通过软键、计时器或一些其他触发器来激活快门。本文中,术语“图像捕获”可以指导致记录一个或多个图像的任何机械和/或电子快门处理,而不管如何触发或控制快门处理。

可以通过光圈的大小、进入光圈的光的亮度和快门周期的长度(也称为快门长度或曝光长度)的组合来确定捕获的图像的曝光。另外,可以将数字和/或模拟增益应用于图像,从而影响曝光。在一些实施例中,术语“总曝光长度”或“总曝光时间”可以指快门长度乘以特定光圈尺寸的增益。本文中,术语“总曝光时间”或“tet”应该被解释为可能是快门长度、曝光时间或控制由到达记录表面的光产生的信号响应量的任何其他度量。

每次触发图像捕获时,照相机可以捕获一个或多个图像。只要图像捕获保持被触发(例如,在按下快门按钮的同时),摄像机就可以以特定速率(例如,每秒24个图像或帧)连续捕获图像。一些数码相机可以在相机设备或应用被激活时打开快门,并且快门可以保持在该位置直到相机设备或应用被停用。当快门打开时,相机设备或应用可以在取景器上捕获并显示场景的表示。当触发图像捕获时,可以捕获当前场景的一个或多个不同的数字图像。

相机-甚至模拟相机-可以包括用于控制一个或多个相机功能和/或设置的软件,诸如光圈大小、tet、增益等。另外,一些相机可以包括在捕获这些图像期间或之后对图像进行数字处理的软件。虽然上面的描述一般涉及相机,但它可能与数码相机特别相关。

如前所述,数码相机可以是独立设备或与其他设备集成。作为示例,图5示出了数码相机设备500的形成因子。数码相机设备500可以是例如移动电话、平板计算机或可穿戴计算设备。然而,其他实施例也是可能的。数码相机设备500可以包括各种元件,诸如主体502、前置相机504、多元素显示器506、快门按钮508和其他按钮510。数码相机设备500还可以包括后置相机512。前置相机504可以位于主体502的一侧,通常在操作时面向用户,或者在与多元素显示器506相同的一侧。后置相机512可以位于主体512与前置相机504相对的一侧。引用相机为前置或后置是任意的,并且数码相机设备500可包括位于主体502的各侧的多个相机。

多元素显示器506可表示阴极射线管(cathoderaytube,crt)显示器、发光二极管(lightemittingdiode,led)显示器、液晶(liquidcrystal,lcd)显示器、等离子显示器或本领域已知的任何其他类型的显示器。在一些实施例中,多元素显示器506可以显示由前置相机504和/或后置相机512捕获的当前图像、或者可以由这些相机中的一个或两者捕获或最近捕获的图像的数字表示。因此,多元素显示器506可以用作任一相机的取景器。多元素显示器506还可以支持触摸屏和/或存在敏感功能,其可以能够调整数码相机设备500的任何方面的设置和/或配置。

前置相机504可包括图像传感器和相关联的光学元件,诸如透镜。前置相机504可以提供变焦能力或者可以具有固定的焦距。在其他实施例中,可互换透镜可以与前置相机504一起使用。前置相机504可以具有可变机械光圈和机械和/或电子快门。前置相机504还可以配置为捕获静止图像、视频图像或这两者。此外,前置相机504可以代表单视场、立体或多视相机。后置相机512可以类似地或不同地布置。另外,前置相机504、后置相机512或这两者可以是一个或多个相机的阵列。

前置相机504和后置相机512中的任一个或两者可以包括照明组件或者与照明组件相关联,该照明组件提供照亮目标对象的光场。例如,照明组件可以提供目标对象的闪光或恒定照明。照明组件还可以被配置为提供光场,该光场包括结构光、偏振光和具有特定光谱内容的光中的一个或多个。在本文的实施例的上下文中,已知并用于从对象恢复三维(3d)模型的其他类型的光场是可能的。

前置相机504和后置相机512中的任一个或两者可以包括环境光传感器或者与环境光传感器相关联,环境光传感器可以连续地或不时地确定相机可以捕获的场景的环境亮度。在一些设备中,环境光传感器可用于调节与相机(例如,取景器)相关联的屏幕的显示亮度。当确定的环境亮度高时,可以增加屏幕的亮度水平以使屏幕更容易观看。当确定的环境亮度低时,可以降低屏幕的亮度水平,也使屏幕更容易观看以及潜在地节省电力。另外,环境光传感器的输入可用于确定相关联的相机的tet,或帮助进行该确定。

数码相机设备500可以被配置为使用多元素显示器506和前置相机504或后置相机512来捕获目标对象的图像。捕获的图像可以是多个静止图像或视频流。可以通过激活快门按钮508、按下多元素显示器506上的软键或通过一些其他机制来触发图像捕获。取决于实现方式,可以在特定时间间隔自动捕获图像,例如在按下快门按钮508时、在目标对象的适当照明条件下、在移动数码相机设备500预定距离时、或根据预定捕获计划自动捕获图像。

如上所述,数码相机设备500或另一种类型的数码相机的功能可以集成到诸如无线计算设备、蜂窝电话、平板电脑、膝上型计算机等的计算设备中。出于示例的目的,图6是示出示例计算设备600的一些组件的简化框图,示例计算设备600可以被配置和/或操作为捕获图像和/或执行本文描述的一个或多个方法。如图6所示,计算设备600可以包括相机组件624。替代地,计算设备600可以缺少图像获取组件,并且可以被配置为提供一些其他益处,例如,执行本文其他地方描述的方法中的一个或多个。

作为示例而非限制,计算设备600可以是蜂窝移动电话(例如,智能电话)、照相机、摄像机、传真机、计算机(诸如台式机、笔记本、平板电脑或手持式计算机)、个人数字助理(personaldigitalassistant,pda)、家庭自动化组件、数字视频记录器(digitalvideorecorder,dvr)、数字电视、遥控器、可穿戴计算设备或配备有至少一些图像捕获和/或图像处理能力的一些其他类型的设备。应当理解,计算设备600可以表示诸如数码相机的物理相机设备、相机应用在其上以软件操作的特定物理硬件平台、或者被配置为执行相机功能的硬件和软件的其他组合。在一些示例中,计算设备600可以是服务器、云计算系统、或者缺少相机组件并且被配置为执行如本文所述的一些操作的一些其他系统或设备。

如图6所示,计算设备600可以包括通信接口602、用户接口604、处理器606、数据存储装置608和相机组件624,所有这些都可以通过系统总线、网络或其他连接机制610通信地链接在一起。

通信接口602可以允许计算设备600使用模拟或数字调制与其他设备、接入网络和/或传输网络进行通信。因此,通信接口602可以促进电路交换和/或分组交换通信,诸如普通老式电话服务(plainoldtelephoneservice,pots)通信和/或因特网协议(internetprotocol,ip)或其他分组通信。例如,通信接口602可以包括芯片组和天线,其被布置用于与无线电接入网络或接入点进行无线通信。而且,通信接口602可以采用或包括有线接口的形式,诸如以太网、通用串行总线(universalserialbus,usb)或高清多媒体接口(high-definitionmultimediainterface,hdmi)端口。通信接口602还可以采取或包括无线接口的形式,诸如wifi、全球定位系统(globalpositioningsystem,gps)或广域无线接口(例如,wimax或3gpp长期演进(lte))。然而,可以在通信接口602上使用其他形式的物理层接口和其他类型的标准或专有通信协议。此外,通信接口602可以包括多个物理通信接口(例如,wifi接口、接口和广域无线接口)。

用户接口604可以用于允许计算设备600与人类或非人类用户交互,诸如从用户接收输入并向用户提供输出。因此,用户接口604可以包括输入组件,诸如小键盘、键盘、触敏或存在敏感面板、计算机鼠标、轨迹球、操纵杆、麦克风等。用户接口604还可以包括一个或多个输出组件,诸如显示屏,其例如可以与存在敏感面板组合。显示屏可以基于crt、lcd和/或led技术、或现在已知或以后开发的其他技术。用户接口604还可以被配置为经由扬声器、扬声器插孔、音频输出端口、音频输出设备、耳机和/或其他类似设备生成可听输出。

在一些实施例中,用户接口604可以包括用作计算设备600支持的照相机和/或摄像机功能的取景器的显示器。另外,用户接口604可以包括便于配置和聚焦相机功能和捕获图像(例如,捕获图片)的一个或多个按钮、开关、旋钮、和/或拨盘。这些按钮、开关、旋钮和/或拨盘中的一些或全部可以通过存在敏感面板来实现。

处理器606可以包括一个或多个通用处理器(例如,微处理器)和/或一个或多个专用处理器,例如,数字信号处理器(digitalsignalprocessor,dsp)、图形处理单元(graphicsprocessingunit,gpu)、浮点单元(floatingpointunit,fpu)、网络处理器或专用集成电路(application-specificintegratedcircuit,asic)。在一些情况下,专用处理器可以能够进行图像处理、图像对准、白平衡、对图像着色、对图像边界调整、以及生成色度直方图或与本文所述方法有关的其他信息,以及其它可能性。数据存储装置608可以包括一个或多个易失性和/或非易失性存储组件,诸如磁性、光学、闪存或有机存储装置,并且可以整体或部分地与处理器606集成。数据存储装置608可以包括可移除的和/或不可移除的组件。

处理器606可以能够执行存储在数据存储装置608中的程序指令618(例如,编译或未编译的程序逻辑和/或机器代码),以执行本文描述的各种功能。因此,数据存储装置608可以包括非暂时性计算机可读介质,其上存储有程序指令,该程序指令在由计算设备600执行时使计算设备600执行本说明书和/或附图中公开的任何方法、处理或操作。处理器606执行程序指令618可以使处理器606使用数据612。

作为示例,程序指令618可以包括操作系统622(例如,操作系统内核、一个或多个设备驱动器、和/或其他模块)和安装在计算设备600上的一个或多个应用程序620(例如,相机功能、地址簿、电子邮件、web浏览、社交网络和/或游戏应用)。类似地,数据612可以包括操作系统数据616和应用数据614。操作系统数据616可以主要由操作系统622访问,并且应用数据614可以主要由一个或多个应用程序620访问。应用数据614可以布置在对计算设备600的用户可见或隐藏的文件系统中。

应用程序620可以通过一个或多个应用编程接口(applicationprogramminginterfaces,api)与操作系统622通信。例如,这些api可以便于应用程序620读取和/或写入应用数据614、经由通信接口602发送或接收信息、接收和/或显示关于用户接口604的信息,等等。在一些示例中,应用程序620中的一个或多个可以使用本文描述的方法来估计图像的照明色度、基于这样的估计照明色度对这些图像着色、以对视频流执行这种着色或其他操作(例如,对在屏幕上或在视频捕获期间通过取景器提供的视频流进行白平衡)、或者执行如本文所述的一些其他操作。在这样的示例中,应用数据614可以包括用于执行本文描述的方法中的一个或多个方法的滤色器或其他信息。

在一些方言中,应用程序620可简称为“app”。另外,应用程序620可以通过一个或多个在线应用商店或应用市场下载到计算设备600。然而,应用程序也可以以其他方式(诸如经由网络浏览器或通过计算设备600上的物理接口(例如,usb端口))安装在计算设备600上。

相机组件624可包括但不限于光圈、快门、记录表面(例如,摄影胶片和/或图像传感器)、透镜和/或快门按钮。可以至少部分地通过由处理器606执行的软件来控制相机组件624。

v.示例操作

图7是示出示例实施例的流程图。图7所示的实施例可以由计算设备(诸如数码相机设备500或计算设备600)来执行。然而,该实施例可以由其他类型的设备或设备子系统来执行。此外,该实施例可以与本说明书或附图中公开的任何方面或特征组合。

方法700包括获得输入图像(710)。方法700还包括基于输入图像的颜色生成输入图像的环形色度直方图(720)。方法700还包括将环形色度直方图与滤色器卷积(730)。该卷积定义了二维图。方法700还包括在二维图中选择表示在图中的最大值的阈值内的特定值的条目(740)。方法700还包括基于所选择的条目对输入图像着色以形成输出图像(750)。

方法700可以包括附加步骤、特征或其他元素。例如,作为方法700的一部分生成的环形色度直方图可以是环形对数色度直方图。方法700可以另外包括对所选择的条目进行去混叠,并且基于所选择的条目对输入图像着色以形成输出图像,其可以包括基于去混叠的所选择的条目对输入图像进行着色以形成输出图像。对所选择的条目进行去混叠可以包括(i)确定输入图像的平均色度值;以及(ii)从与所选择的条目相关联的多个估计中选择特定的估计亮度,使得基于该特定的估计亮度对输入图像着色以形成输出图像,使得输出图像呈现出比输入图像更大程度的中性色。附加地或替代地,对所选择的条目进行去混叠可以包括从与所选择的条目相关联的多个估计中选择特定的估计亮度,使得该特定的估计的亮度比与所选择的条目相关联的多个估计值中的任何其他估计都更接近环形色度直方图的中心。方法700还可以包括(i)基于所选择的条目确定损失值;以及(ii)根据损失值更新滤色器。在一些示例中,在二维图中选择表示在热图中的最大值的阈值内的特定值的条目可以包括将与特定值相关联的每颜色概率分布函数映射到双变量vonmises分布,其中使用平均值和协方差矩阵估计双变量vonmises分布。在一些这样的示例中,可以通过在具有相关联的确定真实的白点的多个训练图像上的机器学习来确定滤色器。通过在具有相关联的确定真实的白点的多个训练图像上的机器学习来确定滤色器可以包括:最小化损失函数以确定滤色器。这种损失函数可以基于具有平均值和协方差矩阵的高斯分布的负对数似然。在方法700的一些实施例中,基于所选择的条目对输入图像着色可包括将滤色器应用于图像,其中滤色器由所选择的条目参数化。在方法700的一些实施例中,获得输入图像可以包括:(i)获得数字图像;以及(ii)将输入图像构造为小于数字图像的n×n图像,其中输入图像的每个像素是与数字图像中的像素集合相关联的值的和,该像素集合在任一维度上被n的倍数分开。在这样的实施例中,获得数字图像可以包括捕获数字图像的计算设备。在方法700的一些实施例中,输出图像比输入图像更白平衡。

图8是示出示例实施例的流程图。图8所示的实施例可以由计算设备(诸如数码相机设备500或计算设备600)来执行。然而,该实施例可以由其他类型的设备或设备子系统来执行。此外,该实施例可以与本说明书或附图中公开的任何方面或特征组合。

方法800包括由计算设备获得输入图像(810)。输入图像包括具有相应颜色的多个像素。方法800另外包括基于输入图像的像素的颜色生成环形色度直方图(820)。生成的环形色度直方图的每个元素与输入图像的多个像素相对应,该多个像素在色度空间内的各个位置集合处具有色度值。用于环形色度直方图的特定元素的色度空间内的位置集合在色度空间内规则地间隔开。方法800还包括将环形色度直方图与滤色器卷积以生成二维热图(830)。方法800还包括基于二维热图确定输入图像的照明色度(840)。方法800还包括基于所确定的照明色度对输入图像着色,以生成颜色校正的输出图像(850)。

方法800可以包括附加步骤、特征或其他元素。例如,作为方法800的一部分生成的环形色度直方图可以是环形对数色度直方图。在方法800的一些实施例中,环形色度直方图的中心元素位于环形色度直方图的中心区域内,其中色度空间内的位置集合中与环形色度直方图的中心元素相对应的特定一个位置与预期的照明色度相对应。在方法800的一些实施方式中,确定输入图像的照明色度包括:(i)选择环形色度直方图的一个元素;(ii)从色度空间内与环形色度直方图的所选择的元素相对应的位置集合中选择色度空间内的位置;以及(iii)基于色度空间内的所选择的位置确定输入图像的照明色度。方法800还可以包括确定输入图像的平均色度。在这样的实施例中,从色度空间内与环形色度直方图的所选择的元素相对应的位置集合中选择色度空间内的位置可以包括:从色度空间内的位置集合中选择色度空间内与输入图像的平均色度最相似的位置。在方法800的一些实施例中,基于二维热图确定输入图像的照明色度包括确定二维热图的圆形平均值。在方法800的一些这样的实施例中,基于二维热图确定输入图像的照明色度还包括:确定关于所确定的圆形平均值的二维热图的协方差。在方法800的一些这样的实施例中,二维热图的所确定的圆形平均值和协方差与双变量vonmises分布的均值和协方差相对应。方法800还可以包括:(i)获得第二输入图像,其中第二输入图像包括具有第二相应颜色的第二多个像素;(ii)基于第二输入图像的像素的颜色,生成第二环形色度直方图,其中第二环形色度直方图的每个元素与第二输入图像的多个像素相对应,该多个像素在色度空间内的第二位置集合处具有色度值,其中对于第二环形色度直方图的第二特定元素的色度空间内的第二位置集合在色度空间内规则地间隔开;(iii)将第二环形色度直方图与滤色器卷积以生成第二二维热图;以及(iv)基于第二二维热图和为第一输入图像确定的照明色度,确定第二输入图像的第二照明色度。方法800还可以包括:(i)基于输入图像确定增强图像,其中增强图像包括具有另外相应颜色的另外多个像素;(ii)基于增强图像的像素的颜色,生成增强环形色度直方图,其中增强环形色度直方图的每个元素与增强图像的多个像素相对应,该多个像素在色度空间内的另外相应位置集合处具有色度值,其中对于增强环形色度直方图的另外特定元素的色度空间内的另外位置集合在色度空间内规则地间隔开;以及(iii)将增强环形色度直方图与另外的滤色器卷积以生成增强二维热图,其中确定输入图像的照明色度包括基于增强二维热图确定照明色度。在方法800的一些实施例中,获得输入图像包括操作图像传感器以生成输入图像。

图9是示出示例实施例的流程图。图9所示的实施例可以由计算设备(诸如数码相机设备500或计算设备600)来执行。然而,该实施例可以由其他类型的设备或设备子系统来执行。此外,该实施例可以与本说明书或附图中公开的任何方面或特征组合。

方法900包括由计算设备获得多个输入图像(910)。多个输入图像中的每个输入图像包括具有相应颜色的多个像素。方法900另外包括由服务器获得多个照明色度(920)。多个照明色度中的每个照明色度与多个输入图像中的相应输入图像相对应。方法900还包括基于多个输入图像中的第一输入图像的像素的颜色生成环形色度直方图(930)。环形色度直方图的每个元素与第一输入图像的多个像素相对应,该多个像素在色度空间内的相应位置集合处具有色度值。对于环形色度直方图的特定元素的色度空间内的位置集合在色度空间内规则地间隔开。方法900还包括将环形色度直方图与滤色器卷积以生成二维热图(940)。方法900另外包括基于二维热图确定第一输入图像的估计照明色度(950)。方法900还包括确定估计照明色度与多个照明色度中的与第一输入图像相对应的第一照明色度之间的差(960)。方法900还包括基于所确定的估计照明色度和第一照明色度之间的差来更新滤色器,以生成更新的滤色器(970)。方法900还包括由服务器将更新的滤色器的指示发送到远程系统(980)。

方法900可以包括附加步骤、特征或其他元素。例如,作为方法900的一部分生成的环形色度直方图可以是环形对数色度直方图。在方法900的一些实施例中,环形色度直方图的中心元素位于环形色度直方图的中心区域内,并且色度空间内的位置集合中与环形色度直方图的中心元素相对应的特定一个位置与预期的照明色度相对应。在方法900的一些实施例中,确定第一输入图像的估计照明色度包括:(i)选择环形色度直方图的一个元素;(ii)从色度空间内与环形色度直方图的所选择的元素相对应的位置集合中选择色度空间内的位置;(iii)基于色度空间内的所选择的位置确定第一输入图像的估计照明色度。方法900还可以包括确定第一输入图像的平均色度,并且从色度空间内与环形色度直方图的所选择的元素相对应的位置集合中选择色度空间内的位置可以包括:从色度空间内的位置集合选择色度空间内与第一输入图像的平均色度最相似的位置。在方法900的一些实施例中,基于二维热图确定第一输入图像的估计照明色度包括:确定二维热图的圆形平均值。在方法900的一些实施例中,基于二维热图确定第一输入图像的估计照明色度还包括:确定二维热图的关于所确定的圆形平均值的协方差。在方法900的一些这样的实施例中,所确定的二维热图的圆形平均值和协方差与双变量vonmises分布的平均值和协方差相对应。方法900还可以包括:(i)基于第一输入图像确定增强图像,其中增强图像包括具有另外相应颜色的另外多个像素;(ii)基于增强图像的像素的颜色,生成增强环形色度直方图,其中增强环形色度直方图的每个元素与增强图像的多个像素相对应,该多个像素在色度空间内的另外相应位置集合处具有色度值,其中对于增强环形色度直方图的另外特定元素的色度空间内的另外位置集合在色度空间内规则地间隔开;以及(iii)将增强环形色度直方图与另外的滤色器卷积以生成另外的增强二维热图,其中确定第一输入图像的估计照明色度包括:基于增强二维热图确定估计照明色度。在方法900的一些实施例中,由服务器向远程系统发送更新的滤色器的指示包括:将更新的滤色器的指示发送到图像捕获设备。

vi.结论

本公开不限于本申请中描述的特定实施例,其旨在说明各个方面。如本领域技术人员显而易见的,可以在不脱离其范围的情况下进行许多修改和变化。除了本文列举的那些方法和装置之外,从前面的描述,本公开范围内的功能等同的方法和装置对于本领域技术人员而言是显而易见的。这些修改和变化旨在落入所附权利要求的范围内。

以上详细描述参考附图描述了所公开的系统、设备和方法的各种特征和功能。本文和附图中描述的示例实施例不意味着限制。在不脱离本文提出的主题的范围的情况下,可以利用其他实施例,并且可以进行其他改变。容易理解的是,如本文一般描述的并且在附图中示出的本公开的方面可以以各种不同的配置来布置、替换、组合、分离和设计,所有这些都明确设想于此。

根据示例实施例,关于附图中并且如本文讨论的任何或所有消息流程图、场景和流程图,每个步骤、块和/或通信可以表示信息的处理和/或信息的传输。替代实施例包括在这些示例实施例的范围内。在这些替换实施例中,例如,描述为步骤、块、传输、通信、请求、响应和/或消息的功能可以与所示或讨论的顺序不同的顺序执行,包括基本上并发或相反的顺序,这取决于涉及的功能。此外,可以将更多或更少的块和/或功能与本文讨论的任何梯形图、场景和流程图一起使用,并且这些梯形图、场景和流程图可以部分地或全部地彼此组合。

表示信息处理的步骤或块可以对应于可以被配置为执行本文描述的方法或技术的特定逻辑功能的电路。替代地或另外地,表示信息处理的步骤或块可以对应于模块、段或程序代码的一部分(包括相关数据)。程序代码可以包括可由处理器执行的一个或多个指令,用于实现该方法或技术中的特定逻辑功能或动作。程序代码和/或相关数据可以存储在任何类型的计算机可读介质上,诸如包括磁盘、硬盘驱动或其他存储介质的存储设备。

计算机可读介质还可以包括非暂时性计算机可读介质,诸如计算机可读介质,其在短时间段内存储数据,如寄存器存储器、处理器高速缓存和随机存取存储器(ram)。计算机可读介质还可以包括非暂时性计算机可读介质,其在更长的时间段存储程序代码和/或数据。因此,计算机可读介质可以包括二级或持久长期存储,例如像只读存储器(rom)、光盘或磁盘、光盘只读存储器(cd-rom)。计算机可读介质还可以是任何其他易失性或非易失性存储系统。计算机可读介质可以被认为是计算机可读存储介质,例如有形存储设备。

此外,表示一个或多个信息传输的步骤或块可以对应于同一物理设备中的软件和/或硬件模块之间的信息传输。然而,其他信息传输可以在不同物理设备中的软件模块和/或硬件模块之间。

附图中所示的特定布置不应视为限制。应该理解的是,其他实施例可以包括给定图中所示的更多或更少的每个元件。此外,可以组合或省略一些所示元件。此外,示例实施例可以包括未在附图中示出的元件。

另外,本说明书或权利要求中的元件、块或步骤的任何列举是出于清楚的目的。因此,这种列举不应被解释为要求或暗示这些元件、块或步骤遵循特定布置或以特定顺序执行。

虽然本文已经公开了各种方面和实施例,但是其他方面和实施例对于本领域技术人员而言将是显而易见的。本文公开的各个方面和实施例是出于说明的目的而不是限制性的,其真正的范围由所附权利要求指示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1