色调映射

阅读:489发布:2020-05-11

专利汇可以提供色调映射专利检索,专利查询,专利分析的服务。并且公开了一种 色调 映射单元,其应用色调映射到 像素 值 块 。在多次 迭代 中的每次迭代中,基于信息处理像素值的一个或多个行,该信息涉及已经在至少一个先前迭代中被处理的块的至少一个先前行的像素值。该信息被用于确定一个或多个色调映射关系,该关系被用于将当前行的像素值映射到经色调映射的像素值。此外,基于当前行的像素值来更新该信息,并储存该信息以在随后的迭代中用于处理块的像素值的随后行的像素值。,下面是色调映射专利的具体信息内容。

1.一种校正像素的输入色度值的方法,用于基于经色调映射的明度值来确定用于所述像素的经校正的色度值,所述经色调映射的明度值已经通过应用色调映射到所述像素的输入明度值确定,所述方法包括:
基于所述输入色度值、所述输入明度值和所述经色调映射的明度值,来确定用于所述像素的候选的经校正色度值,从而针对每个像素,从所述输入明度值和所述输入色度值确定的第一饱和度与从所述经色调映射的明度值和所述候选的经校正的色度值确定的第二饱和度具有预定关系;
确定可信度权重,其指示在相应的所述候选的经校正色度值中的可信度,其中所述可信度权重依赖于相应的所述像素的所述输入明度值而被确定;以及
针对每个像素,使用所确定的可信度权重来执行对相应的所述候选的经校正色度值与相应的所述输入色度值的加权组合,由此确定用于所述像素的所述经校正的色度值。
2.根据权利要求1所述的方法,其中确定所述可信度权重使得,如果像素的所述输入明度值在可用明度值范围的最大值或最小值附近,那么用于所述像素的所述可信度权重低于如果用于所述像素的所述输入明度值未处于所述可用明度值范围的所述最大值或所述最小值附近的情况。
3.根据权利要求2所述的方法,其中对于位置(i,j)处的像素,所述可信度权重confi,j由下式给出:
confi,j=min(1,ωc·(1-2·|0.5-nLi,j|))
其中nLi,j为位置(i,j)处的所述像素的被归一化至从0到1的范围内的所述输入明度值,而ωc是可信度比例因子。
4.根据前述权利要求1-3中任一项所述的方法,其中所述预定关系为使得所述第一饱和度等于所述第二饱和度。
5.根据前述权利要求1-3中任一项所述的方法,其中所述预定关系为,使得所述第二饱和度由所述第一饱和度乘以饱和度比例因子给出。
6.一种色度处理模,其配置为校正像素的输入色度值,以基于经色调映射的明度值来确定用于所述像素的经校正的色度值,所述经色调映射的明度值已经通过应用色调映射到所述像素的输入明度值确定,所述色度处理模块配置用于:
基于所述输入色度值、所述输入明度值和所述经色调映射的明度值,来确定用于所述像素的候选的经校正色度值,从而对于每个像素,从所述输入明度值和所述输入色度值确定的第一饱和度与从所述经色调映射的明度值和所述候选的经校正的色度值确定的第二饱和度具有预定关系;
依赖于相应的所述像素的所述输入明度值,来确定可信度权重,所述可信度权重指示在相应的所述候选的经校正色度值中的可信度;以及
针对每个像素,使用确定的所述可信度权重来执行对相应的所述候选的经校正色度值与相应的所述输入色度值的加权组合,以由此确定用于所述像素的所述经校正的色度值。
7.根据权利要求6所述的色度处理模块,其中所述色度处理模块配置用于确定所述可信度权重使得,如果像素的所述输入明度值在可用明度值范围的最大值或最小值附近,那么用于所述像素的所述可信度权重低于如果用于所述像素的所述输入明度值未处于所述可用明度值范围的所述最大值或所述最小值附近的情况。
8.根据权利要求7所述的色度处理模块,其中所述色度处理模块配置用于对于位置(i,j)处的像素,根据下述等式确定所述可信度权重confi,j:
confi,j=min(1,ωc·(1-2·|0.5-nLi,j|))
其中nLi,j为位置(i,j)处的所述像素的被归一化至从0到1的范围内的所述输入明度值,而ωc是可信度比例因子。
9.根据前述权利要求6-8中任一项所述的色度处理模块,其中所述预定关系为使得所述第一饱和度等于所述第二饱和度。
10.根据前述权利要求6-8中任一项所述的色度处理模块,其中所述预定关系为使得所述第二饱和度由所述第一饱和度乘以饱和度比例因子给出。
11.根据前述权利要求6-10中任一项所述的色度处理模块,其中所述色度处理模块实施为色调映射单元的一部分,所述色调映射单元包括明度处理模块,所述明度处理模块配置用于通过应用色调映射到所述像素的输入明度值来确定所述经色调映射的明度值,并且其中所述色度处理模块配置用于从所述明度处理模块接收所述经色调映射的明度值。
12.一种计算机可读代码,当所述代码在计算机上运行时,适于执行根据权利要求1-5中任一项所述的方法的步骤。
13.一种计算机可读存储介质,其上编码有根据权利要求12所述的计算机可读代码。
14.一种计算机可读代码,用于产生根据前述权利要求6-11中任一项所述的色度处理模块。
15.一种计算机可读存储介质,其上编码有用于产生根据权利要求6-11中任一项所述的色度处理模块的计算机可读代码。

说明书全文

色调映射

技术领域

[0001] 本发明涉及色调映射。

背景技术

[0002] 色调映射是一种技术,用在图像处理和计算机图形处理中以将一组像素值(例如,明度及/或色度值)映射到另一组像素值,以便给出比实际可得到的更高的动态范围的印象。原始图像的像素值范围被映射到经色调映射的像素值的不同范围以便为该图像实现“更好”外观,其例如可以在下述方面更好,对比度增强、图像中的细节改善或者动态范围增大等等。
[0003] 一种应用色调映射的方法是为图像来计算全局色调映射曲线,其为图像中的所有像素限定了输入和输出像素强度平之间的对应关系。作为例子,当色调映射将被应用到由照相机捕获的图像时,一旦特定照相机模式已经被设定,则全局色调映射曲线可以被固定,并且在处理一系列图像(例如记录视频时)期间一般不会被更新。用于提取全局色调映射的技术在不同系统中可以是不同的,但全局色调映射的深层目标都是指派更大范围的输出像素值到原始图像的最频繁出现的像素值。
[0004] 图1示出一种示例系统,其应用全局色调映射到包括原始明度值104和原始色度值106的原始图像102,由此确定包括经色调映射的明度值110和经校正的色度值112的经色度映射的图像108。确定了明度值的直方图114。该直方图示出明度值在可用明度值范围(例如从0至255,其中每个明度值包括8比特)上的分布。直方图114被用于确定色调映射曲线116,该曲线描述用于将图像的明度值映射到经色调映射的明度值的合适的色调映射。色调映射曲线116具有沿着x轴的原始明度值和在y轴上的经色调映射明度值。色调映射曲线116例如可以通过对直方图114进行积分而确定。然后映射模118使用色调映射曲线116将原始明度值104映射到经色调映射的明度值110。色度处理模块120使用该经色调映射明度值110以校正原始色度值106,由此确定经色调映射的图像108的经校正的色度值112。
[0005] 如上所述的为整个图像应用单个的全局色调映射曲线可以提供普遍的外观改善,但是图像的具有相同像素值的所有像素不得不映射到相同的输出值,不管周围区域的像素值如何。因此,就具有指定特征的图像区域的局部增强而言,使用全局映射曲线是有限的解决方案。

发明内容

