具体实施方式
本原理涉及用于将输入图像I的动态范围改变为与图像格式的表示兼容的另一范围(通常支持比输入图像更小的动态范围)的方法和装置。在以下讨论中,假定输入图像是HDR图像,并且处于低动态范围的输出图像是SDR图像。更一般地,本原理可以适用于任何动态范围之间的转换。本申请中,术语“图像”、“帧”和“画面”是可互换的,以标识通常包含针对多个分量的值的样本阵列。
图1示出了根据本原理的用于将HDR图像转换成SDR图像的示例性方法100。方法100开始于步骤105。在步骤110处,确定针对整个HDR图像I的单个调制值Ba。在一个实施例中,调制值Ba表示图像I的中间色调值,以使得归一化光亮度Y(即Y/Ba)基本以值1为中心。
在步骤120处,根据调制值将输入HDR图像I转换为SDR图像。在一个实施例中,范围的改变可以表达为:
πBa:[0,P]→R, (1)
其中,P是输入HDR格式所允许的像素的最大亮度(例如1000尼特)。该映射πBa可以分解如下:
也就是说,HDR图像的光亮度Y首先通过Ba归一化,然后使用例如函数g()映射到由R表示的范围,其中g()是可能依赖于Ba的函数,即g()=gBa(),函数g()可以将1映射到数据范围R的中间值。然后,在步骤130处对映射的图像进行处理,例如编码和发送。方法100在步骤199结束。
当确定调制值时,假定函数g()是预先确定的。在下文中,描述可用于范围转换的示例性函数g()。
用于范围转换的函数gBa()
本申请中,将SDR数据范围R内的每个可能值称为码字,将最大码字值称为MSDR。例如,如果输出图像表示为10比特,R=[0,1023],则码字是0、1、2、…、1023,并且MSDR=1023。
在图像转换期间,预计峰值亮度P被映射到最大码字值,以便完全获益于SDR范围,即,得到
πBa(P)=MSDR针对所有Ba (3)
在优选实施例中,g可被定义为
gBa(z)=MSDR f(z)/f(P/Ba)=f(z)/N(Ba) (4)
其中,f()是函数,N(Ba)是取决于Ba的归一化项,
N(Ba)=f(P/Ba)/MSDR。 (5)
由于得到了以下等式,因此这确保了满足峰值光亮度条件:
πBa(P)=gBa(P/Ba)=MSDR f(P/Ba)/f(P/Ba)=MSDR。 (6)
在一个实施例中,函数f()可以是如下定义的Slog函数:
f(z)=aln(b+z)+c (7)
其中,Slog函数f()的参数a、b和c可确定为使得:
f(0)=0,
f(1)=1,以及
1处的导数与伽马函数的导数相同,即f’(1)=γ。
通过使用这三个条件,可以得到作为γ的函数的三个参数a、b和c,即a(γ)、b(γ)和c(γ)。表2中示出了a、b和c的一些示例性值。
表2
γ |
a |
b |
c |
1/2.0 |
0.6275 |
0.2550 |
0.8575 |
1/2.4 |
0.4742 |
0.1382 |
0.9386 |
1/2.8 |
0.3861 |
0.0811 |
0.9699 |
大规模测试表明,当P=5000尼特且SDR图像以10比特格式表示(即MSDR=1023)时,接近1/2.5的值γ为映射图像πBa(I)提供良好的图像质量。从而,可将参数a、b和c设置为a=0.4495、b=0.1212以及c=0.9485。图2中示出了相应的函数πBa。从图2可见,映射曲线适应于调制值Ba,该调制值Ba通常随着HDR图像总体上变得更亮而增加。对于较大的调制值,由于映射曲线在峰值光亮度附近的导数较大,所以映射曲线在亮的区域保留更多的细节,而对于较小的调制值,由于映射曲线针对Y的非常小的值缓慢的降至零,所以映射曲线在最暗的区域保留更多的细节。
在下文中,讨论确定调制值的不同方法。
通过中间色调优化确定Ba
在一个实施例中,针对整个图像,HDR图像的像素被归类成取决于其线性光亮度Y的直方图,如图3中的示例性直方图所示。如图3所示,直方图的最右侧处于峰值光亮度P。该峰值光亮度假定由系统级别基于例如图像格式提供,并且不逐帧变化。
将白色级别W定义为对应于直方图的最后百分之几的光亮度级别,将黑色级别B定义为对应于直方图的前百分之几的光亮度级别,并且将中间色调级别定义为黑色级别和白色级别的几何均值(或对数均值):
作为结果,三个级别W、B和M取决于图像的内容。
一般地,对调制值和映射函数的选择应该保留非常暗的级别处的信息并且还保留中间色调范围内(即,中间色调值附近)的细节。从而,在导出调制值时使用两个条件:(1)黑色并不过于激进地向下截断(clip)至零;以及(2)将用来表示HDR的中间色调范围的SDR图像中的码字数量最大化。
考虑第一条件,即不该将黑色过于激进地向下截断至零,针对黑色级别设置下界,即:
πBa(B)≥ε (9)
其中,ε是参数。在图4中,使用示例性函数πBa来说明将映射函数πBa(B)设置为ε。不等式(9)不确定具体的调制值Ba。反而,其提供Ba的可接受值的范围。
针对第二条件,即用来对中间色调范围进行编码的码字数量应该被最大化,如图5所示,在中间色调级别M处为πBa选择最陡的斜率。
结合两个条件,可以通过解出以下最大化问题来唯一地确定调制值:
为了在给定函数g()的情况下解出优化问题(10),可以在可接受Ba值范围内执行对Ba的系统蛮力搜索,以针对每一帧计算值Ba。函数g()可以是式(6)中描述的函数,并且本原理可以适用于其他形式的函数g()。在式(10)中,针对光亮度Y使用对数尺度,这是因为它与线性域相比可以更好地表示人类光亮度感知。在一个变形中,为了简单,可以基于Y而不是ln Y来确定斜率。
本文中,讨论基于中间色调优化来确定调制值。在其他实施例中,可使用不同的方法来计算调制值,例如但不限于,使用图像I的光亮度的平均值、中值、最小值或最大值。这些运算可在线性光亮度域中执行,或在非线性域中执行,比如ln(I)或Iγ,其中γ<1。
为了进一步改善映射曲线,可对Ba值施加一些界限,以避免在非常暗的帧(Ba过低)和非常亮的帧(Ba过高)中超出范围(over-shooting)。例如,为了确定衰减背光Baatt,可以将Ba的值设置为:
其中,视觉确定的值Bamin=2尼特,Bamax=50尼特,Bamid=5尼特,以及衰减因子σ=0.5。这可提供与视觉最佳调制值更接近的调制值,如表3所示,其中,每个序列的第一图像用于测试。
通过试验,获得了优化压缩视频的视觉质量的调制值的区间,并且分别使用“低”和“高”来指代区间的下界和上界。从表3可见,区间随视频序列而变化。
表3
根据试验,还观察到调制值影响压缩性能,但并不是非常敏感。具体地,如果调制值接近[低,高]区间,则压缩性能接近于视觉最佳。本文中,从表3可见,衰减的调制值要么落入[低,高]区间,要么接近所述区间。从而,根据本原理确定的调制值是最佳的或接近于视觉最佳的调制值。
根据表3,还可看出的是,调制值通常能够反映总体亮度级别,并且提供输入图像的总体亮度表现(impression)。例如,输入的HDR图像越亮,单个调制值就可以越高。视频序列“Balloon”和“Market”包括具有日落的非常亮的场景或在夏日正午拍摄的场景,从而,它们的调制值高于其他序列,比如“Cathedrale”和“FireEater”,这些序列包括在教堂内或夜晚拍摄的非常暗的场景。
Ba的时间稳定化
在视频序列中,可针对每一帧计算值Ba。为了避免场景随着快速的亮度变化而出现时间上的不一致性,需要进行时间稳定化。快速改变的视频(比如,示出了爆炸或烟火的场景)可以使得调制值非常快速地逐帧变化,并且引起烦人的照明效果。例如,假定具有静态背景和前景突发闪光(例如爆炸或烟火)的场景。由于闪光的原因,白色W将增加,并且M然后Ba也增加。从图2可见,当Ba较高时,映射曲线更多地抑制暗处,这可引起得到的SDR画面中背景没有预计到地突然变暗。为了防止得到的SDR视频中的发光度出现这种非自然且烦人的时间变化,提出时间稳定化,以平滑SDR视频的总体发光度变化。
可以使用指数稳定化方法。令Ban为在帧n处确定的调制值,Bat,n为时间稳定化后的调制值。可以使用以下方案:
Bat,n=λBan+(1-λ)Bat,n-1 (12)
其中,λ适应于帧速率。可以将其他时间平滑滤波器用于对调制值进行稳定化。
在上文中,讨论了使用单个调制值将HDR图像转换为SDR图像。在另一实施例中,可以使用光照度图将HDR图像转换为SDR图像,光照度图可表示HDR内容的背光。
这里,术语“背光”通过从由彩色面板(例如LCD面板)以及后部照明装置(如LED阵列)制造的电视机类推使用。后部装置(通常产生白光)用来对彩色面板进行照明,以向电视机提供更高的亮度。作为结果,电视机的光亮度是后部照明器的光亮度与彩色面板的光亮度的乘积。该后部照明器通常被称为“背光”。
给定了光照度图,通过将HDR帧除以光照度图得到残余帧(即,SDR帧)。回到所述类推,其中HDR等于SDR乘以背光,SDR帧可被理解为(SDR)彩色面板的响应。光照度图(其可被表示为二维阵列Bamap(x,y))与HDR图像相比具有较低的分辨率。可通过将HDR像素与它们的共址背光像素逐像素地相除来获得SDR帧,这可能在对Bamap(x,y)的上采样以匹配HDR图像分辨率之后。
SDR帧和光照度图可以具有彼此不同的格式,例如光照度图可以是单色的,SDR帧可以使用Y’CbCr或RGB格式。此外,每个分量可以具有不同的格式(例如Y’CbCr、YUV、RGB以及XYZ)。
图6A示出了示例性RGB HDR图像,图6B示出了相应光照度图。从图6A和6B可见,光照度图一般反映比图像本身具有更高的空间平滑度的HDR图像的亮度级别。虽然单个调制值提供HDR图像的总体亮度表现,但是光照度图则以更精细的粒度追踪HDR图像的亮度。从而,将光照度图中的一个样本称为局部背光值或局部调制值。在本申请中,还将单个调制值和光照度图两者称为光照度信息。
从HDR图像到SDR图像的转换(例如,基于单个调制值或上述光照度图)可用于不同的应用,例如但不限于,色调映射、在将HDR映射到SDR之后使用SDR编解码器进行的压缩以及随后压缩SDR、与SDR格式兼容的HDR分发。
图7示出了在提供与SDR解码器的后向兼容性的同时发送HDR视频的示例性SDR/HDR分发工作流700。在工作流700中,对HDR帧进行处理,以获得相应的SDR帧和光照度信息(710),例如,单个调制值和/或光照度图。接下来,光照度信息和SDR帧两者都被编码(720)成比特流,例如但不限于使用H.264/AVC或H.265/HEVC编码器。
在解码侧,针对后向兼容性可以使用SDR解码器(730)对SDR帧进行解码,其提供经解码的SDR视频作为输出。备选地,SDR帧和光照度信息两者都可使用HDR解码器(740)进行解码。通过使用经解码的SDR帧和光照度信息,可使用例如映射πBa的逆过程,将SDR帧映射为经解码的HDR帧(750)。从SDR到HDR的映射(750)还可由HDR解码器(740)执行。
在上文中,在不同的操作中讨论了各个数值。这些数值用于示例性目的,并且可以基于应用进行调整。例如,当以上将SDR视频主要作为10比特视频进行讨论时,SDR视频还可采用其他的动态范围或比特深度。参数(例如a、b和c)的值或用来确定黑色级别和白色级别的百分数也可基于用户需求或系统配置进行调整。此外,当讨论单个调制值用于整个帧时,还可具有针对画面区域(例如,当画面具有非常高的分辨率时是切片或块)的调制值。
图8示出了可以实现本原理的示例性实施例的各个方面的示例性系统的框图。系统800可实现为包括如下描述的各组件的设备,并且被配置为执行如上所述的过程。设备的示例包括但不限于个人计算机、膝上型计算机、智能电话、平板计算机、数字多媒体机顶盒、数字电视接收机、个人视频记录系统、连接的家用电器以及服务器。系统800可以与其他类似系统通信耦合,并且经由如图8所示并且为本领域技术人员所知的通信信道与显示器通信耦合,以实现上述示例性视频系统。
系统800可包括至少一个处理器810,处理器810被配置为执行加载到其中的指令,以用于实现如上所述的各个过程。处理器810可包括嵌入式存储器、输入输出接口和本领域熟知的各个其他电路。系统800还可包括至少一个存储器820(例如,易失性存储器设备、非易失性存储器设备)。系统800可以附加地包括存储设备840,该存储设备840可以包括非易失性存储器,其包括但不限于EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、磁盘驱动器和/或光盘驱动器。作为非限制性示例,存储设备840可包括内部存储设备、附加存储设备和/或网络可访问存储设备。系统800还可包括编码器/解码器模块830,其被配置为处理数据以提供编码视频或解码视频。
编码器/解码器模块830表示可包括在设备中以执行编码和/或解码功能的模块。如已知的,设备可包括编码和解码模块中的一个或两个。此外,编码器/解码器模块830可实现为系统800的分离元件或可以作为本领域技术人员已知的软硬件组合并入处理器810中。
将要加载到处理器810上以执行上述各种过程的程序代码可存储在存储设备840中,并可随后加载到存储器820上以用于由处理器810执行。根据本公开的示例性实施例,处理器810、存储器820、存储设备840和编码器/解码器模块830中的一个或多个可以在执行上述过程期间存储各个项目中的一个或多个,其包括但不限于,调制值、SDR视频、HDR视频、等式、公式、矩阵、变量、运算和操作逻辑。
系统800还可包括通信接口850,其使得能够经由通信信道860与其他设备进行通信。通信接口850可包括但不限于收发信机,其被配置为通过通信信道860发送和接收数据。通信接口可包括但不限于调制解调器或网卡,并且通信信道可实现于有线和/或无线介质内。系统800的各个组件可使用各个合适连接(包括但不限于,内部总线、电线和印刷电路板)彼此相连或通信耦合。
根据本公开的示例性实施例可以由处理器810实现的计算机软件、硬件或软硬件组合实现。作为非限制性示例,根据本原理的示例性实施例可由一个或多个集成电路实现。存储器820可以具有适合技术环境的任何类型,并且可以使用任何合适数据存储技术实现,比如,作为非限制性示例,光学存储器设备、磁存储器设备、基于半导体的存储器设备、固定存储器和可移除存储器。作为非限制性示例,处理器810可以具有适合技术环境的任何类型,并且可以包括微处理器、通用计算机、专用计算机和基于多核架构的处理器中的一个或多个。
参考图9,示出了可应用上述特征和原理的数据传输系统900。数据传输系统900可以是例如用于使用诸如卫星、电缆、电话线或地面广播的各种媒体中的任一种传输信号的头端或传输系统。数据传输系统900也可用于提供用于存储的信号。传输可以通过因特网或某个其他网络来提供。数据传输系统900能够生成和传送例如视频内容和其他内容。
数据传输系统900从处理器901接收经处理的数据和其他信息。在一个实现中,通过例如使用方法100,处理器901使用单个调制值和表示HDR画面的SDR画面来生成HDR视频和/或表示HDR画面。处理器901还可以向900提供指示例如在映射曲线中使用的函数或常数值的元数据。
数据传输系统或装置900包括编码器902和能够发送编码信号的发射机904。编码器902从处理器901接收数据信息。编码器902产生编码信号。
编码器902可以包括子模块,其包括例如用于接收各种信息并将其组装成用于存储或传输的结构化格式的组装单元。各种信息可以包括例如编码或未编码的视频以及编码或未编码的元素。在一些实现中,编码器902包括处理器901,因此执行处理器901的操作。
发射机904从编码器902接收编码信号,并在一个或多个输出信号中发送编码信号。发射机904可以例如适于发送具有表示编码画面的一个或多个比特流的程序信号和/或与其相关的信息。典型的发射机执行诸如以下功能中的一个或多个:例如,提供纠错编码、交织信号中的数据、随机化信号中的能量以及使用调制器906将信号调制到一个或多个载波上。发射机904可以包括天线(未示出)或与之连接。此外,发射机904的实现可以限于调制器906。
数据传输系统900还可通信耦合到存储单元908。在一个实现中,存储单元908耦合到编码器902,并且存储来自编码器902的编码比特流。在另一实现中,存储单元908耦合到发射机904,并且存储来自发射机904的比特流。来自发射机904的比特流可以包括例如已经由发射机904进一步处理的一个或多个编码比特流。存储单元908在不同的实现中是标准DVD、蓝光盘、硬盘驱动器或某个其他存储设备中的一个或多个。
参考图10,示出了可以应用上述特征和原理的数据接收系统1000。数据接收系统1000可以被配置为通过诸如存储设备、卫星、电缆、电话线或地面广播的各种媒体接收信号。信号可以通过因特网或某些其它网络接收。
数据接收系统1000可以是例如手机、计算机、机顶盒、电视机或接收编码视频并且提供例如解码视频信号以用于显示(例如,向用户显示)、处理或存储的其他设备。因此,数据接收系统1000可以将其输出提供给例如电视屏幕、计算机监视器、计算机(用于存储、处理或显示)或某个其他存储、处理或显示设备。
数据接收系统1000能够接收和处理数据信息。数据接收系统或装置1000包括用于接收编码信号(例如本申请的实现中描述的信号)的接收机1002。接收机1002可以接收例如提供HDR和SDR视频中的一个或多个的信号,或从图9的数据传输系统900输出的信号。
接收机1002可以例如适于接收具有代表编码的HDR画面的多个比特流的节目信号。典型的接收机执行诸如以下功能中的一个或多个:例如,接收调制和编码的数据信号,使用解调器1004解调来自一个或多个载波的数据信号,对信号中的能量进行去随机化,对信号中的数据进行解交织,以及对信号进行纠错解码。接收机1002可以包括天线(未示出)或与其连接。接收机1002的实现可以限于解调器1004。
数据接收系统1000包括解码器1006。接收机1002将接收的信号提供给解码器1006。由接收机1002提供给解码器1006的信号可以包括一个或多个编码比特流。解码器1006输出解码信号,例如包括视频信息的解码视频信号。
数据接收系统或装置1000也通信耦合到存储单元1007。在一个实现中,存储单元1007耦合到接收机1002,并且接收机1002从存储单元1007访问比特流。在另一实现中,存储单元1007耦合到解码器1006,并且解码器1006从存储单元1007访问比特流。从存储单元1007访问的比特流在不同实现中包括一个或多个编码比特流。存储单元1007在不同的实现中是标准DVD、蓝光盘、硬盘驱动器或某个其他存储设备中的一个或多个。
在一个实现中,来自解码器1006的输出数据被提供给处理器1008。在一个实现中,处理器1008是被配置为执行SDR到HDR映射的处理器。在一些实现中,解码器1006包括处理器1008,因此执行处理器1008的操作。在其他实现中,处理器1008是下游设备的一部分,例如机顶盒或电视机。
可以例如用方法或过程、装置、软件程序、数据流或信号来实现本文所描述的实现。即使仅在单个实现形式的上下文中进行讨论(例如,仅讨论方法),所讨论特征的实现还可以以其他形式(如装置或程序)来实现。装置可以实现为例如适当的硬件、软件和固件。所述方法可以被实现于诸如处理器的装置中,所述处理器一般地是指处理设备,包括例如计算机、微处理器、集成电路或可编程逻辑器件。处理器还包括通信设备(例如计算机、蜂窝电话、便携/个人数字助理(″PDA″))以及促进终端用户之间的信息通信的其他设备。
对本原理的“一种实施例”或“一个实施例”或“一种实现”或“一个实现”以及其它变形的提及,意思是结合所述实施例描述的具体特征、结构、特性等包括在本原理的至少一个实施例中。从而,说明书通篇各处出现的短语“在一种实施例中”或“在一个实施例中”或“在一种实现中”或“在一个实现中”以及任何其它变形不必都指代相同的实施例。
此外,本申请或其权利要求可提及“确定”各种信息。确定信息可以包括以下一项或多项,例如,估计信息、计算信息、预测信息或从存储器取回信息。
此外,本申请或其权利要求可提及“访问”各种信息。访问信息可以包括以下一项或多项,例如,接收信息、取回信息(如从存储器)、存储信息、处理信息、发送信息、移动信息、拷贝信息、擦除信息、计算信息、确定信息、预测信息或估计信息。
此外,本申请或其权利要求可提及“接收”各种信息。接收和“访问”一样是广义术语。接收信息可以包括以下一项或多项,例如,访问信息或取回信息(如从存储器)。此外,“接收”通常以某种方式在诸如以下各项的操作期间涉及:存储信息、处理信息、发送信息、移动信息、拷贝信息、擦除信息、计算信息、确定信息、预测信息或估计信息。
本领域技术人员应清楚,实现可以产生被格式化为携带例如可以存储或传输的信息的多种信号。信息可以包括例如用于执行方法的指令、或通过描述的实现之一所产生的数据。例如,信号可以被格式化为承载所述实施例的比特流。这种信号可被格式化为例如电磁波(例如使用频谱的射频部分)或基带信号。格式化可以包括例如对数据流进行编码或者使用已编码数据流对载波进行调制。信号携带的信息可以是例如模拟或数字信息。可以通过公知的多种不同的有线或无线链路来传输该信号。信号可以存储在处理器可读介质上。