像素处理和编码的制作方法

文档序号:13518732阅读:888来源:国知局
像素处理和编码的制作方法

本实施例总体上涉及对画面中的像素的处理和编码,并且具体涉及在感知到的质量没有显著恶化的情况下提高编码效率这样的处理和编码。



背景技术:

高度非线性传递函数4∶2∶0或4∶2∶2二次采样和非恒定亮度排序的组合导致饱和颜色中的严重伪像,即接近色域边缘的颜色值。在附录b中描述了一个示例,其中两种相似亮度的颜色之间的变化可能导致具有非常不同亮度的重构图像或画面。

解决问题的一种方法是不使用亮度值y′和色度值cb′和cr′进行编码,而是使用一些其他颜色表示。然而,有迹象表明,除y′cb′cr′以外的颜色表示不能很好地压缩。举例来说,mpeg(运动图像专家组)尝试了ydzdx,但是压缩效率相对于y′cb′cr′没有竞争力。

此外,许多系统已经使用y′cb′cr′或r′g′b′用于到显示器的信号的最后一步。例如,hdmi(高清晰度多媒体接口)标准最近已经采纳了使用st2084的y′cb′cr′4∶2∶0的利用,以用于如cea-861.3[4]中规定的从机顶盒到tv的图像传输。这意味着,即使编码是在一些其他颜色表示中完成的,解码后仍然需要转换为y′cb′cr′4∶2∶0,这会产生伪像。与其他解码链相比,正确地进行这种转换可能相当复杂,而在编码器中做同样的事情相对来说并不昂贵;编码已经比解码复杂得多了。因此,最好在编码器中已经对y′cb′cr进行了高质量的转换。由于这些原因,能够使用y′cb′cr′表示来进行hdr(高动态范围)数据的编码是有利的。

应对这个问题的另一种方法是简单地确保色域的边缘从不被使用。然而,这将严重限制可以再现的颜色的种类,所以这不是一个好的解决方案。

该问题的另一个解决方案是使用具有较低陡度(即较小非线性)的传递函数,如bt.1886。然而,这种方法的问题是需要更多的比特(bit)来表示像素的每个颜色分量以避免带状伪像。备选地,可以使用相同数量的位,但限制峰值亮度。

因此,需要对视频序列的画面中的像素进行有效处理,以克服至少一些上述问题,并且不具有上述解决方案的缺点。



技术实现要素:

本发明的一般目的在于,提供对视频序列的画面中的像素的改进处理。

实施例的一个方面涉及用于处理包括多个画面的视频序列的画面中的像素的方法。该方法包括识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。该方法还包括通过修改像素的至少一个颜色分量的值来处理识别的像素。

实施例的另一方面涉及一种用于处理包括多个画面的视频序列的画面中的像素的设备。该设备被配置为识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。该设备还被配置为通过修改像素的至少一个颜色分量的值来处理识别的像素。

实施例的另一方面涉及一种用于处理包括多个画面的视频序列的画面中的像素的设备。该设备包括:确定单元,用于识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。该设备还包括像素处理器,通过修改该像素的至少一个颜色分量的值来处理识别的像素。

实施例的又一方面涉及一种用于对包括多个画面的视频序列的画面中的像素进行编码的设备。该设备包括:确定单元,用于识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。该设备还包括像素处理器,用于通过修改该颜色的线性表示中的至少一个颜色分量的值来处理识别的像素。该设备还包括用于将该颜色的线性表示转换为该像素的颜色的非线性表示的转换器。该设备另外包括用于对该颜色的非线性表示进行编码的编码器。

实施例的另一方面涉及一种用于对包括多个画面的视频序列的画面中的像素进行编码的设备。该设备包括处理器和包括可由处理器执行的指令的存储器。处理器可操作以识别图像中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。处理器还操作为通过修改该颜色的线性表示中的至少一个颜色分量的值来处理所识别的像素。处理器进一步操作以将该颜色的线性表示转换为该像素的颜色的非线性表示。另外,处理器操作为对该颜色的非线性表示进行编码。

实施例的另一方面涉及一种包括指令的计算机程序,所述指令在由处理器执行时使所述处理器识别包括多个画面的视频序列的画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。还使处理器通过修改该像素的至少一个颜色分量的值来处理所识别的像素。

实施例的相关方面定义了一种包括如上所述的计算机程序的载体。所述载体是以下之一:电子信号、光信号、电磁信号、磁信号、电信号、无线电信号、微波信号或计算机可读存储介质。

实施例的另一方面涉及表示包括多个画面的视频序列的画面中的像素的编码版本的信号。所述编码版本包括根据任何实施例的像素的颜色的编码的非线性表示。

实施例的处理实现了对具有满足定义的标准的颜色的像素的颜色分量的选定的去噪。该去噪导致编码更便宜但针对肉眼不会与原始像素可见地不同(即没有任何去噪)的像素的颜色表示。

附图说明

通过参考以下结合附图的描述,可以最好地理解实施例及其进一步的目的和优点,在附图中:

图1是示出根据一个实施例的处理画面中的像素的方法的流程图;

图2是示出图1中的识别步骤的实施例的流程图;

图3是示出根据另一实施例的处理画面中的像素的方法的流程图;

图4是示出图1中的处理步骤的实施例的流程图;

图5是示出图1中的处理步骤的另一实施例的流程图;

图6是示出图1中的处理步骤的另外的实施例的流程图;

图7是示出根据实施例的用于形成对像素进行编码的方法的图1所示的方法的附加步骤的流程图;

图8示出了原始图像(a)的色调映射版本,用pq(.)处理以显示细节(b),u′(c)和v′(d)的线性亮度y;

图9示出了图像的r′g′b’版本,即在将非线性pq(.)函数应用于每个分量(a),y′分量(b),cb′(c)和cr′(d)之后的r′g′b’版本;

图10示出了与图9b(a)中相同的y′、二次采样的cb′分量(b)、二次采样的cr′分量(c)以及所得到的图像(d)的色调映射版本;

图11示出了锚图像(a)的pq(y)、u′分量(b)和v′分量(c);

图12示出了使用附件a(a)的ajusty方法的校正的y′、cb′分量(b)、cr′分量(c)、pq(y)和所得图像(e)的色调映射版本;

图13示出了函数pq(x)的曲线图;

图14示出了使用简单伪代码识别的问题区域;

图15示出了在模糊(b)之后模糊(a)之前的绿色分量(pq(g)),以及在原始和模糊版本(c)之间选择时得到的图像。

图16示出了原始图像(色调映射)(a)、使用所提出的过滤(b)、使用附件a的ajusty方法(c)以及使用所提出的过滤接着是附件a的ajusty方法(d)。

图17示出了附件a的ajusty方法的cb′(a),附件a的ajusty方法的cr′(b),所提出的方案的cb′(c)和所提出的方案的cr′(d)。

图18示出了使用附件a的ajusty方法的y′分量(a)和使用所提出的方案接着是附件a的ajusty方法的y′分量(b)。

图19示出了色调映射的原始图像(a)、色调映射的锚图像(b)以及针对不稳定的像素(即第一情况像素)不会影响pq(y)或u′v′超过4步的g的像素上的平均值g(c);

图20是示出根据一个实施例的方法的流程图。

图21是根据实施例的设备或转换器的硬件实现的示意图。

图22是根据具有处理器和存储器的实施例的设备或转换器的实现的示意图。

图23是根据实施例的用户设备的示意性框图;

图24是根据具有功能模块的实施例的设备的实现的示意图。

图25示意性地示出了多个网络设备之间的实施例的分布式实现;

图26是根据实施例的具有一个或多个基于云的网络设备的无线通信系统的示例的示意图。

图27示出了导出修正后的y′的实施例。

图28是示出在不同颜色区域中可以有不同的线性化的图。

图29示出了对比度敏感度的barten曲线;以及

图30示出了rec709和bt.2020色域之间的比较。

具体实施方式

贯穿附图将相同的附图标记用于类似或对应的元素。

本实施例总体上涉及对画面中的像素的处理和编码,并且具体涉及在感知到的质量没有显著恶化的情况下提高编码效率这样的处理和编码。

传统的编码链包括将输入的线性rgb光的像素(通常范围从0到10,000cd/m2)馈送到逆传递函数,其导致在0和1之间的新的像素值。此后,像素经历颜色变换,导致亮度分量y′和两个色度分量cb′,cr′。然后,对这两个色度分量进行二次采样,例如4∶2∶0或4∶2∶2。解码后,4∶2∶0或4∶2∶2序列被上采样到4∶4∶4,被反色变换,并且最后,传递函数给回可以在监视器上输出的线性光的像素。

颜色空间或颜色域是源自颜色模型的颜色分量组合的颜色的类型和数量。颜色模型是描述颜色可以表示为数字的元组(即,颜色分量)的方式的抽象配置。颜色分量具有若干个区别特征,例如分量类型,例如色调及其单位,例如度数或百分比,或者尺度(scale)的类型,例如线性或非线性,以及被称为颜色深度或位深度的其预期数量的值。

通常用于画面和视频中的像素的非限制性但是说明性的颜色空间包括红色、绿色、蓝色(rgb)颜色空间;亮度、色度蓝色和色度红色(ycbcr,有时表示为y’cbcr、y’cb'cr’、ycbcr、y’cbcr或y’cb'cr’)颜色空间以及亮度和色度(xyz)颜色空间。

在本文档中,将使用以下术语。

rgb:线性rgb值,其中每个值与cd/m2(“光子数”)成比例。

xyz:线性xyz值,其中每个值是rgb的线性组合。y被称为亮度,松散言语如“辉度(brightness)”很好地反映了眼睛感知的事物,xz包含色度。xyz有时被称为cie1931颜色空间。

pq(y):其中已经将非线性函数pq(·)应用于线性亮度y的非线性表示。非线性函数的示例是感知量化器(pq),其反函数在等式a1中定义。pq(y)不要与y′混淆。由于pq(.)基于barten曲线,pq(y)中的一小步相当于感知亮度的一小步。

r′g′b”:非线性的rgb值。r′=pq(r),g′=pq(g),b′=pq(b)。

y′cb′cr′:其中每个值是r′、g′和b′的线性组合的非线性表示。y′称为“亮度”,cb′和cr′统称为“色度”。这是为了区分y′和亮度,因为y′也包含一些色度,并且cb′和cr′也包含一些亮度。

ictcp:颜色表示,针对高动态范围(hdr)和宽色域(wcg)图像设计,并且旨在作为y′cb′cr′的备选。i表示强度并且是亮度信息的表示,而ctcp携带色度信息。

xy:从xyz中导出的色度的非线性表示。它是非线性的,因为它已经通过x=x/(x+y+z),y=y/(x+y+z)被归一化为“辉度”。单色激光在xy上的坐标总是相同的,不管它的强度是多少。这意味着xy是很好的色度测量。

u′v′:色度的非线性表示,即xy的非线性函数。它应该是更感知统一的,这意味着无论在哪个色度,u′v′中的一小步都是同样可感知的。就像针对xy,单色激光总是具有相同的u′v′坐标,不管它的强度是多少。

pq(y)xy和pq(y)u′v′:其中pq(y)包含所有亮度和xy或u′v′全部色度的颜色表示。从pq(y)中可以提取y,并且从y,x和y或者y,u′和v′可以提取可以被转换为rgb的xyz。

logluv:使用亮度y的对数和(u′,v′)色度坐标(无对数)来提供感知上统一的颜色空间。

本实施例提出了一种技术,以避免作为亮度值y′的替代或结合改变亮度值y′以校正亮度的像素的颜色的非线性表示(如cb′和cr′)中的过多变化。在大多数情况下,需要cb′和cr′的变化,因为它反映了编码的可见信号。尽管在某些情况下,cb′和cr′的变化并不反映视觉上明显的变化。在这种情况下,可以去除这种变化,给出编码更便宜的cb′cr′信号两者,因为变化越小意味着在编码过程期间的比特越少,并且不可能从真实信号中分辨并产生编码也更便宜的y′。

这是可能的,原因在于可能在类barten(barten′s-like)传递函数pq(y)和固定色度xy或者备选地,u′v′之后,选择以表示内容的信号空间(例如y′cb′cr′或ictcp)与人类视觉系统可以感知的信号空间(例如线性亮度y)之间的高度非线性依赖性。简而言之,可以说将数据表示为y′cb′cr′或ictcp,但将数据视为例如pq(y)u′v′。

非线性函数的标志是小的输入变化可以产生大的输出变化,反之亦然。这里当然是这种情况。在某些情况下,人类视觉系统可以看见的变量(例如pq(y)u′v′)的非常小的变化产生用于表示的信号y′cb′cr′的大的变化。通过在这些情况下去除pq(y)u′v′的小变化,有可能获得信号表示y′cb′cr′,其不会大幅变化,并且因此就表示编码信号表示所需的比特数量而言编码更便宜。当然,去除小的不可见变化将对视觉质量没有影响,这意味着更便宜的比特成本与视觉惩罚不相关。