[0006] 提供本概要以用简单的形式介绍概念的选段,其将在具体实施方式中被进一步描述。本概要并非要标识出所主张权利的主题的关键特征或本质特征,也并非要用于限制所主张权利的主题的范围。
[0007] 色调映射单元应用色调映射到像素值块。在多次迭代的每次迭代中,基于涉及在至少一个先前迭代中已经被处理的、块的至少一个先前行(line)的像素值的信息,来处理一个或多个行的像素值。该信息被用于确定一个或多个色调映射关系,该关系被用于将当前行的像素值映射到经色调映射的像素值。此外,该信息基于当前行的像素值而更新,并且被存储以在随后的迭代中用于处理该块的像素值的随后行的像素值。
[0008] 提供一种应用色调映射到像素值块的方法,该像素值块包括多行像素值,该方法包括,在多次迭代的每次迭代中:接收该块的像素值的当前行;取回储存的信息,该信息涉及该块的在至少一个先前迭代中已经处理的至少一个先前行的像素值;使用该取回的信息以:(i)确定更新后的信息,该信息依赖于该当前行的像素值而更新;以及(ii)确定一个或多个色调映射关系,用于将该当前行的像素值映射到经色调映射的像素值;使用确定的该一个或多个色调映射关系,来将该当前行的像素值映射到经色调映射的像素值;以及储存该更新后的信息,以用于在随后的迭代中处理该块的像素值的随后行的像素值。
[0009] 还提供一种方法,其校正像素的输入色度值以基于经色调映射的明度值来确定用于该像素的经校正的色度值,该经色调映射的明度值是已经通过应用色调映射到像素的输入明度值而确定的,该方法包括:基于输入色度值、输入明度值和经色调映射的明度值而确定用于像素的候选的经校正色度值,从而对于每个像素,从输入明度值和输入色度值确定的第一饱和度与从经色调映射的明度值和候选的经校正的色度值确定的第二饱和度具有预定关系;确定可信度权重,其指示在各自的候选经校正色度值中的可信度,其中可信度权重依赖于各像素的输入明度值而被确定;以及针对每个像素,使用确定的该可信度权重来执行各自的候选经校正色度值与各自的输入色度值的加权组合,由此确定用于像素的经校正的色度值。
[0010] 还提供一种色调映射单元,其配置用于应用色调映射到包括多行像素值的像素值块,该色调映射单元包括处理模块,该处理模块配置为在多次迭代的每次迭代中:接收该块的像素值的当前行;取回储存的信息,该信息涉及在至少一个先前迭代中已经处理的该块的至少一个先前行的像素值;使用该取回的信息以:(i)确定更新后的信息其依赖于该当前行的像素值而更新,以及(ii)确定一个或多个色调映射关系,用于将该当前行的像素值映射到经色调映射的像素值;使用确定的该一个或多个色调映射关系,将该当前行的像素值映射到经色调映射的像素值;以及储存该更新后的信息,以用于在随后的迭代中处理该块的像素值的随后行的像素值。
[0011] 还提供一种色度处理模块,其配置用于校正像素的输入色度值,以基于经色调映射的明度值来确定用于该像素的经校正的色度值,该经色调映射的明度值是已经通过应用色调映射到像素的输入明度值而确定的,该色度处理模块配置用于:基于输入色度值、输入明度值和经色调映射的明度值,来确定用于像素的候选的经校正色度值,从而对于每个像素,从输入明度值和输入色度值确定的第一饱和度、与从经色调映射的明度值和候选的经校正的色度值确定的第二饱和度,具有预定的关系;依赖于各像素的输入明度值来确定可信度权重,可信度权重指示在各候选的经校正色度值中的可信度;以及针对每个像素,使用确定的该可信度权重来执行各自的候选的经校正色度值与各自的输入色度值的加权组合,由此确定用于像素的经校正的色度值。
[0012] 还提供计算机可读代码、以及其上编码有计算机可读代码的计算机可读存储介质,当该代码在计算机上运行时,适于执行本文描述的任何方法的步骤。
[0013] 对本领域技术人员显而易见的是,可以根据需要结合上述特征,并且这些特征可以和本文描述的示例的任何方面结合。附图说明
[0014] 现在将参考附图来详细地描述示例,在附图中:
[0015] 图1示出用于应用全局色调映射到原始图像的现有技术系统;
[0016] 图2示出用于确定局部色调映射曲线的系统;
[0017] 图3示出应用局部色调映射曲线以确定经色调映射的像素值;
[0018] 图4为图像处理系统的示意图;
[0019] 图5为色调映射单元的示意图;
[0020] 图6为应用色调映射到像素值块的流程图
[0021] 图7示出横跨像素值范围的直方图的箱;
[0022] 图8a和图8b描绘出在两个示例中的特定栏中的像素行;
[0023] 图9描绘出应用从不同栏的色调映射曲线以确定经色调映射的像素值;
[0024] 图10示出当使用色调映射曲线确定经色调映射像素值时,被应用到该色调映射曲线的加权;
[0025] 图11a至图11c描绘出当使用三个色调映射曲线确定经色调映射的像素值时,被应用到这三个色调映射曲线的加权;
[0026] 图12描绘出在每次迭代中对多个行的并行处理;
[0027] 图13为应用校正到输入色度值的方法的流程图;
[0028] 图14a示出的图形描绘出作为第一示例中的输入明度值的函数的候选经校正的色度值的可信度权重;以及
[0029] 图14b示出的图形描绘出作为第二示例中的输入明度值的函数的候选经校正的色度值的可信度权重。
[0030] 附图示出各种示例。本领域人员将意识到,在图中的示出的元件边界(例如箱、箱组或者其他形状)表示边界的一个示例。在一些示例中可以是,一个元件可以被设计为多个元件或者多个元件可以被设计为一个元件。在合适情况下,贯穿附图使用共同的附图标记以指示相似的特征。

具体实施方式

