具体实施方式
时间连续性(temporal coherency)一直是HDR视频色调映射技术的长期问题。一般地,时间连续性描述在HDR视频的单个帧上执行的色调映射从一帧到下一帧连续的程度。经色调映射的内容中缺乏时间连续性经常显示为连续的帧之间可被人眼察觉的突然的亮度变化(例如,闪光)。这些闪光限制了对视频色调映射的使用。题为“高动态范围视频的在时间上连续的局部色调映射”的、通过引用被结合于此的美国专利申请14/121,091描述了以在时间上连续的方式执行局部视频色调映射的技术。本文的实施例描述了可能需要相对少的计算资源的用于执行色调映射的技术。
在一个实施例中,色调映射***通过对HDR视频中的帧进行滤波生成基本层(baselayer)。然后从基本层获得色调映射参数,例如,基本层的平均亮度值或最大亮度值。一旦标识了色调曲线参数,***就执行时间滤波,以对HDR视频当前帧的色调曲线参数的值和至少一个先前帧的色调曲线参数的(一个或多个)值之间的不连续进行平滑。通过在时间上对色调曲线参数的值进行滤波,色调映射***可以减小或移除所产生的经色调映射的视频中帧之间的突然亮度变化或闪光。此外,本文的实施例不需要在时间上对整个基本层执行滤波,而是仅需要对色调曲线参数执行滤波,这可以是计算密集程度低得多的过程。色调映射***将在时间上被滤波的色调曲线应用于基本层,以生成在时间上连续的层。
在一个实施例中,色调映射***通过将基本层除以HDR视频流中相对应的帧来生成细节层。色调映射***将在时间上连续的层与细节层进行合并以产生经色调映射的视频的帧。可以在具有有限的色彩范围的用户设备上显示这些帧而仍保留原始HDR视频中的很多色彩对比度和细节。将色调曲线应用于基本层而不是细节层的一个优点在于,这样做保留了HDR视频中的大部分细节,这些细节在色调曲线被应用于基本层和细节层两者的情况下将丢失。
图1是根据本文所描述的一个实施例的用于将HDR视频转换为经色调映射的视频的***流100。在流100中,方格表示色调映射***的功能,而圆形指示色调映射***中生成的或存储的数据。如所示出的,流100开始于在色调映射***处接收HDR视频105。可以将HDR视频105存储在色调映射***中(例如,作为完整的媒体呈现)或以更小的块发送到***用于处理。一般地,流100示出用于将HDR视频105的单独的帧转换为经色调映射的视频150的帧的技术。换言之,经色调映射的视频150可能具有与HDR视频105的帧相似的色彩对比度和细节(例如,边缘和纹理),但具有比HDR视频105更小的色彩范围。
色调映射***使用空间滤波器110来对HDR视频105的帧进行处理。在该示例中,流100的空间滤波器110是渗透性引导的滤波器(permeability guided filter)(PGF),其接收HDR视频105的帧并输出基本层115。一般地,基本层115表示HDR视频帧中的像素的亮度值。在一个实施例中,为了生成基本层115,PGF 110在空间上(例如,在像素平面的X和Y维度)而不是在时间上对HDR视频105中的帧进行处理。在一个实施例中,PGF 110通过确定由均匀网格上的像素位置定义的空间局部领域,来对HDR帧中的每个像素进行空间滤波。给定像素的空间局部领域被定义为空间上接近给定像素的一组两个或多个像素。
在一个实施例中,PGF 110在不考虑先前滤波帧(即,不执行时间滤波)的情况下生成基本层115。在X和Y空间维度对帧进行滤波可能比在时间上对帧进行滤波(即,在时间维度)需要更少的计算时间和资源。因此,xy PGF 110可以比在时间和空间两者上处理帧滤波器更快速地对接收到的帧进行处理。
此外,色调映射***允许艺术家交互(artist interaction)120以对HDR视频帧进行处理。在一个示例中,技术人员可以执行色彩分级以改变HDR视频105中的高亮度或其它特性。本文将这些艺术改变称为艺术设置。在先前的色调映射技术中,针对色调映射***根据艺术设置对HDR视频105进行修改并输出所产生的经色调映射的视频150,技术人员将即使不需要等待数天也需要等待数小时。如果技术人员不喜欢所产生的经色调映射的视频150,技术人员改变艺术设置并再次等待色调映射***来将HDR视频105转换为经色调映射的视频150。
本文的实施例可被用于向技术人员提供实时反馈。即,可以用使得技术人员做出的色彩改变被立即或几乎立即(例如,在数秒内)用于生成经色调映射的视频150的方式执行流100。因此,技术人员可以接收关于改变的几乎即时的反馈,而无需针对色调映射***生成经色调映射的视频150等待数小时。
通过使用艺术设置和基本层,色调映射***执行色调-曲线-空间(tone-curve-space)时间滤波125。一般地,色调-曲线-空间时间滤波125生成在时间上被滤波的色调曲线,其可被用于对基本层进行处理以生成在时间上连续的基本层140。在图2中对色调-曲线-空间时间滤波125进行描述。
图2是根据本文所描述的一个实施例的用于在时间上对色调曲线进行时间滤波的方法200的流程图。在框205处,色调映射***从基本层标识色调曲线参数。一般地,色调曲线参数是从基本层获得的统计值。在一个实施例中,色调曲线参数是从基本层获得的亮度值。例如,色调映射***可以对基本层中的每个像素进行估计,以标识基本层的平均亮度值、最大亮度值、或最小亮度值。平均亮度值、最大亮度值和最小亮度值仅是可被用于生成色调曲线的合适的色调曲线参数的三个示例。本领域技术人员将认识到可被代替用作色调曲线参数的、可从基本层获得其它图像统计参数。此外,虽然方法200讨论获得一个色调曲线参数,色调映射***可以获得多个色调曲线参数,多个色调曲线参数可以被合并或加权。
在框210处,色调映射***使用从先前帧获得的色调曲线参数值在时间上对色调曲线参数进行滤波。即,色调映射***使用先前的色调曲线参数的值来修改当前帧的色调曲线参数。例如,色调映射***可以使用从先前的基本层获得的平均亮度值来调整从当前的基本层获得的平均亮度值,从而减小这些值之间的差。
从基本层获得的色调曲线参数可以在HDR视频中不同帧之间大幅改变。例如,即使用户观看时HDR视频中的两个帧在亮度上相差不是很大,出于许多不同的原因,针对这些帧的色调曲线参数可能仍然相差很多。如果不在时间上对色调曲线参数进行滤波,用户可能在所产生的经色调映射的视频中看到闪光,如上所述。因此,在框210处,色调映射***使用色调曲线参数的过去值,从而在对新帧进行处理时限制或减小色调曲线参数中的改变量。
等式1表示可由色调映射***执行以在时间上对色调曲线参数进行滤波的示例计算。在一个实施例中,等式1是色调曲线参数的线性或凸的组合。
在等式1中,是色调曲线参数的当前值,而pt-1是先前帧的色调曲线参数的值。变量pt是在时间上被滤波的色调曲线参数,其然后可被用于生成如下所述的色调曲线。α是用户定义的参数,其相对于当前值对色调曲线参数的先前值进行加权。
在等式1中,色调映射***将第一权重(即,α)应用于色调曲线参数的先前值(pt-1)并将第二权重(即,1-α)应用于色调曲线参数的当前值随着α的值增加,当前色调曲线参数值和先前值之间允许更少的偏差或改变。换言之,先前色调曲线参数被给予更多权重,使得先前和当前值之间的差被减小。相反地,随着α的值减小,色调曲线参数的当前值和先前值之间允许更多的偏差或改变。α的较小值将允许当前帧和先前帧之间亮度上的突然改变,如果α的值增加该亮度上的突然改变将被移除或减小。
***操作者可将α的值设置为适合HDR视频中所呈现的具体媒体。例如,如果HDR视频在帧之间有大幅的亮度改变(例如,烟花或闪光灯的视频),则技术人员可以选择更接近于零的α值,从而输出包含帧之间的大幅亮度改变的经色调映射的视频。然而,如果HDR视频中的亮度改变是轻微的(例如,在野外在恒定的日照中捕获的视频),技术人员可以选择α的更高值,以确保帧之间色调曲线参数中的任何改变被减小,使得所产生的经色调映射的视频不包含非预期的闪光。因此,通过表征HDR视频中的亮度改变,***操作者可以调整α值以确保以下两者间的平衡,即:保留在经色调映射的视频中的帧之间在亮度上的预期的改变,以及减小由色调曲线参数中的改变引起的不期望的闪光或闪烁。
虽然等式1中示出通过对当前帧和先前帧的色调曲线参数值进行加权来生成在时间上被滤波的色调曲线参数(pt),在其它实施例中,色调映射***可以使用来自先前由色调映射***处理的多个帧的色调曲线参数来生成经调整的色调曲线参数。例如,色调映射***可以使用先前的五个色调曲线参数的平均,而不是仅使用来自先前帧的色调曲线参数(即,pt-1)。通过保留先前的色调曲线参数的移动平均,色调映射***可以在时间上对当前的色调曲线参数进行滤波以防止经色调映射的视频中的非预期的闪光。
此外,通过在时间上对色调曲线参数进行滤波,色调映射***避免在时间上对基本层本身进行滤波。即,在一个实施例中,色调映射***仅使用参数的先前值在时间上对色调曲线参数进行滤波,而不是在时间上对基本层(其可包括数百万的像素)的每个像素进行滤波。这么做可以使得色调映射***能够被实时执行。
在框215处,色调映射***从在时间上被滤波的色调曲线参数(即,pt)生成色调曲线。一般地,色调曲线可以是输入亮度和输出亮度之间的映射。色调曲线使得色调映射***能够将HDR视频中的像素的色彩范围压缩为非HDR用户设备(例如,电视机、智能电话或平板计算机中的显示器、计算机监视器、等等)所用的更小的色彩范围内。虽然本文的实施例描述了生成并应用单个色调曲线,色调映射***可以生成多个色调曲线(或使用预定义的色调曲线)来对基本层进行处理,以产生在时间上连续的基本层。
在框220处,色调映射***根据艺术设置对色调曲线进行调整。在图1中,艺术交互120生成艺术设置,其然后可被提供给色调-曲线-空间时间滤波器125。例如,技术人员可能希望将色调曲线的一部分的高亮度改变为强调特定色彩或色彩范围。这些艺术设置改变色调曲线的形状。
并不要求使用艺术设置来改变色调曲线。虽然方法200使得艺术设置能够被用于实时调整经色调映射的视频,方法200也可以在没有任何艺术交互的情况下被执行。在这种场景中,仅使用从基本层获得的色调曲线参数(或多个参数)生成色调曲线。
在框225处,色调映射***将经调整的色调曲线应用于基本层,从而产生在时间上连续的基本层。换言之,色调映射***使用色调曲线中所定义的输入和输出亮度之间的关系来调整基本层中的像素的亮度值。因为使用在时间上被滤波的色调曲线参数来生成色调曲线,将色调曲线应用于基本层产生在时间上连续的基本层,其中相对于先前帧的基本层的不期望的亮度值改变被减小。
此外,将色调曲线应用于仅基本层(而不是基本层和细节层两者)的一个优点在于,这么做通过实现局部色调映射操作保留了艺术自由。分别对待基本层和细节层允许对细节层中的特征的可见性的精确控制。此外,当从基本层而不是直接从HDR视频获得参数时,色调曲线参数更稳定(即,帧之间色调曲线参数中更小的改变)。这是因为被用于生成基本层的滤波器减小HDR视频中亮度值的局部变化并移除异常值。因此,从基本层得到色调曲线参数也有助于稳定色调曲线参数中的时间差并减轻上述的闪光。
返回到图1中的流100,执行色调-曲线-空间时间滤波125产生在时间上连续的基本层140。为了生成经色调映射的视频150,色调映射***将在时间上连续的基本层140与细节层135进行合并。通过将HDR视频105中的每个像素除以基本层115中相对应的像素得到细节层135。换言之,被用于生成基本层115的同一HDR视频帧被除以基本层115以产生细节层135。除法函数130从HDR视频帧移除亮度而不改变被存储在细节层135中的纹理和边缘信息。虽然流100中未示出,技术人员可以提供用于改变细节层135的艺术设置。例如,技术人员可能想要调节细节层135中的纹理或锐化边缘。
色调映射***使用逐像素乘法函数145对细节层135与在时间上连续的基本层140进行合并以生成经色调映射的视频150的帧。一般地,经色调映射的视频150包括与HDR视频105相似的色彩对比和细节(例如,相似的纹理),但具有减小的色彩范围。在一个实施例中,乘法函数145被加权以执行对色彩的放大。然而,在另一实施例中,乘法函数145不被加权并且细节的级别由色调曲线控制,即,如果基本层被深度压缩,则细节更明显,并且反之亦然。
针对HDR视频105中的每一帧重复流程100。这样,色调映射***生成针对每一帧的基本层115、标识来自基本层115的色调曲线参数的值、并在时间上对色调曲线参数进行滤波。通过使用从参数生成的色调曲线,在时间上对色调曲线参数进行滤波125并生成色调曲线产生在时间上连续的基本层140,其被与细节层135合并以生成经色调映射的视频150。
图3是根据本文所描述的一个实施例的用于将HDR视频转换为经色调映射的视频的***流300。除了艺术交互被替换为预设305之外,流300与图1中的流100相似。在一个实施例中,当HDR视频105是针对现场直播时,流300可能是优选的,在这种情形中色调映射***使用流300来将HDR视频105转换为经色调映射的视频150,视频150随后被广播给用户设备。例如,经色调映射的视频150可以被发送到分配网络(例如,有线或卫星提供商)以被发送到用户设备。
为使延迟最小化,色调映射***使用预设305来更改由色调-曲线-空间时间滤波125生成的色调曲线,而不是由技术人员观看HDR视频并提供艺术设置。与艺术设置一样,预设305可以调整HDR视频105的高亮或色彩分布。由于预设305可以在HDR视频105被生成之前定义,一旦色调曲线一被计算色调映射***就可以使用预设305来对其进行调整。因此,色调映射***可以用最小的延迟实时地执行流300以生成针对体育赛事、现场演唱会、现场新闻广播以及类似物的经色调映射的视频150。
图4示出根据本文所描述的一个实施例的色调映射技术的视觉比较。具体地,图4示出使用本文所描述的技术和使用美国专利申请14/121,092中描述的技术生成的经色调映射的图像之间的比较。如所示出的,这些图像之间的差别是微不足道的。因此,本文所描述的技术可以被用于生成实时广播或用于编辑视频的实时反馈,而不需做出质量降低的牺牲。
图5示出根据本文所描述的一个实施例的用于执行色调映射的计算***500的框图。计算***500(例如,色调映射***)包括处理器505和存储器510。计算***500可以包括连接到网络的单个计算设备(例如,服务器)或多个计算设备。例如,计算***500可以是数据中心或云服务。
处理器505表示各自包括多个核的一个或多个处理元件。存储器510可以包括易失性或非易失性存储器元件,例如,主存储器、硬盘、云存储装置、等等。如所示出的,存储器510存储执行图1和图3中所示出的流的色调映射应用515。色调映射应用515可以包括用于将HDR视频转换为经色调映射的视频的任何数量的软件程序。此外,在其它实施例中,计算***500包括用于执行流100和300中所示出的步骤中的一个或多个步骤的硬件组件。例如,专用集成电路(ASIC)或现场可编程门阵列(FPGA)可以被用于执行流100和300中的步骤的一个或所有步骤。
在前面的描述中,参考了本发明实施例。然而,应当理解的是,本发明不限于具体描述的实施例。相反,前述特征和元件的任何组合(无论是否涉及不同的实施例)被预期为实现和实施本发明。此外,虽然本发明的实施例可以实现相对于其它可能的解决方案和/或现有技术的优势,具体的优势是否由给定实施例实现不对本发明进行限制。除了所附权利要求中明确记载的情况之外,本文所描述的方面、特征、实施例和优点仅是说明性的,并且不被认为是所附权利要求的要素或限制。类似地,除了所附权利要求中明确记载的情况之外,对“本发明”的引用不应当被解释为对本文所公开的创造性主题的概括,并且不应当被认为是所附权利要求的要素或限制。
如本领域技术人员将理解的,本发明的方面可以被实现为***、方法或计算机程序产品。因此,本发明的方面可以采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)、或结合软件和硬件方面的实施例的形式,其一般都可被称为“电路”、“模块”或“***”。此外,本发明的方面可以采用其上包含有计算机可读程序代码的一种或多种计算机可读介质中实现的计算机程序产品的形式。
可以使用一种或多种计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是(但不限于)电子的、磁的、光的、电磁的、红外的、或半导体***、装置、或设备、或以上各项的任意合适的组合。计算机可读存储介质的更多具体示例(非穷举列表)将包括以下:硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或以上各项的任意合适的组合。在本文档的上下文中,计算机可读存储介质可以是任何有形的介质,任何有形的介质可以包括或存储供指令执行***、装置或设备使用或联系指令执行***、装置或设备使用的程序。
计算机可读信号介质例如可以包括基带信号中或作为载波的一部分的其中包含有计算机可读程序代码的传播的数据信号。这种传播的信号可以采用各种形式,包括,但不限于,电磁的、光的、或以上各项的任意合适的组合。计算机可读信号介质可以是任何计算机可读介质,其不是计算机可读存储介质并且可以传送、传播、或运送供指令执行***、装置或设备使用或联系指令执行***、装置或设备使用的程序。
计算机可读介质上包含的程序代码可以使用任何适当的介质(包括但不限于无线、有线、光纤电缆、RF等,或以上各项的任意合适的组合)被发送。
用于执行针对本发明的方面的操作的计算机程序代码可以用一种或多种编程语言的任意合适的组合来编写,编程语言包括面向对象的编程语言(例如,Java、Smalltalk、C++、或类似物)和传统的过程编程语言(例如,“C”编程语言或类似的编程语言)。程序代码可以全部在用户的计算机上、部分在用户的计算机上、作为独立的软件分组、部分在用户的计算机上并且部分在远程计算机上、或全部在远程计算机或服务器上运行。在后一场景中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))被连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。
以下参考根据本发明的实施例的方法、装置(***)和计算机程序产品的流程图示出和/或框图来描述本发明的方面。将要理解的是,流程图示出和/或框图的每个框、以及流程图示出和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生机器,使得指令(其经由计算机或其它可编程数据处理装置运行)创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。
这些计算机程序指令还可以被存储在计算机可读介质中,其可指导计算机、其它可编程数据处理装置或其它设备以特定的方式起作用,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以被装载到计算机、其它可编程数据处理装置或其它设备上,以使得一系列操作步骤在计算机、其它可编程装置或其它设备上被执行以产生计算机实现的处理,使得在计算机或其它可编程装置上运行的指令提供用于实现流程图和/或框图的一个或多个框中指定的功能/动作的处理。
本发明的实施例可以通过云计算基础设施被提供给端用户。云计算一般地指代通过网络配设作为服务的可缩放的计算资源。更正式地,云计算可以被定义为可用最小的管理精力或服务提供商交互被快速配设和释放的计算能力,其提供计算资源和其底层技术架构(例如,服务器、存储装置、网络)之间的抽象,从而实现对可配置的计算资源共享池的方便、按需的网络访问。因此,云计算允许用户访问“云”中的虚拟计算资源(例如,存储装置、数据、应用、或甚至完全虚拟化的计算***),而无需被用于提供计算资源的底层物理***(或这些***的位置)。
通常,云计算资源基于按使用付费被提供给用户,其中仅针对实际被使用的计算资源(例如,用户消费的存储空间的量或用户实例化的虚拟化***的数目)对用户进行收费。用于可以在任何时间、从互联网上的任何位置访问驻留于云中的任何资源。在本发明的上下文中,用户可以访问云中可用的应用(例如,色调映射应用515)或相关的数据。例如,色调映射应用515可以在云中的计算***上运行,以将HDR视频转换为经色调映射的而视频。在这种情况下,色调映射应用515可以对HDR视频进行处理并将所产生的色调映射视频存储在云中的存储位置处。这样做允许用于从附连到连接到云的网络(例如,互联网)的任何计算***访问该信息。
图中的流程图和框图示出根据本发明的各种实施例的***、方法和计算机程序产品的可能的实现方式的架构、功能和操作。就此而言,流程图或框图中的每个框可以表示代码的模块、片段或一部分,代码包括用于实现所指定(一个或多个)逻辑功能的一个或多个可执行指令。应当注意到的是,在一些替代实现方式中,框中记录的功能可能不按照图中记录的顺序发生。例如,连续地示出的两个框事实上可能实质上同时被运行,或者框有时可能以相反的顺序或顺序颠倒地被运行,取决于所涉及的功能。将要注意到的是,框图和/或流程图示出的每个框、以及框图和/或流程图示出中的框的组合可以由执行指定的功能或动作的专用的基于硬件的***或专用硬件和计算机指令的组合来实现。
虽然以上内容指向本发明的实施例,可以想出本发明的其它和更进一步的实施例而不背离其基本范围,并且其基本范围由以下权利要求书确定。