例如,如果其中一个颜色通道或分量比另外两个颜色通道或分量低得多,则可以对该通道进行过滤,从而降低该通道中的变化。假设有其中一些像素具有线性颜色(r,g,b)=(1000,0.1,100),其他像素具有(r,g,b)=(1000,0.2,100)的区域。然后可以在绿色(g)分量上应用强平均滤波器,以便所有像素替代地得到(r,g,b)=(1000,0.15,100)的值。人类视觉系统将无法区分原始画面和经处理的画面与经过滤的绿色分量之间的差异,但是经处理的画面编码便宜得多。

如稍后将要描述的,其中优选降低变化(即去噪)的像素通常位于沿着色域的边缘。

一个优点是,通过在某些情况下对特定颜色分量进行去噪,有可能得到编码便宜得多但肉眼不能从原始图像中分辨的表示,即没有任何去噪。

相应地,实施例以这样的方式处理原始信号,使得当差异不可见或难以看见时,第一种情况下的像素颜色之间的差异被去除,而当差异可见时,第二种情况下的颜色差异被保持。通过这样做,在变化是不可见的或难以看见的第一种情况下,像素颜色的y′cb′cr′表示将变化更小或者根本不变,需要更少的比特或不需要比特来编码,而在变化实际上是可见的第二种情况下,它将变化。

理想情况下,该差异不应该在亮度或色度上可见。只有这样才能安全地更改数据,而不会有任何视觉伪像的风险。然而,亮度变化通常比色度变化更差,所以在某些情况下,该差异至少应当在亮度上不可见。

在第一种情况下的差异是通过在至少一个其他分量远离零时减少接近于零的分量的可变性而被去除的,以避免无论如何无法看到并且在编码期间可能产生的问题的y′cb′cr′中的可变性。

图1是示出处理包括多个画面的视频流的画面中的像素的方法的流程图。该方法包括在步骤s1中识别画面中要处理的像素。在步骤s1中识别为要在步骤s2中处理的像素的像素是满足两个标准的像素。首先,像素的颜色的线性表示的小于第一阈值的变化导致所述颜色的非线性表示的大于第二阈值的变化。其次,所述像素的线性表示的变化导致所述颜色的基于亮度和色度的表示的小于第三阈值的变化。如果在步骤s1中识别出要处理的像素,则该方法继续到步骤s2。该步骤s2包括通过修改所述像素的颜色分量中的至少一个的值来处理识别的像素。

因此,步骤s1包括识别画面内的这样的像素:其中在其颜色的线性表示的小改变或变化(即,小于第一阈值)导致所述颜色的非线性表示的相对大的改变或变化(即,大于第二阈值),但是如通过所得到的小于第三阈值的所述颜色的基于亮度和色度的表示的改变或变化所评估的,所述颜色的线性表示的所述改变或变化不会不利地影响视觉质量,即,优选地应不能由人类视觉系统看见。

因此,在步骤s1中识别出的像素是具有线性颜色表示的像素,该线性颜色表示可以以难以被人眼看见、但是会在非线性表示中产生显著变化的方式变化。然后,这样的像素是在步骤s2中以去除或至少减少这种可变性的方式被处理的候选者,并且由此意味着与未在步骤s2中处理所识别的像素的情况相比,可以用较少的比特来编码像素。

像素的颜色的线性表示优选地是颜色的rgb表示,即包括红色(r)颜色分量值、绿色(g)颜色分量值和蓝色(b)颜色分量值的表示。在另一个实施例中,颜色的线性表示是颜色的xyz表示。

像素的颜色的非线性表示优选地是颜色的y′cb′cr′表示,即包括亮度(y′)分量值和两个色度(cb′,cr′)分量值的表示。

在替代实施例中,像素的非线性表示是颜色的ictcp表示,其中i分量携带亮度信息并且ctcp分量携带色度信息。

基于亮度和色度的表示优选地是颜色的亮度+色度表示或基于诸如亮度和/或色度的函数的表示。在一个实施例中,基于亮度和色度的表示是颜色的pq(y)xy表示,即,包括亮度值(pq(y))的非线性函数(优选传递函数pq(.))的表示和色度的线性表示(xy)的表示。在另一个实施例中,基于亮度和色度的表示是pq(y)u′v′,即,包括亮度值(pq(y))的非线性函数(优选传递函数pq(.))和色度(u′v′)的非线性函数(优选传递函数pq(.))的表示。

基于亮度和色度的表示可以被认为是感知表示,因为它是人类视觉系统可以感知的颜色空间。

图2更详细地示出了识别步骤s1。该方法开始于步骤s10,该步骤调查小于第一阈值(t1)的像素的颜色的线性表示的变化是否导致大于第二阈值(t2)的所述颜色的非线性表示的变化。如果不是,则该方法结束,并且不执行像素的至少一个颜色分量值的修改。如果是的话,则该方法继续到步骤s11,该步骤s11包括调查小于第一阈值的线性表示的变化是否导致小于第三阈值(t3)所述颜色的基于亮度和色度的表示的变化。如果不是,则该方法结束,并且不执行像素的至少一个颜色分量值的修改。如果是,则该方法继续到图1中的步骤s2。步骤s10和步骤s11的顺序可以互换,即在步骤s10之前执行步骤s11中的调查,或者实际上至少部分并行地执行调查。

通常,第三阈值为零或至少接近于零,例如0.1或1。作为说明性示例,第二阈值可以是大约100。第一阈值的非限制性但是说明性的示例包括1或10。

在步骤s2中执行的处理包括修改像素的至少一个颜色分量的值。此外,该修改进一步优选地包括以使得颜色的非线性表示在比特的数量方面编码更便宜的方式改变至少一个颜色分量的值。因此,在步骤s2中处理所识别的像素的目的是以如下的方式修改或改变所识别的像素的至少一个颜色分量的值,使得像素编码更便宜,并且如在基于亮度和色度的表示中所评估的,所述改变或修改不显著使视觉质量恶化。

例如,像素的颜色的线性表示的小改变(即,小于第一阈值)不导致所述颜色的基于亮度和色度的表示的任何大的改变(即小于第三阈值),所述像素的颜色的线性表示的小改变(即,小于第一阈值)导致所述颜色的非线性表示的大于第二阈值的改变,这意味着非线性表示编码更便宜。作为示例,这个小改变可以修改所述颜色的非线性表示的值,所以所述颜色的非线性表示的至少一个颜色分量等于预测值或者至少接近其预测值。这意味着作为至少一个颜色分量的值与其预测值之差而计算的残差等于或至少接近于零。在这种情况下,至少一个颜色分量值可以用非常少的比特来编码。

通常,使用帧内预测或帧间预测,非线性表示中的颜色分量的值越接近其预测值,编码该值和颜色分量所需要的比特越少。因此,线性表示的变化优选地导致非线性表示中的至少一个颜色分量的值的变化,这意味着该颜色分量的残差是零或者至少接近于零。

步骤s2中执行的处理可以根据各种实施例来执行,这在本文中进一步描述。修改像素的至少一个颜色分量的值的处理的典型示例是对至少一个颜色分量应用滤波器。例如,可以对至少一个颜色分量进行重度过滤,以便去除或至少减少或抑制画面内的局部区域中的至少一个颜色分量的变化。另一个示例是将至少一个颜色分量的值替换为预定或固定的值。

在一个实施例中,图1的步骤s1包括识别画面中的具有小于第四阈值的颜色的线性表示的颜色分量的值的像素,并且针对该像素,所述颜色分量的值与所述颜色的线性表示的另一颜色分量的值之比小于第五阈值。

第四和第五阈值的非限制性但是说明性的示例分别是4和0.5。

例如,如果诸如rgb表示的颜色的线性表示的第一分量的值小于第四阈值,并且诸如rgb表示的颜色的线性表示的第一分量的值与第二分量的值之比小于第五阈值,那么确定像素可以以难以被人眼看见、但是可以产生颜色的非线性表示的显著变化的方式变化。

在备选或附加的实施例中,图1的步骤s1包括识别画面中的像素,该像素具有小于第四阈值的颜色的线性表示的颜色分量的值,并且针对该像素,所述颜色的线性表示的至少一个颜色分量的值大于第六阈值。

第六阈值的非限制性但是说明性的示例是10。

在特定实施例中,步骤s1包括识别画面中的具有小于第四阈值的颜色的线性表示的颜色分量的值的像素,并且针对该像素,所述颜色的线性表示的至少一个其他分量的值等于或大于所述颜色的线性表示的颜色分量的值的因数倍。所述因数大于一。

例如,像素可以是具有小于4cd/m2(第四阈值)的一个rgb分量的值的像素,并且其他rgb分量的值至少是一个rgb分量的两倍,即因数等于二。

在备选或附加的实施例中,图1的步骤s1包括识别要在画面中处理的像素,针对该像素,颜色的线性表示(诸如rgb或xyz)的变化小于第一阈值导致大于第二阈值的颜色的y′cb′cr′表示的变化。颜色的线性表示(诸如rgb或xyz)的变化也导致小于第三阈值的颜色的pq(y)u′v′或pq(y)xy表示的变化。

表示pq(y)u′v′或pq(y)xy全部是基于亮度和色度的表示,并且还是感知表示,即人类视觉系统可以感知的颜色空间。

在特定实施例中,颜色的线性表示是颜色的rgb表示。在这样的实施例中,参见图3,步骤s1包括:在步骤s20中并且针对像素,基于亮度分量y′、色度分量cb′和色度分量cr′相对于颜色的rgb表示中的至少一个颜色分量的导数和基于亮度的分量pq(y)和基于色度的分量u′v′或xy相对于rgb表示中的至少一个颜色分量的导数来计算不稳定性系数(ci)。如果不稳定性系数高于第七阈值(t7),则参见步骤s21,该方法还包括选择要处理的像素。

第七阈值的非限制性但是说明性的示例是1、4和10。

在特定实施例中,步骤s20包括基于下式来计算不稳定性系数ci:

或者

其中w1...w6是非零权重或不存在,即等于1,并且a表示rgb表示中的红色分量r、绿色分量g和蓝色分量b中的一个。权重可以设置各个颜色分量对于计算不稳定性系数的重要性。

例如,在pq(y)xy颜色空间中,pq(y)可以从0变化到1,但是x只能从0.15变化到0.64,距离0.64-0.15=0.49。同样,y只能从0.06变化到0.60,相差0.54。因此,x和y的改变可能是pq(y)的改变的重要性的两倍左右。这将建议,例如,w4=1.0,w5=2.0,w6=2.0。

在上面的示例中,还没有充分利用人类视觉系统对亮度变化比对色度变化更敏感的事实。因此,将w5和w6降低甚至低于1.0可以是明智的。

下面的示例说明了这一点,但在pq(y)u′v′颜色空间。在这里众所周知的是,如果将pq(y)量化为11比特,u′和v′量化为9比特,则结果与原始的不可区分。因为u′和v′从0到0.62改变,所以这意味着对于u′和v′实际上不可能区分(1/29)*0.62=0.0012109375的改变。类似地,由于pq(y)从0变化到1,所以对于pq(y),(1/211)*1=0.00048828125的改变实际上应该是不可区分的。因此w4=1.0,w5=w6=(0.00048828125/0.0012109375)=0.40322580645可能是pq(y)的一个很好的折衷。

通常cb′和cr′是二次采样的,这意味着这些分量的变化可能是非常麻烦的;如果cb′和cr′没有可变性,那么二次采样不会改变任何东西,并且可以避免亮度伪像。这意味着在w2和w3中较高的权重会是有益的,例如w1=1.0,w2=4.0,w3=4.0。在另一个应用中,看看y′的变化就足够了,这意味着可以使用w1=1.0,w2=0.0,w3=0.0。

在一个实施例中,图1的步骤s2中的处理包括:参见图3,在步骤s22中,如果不稳定性系数高于第七阈值,则用至少一个颜色分量的修改值替换像素的至少一个颜色分量的原始值。在该实施例中,如果不稳定性系数等于或小于第七阈值,但等于或大于第八阈值(t8),则在步骤s24中用至少一个颜色分量的原始值与至少一个颜色分量的修改值的线性组合替换至少一个颜色分量的原始值。相应地,如果不稳定性系数小于第八阈值,则在步骤s25中保持至少一个颜色分量的原始值。

第八阈值的值的非限制性但是说明性的示例是1000,特别是如果权重w1至w6全部等于1.0的话。

该方法因此可以包括将不稳定阈值与第八阈值进行比较的可选步骤s23。

步骤s24中使用的线性组合可以被定义为(1-α)×(原始值)+α×(修改值)。在一个实施例中,α=(ci-t7)/(t8-t7)。在另一个实施例中,因此,在一般实施例中,基于不稳定性系数或者根据不稳定性系数的函数来计算参数α,并且优选地基于不稳定性系数以及第七和第八阈值或根据不稳定性系数以及第七和第八阈值的函数来计算参数α。

在一个实施例中,在步骤s2中处理所识别的像素包括通过修改颜色的线性表示的至少一个颜色分量的值来处理所识别的像素。例如,如果线性表示是像素的颜色的rgb表示,则在步骤s2中的修改是对r分量、g分量、b分量的值的修改或者对三个r、g、b分量中的两个或甚至三个的值的修改。