[0031] 与图1中示出的系统形成对照,图1中系统使用全局色调映射曲线用于将所有明度值映射到经色调映射的明度值,像素值块(表示图像)可以被分成多个子块,其中每个子块能够被分析以确定相应的用于该子块的直方图和局部色调映射曲线。这样的系统在图2中在示例中展现,其中图像为一系列中的帧(例如视频序列的帧)。如图2中所示,以与图1中所示对应的方式,整个先前帧的明度值202被用于确定直方图204,然后直方图被用于确定全局色调映射曲线206。然而,图2也示出当前帧208的明度值,在图2中能够看到,当前帧208被分成多个子块(由图2中的虚线指示)。在图2中所示的示例中,图像208被分成子块的5×4阵列。对于图像208的每个子块,展现在子块中的像素值分布的直方图被确定,并且然后被用于确定用于该子块的局部色调映射曲线。虽然为了清楚起见,图2仅针对图像208的三个子块示出直方图和局部色调映射曲线(图像208的左上子块被标记为210),但是将为图像208中的每个子块确定各自的直方图和局部色调映射曲线。对于每个子块,局部色调映射曲线与全局色调映射曲线206结合以确定各自的色调映射曲线,例如为左上子块确定组合曲线2121。确定用于子块的组合曲线的阵列214。
[0032] 图3示出了能够如何将针对块214的子块的色调映射曲线212用于确定针对像素302的经色调映射的像素值。最靠近像素302的四个子块具有各自的色调映射曲线2121、
2122、2123和2124。可以通过使用不同色调映射曲线2121、2122、2123和2124来确定用于该像素的各自的经色调映射的像素值,然后根据像素302的位置执行该四个不同的经色调映射像素值的二维内插,从而确定用于像素302的经色调映射的值。
[0033] 参考图2和3描述的系统,其使用局部色调映射曲线,克服了上面提到的与使用全局色调映射曲线有关的问题(如参考图1描述的),原因在于局部色调映射曲线允许不同映射被应用在图像的不同区域中,由此允许对具有指定特征的图像区域的局部增强。参考图2和3描述的系统非常适合于在软件中实施,该软件能够随机访问图像的不同区域,以便例如确定特定子块的所有像素值以用于确定针对该特定子块的直方图和局部色调映射曲线。
[0034] 然而,如果对图像的不同部分的随机访问是不可用的话,那么实施参考图2和3描述的局部色调映射系统可能会有问题。例如,如果色调映射被应用在相机管线的硬件模块中(该硬件模块在从图像传感器接收像素数据行时处理像素数据行),那么当应用色调映射时,对该图像的不同区域的随机访问可能对该硬件模块是不可用的。
[0035] 现在将描述仅作为示例的实施例,其能被用于应用局部色调映射到图像,即使在对图像的不同区域的随机访问是不可用的情况下。
[0036] 图4示出图像处理系统400,其包括图像传感器402和相机处理管线404。图像处理系统400可以实施在装置例如相机中。图像传感器402配置为捕获图像数据,并且提供与表示图像的像素阵列有关的像素数据到相机处理管线404。图像传感器402可捕获一系列图像,该图像然后能被用于表示视频序列的帧。像素数据可以是许多不同可能形式中的一种形式,例如用于像素的数据可以包括红-绿-蓝(RGB)值以表示在该像素位置处的相应三个颜色通道的强度。替代地,用于像素的数据可以包括明度值(例如标记为“Y”)和一个或多个色度值(例如标记为“U”和“V”或者标记为“Cr”或“Cb”)。相机处理管线404包括用于应用处理至像素数据的若干处理单元,包括色调映射单元406。经处理的像素数据从相机处理管线404输出,可用于任何适当方式,留输出至显示器、储存在存储器中等等。色调映射单元406配置为处理采用包括明度值和色度值的格式的像素数据,这样,如果在相机处理管线404处接收的像素数据不是包括明度值和色度值的格式,则相机处理管线406将包括转换单元,以在像素数据由色调映射单元406处理之前将像素数据的格式转换为明度值和色度值。
[0037] 当从图像传感器402接收到像素值时,例如按照光栅扫描次序,逐行地接收,涉及像素行的像素值在相机处理管线404中被处理。如下面更详细描述的那样,相机处理管线404可以每次并行处理像素数据的多个行。
[0038] 图5示出色调映射单元406的示意图,该单元配置为接收像素数据行。如上面描述的那样,在色调映射单元406处接收的像素数据包括针对像素的输入明度值和输入色度值。色调映射单元406包括明度处理模块502,该模块配置用于确定经色调映射的明度值。色调映射单元406也包括色度处理模块504,该模块配置用于基于已经应用到明度值的色调映射来确定经校正的色度值。明度处理模块502包括全局映射确定模块506和处理模块
508。处理模块508包括全局映射模块510、局部映射模块512、储存库514、第一乘法器516、第二乘法器518和加法器520。
[0039] 色度处理模块504、全局映射确定模块506和处理模块508(特别是全局映射模块510)布置为接收输入像素值行。情况可以是这样,即接收到的像素数据行的仅仅明度值被提供至明度处理模块502的模块,而接收到的像素数据行的明度值和色度值被提供至色度处理模块504。全局映射确定模块506的输出耦合到全局映射模块510的输入。全局映射模块510的输出耦合到局部映射模块512和乘法器518的各自输入。局部映射模块512耦合到储存库514。局部映射模块512的输出耦合到乘法器516的输入。乘法器518的输出耦合到加法器520的第一输入。乘法器516的输出耦合到加法器520的第二输入。加法器
520的输出耦合到色度处理模块504的输入,并被提供作为色调映射单元406的输出,以提供经色调映射的明度值。色度处理模块504的输出被提供作为色调映射单元406的输出,以提供经校正的色度值。应注意到,储存库514在图5中示出为位于处理模块508中,但是在其他示例中,储存库514可以实施在处理模块508外面及/或明度处理模块502外面及/或色调映射单元406外面。在本文详细描述的示例中,在处理模块508和色度处理模块504内的模块以硬件实施,而全局映射确定模块506以软件实施。然而,更一般地说,色调映射单元406的模块可以用硬件、软件或其组合而实施。
[0040] 由于像素数据在色调映射单元406处按照光栅扫描顺序(即,按照像素值的行)接收,因而可能无法如上面关于图2和3所述那样来应用局部色调映射。在简单示例中,色调映射单元406每次处理一行像素值,然后迭代(iterate)该方法以处理其他行像素值(虽然在更复杂示例中,可以在每次迭代中并行处理多行像素值)。为了减少色调映射单元406使用的数据存储量,先前处理的行的像素值未存储在色调映射单元406中。此外,当色调映射单元406正在处理当前行数据值时,用于图像的随后行(即,尚未处理的行)的像素值在色调映射单元406处是未知的。
[0041] 因此,不是如关于图2和3所述那样为子块确定局部色调映射曲线,色调映射单元406而是使用“滚动(rolling)信息”这一思想,滚动信息可以是滚动直方图或者滚动色调映射曲线,以通过储存仅仅少量关于先前处理的行的像素值的信息(即,比储存像素值自身明显更少的信息)来近似地实现局部色调映射曲线机制。在示例中,表示图像的像素值块被分为预定数量的栏(column),当处理每一排(row)像素值时,每栏计算一个直方图。在这个示例中,对于每个新行(即,排),像素栏的直方图中的每一个直方图被更新为先前直方图值与对应于新行的直方图值的加权组合。色调映射曲线能从针对每个新行的所得到的直方图中推导出来。以此方式,色调映射单元406能够在基于涉及先前行的像素值的信息而接收到每行像素值时,处理该每行像素值。更新后的信息被储存以用于处理后面的行。
[0042] 输入像素数据的明度值在明度处理模块502中被处理以确定经色调映射的明度值(例如,独立于该输入色度值)。明度处理模块502的操作参考图6中所示的流程图来描述。如前面解释的那样,图6中示出的方法步骤应用于接收到的每一行的像素值。
[0043] 在本文详细描述的示例中,在色调映射单元406处接收的输入像素数据涉及(例如视频序列的)一系列帧。用与上面的关于图1描述的相对应的方式,全局映射确定模块506使用帧的像素值来确定全局映射曲线。在帧的所有像素值都已经在色调映射单元处
406被接收以后,确定该全局映射曲线。因此,当在色调映射单元406处接收当前帧的像素值时,全局映射确定模块506能够基于先前帧(例如一系列帧中的紧挨着的先前帧)的像素值确定全局映射曲线。假设,针对当前帧的像素值的分布将充分类似于先前帧(例如,紧挨着的先前帧)的像素值的分布,从而基于先前帧的像素值所确定的全局映射曲线将适用于处理当前帧的像素值。由全局映射确定模块506确定的全局映射曲线被提供至全局映射模块510。在其他示例中,全局映射曲线可以针对特定传感器或者针对特定相机场景模式而被预先色调调节(pre-tune),在这种情况下全局映射确定模块506将不再接收像素数据并且将不再基于先前帧的像素数据来确定全局映射曲线。这样,全局映射曲线可能被固定至预定义值。在其他示例中,可能根本没有使用全局映射曲线,但是通常使用全局映射曲线在最终的经色调映射的像素值上提供更好的结果。
[0044] 在步骤S602中,在处理模块508处接收像素值行。特别是,该像素值行在全局映射模块510处接收。应该意识到,针对表示图像的像素值块的多行,来迭代图6中示出的方法。在当前迭代中正在被处理的像素值的行可以被称为像素值的“当前行”。如上所述,在明度处理模块502中处理的像素值是明度值。
[0045] 在步骤S604中,全局映射模块510使用从全局映射确定模块506接收的全局色调映射曲线,来确定针对当前行的像素值的经全局色调映射的像素值。全局映射模块510执行的操作可以由下述等式描述:
[0046] GMi,j=T[Li,j] (1)
[0047] 其中Li,j为图像中像素位置i、j处的输入明度值,T为全局映射函数(即,由全局映射确定模块506确定的全局映射曲线),GMi,j为得到的在像素位置i、j处的经全局色调映射的像素值。在图5中所示的示例中,使用从全局映射模块510输出的经全局映射的像素值来执行处理模块508中的剩余处理。
[0048] 在其他示例中,全局色调映射可以与局部色调映射分开地在接收到的像素值上执行,从而使用接收到的像素值(其上未执行全局映射)来执行处理模块508中的剩余处理。在这些其他示例中,全局色调映射并行于局部色调映射运行(而不是在局部色调映射之前运行),随后组合单独的全局和局部色调映射的结果。就是说,全局和局部色调映射两者均使用所接收到的像素值作为它们的输入,而不是让局部色调映射模块512使用来自全局色调映射模块510的全局色调映射的结果。在进一步的实施例中,全局色调映射可以根本不在所接收到的像素值上执行,在这种情况下,局部色调映射直接应用到所接收的像素值,并且局部色调映射的结果与所接收的像素值相结合以获得最终的经色调映射的像素值。然而,实验示出,通过结合局部和全局色调映射两者能够实现更好的结果。
[0049] 在本文详细描述的示例中,图像块包括多栏像素值,例如16栏像素值,并且如下面描述的那样,为每一栏确定一条滚动信息(例如,滚动直方图或者滚动色调映射曲线)。然而,在其他示例中,图像块可以不分成多个栏,于是滚动信息可以涉及覆盖图像块的整个宽度的像素值。
[0050] 经全局色调映射的像素值被传递到局部映射模块512。在步骤S606中,对于每一栏,局部映射模块512确定表示当前行中的像素值的分布的直方图。可能像素值的范围(例如,0至255,其中8比特用于像素值)被拆分为M个箱(bin),当前行的像素值被指派到合适的直方图的合适箱,由此确定直方图的值。
[0051] 在每个直方图中的箱的数量M,在不同示例中可以是不同的,例如,可以是2的次方以便简化使用直方图的计算。图7示出其中每个箱包括8个可能的像素值的示例,在图7中示出三个箱(箱N-1、箱N和箱N+1)。当前行的像素值示出位于箱N内。注意到由于直方图的相邻箱之间的较大差异而造成的在映射曲线上的急剧变化,能够导致在经色调映射的像素值中的不期望的影响。因此,为了避免这样的不期望影响,可能有用的是在直方图被用于确定色调映射曲线(如下所述)之前使其平滑。一种平滑该直方图的方法是,确定直方图使得当前行的每个像素值都对直方图的多个箱做出贡献。这样,对于每个像素值,局部映射模块512确定直方图的M个箱的哪一个箱对应于该像素值,然后计算对直方图的选定箱和相邻两个箱的贡献。例如,在用于图7中所示像素值所在的栏的合适直方图中,该像素值将提供贡献至箱N-1、箱N和箱N+1。像素值以根据像素值在可能像素值范围中的位置的加权方式,对三个不同箱做出贡献。例如,像素贡献的50%可以指派到像素值所在的箱N,而剩下的50%依照像素值到两个相邻箱的距离(在图7中标记为d1和d2)而分配在两个相邻箱(箱N-1和箱N+1)之间。例如,对箱N-1的贡献可以由 给出,其在图7中示出的例子中为 而对箱N+1的贡献可以由 给出,其在图7
示出的示例中为 如上所述,像素值对箱N的贡献为
[0052] 当来自当前行的对像素值的直方图的所有贡献都已经被考虑时,直方图可以被归一化以便简化使用直方图的后面的操作。每个直方图被归一化,从而使得直方图中的数值求和为一。直方图的归一化能在直方图计算期间进行,通过根据所计数的像素总数来调整每个像素对直方图箱的贡献;或者在其之后进行,通过将每个直方图箱除以直方图中的所有值的总和。
[0053] 在步骤S608中,局部映射模块512使一个或多个直方图变平。使该直方图变平,以便避免对具有恒定(或者几乎恒定)像素值图像区域进行过度校正,例如表示图像中的由相似色彩像素组成的大片区域的图像区域。具有恒定(或者几乎恒定)像素值的图像区域将只是在直方图的几个箱中具有高浓度的像素值。平化因子WF可以应用到直方图值以便使直方图变平。平化因子(flattening factor)WF可以针对涉及特定栏的直方图而被确定,从而其取决于当前行的像素值在特定栏内改变的程度。例如,根据下式,平化因子WF可以被计算为高于特定阈值ThF的、直方图中的值的加总,
[0054]
[0055] 其中M为直方图中的箱数,tH(i)为直方图在第i个箱中的值。在不同示例中阈值ThF可以设定为不同的值,并且可以在不同示例中为固定的或可变的。例如,在直方图被归一化的情形中,该阈值可以设定在0.25。结果是用于WF的值在0≤WF≤1的范围内,其中较高值的WF指示将应用更大程度的平化。对于在可能像素值的范围上均匀散布开的像素值,很可能直方图的箱中的任何一个箱都不会具有高于阈值ThF的值,在这种情况下,平化因子WF将确定为零。在这种情况下,如下所述,缺省平化将应用到直方图。然而,如果像素值集中到几个直方图箱中,那么更可能的是这些箱值将超过阈值ThF,在这种情况下,平化因子WF将确定为是非零的,并且将使一些平化被应用到直方图。换句话说,像素值在直方图箱中越集中,平化因子WF将确定为越大。
[0056] 针对每一栏的平化因子WF,被用于应用平化到针对该栏的相应直方图的M个箱,其中栏c的直方图的第i个箱中的值标记为tHc(i),由此确定了针对当前行且针对该栏的经平化的直方图Hc。经平化的直方图的第i个箱Hc(i)可以根据下述等式确定:
[0057]
[0058] 其中dWF表示对直方图的缺省平化。如果如上所述确定的平化因子WF非常小,则与简单地通过使用平化因子WF应用相比,我们可能想要应用更多的平化到直方图。因此,则这些情况中,我们使用缺省平化因子dWF而非平化因子WF。这帮助限制被应用的局部对比度增强的量,否则可能在最终图像中引起有害效果。缺省平化因子dWF在不同示例中可以被设定为不同的值,一般是较低的(例如在0≤dWF≤0.1的范围内),从而其只有在平化因子WF变得非常低时,即低于缺省平化因子dWF时,才被使用,因为这时局部对比度增强可能在最终图像中引起有害的效果。
[0059] 在这一点上,图像中的每一栏具有相关联的直方图(其可以被平滑化和变平),该直方图被计算以用于计算和更新每一栏的色调映射曲线。
[0060] 在步骤S610中,局部映射模块512使用针对该栏的相应直方图,例如通过对针对该栏的直方图进行积分,来为每一栏确定色调映射曲线。当通过对相应直方图进行积分来确定色调映射曲线时,色调映射曲线是单调上升曲线。对直方图进行积分只是可以如何利用直方图来确定色调映射曲线的一个示例。色调映射曲线可以被认为是传递函数,因为它们限定了在输入像素值和经色调映射的像素值之间的关系。从当前行的像素值推导出的、针对某一栏的色调映射曲线c,被标记为tTc,并且具有与相应直方图的M个箱的积分相对应的M个值。就是说,色调映射曲线的第一值tTc(1)=0。于是,对于色调映射曲线的后面的值有下式:
[0061] tTc(n)=tTc(n-1)+Hc(n-1) (4)
[0062] 对于2≤n≤M,其中M为直方图中的箱数。这里描述的积分是一种非常简单的、使用针对栏c的直方图Hc来确定针对该栏c的色调映射曲线tTc的方法,其在该色调映射单元406如上所述在相机处理管线404内实施时是有利的,因为当像素值被接收时色调映射单元406实时地处理像素值以减小在相机处理管线404中的延迟。在其他示例中(例如当色调映射单元不是在其中像素值需要实时处理的、作为相机处理管线的一部分的系统中实施时),可以根据需要使用更复杂的、使用针对栏c的直方图Hc来确定针对该栏c的色调映射曲线tTc的方法。
[0063] 已经根据上面的等式4被确定的、色调映射曲线的值tTc,将处于从0到1的范围内,因为直方图Hc已被归一化。然后色调映射曲线可以被缩放(scale),以便确定被缩放的经色调映射的曲线tT’c,该曲线根据下述等式而匹配可能的输出明度值的范围:
[0064] tT’c=tTc·(OMaxL-OMinL) (5)
[0065] 其中OMinL和OMaxL分别对应输出明度水平的最小值和最大值。例如,OMinl可以等于0而OMaxL可以等于255。在将像素值映射到经色调映射的像素值的步骤中(下面在步骤S616处描述),通过增加OMinL将结果移位,从而经色调映射的像素值的范围将处于OMaxL和OMinL之间。
[0066] 色调映射曲线tT’c是基于针对栏c的当前行的像素值而确定的曲线。然而,具有考虑了先前行的像素值的色调映射曲线,对于将输入像素值映射到经色调映射的像素值将是有用的。因此,基于为当前行和栏确定的色调映射曲线tT’c、以及在先前迭代中确定的滚动色调映射曲线,为像素值的每个新行(即,在本方法的每次迭代时)更新针对栏c的滚动色调映射曲线Tc。因此,在步骤S612中,局部映射模块512取回在先前迭代中已经确定的、针对该栏的滚动色调映射曲线(即,基于先前行)。在本方法的迭代之间,滚动色调映射曲线可以储存在储存库514中,这样取回滚动色调映射曲线的步骤可以包括从储存库514中取回它们。
[0067] 在步骤S614中,在第k次迭代时(即,针对像素值的第k行),局部映射模块512通过执行对为当前行确定的色调映射曲线tT’c以及在先前迭代Tc(k-1)中确定的滚动色调映射曲线加权组合,来确定滚动色调映射曲线Tc(k),例如根据下述等式:
[0068] Tc(k)=Tc(k-1)·(1-WT)+tT’c·WT (6)
[0069] 其中WT是更新加权因子,其在0≤WT≤1的范围内,并且在不同示例中其可以被设定为不同,以控制当前行对滚动色调映射曲线的贡献。设定WT能够控制滚动色调映射曲线对像素值的当前行是何等的“灵敏(reactive)”。WT的值通常对每一栏都是相同的。更新加权因子将控制,来自先前行的像素值对应用到当前行的像素值的色调映射的影响程度。越大的WT值意味着当前行对滚动色调映射曲线Tc贡献越大,并且对于每个先前行,先前行的贡献将以因子(1-WT)下降。应该意识到,使用滚动色调映射曲线,从而涉及先前行的像素值的信息能被用于应用局部色调映射到当前行,而无需在色调映射单元406中储存先前行的像素值。在上面关于图2和3描述的示例中,局部色调映射考虑了来自图像的方形子块的像素值。因此,作为示例,WT的值可以设定为,使得可以通过使用滚动色调映射曲线来考虑像素值的近似方形区域。因此,WT的值可依赖于栏的宽度。当我们进一步地回看像素值的先前行时,针对当前行的、那些像素值对滚动色调映射曲线的贡献减小。可以认为,如果先前行对当前滚动色调映射曲线Tc的贡献小于当前行对当前滚动对色调映射曲线Tc的贡献的1%,则先前行基本上没有对当前滚动色调映射曲线Tc做出贡献。这样,我们可以确定,对当前滚动色调映射曲线Tc做出实质性贡献的区域的有效高度是,对当前滚动色调映射曲线的贡献大于等于当前行对当前滚动色调映射曲线的贡献的1%的那些行。
[0070] 图8a示出像素值的栏,在该栏的行中有8个像素(在图8a中第一个像素被标记为8021)。就是说,该栏的宽度为8个像素。在图8a所述的示例中,WT=0.5。当前行在图8a中示出为“行k”。根据等式6,行k的像素值对针对行k的滚动色调映射曲线Tc(k)的贡献为0.5。对于当前行的x行之前的行,即,对于行k-x,行k-x的像素值对针对行k的滚动x+1
色调映射曲线Tc(k)的贡献为0.5 。行k-1至k-6具有大于行k的贡献的1%的贡献,而k-7行以及在行k-7之前的所有行的贡献均小于行k贡献的1%。因此,可以认为像素值的阴影区域804(即,7行像素值)对针对行k的滚动色调映射曲线Tc(k)做出实质贡献。因此,对于8像素宽的栏来说,WT=0.5可以是个好选择,因为区域804近似为方形。
[0071] 图8b示出将WT减小到0.3的效果。根据等式6,行k像素值对针对行k的滚动色调映射曲线Tc(k)的贡献为0.3。对于在当前行的x行之前的行,即,对于行k-x,行k-x的x像素值对针对行k的滚动色调映射曲线Tc(k)的贡献为0.3×0.7。因此行k-1到k-12具有大于行k贡献的1%的贡献,而行k-13以及所有的行k-13之前的行的贡献均小于行k的贡献的1%。因此,可以认为像素值的阴影区域806(即,13行像素值)对针对行k的滚动色调映射曲线Tc(k)做出实质贡献。因此,对于8像素宽的栏来说,WT=0.3可能被认为是太小了,因为区域806长大于宽。选择WT=0.3可能更适合与宽于8个像素的栏一起使用。
应该注意到,在一些示例中,目标可能不是让区域804或806近似为方形。在这些其他示例中,可以通过相应地设定WT的值而使用长且薄或者短且宽的区域。
[0072] 跟在步骤S614后面,已经确定了针对当前行的栏的滚动色调映射曲线。然后,在步骤S616中,局部映射模块512使用所确定的色调映射曲线来将当前行的像素值映射到经色调映射的像素值。作为在图9中展现的示例,对于当前行的每个像素值(例如对于像素906),步骤S614中确定的针对不同栏的滚动色调映射曲线中的多于一个(例如滚动色调映射曲线9041、9042和9043)以及从全局映射确定模块506接收的全局色调映射曲线902,被用于确定经色调映射的像素值。下面参考图10和11a至11c来解释像素值到经色调映射的像素值的映射。
[0073] 对于当前行的每个像素值,为了在栏之间获得平滑过渡,使用相应的多个局部色调映射关系(例如9041、9042和9043)来确定多个候选的经色调映射的像素值。对于在位置(i,j)处的特定像素的不同的候选的经色调映射的像素值然后可以被插值,以便得到经局部色调映射的像素值,本文中称为LMi,j。执行插值,使得像素的位置到不同栏的距离会影响到,使用针对不同栏的色调映射曲线所确定的候选的经色调映射的像素值将具有的、对经局部色调映射的像素值LMi,j的影响
[0074] 例如,图10示出作为像素位置的函数的,使用针对栏c的色调映射曲线所确定的候选像素值将具有的对LMi,j的影响力(或者“插值权重”)。如图10中所示,对于栏c中存在的像素,使用针对栏c的色调映射曲线所确定的候选的经色调映射的像素值将具有对LMi,j的50%的影响力。然而,如图10所示,剩下的50%分配在两个相邻的栏(即,栏c-1和栏c+1)之间。
[0075] 图11a到11c示出了,对于如图11a到11c中的虚线所指示的栏c中的给定像素位置,如何计算插值权重。图11a示出使用针对栏c-1的色调映射曲线确定的、用于候选经色调映射的像素值的插值权重,其在所指出的像素位置为37.5%。图11b示出使用针对栏c的色调映射曲线确定的、用于候选经色调映射的像素值的插值权重,其在所指出的像素位置为50%,因为像素位置位于栏c内。图11c示出使用针对栏c+1的色调映射曲线确定的、用于候选经色调映射的像素值的插值权重,其在所指出的像素位置为12.5%。不同栏的插值权重仅仅取决于像素位置,并且可以对不同像素位置进行预计算。应注意到,在这个示例中插值是一维插值,而在图3展现的系统中,插值是二维插值。一维插值比二维插值实施起来更简单,因此,实施地更快并且使用的处理能力更少。
[0076] 综上所述,对于在位置(i,j)处(即,在排i和栏j中)的像素,经局部色调映射的像素值LMi,j是基于经全局色调映射的像素值GMi,j(由全局映射模块510确定的)计算的,并且是基于相应栏的色调映射曲线T所确定的多个候选的经色调映射的像素值的插值,从而由下述等式给出经局部色调映射的像素值LMi,j:
[0077] LMi,j=Tc-1[GMi,j]·Wc-1+Tc[GMi,j]·Wc+Tc+1[GMi,j]·Wc+1 (7)
[0078] 其中Wc-1为栏c-1的插值权重(例如,在图11a所示示例中为37.5%),Wc为栏c的插值权重(例如,在图11b所示示例中为50%),而Wc+1为栏c+1的插值权重(例如,在图11c所示示例中为12.5%)。
[0079] 针对当前行所确定的最终经色调映射的像素值可以通过执行加权组合来确定,该加权组合为经局部色调映射的像素值LM和经全局色调映射的像素值GM的加权组合。例如,针对在位置(i,j)处的像素,最终经色调映射的像素值(标记为Mi,j)可以确定为,根据下述等式的、经全局色调映射的像素值GMi,j和经局部色调映射的像素值LMi,j的加权组合:
[0080] Mi,j=OMinL+GMi,j·(1-WLM)+LMi,j·WLM (8)
[0081] 其中,WLM是与指派给局部色调映射的贡献量相对应的加权因子。WLM是可配置的参数。局部和全局色调映射值LMi,j和GMi,j两者在从0至(OMaxL-OMinL)的范围内,这样等式8中OMinL的增加将最终经色调映射的像素值Mi,j定位在从到OMinL到OMaxL的范围内。在图5所示的示例中,经全局色调映射的像素值GMi,j和经局部色调映射的像素值LMi,j的加权组合,根据等式8,由乘法器516和518以及加法器520的组合来执行。就是说,乘法器516将经局部色调映射的像素值LMi,j乘以WLM,乘法器518将经全局色调映射的像素值GMi,j乘以(1-WLM),然后加法器520将来自乘法器516和518的输出加到OMinL,由此确定最终的经色调映射的像素值Mi,j。
[0082] 在步骤S618中,针对当前行(行k)更新的滚动的经色调映射曲线Tc(k)被储存在储存库514中。当针对当前行(行k)更新的滚动色调映射曲线Tc(k)储存在储存库514中时,先前储存的滚动色调映射曲线Tc(k-1)不再需要,并且能被从储存库514中移除或覆写。在本方法的后面的迭代中,能够从储存库取回该更新的滚动色调映射曲线,用于处理后面行的像素值。
[0083] 在步骤S618之后,本方法回到步骤S602并且重复进行下一迭代,即针对下一行像素值。本方法一直迭代直到已经处理了块的所有行。
[0084] 在上面描述的示例中,使用色调映射曲线来展现输入像素值和经色调映射的像素值之间的关系。在其他示例中,这种关系可以用除了曲线外的其他方式来展现,例如查找表。
[0085] 此外,在上面描述的示例中,取回的滚动色调映射曲线是基于当前行的像素值更新的,并且然后使用更新后的滚动色调映射曲线将色调映射应用到像素值。然而,也可以使用取回的滚动色调映射曲线(其基于先前行的像素值)来应用色调映射,然后更新该滚动色调映射曲线。这样做不会提供那么精确的色调映射(尽管差异非常小),因为当前行的像素值不会被考虑在局部色调映射中(只有先前行的像素值将被考虑),但这样仍然是一个可能的选项,其提供可接受的结果并且实施起来可能更简单。
[0086] 在上面详细描述的示例中,滚动色调映射曲线是这样的信息,其被储存的并且在每次迭代中被取回,以允许当前行的处理考虑到先前行的像素值,而无需在色调映射单元406中储存先前行的实际像素值。在其他示例中,被储存并且在每次迭代中被取回、以允许当前行的处理考虑到先前行的像素值的信息,可以是栏的直方图。在那种情况下,在每次迭代中,直方图将被取回;并且可以在被用于如上所述那样确定用于应用色调映射到当前行的像素值的色调映射曲线之前,基于当前行的像素值得到更新。就实施的容易性而言,在使用如上所述的滚动色调映射曲线(从而被储存并且在本方法的迭代之间被取回的是色调映射曲线)与使用滚动直方图(从而被储存且在本方法的迭代之间被取回的是直方图)之间并没有太大差别。在这些示例两种情况下,涉及先前行的像素值的滚动信息可以被取回并且用在当前迭代中,以确定用于将当前行的像素值映射到经色调映射的像素值的色调映射曲线。滚动信息基于当前行的像素值而更新并且被储存,从而它能用在后面的迭代中以处理后面行的像素值。以此方式,色调映射单元406能够在像素值行被接收时实时地处理像素值的行,而不需要储存像素值以用于处理后面的行。
[0087] 在上面描述的示例中,在每次迭代时处理一行像素值。然而,相机处理管线404可以能够并行处理多行像素值。因此,色调映射单元406能够在每次迭代中并行处理由行组成的块可能是有用的。因此,在其他示例中,可以在每次迭代中由色调映射单元406处理由多于一行所组成的块。就是说,在多次迭代中的每次迭代中,由块的像素值的两个或更多行所组成的子组被并行接收和处理,由此将接收到的由行组成的子组的像素值映射到经色调映射的像素值。在这种情况中,在当前迭代的结尾,基于在当前迭代中被处理的由行组成的子组(即,行块(line block))中的所有行的像素值来确定临时直方图,其在随后的迭代中能被用于确定针对随后行块的适当的色调映射曲线。
[0088] 例如,如图2中所示,在每次迭代时,包括四行像素值的行块可以被并行处理。图12示出在当前迭代(N)之前已经被处理了两次迭代的行块N-21202。图12还示出在当前迭代(N)之前已经被处理了一次迭代的行块N-11204,其中行块N-1包括行n-4、n-3、n-2和n-1。图12也示出将要在当前迭代中被处理的包括行n、n+1、n+2和n+3的行块N 1206。
在先前迭代的结尾,考虑到上至并且包括行块N-2中的行的所有行的像素值的滚动色调映射曲线Tc 1208,已经被确定并储存在储存库514中。此外,表示像素值在行块N-1中的分布的临时直方图1210已经在先前迭代结束之时得到确定。在当前迭代中,当前行块1204中的行n、n+1、n+2和n+3的像素值被并行处理,以确定针对这些行的经色调映射的像素值。
取回该临时直方图1210,并且基于从行块N-1中的像素值而确定的临时直方图1210来确定映射曲线1212。在已经确定了映射曲线1212以后,重置(即,清除)临时直方图,从而能够确定临时直方图1218以表示当前行块1206的像素值的分布。
[0089] 在块1214中,使用从行块N-1的像素值确定的映射曲线tT’c1212来更新滚动曲线1208。滚动曲线1208以对应于上面关于等式6所描述的方式更新,即:
[0090] Tc(blockN-1)=Tc(blockN-2)·(1-WT)+tT’c·WT
[0091] 其中WT是更新加权因子,其在0≤WT≤1的范围内。在一些示例中,在当前迭代中执行对滚动曲线的单个更新,然后更新后的滚动曲线被用于应用色调映射到当前行块1206的每一行中的像素值。这是一种简单的实施对滚动色调映射曲线的更新的方法,但是其可能在用于应用色调映射到块1206中的像素行的滚动色调映射曲线中,造成突然的变化。就是说,应用到行n-1的像素值的色调映射曲线可能没有考虑行n-2、n-3或者n-4中的像素值,然后突然地,应用到行n的像素值的色调映射曲线完全考虑到行n-4至n-1中的所有像素值。用在行n-1和行n之间的色调映射曲线的突然变化,可能在经色调映射的图像中引起感可感知的有害效果。因此,可能更好的方案是,在当前行块1206的行上逐渐地从行n到行n+3更新色调映射曲线。目的是分配从块N-1收集的统计数据的影响,从而在应用到块N内的每一行的滚动色调映射曲线中有平滑的改变。由于色调映射被并行应用到当前行块1206的所有行,因而滚动色调映射曲线中的逐渐变化是指,在从行n到n+3的改变上是“逐渐的”,而不是指随时间的改变。其实现途径可以是,通过应用不同的更新加权因子WT到用于与当前行块1206的相应行一起使用的滚动色调映射曲线。对于当前行块1206的最后一行,更新加权因子WT被设定为彻底更新滚动色调映射曲线Tc,上至行块N-1的结尾。这个彻底更新的滚动色调映射曲线Tc在图12中被标记为1216,并且被储存以用于随后的迭代。
对于在当前行块1206的行n+3之前的行,其更新加权因子WT相比于用于行n+3的更新加权因子被减小,从而在映射曲线1212处于从行n到行n+3的当前行块1206中的行之上的情况下,滚动色调映射曲线被逐渐更新到更大的程度。
[0092] 在示例中,对于当前行块1206的每一行,在当前迭代中执行下面的步骤:
[0093] -用来自该行的数据更新临时直方图,从而临时直方图包括表示在该行中的像素值分布的数据;
[0094] -如上所述用色调映射曲线tT’c更新该滚动色调映射曲线Tc,对该行使用适当的更新加权因子WT;以及
[0095] -如上所述,将更新后的色调映射曲线应用到该行的像素值。
[0096] 应注意到,在色调映射曲线被用于应用色调映射到当前行块1206的像素值之前,当前行块1206中的行的像素值未被用于更新色调映射曲线。如上所述,这提供可接受的结果;并且在这种情况中实施它,要比在应用色调映射曲线到当前行块1206的像素值之前用当前行块1206的行的像素值来更新色调映射曲线,更简单。
[0097] 如上所述,基于使用先前块(块N-1)(即,上至行n-1)的像素值所确定的色调映射曲线1212,来更新滚动色调映射曲线Tc。因此,在被用于应用色调映射到当前行块1206的不同行的像素值的映射曲线信息有“多新”方面,存在差异。例如,行n具有使用来自像素值的先前行(行n-1)的信息而更新的信息。形成对比,行n+3具有使用来自向前四行(行n-1)的信息而更新的信息。这可能造成问题。上面描述的在滚动色调映射曲线中的逐渐变化(通过为当前行块1206中的不同行使用不同的更新加权因子),帮助减轻这种情况可能具有的有害效果,但是其可能仍会引发问题,并且行块中的行数越大,这些问题可能会越大。然而,已经进行了实验以保证一起并行处理多行的效果是可接受的。已经确定,使用包括四行像素值的行块是可接受的。在下述方面之间有权衡:(i)来自像素值行被处理的速度的提高(通过并行处理像素值行)的好处,以及(ii)在用于处理一些行的色调映射曲线中的轻微不精确的缺点。当色调映射单元406实施在其中像素数据被实时处理的相机处理管线404中时,权衡可能倾向于并行处理多行像素值(例如图12中所示的四行像素值)。然而,如果色调映射单元406不是实施在相机处理管线中,使得像素数据不需要被实时处理,那么权衡可能倾向于依序处理该行,即每次一行而非并行地处理。
[0098] 在当前迭代中,色调映射被并行应用到当前行块1206的行,在当前迭代结尾处,更新该滚动色调映射曲线1216上至行块1204的结尾,临时直方图(在图12中标记为1218)表示当前行块1206的行中的像素值的分布。这些信息被储存用于下一次迭代,以应用色调映射到下一行块(即,包括行n+4到n+7的行块)的行。
[0099] 上面已经描述了从输入明度值确定经色调映射的明度值的明度处理模块502的处理。由于色调映射的影响而造成的对明度值的变化可能引起对应的色度值的表现的变化。因此,依照已经应用到明度值的色调映射来校正色度值是有用的。参考图13所示的流程图,现在描述色度处理模块504的处理,其依照由明度处理模块502已经应用到输入明度值的色调映射、基于输入色度值,来确定经校正的色度值。
[0100] 在已经通过明度处理模块502确定经色调映射的明度值之后,由色度处理模块504执行色度校正。在步骤S1302中,在色度处理模块504处从到色调映射单元406的输入接收输入明度值和输入色度值。此外,在步骤S1302中,在色度处理模块504从明度处理模块502接收经色调映射的明度值。
[0101] 在步骤S1304中,基于输入色度值、输入明度值和经色调映射的明度值,来为像素确定候选的经校正的色度值。确定候选的经校正的色度值以保留每个像素的原始色饱和度,不管源于色调映射的明度水平中的变化如何。对于像素,有两个色度值(例如,Cb和Cr),并且将同一校正应用到两个色度值上。这样我们仅描述针对位置(i,j)处的像素的、被应用到输入色度值ChromalNi,j的校正,但是应该理解,ChromalNi,j可以代表两个输入色度值中的任何一个。
[0102] 针对位置(i,j)处的像素的输入明度值和经色调映射的明度值在本文中被分别标记为Li,j和Mi,j。在本文描述的示例中,明度值被归一化,使得Li,j和Mi,j两者都在同一范围内。此外,输入色度值被移位,从而中性色度值对应零,一些色度值将是负数。
[0103] 计算中的第一个步骤是计算输入像素饱和度SatINi,j为
[0104]
[0105] 其近似地表示在针对一个像素的输入色度值和输入明度值之间的比率。c项为任意小的值,这样它不会对根据等式9计算而得的饱和度有实质性的影响,同时当分母值Li,j接近零时避免数值不稳定。
[0106] 确定第二饱和度cSati,j,其描述经色调映射的明度值和候选的经校正的色度值之间的关系,从而对于在位置(i,j)处的像素,候选的经校正的色度值Cand_ChromaOUTi,j由下式给出:
[0107] Cand_ChromaOUTi,j=cSati,j·Mi,j (10)
[0108] 第二饱和度cSati,j与第一饱和度SatINi,j具有由饱和度比例因子Ws限定的预定关系,使得:
[0109] cSati,j=Ws·SatINi,j (11)
[0110] 在期望增大或减小饱和度校正的情况下,能够控制饱和度比例因子Ws以控制饱和度校正。饱和度比例因子可以等于1,从而cSati,j=SatINi,j。在其他示例中,饱和度比例因子可以不等于1,从而cSati,j≠SatINi,j。
[0111] 针对具有中间范围的输入明度值(即,不在可用明度值范围的最大值或最小值附近)的像素,候选的经校正色度值Cand_ChromaOUTi,j可以提供良好的色度校正,并且可被用作从色度处理模块504输出的经校正的色度值。然而,有可能的是,在具有非常高或非常低的明度值的像素中存在的残余色度值,成为变得明显(不期望这样),如果明度处理模块502应用的色调映射显著地改变相关联的明度值、并且依照对明度值的改变而缩放色度值的话。因此,色度处理方法包括机制,用于限制当在明度值中发生大的变化时由对色度值的过度修改所导致的潜在‘错误’情形。
[0112] 就是说,在步骤S1306中,依赖于相应像素的输入明度值Li,j,,来确定用于像素的可信度权重confi,j。可信度权重指示在各候选的经校正的色度值Cand_ChromaOUTi,j中的可信度。确定可信度权重confi,j,从而如果像素的输入明度值Li,j在可用明度值的范围的最大值或最小值附近,则针对该像素的可信度权重confi,j低于,如果像素的输入明度值Li,j不在可用明度值的范围的最大值或最小值附近的情况。
[0113] 例如,对于位置(i,j)处的像素,可信度权重confi,j可以由下式给出:
[0114] confi,j=min(1,ωc·(1-2·|0.5-nLi,j|)) (12)
[0115] 其中nLi,j为在位置(i,j)处的像素的、被归一化至处于从0到1的范围内的输入明度值,ωc是可信度比例因子。
[0116] 可信度权重confi,j在从0和1的范围中取值,并且对于非常低或者非常高的输入明度值倾向于为0,而对于中间范围的输入明度值倾向于为1。可信度比例因子ωc是可配置的,从而在候选的经校正的色度值中的可信度在不同示例中能被配置为不同。等式12中的“min”函数意思是confi,j的值可以被修剪(clip)使得其不超过1。
[0117] 图14a示出行1402,其展现出confi,j的值为采用可信度比例因子Wc=1而获得的输入明度值Li,j的函数。在这个示例中,当nLi,j=0.5时,confi,j达到最大值1,其针对处于可能范围的中间的明度值,该明度值对应于候选的经校正的色度值Cand_ChromaOUTi,j中的最高可信度。
[0118] 图14b示出行1406,其展现出confi,j的值为采用可信度比例因子Wc=3而获得的输入明度值Li,j的函数。图14b也示出虚线行1404,其展现出如果没有被在1处修剪,则confi,j将会具有的值。该修剪使行1406为梯形,具有:对应于最大可能可信度权重(confi,j=1)的大的输入明度值范围;以及在输入明度值的最大值和最小值附近的窄的区域(在图14b中示出为虚线区域14081和14082),其中可信度权重下降到低于1并且接近零的。
[0119] 在步骤S1308中,针对各个像素所确定的可信度权重confi,j被用于执行各自候选经校正的色度值Cand_ChromaOUTi,j与各自输入色度值ChromaINi,j的加权组合,由此为像素确定能够从色度处理模块504输出的经校正的色度值ChromaOUTi,j。
[0120] 可信度权重confi,j被用于以下两方面:加权将输入色度值校正到何种程度,以及如果归一化的输入明度值非常接近0或1的话则按比例缩小像素的饱和度。对于位置(i,j)处的像素,经校正的色度值ChromaOUTi,j可以根据下述等式计算:
[0121] ChromaOUTi,j=Cand_ChromaOUTi,j·confi,j+ChromaINi,j·(1-confi,j) (13)[0122] 应注意到,输入和输出色度值的范围可以是不同的(由于不同的比特深度)并且可以被加正负符号或者无正负符号。因此,可以在本文描述的示例中顾及下面的考虑因素而执行前面描述的操作:
[0123] -对于第一饱和度SatINi,j的计算,使用有符号的输入明度值,输入色度值的中心为零(即,中性色度=0)。因此,得到的饱和度SatINi,j将被相应地加上正负符号。
[0124] -当计算经校正的色度值ChromaOUTi,j时,在Li,j和Mi,j的范围之间的差异可以被考虑进去。例如,Li,j的值可以被缩放以匹配Mi,j的范围。
[0125] -经校正的色度值ChromaOUTi,j可以被缩放,从而它们具有适当的比特深度和正负符号。
[0126] 从明度处理模块502输出的经色调映射的明度值、以及从色度处理模块504输出的经校正的色度值,被从色调映射单元406输出,并且可以在之后以任何适当方式使用,例如用在相机处理管线404的进一步处理模块中。
[0127] 图6和图13中示出的方法步骤可以以硬件模块或软件模块或其组合的形式在色调映射单元406处实施。
[0128] 在上面描述的示例中,从图像传感器402接收像素数据,该像素数据涉及由图像传感器402捕获的图像的像素。在其他示例中,像素行可以来自其他像素块。例如,像素数据可以涉及任何类型的图像的像素,其可以是从图像传感器接收(如前面描述的示例中那样),或者从图形处理单元(GPU)或存储器接收。像素数据可涉及由图像传感器捕获的图像(如前面描述的示例中那样),或者像素数据可涉及计算机产生的图像,例如可以是由GPU产生的图像。换句话说,无论来自像素块的像素的色调映射将在何处实施,均可根据需要来实施色调映射单元406。
[0129] 一般地,上面描述的任何功能、方法、技术或部件能够实施在使用软件、固件、硬件(固定的逻辑电路)或者这些实施方式的任何组合的模块中。术语“模块”、“功能性”、“部件”、“块”、“单元”和“逻辑”在本文中使用以一般性地表示软件、固件、硬件或者其任何组合。
[0130] 在软件实施方式的情况中,模块、功能性、部件、单元或者逻辑表示程序代码,当在处理器(例如一个或多个CPU)上执行时,该程序代码执行指定任务。在一个示例中,所描述的方法可以由配置有储存在计算机可读介质上的机器可读形式的软件的计算机来执行。一种这样配置的计算机可读介质为信号承载介质,并因而被配置用于传递指令(例如,作为载波)到计算装置,诸如经由网络。计算机可读介质也可以配置为非瞬态计算机可读存储介质,因而不是信号承载介质。计算机可读存储介质的示例包括随机访问存储器(RAM)、只读存储器(ROM)和光盘、闪存、硬盘存储器以及可以使用磁学、光学和其他技术来储存指令或者其他数据并且能够被机器访问的其他存储装置。
[0131] 软件可以是包括用于配制计算机来执行该方法的组成部分的计算机程序代码的计算机程序的形式,或者可以是包括计算机程序代码装置的计算机程序的形式,该计算机程序代码装置适配为当该程序在计算机上运行时执行本文中任何方法的所有步骤,并且计算机程序可以在计算机可读介质上具体实现。计算机代码可以储存在一个或多个计算机可读介质中。本文描述的技术的特征是独立于平台的,意思是该技术可以在具有各种处理器的各种计算平台上实施。
[0132] 本领域技术人员将认识到,功能、技术或方法的全部或一部分可以由专用电路、专用集成电路、可编程逻辑阵列、现场可编程阵列等等来实现。例如,模块、功能性、部件或逻辑可以包括电路系统形式的硬件。这样的电路系统可包括晶体管及/或制造过程中可得到的其他硬件元件。这样的晶体管及/或其他元件可被用于形成实施及/或包含存储器的电路系统或结构、以及互连结构,仅作为示例,该存储器诸如是寄存器、双稳态触发器、存器、逻辑运算器诸如布尔运算器、数学运算器诸如加法器、乘法器、或者移位器。这样的元件可以提供为定制电路或者标准单元库、宏、或者处于其他抽象水平。这样的元件可以互连为指定布置。模块、功能性、部件或逻辑可以包括是固定功能的电路系统、以及能够被编程以执行一个或多个功能的电路系统;这样的编程可以从固件或软件更新或者控制机制来提供。在示例中,硬件逻辑具有实施固定功能操作、状态机或处理的电路系统。
[0133] 还意欲包括软件,该软件“描述”或限定实施上面描述的模块、功能性、单元、部件或逻辑的硬件的配置,诸如HDL(硬件描述语言)软件,其用于设计集成电路,或者用于配置可编程芯片,以便执行期望的功能。就是说,可以提供计算机可读存储介质,其上编码有计算机可读程序代码以用于产生被配置为执行本文描述的任何方法的处理单元,或者用于产生包括本文描述的任何装置的处理单元。
[0134] 术语‘处理器’和‘计算机’在本文中用于指代任何这样的装置或者其一部分,该装置具有处理能力使得其能够执行指令,或者具有能够执行功能或方法或其组合的全部或一部分的专用电路。
[0135] 虽然已经用特定于结构特征及/或方法学动作的语言描述了主题,应该理解,在所附权利要求中限定的该主题不必限于上面描述的指定特征或动作。而是,上面描述的指定特征和动作被公开为实施权利要求的示例形式。应该理解,上面描述的好处和优点可以涉及一个示例或者可以涉及几个示例。
[0136] 对本领域技术人员显而易见的是,本文中给出的任何范围或数值可以延伸或变更,而不损失所寻求的效果。本文描述的方法的步骤可以按照任何适当顺序来执行,或者如果合适则可以同时执行。在不损失所寻求的效果的情况下,上面描述的任何示例的各个方面可以与所描述的任何其他示例的各个方面结合,以形成另外的示例。
相关专利内容
标题 发布/更新时间 阅读量
半色调点编码 2020-05-13 175
色调剂卡盒 2020-05-12 586
色调剂粘合剂和色调剂 2020-05-11 335
色调剂粘结剂和色调剂 2020-05-11 502
生成半色调 2020-05-12 983
色调剂 2020-05-11 867
色调剂卡盒 2020-05-12 228
色调剂和色调剂组 2020-05-11 46
三维半色调化 2020-05-12 654
色调剂容器 2020-05-12 626
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