在一个实施例中,处理所识别的像素包括通过利用具有取决于或基于不稳定性系数的滤波器系数的滤波器对至少一个颜色分量进行过滤来修改像素的至少一个颜色分量的值。

例如针对该像素可以将滤波器系数设置为1/ci,并且然后,将与像素值相乘的相应滤波器系数的加权和除以滤波器系数的总和。因此,具有大的不稳定性系数的像素比具有小的不稳定性系数的像素对经过滤的值的影响较小。另一种备选方案是对于不稳定性系数大于阈值(例如t7)的像素设置权重为0,对于其他像素设置权重为1,因此只有可靠的像素才会对经过滤的值具有影响。

在一个实施例中,图1的步骤s2被执行,如图4的步骤s31所示。该步骤s31包括用该画面中的相邻像素的至少一个颜色分量的值的加权平均来替换该像素的该至少一个颜色分量的值。

相邻像素可以是画面中的相邻像素。例如,假设当前像素在画面中具有像素号(i,j)。在这种情况下,相邻像素可以是具有作为说明性示例的像素号(i-1,j-1),(i-1,j),(i-1,j+1),(i,j-1),(i,j+1),(i+1,j-1),(i+1,j)和(i+1,j+1)的像素。因此,相邻像素可以是以画面内的当前像素的位置为中心的画面中诸如正方形的区域内存在的像素。在上述说明性示例中,正方形具有3×3像素的尺寸。其他尺寸(例如2×2像素(其中当前像素在拐角之一中))或者更大尺寸(例如4×4或甚至更大)也是可能的。

在替代实施例中,相邻像素是属于与画面中的当前像素相同的编码单元(cu)、预测单元(pu)或变换单元(pu)的像素。

在上面的实施例中,关于相邻像素在画面中的位置相对于画面内的当前像素的位置的相邻像素是预先确定的。在其他实施例中,如图4的步骤s30中示意性地示出的,画面中的相邻像素被识别。该步骤s30包括识别画面中的相邻像素,针对所述相邻像素,小于第一阈值的相邻像素的颜色的线性表示的变化导致大于第二阈值的相邻像素的颜色的非线性表示的变化。相邻像素的颜色的线性表示的变化也导致小于第三阈值的相邻像素的颜色的基于亮度和色度的表示的变化。

因此,在一个实施例中,在图4的步骤s30中,使用与图1中的步骤s1中用于识别当前像素相同的标准来识别相邻像素。

该方法然后继续到步骤s31,该步骤s31包括用该画面中所识别的相邻像素的至少一个颜色分量的值的加权平均来替换该像素的该至少一个颜色分量的值。

本实施例假设只有与当前像素“相似”的相邻像素被包括在平均中。这里的类似意思是相邻像素的颜色符合与当前像素相同的标准。

在另一实施例中,图4中的步骤s30包括识别画面中的相邻像素,针对所述相邻像素,所述像素的基于亮度的分量的值和所述相邻像素的基于亮度的分量的值之间的绝对差等于或小于第九阈值。此外,所述像素的基于色度的分量的相应值与相邻像素的基于色度的分量的相应值之间的相应绝对差等于或小于第十阈值。

在本实施例中,步骤s30的识别包括调查|pq(y2)-pq(y)|≤t9和|u’2-u’|≤t10和|v’2-v’|≤t10或者|x2-x|≤t10和|y2-y|≤t10,其中t9和t10表示第九和第十阈值,而没有下标的分量表示像素的基于亮度或色度的分量,具有下标2的分量表示相邻像素的基于亮度或色度的分量。

如果使用pq(y)xy,则在说明性而非限制性的示例中,t9可以是0.1或1,而t10可以是0.05或1。

步骤s30中测试的相邻像素以及上述实施例中所描述的可以是整个画面内的像素;与当前像素相同的片内的像素;与当前像素相同的编码单元(cu)、预测单元(pu)或变换单元(tu)内的像素;或者存在于如上所述的以当前像素的位置为中心的区域(例如正方形)内的画面中的像素。

图5是示出图1中的步骤s2的实施例的流程图。在该实施例中,方法从图1中的步骤s60继续到图5中的步骤s40。步骤s40包括将至少一个颜色分量的值设置为诸如零的固定值,或者基于颜色的线性表示来确定的固定值。例如,颜色的线性表示的至少一个颜色分量的值可以用于在多个固定值之间进行选择。例如,如果该值在第一间隔内,则将该值设置为第一固定值,如果该值在第二不同的间隔内,则将该值设置为第二固定值,等等。

例如,对于其中最小分量比其他小得多的颜色,例如在rgb=(4000,100,0.01)的情况下,可以将最小分量对齐到0。备选地,可以使用小的非零值,例如0.1、1或10,这将减小像素的不稳定性。

图6是示出图1中的步骤s2的另一实施例的流程图。在该实施例中,该方法从步骤s1继续到步骤s41,其包括对像素的至少一个颜色分量的值进行过滤。

在一个实施例中,步骤s41包括利用具有基于先前提到的不稳定性系数确定的滤波器系数的滤波器来对像素的至少一个颜色分量的值过滤。例如,滤波器系数可以与不稳定性系数的量值成反比。

在前文中,如果像素满足两个标准,则像素的至少一个颜色分量的值可能被修改。在典型的实施例中,对颜色分量之一进行修改,优选地对具有最小值的颜色分量进行修改。然而,在一些情况下,可以修改像素的多于一个(例如两个或全部三个)的颜色分量。

实施例的预处理优选针对画面中的至少一个像素执行。可以在步骤s1中测试每个像素以确定像素是否应该被修改。因此,对于画面,可以在步骤s1中识别像素中的一个或若干个,并在步骤s2中对其进行修改,而画面的一个或若干个其他像素不满足步骤s1中测试的标准,并且因此在步骤s2中未被修改。这由图1中的线l1示出。

实施例的另一方面涉及对包括多个画面的视频序列中的画面进行编码的方法。该方法包括根据诸如在图1的步骤s1和s2中公开的任何一个实施例来处理像素以在像素的颜色的线性表示中修改像素的至少一个颜色分量的值。参见图7,该方法还包括在步骤s3中将颜色的线性表示转换为像素的颜色的非线性表示。该方法进一步包括在步骤s4中对颜色的非线性表示编码。

步骤s3中的转换是在步骤s2中已经修改了像素的至少一个颜色分量的值之后进行的。

在编码方法的实施例中,根据所描述的实施例识别的像素的rgb分量中的至少一个的值被修改。然后优选地将修改的rgb表示4∶4∶4转换为4∶2∶2或4∶2∶0的y′cb′cr表示。这种转换通常包括应用传递函数,例如附件a中等式a1中定义的传递函数的反函数,以获得4∶4∶4的非线性r′g′b′表示。然后,对r′g′b′表示4∶4∶4应用颜色变换以获得4∶4∶4的y′cb′cr′表示。此后,对非线性色度分量cb′cr′进行二次采样以获得4∶2∶2或4∶2∶0格式的y′cb′cr′表示。

根据一个方面,提供了一种用于从第一颜色表示转换为另一颜色表示的方法和转换器。转换器接收表示第一颜色表示中的至少第一像素的比特流。转换器被配置为确定是否以难以被人眼看见(也被称为可见)、可以在第二颜色表示中产生显著的变化的方式改变像素。这样的确定可以根据本文描述的任何一个方法来完成。

例如,如果rgb表示中的第一分量小于预定阈值,并且rgb表示中的第一分量和第二分量之比小于另一个预定阈值,则确定该像素可以以难以被人眼看见但可以在第二颜色表示中产生显著的变化的方式变化。

根据一个实施例,在用以下颜色表示进行编码之前执行转换:

第一颜色表示:rgb

第二颜色表示:y′cb′cr′

在一个替代实施例中,当使用另一种传输格式但是当显示器需要具有以下颜色表示的y′cb′cr′时,在解码之后执行转换:

第一颜色表示:logluv

第二颜色表示:y′cb′cr′

在一个示例中,当编码预处理在产生具有以下颜色表示的y′cb′cr时没有恰当地做其工作时,在解码之后执行转换:

第一颜色表示:y′cb′cr′

第二颜色表示:y′cb′cr′

当确定像素可以以对于人眼难以看见但是可以在第二颜色表示中产生显著的变化的方式变化时,处理该像素以去除潜在的这种可变性。这种处理可以根据本文所述的任何一个方法来完成。例如,rgb颜色表示中的最小分量可以被设置为固定值。另一种可能性是用相邻像素的最小分量的加权平均替换所述rgb颜色表示中的最小分量。

通过这种方式避免了y′cb′cr′中的可变性,所述可变性无论如何不可被看见,并且其可能会产生在编码和解码期间的问题。

典型的压缩链,在这里表示为锚处理链,是在[2]中针对锚生成描述的压缩链。根据[2]中的b.1.5.3.1部分,输入的范围从0到10000的线性光线像素(r,g,b)首先馈送到传递函数:

r’=pq_tf(max(0,min(r/10000,1)))

g’=pq_tf(max(0,min(g/10000,1)))

b’=pq_tf(max(0,min(b/10000,1)))

其中m1=0.1593017578125,m2=78.84375,c1=0.8359375,c2=18.8515625和c3=18.6875。在本文档中,将使用pq(x)作为执行pq_tf(max(0,min(x/10000,1)))的快捷方式,因此r’=pq(r),g’=pq(g)和b’=pq(b)。

这导致在0和1之间的新像素表示(r′,g′,b′)。之后,像素经历颜色变换,产生y′cb′cr′。例如,如果颜色空间是rec.709,则y′cb′cr′分量计算为:

y′=0.212600*r′+0.715200*g′+0.072200*b′

cb′=-0.114572*r′-0.385428*g′+0.500000*b′

cr′=0.500000*r′-0.454153*g′-0.045847*b′

备选地,如果颜色空间是rec.2020,那么y′cb′cr′分量计算为

y′=0.262700*r′+0.678000*g′+0.059300*b′

cb′=-0.139630*r′-0.360370*g′+0.500000*b′

cr′=0.500000*r′-0.459786*g′-0.040214*b′。

然后根据[2]中的b.1.5.4,将y′cb′cr′分量量化为固定数量的比特。之后,根据[2]中的b.1.5.5,cb′和cr′分量被二次采样到4∶2∶0。然后根据b.1.5.6将cb′和cr′上采样到4∶4∶4,根据b.1.5.7进行逆量化,在b.1.5.8中转换为rgb,最后通过b.1.5.9中的逆转换pq转换为线性rgb。

现在将看见使用上述处理链进行处理时两个像素会发生什么。

例如,假设有一个颜色rgb1=(1000,0.1,100)的像素。现在将看见如果稍微改变这个像素的颜色使得假设替代的颜色rgb2=(1000,0.2,100)会发生什么情况。

在锚生成过程之后,首先应用传递函数pq(.),其分别给出r′g′b′值(0.751827,0.062337,0.508078)和(0.751827,0.082836,0.508078)。在转换为y′cb′cr′并量化为10比特之后,得到y′cb′cr′=(275,641,803)和(288,634,794)。可以看出,这是一个相当大的变化;y′变化13步,cb′和cr′分别变化7步和9步。这对于视频编码器编码将是相当昂贵的。

然而,这两种颜色之间的差异是不可能看见的。

很好地理解人类如何感知亮度的差异。对于大的亮度,即非常亮的颜色,绝对误差可能相当大,但相对误差必须保持为小。对于小亮度,情况正好相反。这可以用所谓的barten公式来表示。作为经验法则,如果计算亮度,则通过接近barten公式并被量化为11比特的传递函数馈送,将不可能看见任何差异。

现在将这个应用于两种颜色。首先使用y=0.212639*r+0.715169*g+0.072192*b根据原始亮度值rgb计算线性亮度y。

请注意,这里针对y分量使用了来自[2]的b.1.5.9.3中的定义,它具有来自[2]的b.1.5.3.2中的y′cb′cr′中的y′的计算略有不同的舍入。这可能只是b.1.5.3.2中的一个舍入误差,但是在这两种情况下,都保持与[2]中相同的数字。

上述两种颜色的亮度分别为219.929717和220.001234。如果将barten公式与上面的pq(.)近似并且通过乘以211-1=2047而量化为11比特,则得到1205.840435和1205.910257,这意味着如果量化为11比特,则它们两者将由相同的码字1206表示。这意味着就亮度而言,两种颜色之间的差异将是不可见的。

接下来,看色度的差异。这里,根据经验法则,u′和v′系数的9比特量化足以具有透明质量。u′v′坐标通过下式根据xyz获得:

u′=4x/(x+15y+3z)

v′=9y/(x+15y+3z)

并且x、y、z通过下式根据rec.709rgb获得:

x=0.412391*r+0.357584*g+0.180481*b

y=0.212639*r+0.715169*g+0.072192*b

z=0.019331*r+0.119195*g+0.950532*b。

当把两种颜色转换为u′v′并乘以29-1=511时,得到(216.050845,248.355974)和(216.008101,248.366952)。如可以看出,在u′和v′两者之间的差异小于1,因此不可能发现两个色度之间的差异。

由于不可能看见亮度和色度的差异,所以根本不可能发现差异。然而,这个表示在y′中变化了13步,在cb′cr′中变化了6或7步。这意味着如果区域中的一般颜色是(1000,0.15,100),但是从像素到像素+/-(0,0.05,0)变化,则编码器必须花费比特来编码看不见的差异。

看看这两种颜色(1000,0.1,100)和(1000,0.2,100)的rgb数量,则有意义的是这两种颜色是不可能在视觉上区分的。一般辉度改变不大是合理的;绿色分量的额外强度将被明亮的红色和蓝色所淹没,分别是10000倍和1000倍。另外,色度不会有太大的变化,因为增加绿色光的比特到那么强的红色和蓝色光也是有意义的。

如果红色和蓝色的分量较低,情况会非常不同。如果用两种颜色rgb1=(0.1,0.1,0.2)和rgb2=(0.1,0.2,0.2)进行相同的计算,则得到以下数字:

pq(0.212639*0.1+0.715169*0.1+0.072192*0.2)*2047=131.4072

pq(0.212639*0.1+0.715169*0.2+0.072192*0.2)*2047=162.1153

这是31步的差异,其中1步是明显不同的。这意味着这种亮度差异很可能被发现。

至于色度,得到

对于第一颜色,u′*511=99.0733,v′*511=211.3358,以及

对于第二颜色,u′*511=87.4913,v′*511=236.3768。

这是大约11和25步的差异,这意味着色度差异可能非常可能看见。考虑到在0.1和0.2cd/m2之间的非常低的亮度,不能确定色度差异是显著的,但是至少不能像第一个示例那样排除色度差异。

如果将这两种颜色转换为如上所述的10比特-y′cb′cr′,得到(120,521,511)和(133,514,503),13、7和8的差异。

因此,在第一个和最后一个情况下,在y′cb′cr′上有差异,这是大约相同的(13,7,9)相对于(13,7,8)。然而,在第一种情况下,没有可见的差异,而在第二种情况下,至少在亮度上可以容易地看见差异。在本文中,将第一种颜色称为“第一情况颜色”,第二种颜色称为“第二情况颜色”。也将涉及“第一情况像素”,这意指具有第一情况颜色的像素,并且涉及“第二情况像素”,这意指具有第二情况颜色的像素。

在实施例中,以这样的方式处理原始信号,使得第一种情况下的差异被去除,而第二种情况下的差异被保留。通过这样做,y′cb′cr′表示将是平(flat)的,即,在第一种情况下,不需要或需要少量比特编码,而在第二种情况下它将是变化的,其中变化实际上是可见的。

一个真实世界的示例显示在图8a-8d中示出。这里,图8a示出了画面或图像的低动态范围(ldr)或色调映射部分。集中在天幕(awning)。它看起来好像颜色在那里或多或少是平的。这也在图8b-8d中得到了证实。图8b示出看起来平的xyz中y分量的pq(.),图8c和8d分别示出了u′和v′坐标,其也看起来是平的。

图9a示出了其中r′=255*pq(r)的图像的r′g′b′版本。可能开始看见天幕区域的一些变化,这是由于pq(x)函数对于小的x值非常快速地上升,因此增强了绿色分量中的噪声。

在图9b-9d中,示出了y′、cb′和cr′分量。注意在天幕区域它们是如何变化很宽,图8a-8d表示在亮度和色度上都没有真正地发生任何事情。编码的标准(即锚(anchor))现在继续到对cb′和cr′分量进行二次采样,并保持y′原样。这在图10a-10d中示出。现在,由于二次采样的cb′值是两个非常不同的c′b值的平均,所以结果将是不符合任一像素中的y′值的cb′值。这会产生清晰可见的噪声,如图10d所示,它是应用于线性y分量的pq(.)。在图像的ldr(色调映射)版本中也清晰可见。图10a示出了与图9b中相同的y′被使用。图10b和10c示出了二次采样的cb′和cr′分量。

所得图像的pq(y)、u′和v′分量示于图11a-11c中,看见了明显的伪像,特别是在亮度中。

一种理解这一点的方法是,先前在图9b中的y′分量不得不补偿cb′和cr′中的大幅摆动,并且当cb′和cr′由于二次采样而不再剧烈摆动时,y′中的大幅摆动反而给图像带来了伪像。

解决这个问题的一种方法已经在附件a的ajusty方法中提出,在这里找到了能带来正确线性光y的y′。这通常意味着y′中的大幅摆动被抑制了一些,使得y′更容易编码。这种方法示出在图12a-12e中。比较图12a和图10a,显然ajusty方法使得y′变化更小,但仍然不平。

图12a示出了使用附件a的ajusty方法的校正的y′。请注意,现在的y′分量是多么平静,因此编码更容易,但在相关领域仍然不平。这是由于cb′和cr′中剩余的摆动,这些摆动在图12b和12c中示出。得到的线性亮度y是完美的,如图12d所示,其中pq(y)被示出。此外,图12e的色调映射图像看起来不错。

这里的教训是,虽然使用附件a的ajusty方法改善了情况,但是仍然可能存在问题。首先,如图12b和12c所示,cb′和cr′仍然存在一些变化。这将花费比特来编码。这也意指附件a的ajusty方法必须通过改变y′来进行补偿,参见图12a。即使这种变化比以前少得多,参见图10a,这仍然产生编码昂贵的比特。

此外,编码过程是有损的,所以y′将不能完美保存,因此重新引入了一些伪像,尽管比原始伪像小得多。而且,cb′和cr′也不能完美保存,所以即使使用了正确的y′,也不会完美地补偿,因为cb′和cr′已经改变了。

因此,实施例的目的是识别这样的有问题的像素,使用上面的术语的所谓的“第一情况像素”,并且减少或去除该变化。

一种方式是识别第一类像素,并只对那些像素进行过滤。“第一情况像素”由两个标准来表征:

1、线性表示(例如rgb或xyz)的小变化产生y′cb′cr′的大变化。

2、变化本身是不可能看见的,即它们在例如pq(y)u′v′中产生小的变化。

假设数据已经以线性rgb捕获。进一步假设在其中一个分量中有一些噪声,比如绿色(g)分量。第一个标准仅仅意指y′cb′cr′相对于绿色分量的导数是大的:

标准1:为大,为大,为大。

同样,第二个标准只是意指相应的导数是小的:

标准2:为小,为小,为小。

这些导数是直接计算,但有一点涉及到,所以他们不被包括在这里。

为了得到标准1的测量,可以看矢量的长度当这个矢量很长时,知道信号表示对g中的变化非常敏感。同样,对于标准2,可以看矢量的长度当这个矢量很短时,图像与g的变化不大。这意指针对g中多少看不见的噪声影响每个像素,可以得到针对每个像素的测量。这被称为不稳定性系数ci:

因此,一个实施例是针对每个像素计算该不稳定性系数,并使用它来选择原始绿色分量g和g的重平滑版本。如果不稳定性系数低于阈值,则选择原始g,并且如果不稳定性系数高于另一个阈值,则选择平滑版本。如果不稳定性系数在这两个阈值之间,则使用凸组合(1-α)*原始g+α*平滑的g,其中α被计算为α=(ci-th1)/(th2-th1),其中th1是较低的阈值,th2是较高的阈值。备选地,可以使用α=(√(ci)-th1)/(th2-th1)或者以某种其他方式根据ci计算出α。

作为示例,可以针对rgb=(1000,0.1,100)估计ci以产生42222的ci。对于rgb=(0.1,0.1,0.2)的情况,ci近似为0.1159。因此,可以有th1=1.0和th2=1000的阈值。这将在第一种情况下只选择平滑的g以及在第二种情况下只选择原始像素。

在另一个实施例中,对绿色分量进行过滤,并且对于每个像素,滤波器系数取决于不稳定性系数ci。

在一个优选实施例中,针对每个分量单独地计算不稳定性系数ci,例如:

基于人类视觉系统(hvs)对每个分量的变化有多敏感,阈值th1和th2对于所有分量可以是相同的或者对于每个分量加权不同。对于rgb,阈值例如可以按照以下方式彼此相关:

th1r=(1-0.212639)*(th1r+th1g+th1b)

th1g=(1-0.715169)*(th1r+th1g+th1b)

th1b=(1-0.072192)*(th1r+th1g+th1b)

th2r=(1-0.212639)*(th2r+th2g+th2b)

th2g=(1-0.715169)*(th2r+th2g+th2b)

th2b=(1-0.072192)*(th2r+th2g+th2b)

正如现在所示,也可以近似不稳定性系数。

首先看像素,其中是高的。有

r′=pq(r)

g′=pq(g)

b′=pq(b)

和自从

y′=0.212600*r′+0.715200*g′+0.072200*b′

cb′=-0.114572*r′-0.385428*g′+0.500000*b′

cr′=0.500000*r′-0.454153*g′-0.045847*b′

y′=0.212600*pq(r)+0.715200*pq(g)+0.072200*pq(b)。

直接看见,只有中间项才对有贡献,因为其他两个项根本不依赖于g。图13绘制了从0到10000的值的pq(x)。请注意,对于接近0的x值,导数如何非常大,即斜率如何非常陡峭。

即使没有计算pq(x)的导数,很明显对于x的小数值它必须是在其最大处。所以可以得出结论:

当g接近0时,为大。

不关心这个导数的符号,因此取绝对值。以同样的方式,可以得出结论:

当g接近0时,为大

当g接近0时,为大。

因此,当g接近0时,可以看见满足第一个条件。第二个条件呢?感兴趣的是值pq(y),其中

y=0.212639*r+0.715169*g+0.072192*b

使用与上面相同的推理,看见,当y接近0时,为大,当y远离零时,为小。假设已经完成了第一个条件。这意指g接近于零。要使y远离零,必须意指r或b或两者都是大的值。因此,有以下经验法则:

如果g接近于零,而r或b或两者都远离零,那么有高的不稳定性系数,应该去除g中的可变性,比如通过对它进行重度过滤。

红色和蓝色可以做同样的推理:

如果r接近零而g或b或两者都远离零,那么应该对r进行重度过滤。

如果b接近零,而r或g或两者都远离零,那么应该对b进行重度过滤。

在所有这些情况下,有接近色域的边缘的像素。但是,请注意,某些像素可能接近色域的边缘,而不简单地作为用于去除噪声的候选,因为最小系数不足够小以处于如图13所示的pq()曲线的陡峭倾斜部分。

在以下示例中,针对可变性测试像素的绿色分量。对于其他两个分量,即红色分量和蓝色分量,相同的程序可以被替换。

现在可以把这个理论付诸实践。例如,可以找到g<4cd/m2的所有像素,并且r和b至少是g的两倍大:

结果是不稳定像素(即所谓的“第一情况像素”)为1或者白色,并且正常像素(即,所谓的“第二情况像素”)为0或者黑色的掩码(mask)。如图14a和14b所示,这非常好地捕获问题区域。

现在可以对很难在这个区域中的绿色系数进行过滤。但是请注意,不想跨越边缘进行过滤;只想对相似的像素进行过滤。这可以通过查看像素的邻域来完成,并取得邻域中所有作为“第一情况像素”的像素的平均:

现在有一个原始的绿色分量g(x,y)和一个模糊版本的gblur(x,y)。图15a和15b示出了绿色分量在模糊之前和之后的样子。

现在可以使用掩码在两者之间进行选择:

得到的g分量如图15c所示。在此之后,使用链的常规步骤:通过应用传递函数的从rgb到r′g′b′的转换,通过应用颜色变换的从r′g′b′到y′cr′cb′的转换,cb′和cr′的二次采样,然后该链反转以回到rgb。结果图像如图16b所示。

将图16b与图9d比较,结果在天幕中的噪声少得多,但是不如使用附录a中公开的ajusty方法那样好,参见图16c。这是因为g(x,y)和gblur(x,y)之间的艰难选择。它会产生可以沿着天幕区域边缘看见的伪像。幸运的是,可以将其与附件a中的ajusty方法结合起来,如图16d所示。这带回了亮度的全部质量,并且所得到的图像看起来不错。在替代实施例中,在g(x,y)和gblur(x,y)之间做出软判决,例如通过制作软掩码:

现在,当选择g(x,y)时,可以使用该软掩码而不是硬掩码:

对于所有像素位置x,y

g(x,y)=softmask(x,y)*gblur(x,y)+(1-softmask(x,y))*g(x,y)

end

与仅使用附件a的ajusty方法相比,获得了什么?好吧,好消息是cb′和cr′包含较少的变化,因此编码更容易,如图17a-17d所示。图17a和17b示出了附件a的ajusty方法的cb′和cr′。注意如何有相当多的可变性。所提出的方案的cb′和cr′如图17c和17d所示。注意可变性是如何降低的。

与用于附件a的ajusty方法相比,亮度也变化较小,如图18a和图18b所示,图18a示出了使用附件a的ajusty方法的y′分量,图18b示出了使用所提出的方案接着是附件a的ajusty方法的y′分量,注意可变性是如何降低的。

在上面关于如何对绿色分量过滤的讨论中,在图13之后,提到为了确保只有相似的像素被平均,在平均中只包括“第一情况”像素。实际上,这并不能确保仅平均相似的像素。例如,(1000,0.1,100)和(0.1,1000,100)都是第一情况像素,但是非常不相似。如果它们彼此相邻,它们将被平均。解决这个问题的一个方法是将邻域中的每个像素与当前像素进行比较。如果g的变化足够小而不可见,则在平均中包括邻域像素。但是,如果g的变化足够大而可见,则不包括邻域像素。这也可以通过对邻域中的每个像素分配权重来以软方式完成,如果g的变化将接近可见,则权重较小,而如果g的变化将远离可见,则权重较大。上述方法可以扩展到以下。

在这种情况下,由于已经确保所有的变化都是不可见的,可以使用g=gblur而不根据掩码选择。

在又一替代实施例中,该行

(x2,y2,z2)=calculatexyz(r(x2,y2),g(x2,y2),b(x2,y2)

被互换为

(x2,y2,z2)=calculatexyz(r(x,y),g(x2,y2),b(x,y))

通过减小数字2047和511,也可以放宽变化完全不可见的要求。在这种情况下,恢复测试可能是一个好主意,使得当有不稳定的像素时,只使用g=gblur。

作为示例,在图19a-19c中,使用了值511而不是2047,值127而不是511。如上所做,使用条件g(x,y)<4.0且g(x,y)<0.5*r(x,y)且g(x,y)<0.5*b。在色调映射图像中可以看见,噪声显著降低。图19a示出了色调映射的原始图像,图19b示出了根据锚处理链来处理的色调映射图像,而图19c示出了具有针对不稳定的像素(即第一情况像素)不会影响pq(y)或u′v′超过4步的g的像素上的平均值g的图像。

在又一个实施例中,注意到,当g为小而r为大时,不稳定的像素影响,即第一情况像素影响将是最强的。这是由于根据rgb计算y的方式:

y=0.212639*r+0.715169*g+0.072192*b

取决于分量前面的系数;例如,针对(1000,0.1,100)的将是针对(1000,0.1,100)的的10倍,仅0.715169是0.072192的10倍。因此,上述经验法则可以改为:

如果0.715169g接近零,而0.212639r或0.072192b或两者都远离零,应该对g进行重度过滤。

如果0.212639r接近零,而0.715169g或0.072192b或两者都远离零,应该对r进行重度过滤。

如果0.072192b接近零,而0.212639r或0.715169g或两者都远离零,应该对g进行重度过滤。

因此,可以替代地将对于g的掩码计算为:

对所有三个分量进行过滤而不仅仅对g分量进行过滤的上述方法的一般化版本可以实现如下:

例如,权重a和b可以分别设置为2047和511,或者分别设置为511和127,或者设置为针对压缩优化的值,例如,在用hevc编码器以不同比特率压缩之后给出最佳的bd-速率数字。

上述方法的“软过滤”版本可以实现如下:

当a,b和c为小时,f(a,b,c)是具有等于或接近1的性质的任何一个函数,当a,b和c中的任何一个为大时,f(a,b,c)是具有小于和等于或接近0的性质的任何一个函数。

函数f(a,b,c)的非限制性但是说明性的示例包括min(a,b,c)/max(a,b,c)和min(a,b,c)/(max(a,b,c)+s),其中s为小,通常为正值,如0.1。

对于应用过滤的所有上述实施例,也可以考虑将被过滤的像素与邻域中不同像素之间的空间距离,例如,使距离较近的邻居具有比离得更远的邻居更强的影响力。

本文中的前述实施例涉及在对视频编码之前调整像素以处理有问题的区域。由于原始像素可用,因此这是执行此操作的优选顺序。而且,通过在编码之前平滑像素,对视频编码需要更少的比特。在又一个实施例中,问题区域在解码视频之后被替代地估计和调整。一种这样做的方法是首先从解码的y′cb′cr′像素计算再现的rgb像素的第一版本,包括从4∶2∶0或4∶2∶2到4∶4∶4的上采样。然后将不稳定性系数计算为

在上面的等式中,y′,cb′,cr′是解码的像素值,并且根据再现的rgb像素的第一版本计算pq(y),u′和v′。然后根据前述实施例中的任何一个计算再现的rgb像素的第二和最终版本。采用这种方法,在编码侧不可能调整问题的情况下,可以在解码侧调整一些有问题的区域。

计算不稳定性系数时,也可以对矢量的不同分量进行加权:

其中w1至w6是正权重。这使得可以对亮度进行加权而不是对色度进行加权,反之亦然。

不包括滤波的另一种策略是识别第一情况像素,并仅用固定值(例如零)替换绿色的分量值。这里假设绿色分量是“有问题的”分量,但是红色和蓝色也是一样,如果它们是第一情况像素中最小的分量。用固定值替换最小值将去除y′cb′cr′分量的所有可变性,而不必调查相邻像素,也不需要任何昂贵的滤波。“固定”值可以取决于颜色。例如,对于颜色的第一情况像素(1000,0.1,100),人们可能希望使用0.5作为固定值,而对于颜色的第一情况像素(100,0.1,10),可以使用值0.05。

还要注意的是,不同于仅避免使用接近色域的颜色的现有技术的解决方案,所提出的方法不限制颜色位于色域中的特定位置中。例如,如果在第一情况像素(1000,0.1,100)中对绿色分量使用了固定值0.0,则得到(1000,0,100),它恰好在色域的边缘的顶部上。这种饱和的颜色用现有技术的解决方案是不可能的。

在一个替代实施例中,第一情况像素中的最小系数被设置为一组固定值之一。例如,如果该值在0和0.001之间,则可以设置为0,而如果在0.001和0.01之间,则可以设置为0.005,如果在0.01和0.1之间,则可以设置为0.05等等。可以有足够数量的这种固定值,以使它们之间的距离小于人眼所能看见的距离,以避免成带状问题。因此,这组固定值可能因颜色而异;颜色(1000,0.1,100)可以具有一组固定值,而颜色(100,0.1,10)可以具有另一个更大或更小组的固定值。

一个实施例可以通过以下步骤来描述:

1、基于与人类视觉系统如何预期可见差异相关的标准来评估一个或多个样本,即像素。

2、基于步骤1中的评估修改至少一个样本(即像素)的一个或多个分量。

当通过编码器或者间接结合编码器一起执行该方法时,优选执行以下步骤:

1、对于由若干画面构成的视频序列中的至少一个画面,基于与人类视觉系统如何预期可见差异有关的标准来评估一个或多个样本,即像素。

2、基于步骤1中的评估来修改至少一个样本(即像素)的一个或多个分量。

3、修改的视频序列被编码。

例如,改变rgb=(1000,0.1,100)±0.05的绿色分量会对y′cb′cr′中的表示改变许多,所以应该对它进行过滤。

改变rgb=(1000,200,100)±0.05的绿色分量不会对y′cb′cr′中的表示改变一步。

在这两种情况下,这些差异不被人眼可见,但只有在第一种情况下,才可能想要经历实际过滤的麻烦。

在另一个实施例中,至少针对具有被判断为不稳定的、因此有产生具有非常明显的伪像的编码伪像的风险的一些样本(即,像素)的区域或块,关于pq(y)、u′或v′中的至少一个或与人类视觉相关的任何其他对应物(即,基于亮度和色度的表示)中的误差来优化编码模式。这可能发生在编码器侧,但也可能发生在解码器侧。编码模式的示例是环路内过滤,例如样本自适应偏移(sao)或自适应环路过滤(alf),但是也可以用于与帧间或帧内预测和残差编码有关的编码模式。

可以在诸如序列参数集(sps)之类的序列级、诸如画面参数集(pps)之类的画面级、片级或块级上的一个或若干个句法元素中用信号发送解码器侧的实施例的调用。信令可以在补充增强信息(sei)消息中表示,诸如用于在编码环路之外的后处理中应用,或者可以是编码位流中的规范信令的一部分,例如用于编码环路内的应用。当它存在时,它强制将y′或cb′或cr′的像素值的某个范围内的值,或者被编码/解码的任何其他选择的颜色分量计数器部分或者打算观看的表示空间强制为一个或若干个固定值。该强制可以被实现为平滑滤波器,或者仅用一个或若干个固定值的替换。

实施例的调用和像素值的范围可以仅针对其中一个颜色分量而特定,或者适用于所有颜色分量。可以在标准的解码过程中指定像素值的范围和一个或若干个固定值,或者其可以是编码的视频位流的一部分。方法的应用可以是在增加经解码的残差和帧内/帧间预测之后或在环路内过滤之后通常发生在运动补偿预测中的正常削波操作的一部分。在正常削波操作中,对于10位信号,下限或阈值通常为0,而上限为1023。这里除了正常的削波之外,还可以将一种削波应用于一定范围的像素,使得它们被替换为单个值,使得其在pq(y)、u′或v′或与人类视觉有关的任何其他对应物中的至少一个中产生令人愉快的外观信号。

前面的实施例的应用在视觉上看起来相对平或平滑的区域中是特别重要的。因为在这样的区域中的伪像是特别明显的。

在大多数实施例中,已经描述了对绿色、红色或蓝色通道中的样本值进行修改。然而,代替在该颜色空间中进行修改,而是可以对y′或cb′或cr′或选择用于编码的任何其他颜色空间中的一个或多个应用修改。

图20示出了根据实施例的方法。该方法包括以第一颜色表示(诸如rgb)接收表示至少第一像素的比特流的步骤。下一步调查或确定所述像素是否以人眼难以看见、但可以在第二颜色表示(例如y′cb′cr′)中产生显著的变化的方式变化。在这种情况下,像素被处理以去除这种可变性。

应该注意,将图20中的至少第一像素转换为第二颜色表示的步骤是可选的。

实施例的另一方面涉及一种用于处理包括多个画面的视频序列的画面中的像素的设备。该设备被配置为识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。该设备还被配置为通过修改该像素的至少一个颜色分量的值来处理识别的像素。

在一个实施例中,该设备被配置为识别画面中的具有小于第四阈值的颜色的线性表示的颜色分量的值的像素,并且针对该像素,该颜色分量的值与该颜色的线性表示的另一颜色分量的值之比小于第五阈值。

在一个实施例中,该设备被配置为识别画面中的像素,该像素具有小于第四阈值的颜色的线性表示的颜色分量的值,并且针对该像素,该颜色的线性表示的至少一个颜色分量的值大于第六阈值。

在一个实施例中,该设备被配置为识别画面中具有小于第四阈值的颜色的线性表示的颜色分量的值的像素,并且针对该像素,所述颜色的线性表示的至少一个其它颜色分量的值等于或大于所述颜色的线性表示的颜色分量的值的因数倍,其中所述因数大于1。

在一个实施例中,该设备被配置成识别画面中要处理的像素,针对该像素,小于第一阈值的颜色的线性表示(例如rgb或xyz)的变化导致大于第二阈值的该颜色的y′cb′cr′表示的变化。该颜色的线性表示的变化还导致小于第三阈值的该颜色的pq(y)u′v′或pq(y)xy表示的变化。

在特定实施例中,颜色的线性表示是颜色的rgb表示。在这种情况下,该设备被配置为针对像素基于亮度分量y′、色度分量cb′和色度分量cr′相对于颜色的rgb表示的至少一个颜色分量的导数和基于亮度的分量pq(y)和基于色度的分量u′v′或xy相对于rgb表示中的至少一个颜色分量的的导数来计算不稳定性系数。该设备还被配置为如果不稳定性系数高于第七阈值,则选择要处理的像素。

在特定实施例中,该设备被配置为基于下式来计算不稳定性系数ci:

或者

其中w1...w6是非零权重或不存在,a表示rgb表示中的红色分量r、绿色分量g和蓝色分量b中的一个。

在一个实施例中,如果不稳定性系数高于第七阈值,则该设备被配置为用修改的至少一个颜色分量的值替换像素的至少一个颜色分量的原始值。该设备还被配置为如果不稳定性系数等于或者小于第七阈值,但是等于或大于第八阈值,则用至少一个颜色分量的原始值和至少一个颜色分量的修改值的线性组合替换至少一个颜色分量的原始值。该设备还被配置为如果不稳定性系数小于第八阈值,则保持至少一个颜色分量的原始值。

在一个实施例中,该设备被配置为通过修改颜色的线性表示的至少一个颜色分量的值来处理识别的像素。

在另一个实施例中,所述设备被配置为用所述画面中的相邻像素的所述至少一个颜色分量的值的加权平均来替换所述像素的所述至少一个颜色分量的值。

在一个特定实施例中,该设备被配置为识别画面中的相邻像素,针对该相邻像素,小于第一阈值的该相邻像素的颜色的线性表示的变化导致大于第二阈值的该相邻像素的该颜色的非线性表示的变化。该相邻像素的颜色的线性表示的变化也导致小于第三阈值的相邻像素的该颜色的亮度和色度表示的变化。该设备还被配置为用画面中所识别的相邻像素的至少一个颜色分量的值的加权平均来替换像素的至少一个颜色分量的值。

在另一特定实施例中,该设备被配置为识别所述画面中的所述相邻像素,针对该相邻像素,像素的基于亮度的分量的值与所述相邻像素的基于亮度的分量的值之间的绝对差等于或小于第九阈值。该像素的基于色度的分量的相应值与相邻像素的基于色度的分量的相应值之间的相应绝对差等于或小于第十阈值。该设备还被配置为用画面中所识别的相邻像素的至少一个颜色分量的值的加权平均来替换该像素的至少一个颜色分量的值。

在一个实施例中,该设备被配置为将至少一个颜色分量的值设置为固定值。

在另一个实施例中,该设备被配置为对像素的至少一个颜色分量的值进行过滤。

在特定实施例中,该设备被配置为利用具有基于不稳定性系数确定的滤波器系数的滤波器来对像素的至少一个颜色分量的值进行过滤。

图21示出了根据实施例的转换器100的特定硬件实现。在一个实施例中,转换器100包括确定单元101,确定单元101被配置为确定是否以难以被人眼看见(也被称为可见的)但会在第二颜色表示中产生显著变化的方式改变像素。这样的确定可以根据本文描述的任何一个实施例来完成。当确定像素可以以对于人眼难以看见但仍然可以在第二颜色表示中产生显著的变化的方式变化时,像素由转换器100的像素处理器102处理以去除潜在的这种可变性。转换器100可选地包括被配置为将像素颜色转换为第二颜色表示的转换单元103。实际转换为第二颜色表示可以在以后的过程中执行。

在一个实施例中,转换器100还包括被配置为接收表示第一颜色表示中的至少第一像素的比特流的输入单元104以及被配置为将颜色转换的比特流输出到编码器的输出单元105。

输入单元104可以是通用输入单元的形式,特别是在有线连接到外部设备的情况下。备选地,输入单元104可以是接收机或收发机的形式,特别是在外壳或无线连接到外部设备的情况下。相应地,输出单元105可以是通用输出单元的形式,特别是在有线连接到外部设备的情况下。备选地,输出单元105可以是发射机或收发机的形式,特别是在外壳或与外部设备的无线连接中

输入单元104优选连接到确定单元101,并且确定单元101优选连接到像素处理器102,像素处理器102进一步连接到转换单元103,然后连接到输出单元105。输出单元105可以连接到视频编码器(未示出)。视频编码器被配置为压缩或编码像素。

备选地,本文描述的步骤、功能、过程、模块和/或块中的至少一些可以在软件中实现,例如由合适的处理电路(例如一个或多个处理器或处理单元)来执行的计算机程序。

处理电路的示例包括但不限于:一个或多个微处理器、一个或多个数字信号处理器(dsp)、一个或多个中央处理单元(cpu)、视频加速硬件、和/或任意合适的可编程逻辑电路,例如一个或多个现场可编程门阵列(fpga)或者一个或多个可编程逻辑控制器(plc)。

还应当理解,可以重新使用实现所提出的技术的任何常规设备或单元的通用处理能力,也可以例如通过对现有软件进行重新编程或添加新的软件组件重新使用现有的软件。

在一个实施例中,参见图22,用于处理像素的设备被表示为转换器110,转换器110包括处理器111和包括处理器111可执行的指令的存储器112。处理器111操作为识别要处理的像素。处理器111还操作为处理所识别的像素。

在另一个实施例中,用于对包括多个画面的视频序列的画面中的像素进行编码的设备被表示为转换器110,其包括处理器111和包括处理器111可执行的指令的存储器112。处理器111操作为识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。处理器111还操作为通过修改该颜色的线性表示中的至少一个颜色分量的值来处理所识别的像素。处理器111还操作为将该颜色的线性表示转换为该像素的该颜色的非线性表示。另外,处理器111操作为对该颜色的非线性表示进行编码。

在特定示例中,参见图22,转换器110包括处理器111和包括可由处理器111执行的指令的存储器112。处理器111操作为确定是否以难以被人眼看见(也被称为可见)、但会在第二颜色表示中产生显著的变化的方式改变像素。这样的确定可以根据这里描述的任何实施例来完成。当确定像素可以以难以被人眼看见但可以在第二颜色表示中产生显著的变化的方式变化时,处理器111被配置为处理该像素以去除潜在的这种可变性并且然后对所述像素进行颜色转换。

在一个实施例中,设备110还包括被配置为接收比特流的输入单元113。在这种情况下,处理器111操作为从输入单元113接收比特流。

在一个实施例中,设备110还包括输出单元114,其被配置为输出表示颜色转换后的像素的比特流。

在特定实施例中,处理器111操作为当执行存储在存储器112中的指令时执行上述操作。由此,处理器111互连到存储器112以实现正常的软件执行。

图23是示出了包括处理器210、相关联的存储器220和通信电路230的用户设备(ue)200的示例的示意框图。

在该具体示例中,以计算机程序240实现本文描述的步骤、功能、过程、模块和/或块中的至少一些,计算机程序240被加载到存储器220中,用于由包括一个或更多个处理器210的处理电路执行。处理器210和存储器220彼此互连,以实现正常的软件执行。通信电路230还被互连到处理器210和/或存储器220中,以使得能够输入和/或输出视频数据和对经转换的视频数据,可选地编码后的经转换的视频数据。

用户设备200可以是能够接收和处理视频数据的任何设备或装置。例如,用户设备200可以是固定或便携式的计算机,例如膝上型计算机、智能电话、平板计算机、机顶盒等。

术语“处理器”在一般意义上应被解释为能够执行程序代码或计算机程序指令以执行特定处理、确定或计算任务的任何系统或设备。

因此,包括一个或多个处理器的处理电路被配置为在执行计算机程序时执行例如本文描述的那些明确定义的处理任务。

处理电路不必须专用于仅执行上述步骤、功能、过程和/或块,而是还可以执行其他任务。

在一个实施例中,计算机程序240包括指令,所述指令在由处理器210执行时使处理器210执行根据实施例的确定和处理。

在另一个实施例中,计算机程序240包括指令,所述指令在由处理器210执行时使处理器210识别包括多个画面的视频序列的画面中要处理的像素,针对所述像素,小于第一阈值的像素的颜色的线性表示的变化导致大于第二阈值的颜色的非线性表示的变化。颜色的线性表示的变化也导致小于第三阈值的颜色的基于亮度和色度的表示的变化。还使处理器210通过修改像素的至少一个颜色分量的值来处理识别的像素。

在特定实施例中,计算机程序240包括指令,所述指令在由处理器210执行时使处理器210通过修改颜色的线性表示中的至少一个颜色分量的值来处理所识别的像素。还使处理器210将颜色的线性表示转换为像素的颜色的非线性表示。进一步使处理器210对颜色的非线性表示进行编码。

所提出的技术还提供了包括计算机程序240的载体250。载体250是电子信号、光信号、电磁信号、磁信号、电信号、无线电信号、微波信号或计算机可读存储介质250之一。

作为示例,软件或计算机程序240可以实现为计算机程序产品,其通常被携带或存储在计算机可读介质240(优选地,非易失性计算机可读存储介质250)上。计算机可读介质250可以包括一个或多个可移除或不可移除的存储设备,包括但不限于只读存储器(rom)、随机存取存储器(ram)、紧致盘(cd)、数字多用途盘(dvd)、蓝光光盘、通用串行总线(usb)存储器、硬盘驱动(hdd)存储设备、闪存、磁带或者任意其他常规存储设备。因而,计算机程序240可以被加载到计算机或等效处理设备(图23中的用户设备200所示)的操作存储器中,以由其处理器210来执行。

因此,当由一个或多个处理器执行时,本文提出的流程图可以被认为是计算机流程图。相应设备可定义为一组功能模块,其中由处理器执行的每个步骤对应于一个功能模块。在这种情况下,功能模块被实现为在处理器上运行的计算机程序。因此,ue可以备选地被定义为功能模块组,其中功能模块被实现为在至少一个处理器上运行的计算机程序。

驻留在存储器中的计算机程序可以因此被组织为合适的功能模块,所述功能模块被配置为,当被处理器执行时,执行本文所述的步骤和/或任务的至少一部分。图24中示出了这些功能模块的示例。

在一个实施例中,图24示出了用于处理包括多个画面的视频序列的画面中的像素的设备120。设备120包括确定单元121,用于识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。设备120还包括像素处理器122,用于通过修改该像素的至少一个颜色分量的值来处理识别的像素。

在该实施例中,图24中所示的编码器103和转换器104是可选的,并且可以省略。

在另一实施例中,图24示出了用于对包括多个画面的视频序列的画面中的像素进行编码的设备120。设备120包括确定单元121,用于识别画面中要处理的像素,针对该像素,小于第一阈值的该像素的颜色的线性表示的变化导致大于第二阈值的该颜色的非线性表示中的变化。该颜色的线性表示的变化也导致小于第三阈值的该颜色的基于亮度和色度的表示的变化。设备120还包括像素处理器122,用于通过修改该颜色的线性表示中的至少一个颜色分量的值来处理所识别的像素。设备120还包括转换器124,用于将该颜色的线性表示转换为该像素的该颜色的非线性表示。设备120另外包括用于编码颜色的非线性表示的编码器123。

在另外的实施例中,图24是具有功能模块的设备120的示意框图。设备120包括确定单元121,用于确定是否以难以被人眼看见(也被称为可见)但会在第二颜色表示中产生显著的变化的方式改变像素。设备120还包括像素处理器122,用于处理像素以去除潜在的这种可变性,并且还可以包括用于将像素颜色转换为第二颜色表示的转换器。设备120还包括视频编码器123,用于可能使用经处理的像素来对颜色转换的比特流进行编码以去除可变性。

这些实施例还涉及一种包括根据任何一个实施例的设备的用户设备,诸如图21、22或24中的任何一个所公开的。用户设备从由计算机、膝上型计算机、智能手机、平板计算机和机顶盒组成的组中选择。

实施例的另一方面涉及表示包括多个画面的视频序列的画面中的像素的编码版本的信号。编码版本包括根据任何一个实施例的像素的颜色的编码的非线性表示。

在特定实施例中,信号是电信号、光信号、电磁信号、磁信号、电信号、无线电信号和微波信号中的一个。

在诸如网络节点和/或服务器之类的网络设备中提供诸如硬件和/或软件之类的计算服务变得越来越流行,在网络设备中,资源通过网络作为服务被递送到远程位置。作为示例,这意味着如本文所述的功能可以被分布或重新定比特到一个或多个分离的物理节点或服务器。该功能可以被重新定比特或分配给一个或多个共同作用的物理和/或虚拟机器,这些物理和/或虚拟机器可以比特于分离的物理节点中,即在所谓的云中。这有时也被称为云计算,云计算是一种模式,用于能够随时随地按需要访问诸如网络、服务器、存储、应用和一般或定制服务之类的可配置计算资源池。

图25是示出一般情况下如何可以在不同的网络设备300、301、302之间分配或分割功能的示例的示意图。在这个示例中,存在至少两个单独但互连的网络设备300、301,其可以具有不同的功能,或者被分割在网络设备300、301之间的具有相同功能的部分。可能有另外的网络设备302,其作为这种分布式实现的一部分。网络设备300、301、302可以是相同的无线通信系统的一部分,或者一个或多个网络设备可以是比特于无线通信系统之外的所谓的基于云的网络设备。

图26是示出包括接入网络1和/或核心网络2和/或与一个或多个基于云的网络设备300协作的操作和支持系统(oss)3的无线通信系统的示例的示意图。该图还示出了根据实施例的接入网络1的网络节点4和用户设备5。

以上已经参考一些实施例主要地描述了发明构思的特定方面。然而,本领域技术人员容易理解,在本发明构思的范围中的不同于上文公开的实施例的其他实施例也是等同地可能的。同样,虽然已经讨论了一些不同的组合,但是还没有公开所有可能的组合。本领域技术人员将会理解,其他组合存在并且在本发明构思的范围内。此外,如本领域技术人员所理解的,本文公开的实施例同样适用于其它标准和编码器或解码器系统,并且结合其他特征公开的特定图的任何特征可适用于具有不同的功能的任何其他附图和/或组合。

附件a

本附件a包括可以根据实施例使用的ajusty方法的描述以便导出第二颜色空间中的非线性亮度分量值。

高度非线性传递函数4∶2∶0或4∶2∶2二次采样和非恒定亮度排序的组合在饱和颜色中产生严重伪像。在附录b中描述了一个示例,其中两种相似亮度的颜色之间的变化可以导致具有非常不同亮度的重构图像。

在数字视频信号中,样本(即像素)的每个分量由整数或浮点值表示。诸如屏幕、电视机或监视器之类的显示器使视频基于视频信号的数字值而忽略光线。将数字值v转换为光线y的函数是电光传递函数(eotf)。传统上,eotf已被表示为称为伽马函数的指数函数,其中伽马γ是指数值。这通常是2.4(但也可以是其他值):y=vγ.

对于低亮度信号,使用伽马函数工作良好,但是当亮度超过100尼特(cd/m2)时,伽马函数与人类视觉系统的对比度敏感度并不完全对齐。因此定义了更非线性的传递函数,例如:

这个传递函数比伽马函数更为非线性,因为它在0到1范围内的一阶导数的最大值大于伽马函数的一阶导数的最大值。

色度二次采样通常在压缩之前完成,作为减少数据量的初始步骤。在4∶2∶2中,色度信号在垂直方向上降低到分辨率的一半。在4∶2∶0中,色度信号在垂直方向和水平方向都降低到分辨率的一半。这通常是利用一些过滤操作来完成以获得高质量的信号,但也可以使用最近的邻居来完成。

为了显示4∶2∶0或4∶2∶2视频,解码器执行色度信号的上采样,这可以使用双线性滤波器或更长的滤波器来完成。

然而,高度非线性传函递数4∶2∶0或4∶2∶2二次采样和非恒定亮度排序的组合对视频数据产生严重伪像,特别是对于饱和的颜色,即接近色域边缘的颜色。

有若干种方法来解决这个问题。一种方法是不使用4∶2∶0或4∶2∶2二次采样,而是使用4∶4∶4。然而,这是昂贵的,因为4∶2∶0将压缩之前的比特数减半,而4∶2∶2将比特数减少到三分之二。另一种方法是不使用高度非线性的传递函数。但是,这意味着在黑暗区域中没有条纹的情况下很难表示非常高的峰值辉度的内容。第三种方法是使用恒定亮度,即在转换为cie1931xyz颜色空间之后应用传递函数。但是,这样的解决方案并不符合广播行业的普遍做法,在某些场景可能难以实现并且是实现起来很昂贵。

下面介绍一个典型的压缩链。首先将输入的从0到10,000的范围内的线性光像素(r,g,b)馈送到传递函数,这导致在0和1之间的新像素(r′,g′,b′)。之后,像素经历颜色变换,产生y′cb′cr′。然后cb′和cr′分量被二次采样到4∶2∶0。

在解压缩后,4∶2∶0序列再次被上采样到4∶4∶4,反颜色空间转换给出(r′,g′,b′),最终反传递函数给回线性光像素(r,g,b),其可以在监视器上输出。

麻烦来自于cb′和cr′分量被内插而y′分量则不是的事实。因此,一个像素中的y′分量可以有一个急剧的偏移,但是cb′和cr′分量不能跟随,因为它们是内插的。对于某些颜色,特别是饱和的颜色,结果是完全错误强度的像素,并且清晰可见。

建议在这些情况下改变y′分量,使得由插值颜色产生的元组(y′cb′cr′)与原始值没有太大的不同。理想情况下,差异将会很小,以致不明显。

基本上,它出自实现cb′和cr′分量是错误的,然后使y′分量也是错误的,使得(y′cb′cr′)更接近真实的颜色。换句话说,通过在y′中引入误差,可以补偿已经存在于cb′和cr′中的误差以更接近真实像素。通过比较cb′-cb和cr-cr与阈值,例如通过比较从第一个二次采样色度(4∶2∶0)得到的cb′,然后上采样(到4∶4∶4),可以确定cb′和cr′分量是错误的。

根据第一方面,提供了一种ajusty方法。该方法可以在编码器中执行或者在编码器的预处理中执行。在该方法中,当确定cb′和/或cr′分量包括误差时,导出经校正的y′分量以补偿cb′和/或cr′分量中的误差。

根据第二方面,提供了诸如预处理器或编码器的单元。该单元被配置为确定cb′和/或cr′分量包括误差,并且当确定cb′和/或cr′分量包括误差时,其被配置为导出经校正的y′分量以补偿cb′和cr′分量的误差。

校正的y′分量可以根据如下所述的不同实施例导出。因此,校正的y′分量、cb′和cr′被压缩,导致更高质量地感知图像或视频。

通过改变y′分量,即导出校正的y′分量,可以补偿所得到的亮度值。眼睛对亮度变化比对色度变化要敏感得多,所以第一条规则必须始终确保亮度不会偏离原始值太多。

如上所述,在压缩之前调整非线性亮度y′,使得像素的线性亮度y接近其正确值。将在下面对此进行进一步描述。

假设屏幕的左边部分(例如,像素0至96具有值(2142,0,138),并且右边的部分(例如,像素97至1920具有值(2142,4,138)的画面。用传统的加工链,可以得到表a1的结果。

表a1-用于4∶2∶0二次采样的“最差”颜色的数据

*这表示通过以4∶2∶0格式对二次采样后的颜色进行上采样获得的值

这里,y值是线性亮度。也就是说,原始的y值是当获取原始线性光rgb(2142,4,138)并将其转换为xyz时获得的值。例如,如果rgb在bt.2020颜色空间中,则可以使用以下来转换为xyz

x=0.636958×r+0.144617×g+0.168881×b

y=0.262700×r+0.677998×g+0.059302×b(等式a2)

z=0.000000×r+0.028073×g+1.060985×b

这个y分量是眼睛最敏感的亮度。不应该把它与上面提到的y′分量混淆,y′分量非线性地依赖于r,g和b。

从表a1中可以看出,使用rgb4∶2∶0二次采样和上采样时,像素97的y值严重错误。注意,在这个示例中,没有发生压缩,只能量化到10比特,而y值的相对误差为85%。使用barten的模型预测眼睛可以看见多大的差异,看见这个错误是195barten步,或是刚刚注意到的差异的195倍。

如果看一下表a2,可以看见会发生什么。

表a2-像素97在颜色二次采样之前和之后非常不同

如果看cb′分量,它具有值607,其大约在不连续之前的650(即像素94)与不连续之后的575之间的中间,但是正确的值是575。麻烦的是,这个误差不仅影响色度,而且影响像素的亮度,所以变得过大。我们的想法是通过改变像素的y′分量来补偿这一点。根据实施例,不让像素的y′分量为422,而是替代地选择值363。在表a3中,示出了结果。

表a3-像素97在颜色二次采样之前和之后更相似

现在可以看见,新的颜色更接近于其正确值。绿色分量朝着错误的方向发展,但仅有1.72cd/m2,但同时红色分量几乎减半到正确的值,移动1849cd/m2并且蓝色分量以类似的方式改变。在表a4中,示出亮度发生了什么。

表a4-校正后4∶2∶0二次采样的“最差”颜色的数据

*这表示通过以4∶2∶0格式对二次采样后的颜色进行上采样获得的值

如表a4所示,亮度y的误差要小得多。相对误差是0.2465%,相当于0.5602barten步,即不可能看见。

误差现在代替地在色度中,但是鉴于人类视觉系统对色度误差比亮度误差更小敏感的事实,这并不是什么大问题。另外,由于它是二次采样,所以在色度上无论如何会有一个误差。同样地,可以改变y′分量以在亮度误差和色度误差之间取得良好的折衷。

此外,色度的变化甚至可能不明显——唯一的差异是绿色分量是0.7008cd/m2而不是3.9750cd/m2,但是这是无论如何最有可能通过红色分量变矮小(dwarfed),因为它是2145,几乎一千倍大。另一种方式是,绿色和红色分量之比变为0.7008/2145.11=0.000327,而不是正确的3.9750/2142.6617=0.001855。目前尚不清楚这种色调的轻微偏移是否可被人眼看见。因此,在亮度上的折衷误差是刚刚注意到的色度误差的200倍,这个误差如此之小以至于不可能看见。

好的是,改变后的y值只影响单个像素。因此,通过改变y′分量不会牺牲其他像素。

在一个实施例中,值y′对于cb′和cr′的特定值未被优化。代替地选择y′值,以使得对于cb′和cr′的一些不同值或对于cb′和cr′值的范围的亮度误差最小化。这可以在色度上采样方法未知的情况下完成。

一种变型是执行特定数量的色度上采样方法,然后选择使不同上采样方法的平均方差最小化的y′值。在另一个版本中,选择y′值使得最坏的情况(即最大的误差)被最小化。

另一个变型是使用两个或更多相邻的cb′和cr′值,并直接使用它们来计算可能的cb′和cr′值的范围。

有若干种方式可以为y′找到最佳值,会经历其中的一些。一种方式在图27中示出。

首先需要找到值yo来优化朝向。如上所述,将原始像素ro,go,bo从rgb变换为xyz。这导致了xo,yo,zo,其中只对yo有兴趣。实际上,不需要计算xo和zo。这个yo是线性光线中的原始亮度,眼睛正是对这个敏感。在的测试情况中,yo等于573.5991,见表a1。

其次,将现有的y′值与cb′和cr′值一起考虑。在上面的情况下,会馈入(422,607,812),见表a2。现在进行从y′cb′cr′到r′g′b′的颜色转换。这是使用下式来完成的:

r′=y′+1.47460×cr′

g′=y′-0.16455×cb′-0.57135×cr′(等式a3)

b′=y′+1.88140×cb′。

接下来调用传递函数。在这种情况下,使用pq-eotf,可以使用下面的matlab代码来实现,例如:

functionl=pq_eotf(c)

%%%

%%%cgoesfrom0.0to1.0

%%%l是以尼特为单位的输出亮度

%%%c10.8359375

c1=0.8359375;

c2=18.8515625;

c3=18.6875;

n=0.1593017578125;

m=78.84375;

c=max(c,0);

c=min(c,1);

l=10000*((max(c.^(l/m)-c1,0)./(c2-c3*c.^(l/m))).^(l/n));

结果是线性光的颜色(r,g,b)。现在如上所述,把它转换为上述xyz,或者真的,仅需要计算y。这个y是像素的线性亮度,想要使这个亮度尽可能地接近yo。在测试情况中,y开始是1066.4311,见表a1。

现在比较y和yo。如果y大于yo,将y′值从422减小到更小。例如,可以采取一步并尝试421。然后再次进行整个计算,产生新的y值。这再次与yo比较,如果它仍然太大,进一步减小y′。最后,将达到363,所得到的y值(即572.1852)现在小于yo(即573.5991)。现在过程停止。

在上面的实施例中,采取422-363=59步迭代才能达到最佳值。这可能是昂贵的。

因此,一个实施例是进行二进制搜索以找到最佳的y′值。可选地,首先尝试最大y′值,例如1023。可选地,然后尝试最小的y′值,例如0。然后尝试中间的值,例如512。如果y′=512产生的y值大于yo,应该在间隔[0,512]中进行搜索。如果y值小于yo,应该替代地搜索间隔[512,1023]。然后,继续计算在选定的间隔中间的新的值,继续直到间隔只包含一个单一的数字,如[363,363]或[363,364]。这保证只采取log2(n)步,其中n是可能值的数量,在这种情况下是1024。因此,只有log2(1024)=10步就足够了。

计算最佳值的另一种方式是将图27看作是优化问题,并使相对于y′的误差e=(y-yo)2最小化。这可以通过梯度下降来完成,通过计算e相对于y′的梯度,即de/dy′,并且在梯度的相反方向上更新y′一个小量:y’n+1=y’n-α×de/dy’,其中α是一个小的常数。

梯度下降可能是慢的,所以更快的方式可以是使用二阶优化算法,该算法计算或逼近二阶导数d2e/dy’2。高斯-牛顿就是这种算法的示例。

在另一个实施例中,应用以下过程以计算y′:

-将x、yo和z用xyz至rgb转换来进行转换以产生新的值r1、g1和b1

-r1、g1和b1用反传递函数进行转换以产生r1′、g1′和b1′。

-r1′、g1′和b1′用反颜色变换进行转换以产生y′

在一个实施例中,图像或画面中的所有像素的y′值被校正。在替代实施例中,仅校正具有可见亮度误差风险的像素。这可能包括接近色域边缘的像素,但排除更接近色域三角形的中间的像素。

看图27中的最后一行,处理的第一步是

r′=y′+1.47460×cr′

g′=y′-0.16455×cb′-0.57135×cr′(等式a3)

b′=y′+1.88140×cb′。

但是由于cr′和cb′是固定的,所以它们是内插的,而不是发送的,可以用一个常数来替换y′右边的所有

r′=y′+c1

g′=y′+c2

b′=y′+c3

下一步是采取颜色分量的传递函数:

r=tf(r′)

g=tf(g′)

b=tf(b′)

然后变成

r=tf(y′+c1)

g=tf(y′+c2)

b=tf(y′+c3)

处理的最后一步是从rgb到xyz。这是使用以下来完成的

x=0.636958×r+0.144617×g+0.168881×b

y=0.262700×r+0.677998×g+0.059302×b(等式a2)

z=0.000000×r+0.028073×g+1.060985×b

其中只对y分量感兴趣,所以使用

y=0.262700×r+0.677998×g+0.059302×b。

插入先前的等式,给出

y=0.262700×tf(y′+c1)+0.677998×tf(y′+c2)+0.059302×tf(y′+c3),

或缩短到

y=f(y′)

希望这个等式的输出值y与初始yo相匹配。由于y在三个不同的地方以非线性方式依赖于y′,所以似乎没有简单的方法来反演函数,从而得到y′=f1(y)。

然而,可以线性化非线性tf(x)~kx+m。在三个不同的地方做这个给出了

y~k1×y’+m1+k2×y’+m2+k3×y’+m3

其等同于

y~(k1+k2+k3)×y’+(m1+m2+m3).

这可以被反演为

y’~y’k=(yo-(m1+m2+m3))/(k1+k2+k3).

因此,y′k可能会产生比之前更接近yo的值y′k。该函数可以在这个新的点y′k再次线性化,产生新的值y′k+1等。

应该注意的是,对于所有这些迭代技术,没有必要找到生成最接近yo值的y值的绝对最佳的10比特值。仅使用几步迭代甚至一步迭代可以是足够的。由单步迭代产生的校正的y值最有可能比根本不校正好得多。

一些线性化也可以预先完成。如上所述,最坏的问题发生在色域边缘。因此,可以针对将红色原色(primary)连接到绿色原色的线进行一次线性化,针对将红色原色连接到蓝色原色的线进行一次线性化,和针对将绿色原色连接到蓝色原色的线进行一次线性化。另一种方式可以是线性化,这些线性化将靠近红色原色使用,另一些线性化靠近绿色原色使用,以及再有一些线性化靠近蓝色原色使用。此外,如图28所示,可以沿着色域的线进行若干次线性化。

因此,不同区域可能会有不同的线性化。如果颜色在实线的圆内,则靠近绿色原色且可以使用一次线性化。如果进一步沿着朝向红色原色,即在虚线框内,则可以使用第二线性化。如果靠近色域的边缘并且大致在红色和绿色原色之间的半途,即在点线框内,则可以使用第三线性化。如果甚至更靠近红色原色,即在实线框内,则可以使用第四线性化。如果在点线圆内,即靠近红色原色,则可以使用第五线性化。也可以使用三角形中另外两条线的相同分区。最后,三角形内但是没在框或圆内的区域可以被分割成一个或多个区域,每个区域具有不同的线性化。

另一种方法是产生查找表(lut)。从上面的等式可以看出,如果有cb′、cr′和想要的值,可以使用上面提到的任何迭代技术中的任何一个来找到最佳y′。因此,可以针对cb′、cr′和y的每个可能组合产生查找表。假设例如cb′和cr′被量化为10比特。进一步假定也将y量化为10比特。然后需要查找表中的210×210×210个不同的值。这相当于230个值。如果每个值是两个字节,则这意味着231个字节或2gb。这很大,但可能不是不可行,特别是在将来。

量化y时可能需要小心。由于y是完全线性的,因此仅量化它可能是低效的。可以替代地更好的是,使用cb′、cr′和ynonlinear作为输入变量产生ynonlinear=tf(y)并替代地产生用于y的lut。给定cb′、cr′和y,则首先计算ynonlinear=tf(y),然后找到y′=lut(cb′,cr′,ynonlinear)。

也可以使用较小的lut。例如,可以将y(或ynonlinear)、cb′和cr′量化为所谓的6比特。那么表大小将是2(6+6+6)=218个值或219个字节,这等于512千字节。即使是今天的硬件,这也是一个合理的大小。

可能的是,取得最接近真实值的量化值的cb′、cr′和y并对其进行插值。例如,如果cb′的实际值大于的量化为6比特的cb′但小于的量化为6比特+1的cb′,那么下面可以是很好的近似:

y′=(lut(cb′6bit,cr′6bit,y6bit)+(lut(cb′6bit+1,cr′6bit,y6bit))/2

在两个以上的值之间进行插值也是可能的。

在一个实施例中,使用查找表来导出y′的值。在一个版本中,查找表包含yo、cb’和cr’的每个可能的值。对于将产生1024×1024×1024个条目的10比特视频且在某些应用中,这个大小是可接受的。在另一个版本中,查找表(lut)被删减,例如通过四舍五入yo、cb’和cr’中的一个或多个来删减到例如8比特。如果使用删减后的查找表,则可以利用细化步骤来扩展该算法,该细化步骤从获取自lut的y′开始找到最佳的y′。在一个版本中,有当cb′值和/或cr′值使得y′可以变得与yo太不相同时,即,当最初计算的y′给出与yo太不相同的线性y值时,仅使用lut,因此,由于cb′和cr′的许多值不会引起任何问题,所以lut的大小可以大大减小。

在一个实施例中,yo、cb’和cr’的函数(例如,线性组合、多项式函数、指数函数、对数函数、三角函数等)用于导出y′。该函数可以被定义为使得对于yo、cb’和cr’的任何值,y和yo之间的差异低于某个阈值或者导出的y′和最佳的y′之间的差异低于某个阈值。

在一个实施例中,为了导出y′,定义了yo、cb’和cr’的若干个不同函数。选择使用哪个函数是基于yo、cb’和cr’的值。

对于在此描述的每个实施例,可以是以下的情况,用于导出y′的方法仅在y′和yo之间的差异超过某个阈值来开始的情况下被调用。

附件b

本附件b调查了由于4∶2∶0二次采样造成的颜色伪像。首先,试图进行交叉检查,但是最坏的值不能被再现,这可能是由于已经固定的hdrtools中的漏洞。接下来,针对由4∶2∶0二次采样引起的亮度中的最差相对误差执行搜索。发现即使显示在限制到4000尼特的屏幕上,也会出现86%(195barten步)的相对误差。即使数据被限制在rec709并保存在bt.2020容器中,也可能有30barten步的误差。对于bt.2020容器中的p3内容,可能有40barten步的误差。

1介绍

已经注意到,即使没有压缩发生,当使用4∶2∶0二次采样时,颜色的微小变化也会引入令人惊讶的大的伪像。

1.1交叉检查差异

这项调查始于m35255[1]的交叉检查,试图复制幻灯片13中的结果,转载于下表b1中。结果来自测试图像,其中直到像素95的图像的左边部分具有颜色(3000,0,100),右边部分像素96和正面具有颜色(3000,4,100)。

表b1-m35255的值

当使用与锚(n14548,[2])相同的程序进行交叉检查时,得到表b2所示的结果。对于下采样,遵循[2]的第2.4.7节中所述的滤波器(2和3分接头)并且对于上采样,遵循[2]的第2.4.8节(4分接头滤波器)。

表b2-尝试交叉检查时的值

可以看出,这匹配真的很差,只有像素号94和98匹配,而像素号95-97和99找不到匹配。然而,如表b3所示,将不连续性移动到像素97替代地给出好得多的匹配。

表b3-移动不连续性时的值

在表b3中,只有像素号96不匹配。这也是具有最奇异值(10000,1.57,402.25)的像素,正确的答案是(3000,0,100)或(3000,4,100),这取决于放置不连续性的位置。

看起来似乎交叉检查中的不匹配是由于hdrtools中已经校正的误差。如果恢复到修订版492,则可以产生与m35255[1]中相同的值。为了确认更新版本的hdrtools(修订版573)是正确的,在matlab中独立地实现了处理链,并得到了与表b3相同的结果。不得不移动不连续性以获得匹配的原因可能是由于在当前版本中已固定的修订版492中的错误滤波。

1.2舍入问题

在实现matlab交叉检查时,认识到在hdrtools中浮动到exr的转换没有四舍五入。代替将尾数的23比特舍入到10比特,它们只是右移,基本上用floor()替换round()。这会影响最终结果。作为一个示例,3007.9的浮动将被转换为3006.0,尽管3008.0是一个接近得多的值。为了获得一个匹配,使得matlab代码在hdrtools的当前版本([3]的修订版587)中仿真了floor()类型的转换。

1.3颜色异常值

请注意,即使像素96不再是极端异常值,像素97仍远远不正确:(5860,2.58,199)而不是(3000,4,100)。这就提出了这个问题。4∶2∶0二次采样可以产生的异常值有多坏,这发生在哪里?要回答这个问题,首先必须定义“坏”的意思。专注于亮度,因为人类视觉系统对亮度变化比色度更敏感。因此,将输入exr图像和输出exr图像两者都线性转换为xyz,并在y中形成差异。为了得到相对误差,除以初始的y分量。然后,编写了一个小程序,将像素97的这种相对误差最大化到所有可能的图像类型上,其中左边部分是一种颜色,右边部分是相同颜色加上长度为4的小增量,就像在m35255中所做的那样[1]。

运行这个程序给出了答案:左边部分(2142,0,138)和右边部分(2142,4,138)的颜色给出了最大的可见误差,如表b4所示。寻找“最差”误差的优化软件不能保证找到全局最大值,因此色域中可能存在甚至更差的位置。

表b4-4∶2∶0二次采样的“最差”颜色的数据

应该指出的是,红色分量高于2142会生成甚至更高的相对误差。但是,假设4000以上的rgb值将被显示器限制到4000,所以认为如果使用更高的值,实际的屏上差异会开始减小。

从表b4可以看出,rgb4∶4∶4的相对误差为0.0304%。为了说明这一点,将其与barten曲线进行了比较,参见示出了对比度敏感度的barten曲线的图29。曲线下方的对比度不明显。表b5示出了用于绘制图29中的曲线的值。

表b5-用于绘制barten曲线的值

从图29中可以看出,相对误差的容差随着亮度的增加而降低。在100尼特时,0.44%的误差可以被注意到,而在1000尼特时,0.40%的误差可以被注意到。由于455尼特就在这些之间,使用0.44%的较高值。这给出了0.069的barten步,这意指它不明显。

另一方面,对于4∶2∶0二次采样,相对误差为85.92%。这相当于超过195barten步,其应该是清晰可见的。因此,看起来合理的是,认为4∶2∶0二次采样至少与非恒定亮度以及高度非线性传递函数一起可以产生清晰可见的伪像,如锚生成中的情况一样。

请注意,最坏的误差是在色域的边界上,由于绿色为零,所以颜色(2142,0,138)比特于红色和绿色原色之间的线上。这与m35255[1]中报告的内容一致,也指出了色域边缘上的颜色是有问题的。

1.4当输入是709数据时

表b1中存在的数据是针对bt.2020原色。如果输入的数据具有rec709原色,但容器是bt.2020,则不可能达到色域边界。这是由于rec709色域三角形比特于bt.2020三角形内部,并未触及色域边界,如图30所示。因此,假定相对误差会更小是合理的。

已经运行了优化软件来找到rec709颜色,rec709颜色在转换为bt.2020之后会导致最大的相对误差。结果的两种颜色是针对屏幕的左边部分的(0,0,50)和右边部分中的(2,3,49)。这在表b6中呈现。

表b6-如果输入为rec709且容器格式为bt.2020,则用于4∶2∶0二次采样的“最坏”颜色的数据

在这里,使用了在10尼特处的barten曲线,其相当于0.54%。对于rgb4∶4∶4,可以得到在1.2305barten步处很明显的误差,而rgb4∶2∶0中的误差等于33barten步,这应该清晰可见。也合理的是,误差较小(33barten步相对于195barten步),因为从rec709数据开始排除了颜色到达bt.2020的色域边缘的所有部分。

还要注意优化结果是如何发现在蓝色原色附近可得的最坏的误差。这可能是因为蓝色的rec709原色最接近bt.2020色域边缘,如图30所示。

1.5当输入是p3数据时

bt.2020容器中包含的p3源数据可以进行相同的测试。然后,最坏的颜色是(2.48,3.33,4.63)和(3.29,0.671),如表b7所示。

表b7-如果输入为p3且容器格式为bt.2020,则4∶2∶0二次采样的“最坏”颜色的数据

将假设误差将在rec709和bt2020之间的某处,并且这也是以下的情况,现在得到一个相当于40.38barten步的误差。请注意,由于barten值发生变化,因此在搜索最坏值时将其包含在环路中是重要的。已经使用针对1cd/m2的barten值,其等于0.85%。

1.6结论

本附件调查了由于4∶2∶0二次采样造成的亮度误差。尽管还没有能够匹配m35255[1]最差的异常值,但是最坏的情况误差仍然很明显,对于一般的数据来说,差不多达到200barten步。即使源数据被约束到rec709并放入bt.2020容器中,误差仍然是显著的,超过30个barten步,并且对于bt.2020容器中的p3数据,超过40barten步。

以上描述的实施例将被理解为本发明的几个说明性示例。本领域技术人员将理解,在不脱离本发明的范围的前提下,可以对实施例做出各种修改、组合和改变。尤其是,在技术上可行的其他配置中,不同实施例中的不同部分解决方案可以被组合。然而,本发明的范围由所附权利要求限定。

参考文献

[1]internationalorganizationforstandardization,iso/iecjtc1/sc29/wg11,codingofmovingpicturesandaudio,mpeg2013/m35255,october2014,strasbourg,france,francoisetal.,aboutusingabt.2020containerforbt.709content

[2]internationalorganizationforstandardization,iso/iecjtc1/sc29/wg11,codingofmovingpicturesandaudio,mpeg2014/n14548,july2014,sapporo,japan,luthraetal.,testsequencesandanchorgenerationforhdrandwidegamutcontentdistribution

[3]https://wg11.sc29.org/svn/repos/explorations/xyz/hdrtools/branches/0.9-dev

[4]ceastandard,hdrstaticmetadataextension,cea-861.3,january2015

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