掌桥专利:专业的专利平台
掌桥专利
首页

照度补偿方法及相应的电子装置

文献发布时间:2024-01-17 01:27:33


照度补偿方法及相应的电子装置

【交叉引用】

本申请是要求如下申请的优先权:2018年04月30日提出的申请号为62/664,387的美国临时专利申请案和在2018年12月28日提出的申请号为62/785,713的美国临时专利申请案的非临时申请案的一部分。且上述列出的申请的内容以引用方式整体并入本文中。

【技术领域】

本公开一般涉及视频处理。特别地,本公开涉及照度补偿的信令。

【背景技术】

除非本文另有说明,否则本部分中描述的方法不是后面列出的权利要求的现有技术,并且不包括在本部分中作为现有技术。

高效视频编解码(HEVC)基于基于混合块(hybrid block-based)的运动补偿的DCT类变换编解码架构。用于压缩的基本单元(称为编解码单元(CU))是2N×2N方块,并且每个CU可以递归地分成四个较小的CU,直到达到预定义的最小尺寸。每个CU包含一个或多个预测单元(PU)。

为了实现HEVC中混合编解码架构的最佳编解码效率,每个PU有两种预测模式,即帧内预测和帧间预测。帧内预测模式使用空间相邻重建像素来生成方向预测子,而帧间预测模式使用时间重建参考帧来生成运动补偿预测子。在执行预测并且从源块中减去预测子之后,以变换单元(TU)对残差块进行进一步变换和量化,然后将其编码为比特流。可以生成更准确的预测子,将获得更小的残差块,并且可以实现更高的压缩比。

帧间预测探索帧之间的像素的相关性,并且如果场景是静止的并且运动估计可以找到在时间相邻帧中具有相似像素值的类似块,则可以是有效的。但是,帧在不同的光照条件下被捕获。即使内容相似且场景静止,帧之间的像素值也可能不同。

【发明内容】

以下概述仅是说明性的,并不旨在以任何方式进行限制。也就是说,提供以下概述以介绍本文描述的新颖和非显而易见的技术的概念、要点、益处和优点。在下面的详细描述中进一步描述选择的部分实现方式而非不是所有实现方式。因此,以下发明内容并非旨在标识所要求保护的主题的必要特征,也不旨在用于确定所要求保护的主题的范围。

本公开的一些实施例提供了一种实现照度补偿的视频编解码器。视频编解码器接收要编码为当前块的第一视频图像中的第一像素块,其中当前块与参考第二视频图像中的第二像素块作为参考块的运动向量相关联。视频编解码器通过使用运动向量来为当前块执行帧间预测,以产生用于当前块的一组运动补偿像素。视频编解码器通过应用基于参考块和当前块的相邻样本计算的线性模型来修改当前块的运动补偿像素的集合。基于较大块内的当前块的位置来识别相邻样本。在一些实施例中,视频编解码器基于当前块的预测设定确定是否启用照度补偿模式,且视频编解码器在启用照度补偿模式时通过应用线性模型来修改当前块。

在一些实施例中,如果当前块不是较大块或CTU的最顶部(top-most)块或最左侧(left-most)块,则可以禁用照度补偿(illumination compensation)模式。在一些实施例中,当对于当前块开启通用双预测(General Bi-prediction,简写为GBi)、双向光流(Bi-directional optical flow,简写为BIO)、子PU时间运动向量预测(SPTMVP或ATMVP)、仿射模式、双边模板MV微调(DMVR)、多假设内合并模式、多假设合并模式或多假设合并+AMVP模式时,关闭照度补偿模式。

在一些实施例中,基于较大块内的当前块的位置来识别相邻样本。线性模型基于一组照度补偿参数,其包括缩放因子和线性模型的偏移。较大的块可以包括多个子块,并且当前块是第一子块。第一子块的相邻像素用作相邻样本以计算用于修改当前块和较大块的其他子块的线性模型。在一些实施例中,较大块的相邻像素被子采样并用作相邻样本以计算用于修改当前块和较大块的其他子块的线性模型。

在一些实施例中,当前块可以是包括多个CU的CTU中的CU。基于CTU的相邻像素导出当前块的所识别的相邻样本。在一些实施例中,当前块是预测单元(PU),并且较大的块是包括多个PU并且具有大于阈值的大小的编解码单元(CU)。基于CU的相邻像素导出当前块的所识别的相邻样本。

在一些实施例中,所识别的当前块的相邻样本是与当前块垂直或水平对齐的较大块的相邻像素。并且当当前块位于较大块的顶部边缘但不在较大块的左边缘时,相邻样本可以包括较大块上方的相邻像素,不包括其他像素。当当前块位于较大块的左边缘但不位于较大块的顶部边缘时,相邻样本可以包括较大块左侧的相邻像素,而不包括其他像素。

在一些实施例中,当残差像素可用时,通过使用基于预测像素和残差像素的相邻块的重建像素来计算相邻样本,并且当残差像素不可用时,通过使用相邻块的预测像素来计算相邻样本。在一些实施例中,线性模型从当前块的相邻块继承。

【附图说明】

包括附图以提供对本公开的进一步理解,并且附图被并入并构成本公开的一部分。附图示出了本公开的实施方式,并且与说明书一起用于解释本公开的原理。可以理解的是,附图不一定按比例绘制,因为为了清楚地说明本公开的概念,一些部件可能被示出为与实际实施中的尺寸不成比例。

图1概念性地示出了根据本公开的一些实施例的照度补偿模式。

图2示出了针对作为当前块的预测单元(PU)的不同像素位置导出NPO偏移。

图3a示出了当前块的照度补偿模式,该当前块是较大块的最顶部子块。

图3b示出了当前块的照度补偿模式,该当前块是较大块的最左侧子块。

图4示出了从当前CTU外部获取的当前CU的相邻样本。

图5示出了在照度补偿模式期间其L形邻居为CTU中的CU提供相邻样本的CTU。

图6示出了CU的照度补偿模式参数由CTU内的其他CU继承或共享。

图7说明与本发明的一些实施例一致的实施照度补偿模式的实例视频编码器。

图8示出了与本公开的一些实施例一致的实现照度补偿模式的视频编码器的部分。

图9说明与本发明的一些实施例一致的实施照度补偿模式的实例视频解码器。

图10说明与本发明的一些实施例一致的实施照度补偿模式的视频解码器的部分。

图11概念性地示出了用于执行当前块的照度补偿模式的过程。

图12概念性地示出了用于实现本公开的一些实施例的电子系统。

【具体实施方式】

在以下详细描述中,通过示例阐述了许多具体细节,以便提供对相关教导的透彻理解。基于本文描述的教导的任何变化,衍生物和/或扩展都在本公开的保护范围内。在一些实例中,可以在没有细节的情况下以相对较高的级别描述与本文公开的一个或多个示例实现有关的公知方法、过程、组件和/或电路,以避免不必要地模糊本公开的教导的各方面。

本公开的一些实施例提供了可以实现照度补偿模式的视频编解码器。具体地,当将像素块编码或解码为要编解码的当前像素块时,当启用照度补偿模式时,视频编解码器可将线性模型(基于一组照度补偿参数)应用于当前块的帧间预测(或运动补偿的)像素值。将线性模型应用于当前块的每个像素位置,以补偿不是由于运动引起的变化,例如,照度条件的变化。

在一些实施例中,视频编解码器接收第一视频图像中的第一像素块以编码为当前块。当前块与运动向量相关联,该运动向量将第二视频图像中的第二像素块作为参考块。视频编解码器通过使用运动向量来为当前块执行帧间预测,以产生用于当前块的一组运动补偿像素。视频编码器可基于特定条件集启用或禁用当前块的照度补偿模式。当启用照度补偿时,视频编解码器可为当前块提供线性模型或一组照度补偿参数,并使用线性模型或该组照度补偿参数来修改当前块的运动补偿像素集。可以基于为当前块和参考块识别的相邻样本来计算线性模型。

图1概念性地示出了根据本公开的一些实施例的照度补偿模式。该图示出了像素块100,其是由视频编解码器编解码的当前块。当前块100在第一视频图像102中。当前块100与运动向量104相关联。运动向量104参考一组像素110作为第二视频图像112中的参考块。

基于运动向量104、视频编解码器的运动补偿模块120执行帧间预测以产生用于当前块的一组预测像素124。该组预测像素124添加有一组残差像素126,以产生用于当前块100的一组重建像素122。

视频编解码器包括照度补偿模块130,其可应用线性模型132来修改经运动补偿的当前块122的像素值。线性模型132可由缩放因子和偏移来表征。照度补偿可以根据线性模型132修改运动补偿的当前块122的每个像素位置处的像素值。当前块的修改的像素或照度补偿的当前块128存储在重建图像缓冲器160中,将被后续块和/或视频图像显示或引用。在一些实施例中,照度补偿通过应用线性模型132来修改运动补偿的当前块122的像素值来微调(refine)预测像素124。

可以基于当前块的相邻样本106和参考块的相邻样本116(图1中也合并示为相邻样本140)动态地导出线性模型132。块的相邻样本通常是指L形区域(或L形模板)的像素采样,其采样区域包含靠近当前块的顶部与靠近当前块的左侧的像素。当确定用于照度补偿的线性模型时,不同实施例中的视频编解码器可以使用相对于当前块的不同位置的像素作为相邻样本(换句话说,不同的L形区域)。在一些实施例中,当前块的相邻样本采样自紧邻当前块的顶部和当前块左侧的像素。在一些实施例中,当前块是较大块的子块或CTU中的CU,并且相邻样本取自较大块或CTU的相邻像素而不是来自当前块的相邻像素。

在一些实施例中,将当前块的L形模板和参考块的L形模板中的像素子采样为特定大小。在子采样之后,可以通过子采样L形来计算线性模型的加权因子和偏移因子。

视频编解码器可使用相邻块的重建像素作为相邻样本来计算线性模型。如果相邻块的残差像素还不可用,则视频编解码器可仅使用相邻块的预测像素作为相邻样本来计算线性模型。

不必基于相邻样本计算线性模型132,当前块100还可以从相邻块(例如,在合并模式期间提供所选择的合并候选的相邻块)继承其线性模型132。当前块还可以从历史缓冲器170撷取先前使用的线性模型。

视频编解码器可以对或可以不对当前块执行照度补偿。如果针对当前块禁用或绕过照度补偿,则视频编解码器可能不计算当前块的线性模型,并且可能不基于线性模型修改当前块的运动补偿像素。

视频编解码器可基于一个或一个以上启用条件150启用或禁用照度补偿。这些启用条件150可包含当前块的大小,当前块在较大块内的位置(例如,CTU中的当前CU位置),或与当前块相关的其他操作的配置设置,例如,通用双预测(GBi)、双向光流(BIO)、子PU时间运动向量预测(SPTMVP或ATMVP)、仿射模式、双边模板MV微调(DMVR)、多假设内合并模式、多假设合并模式、多假设合并+AMVP模式等。当前块也可以在合并模式期间从相邻块继承其照度补偿设置,包括是否启用照度补偿模式。在一些实施例中,视频编解码器可基于照度补偿模式的设置推断其它操作的配置设置。

不同实施例中的视频编解码器可以使用不同类型的照度补偿模式,其可以使用不同的线性模型或修改当前块的不同方法来补偿照度变化。照度补偿模式的示例包括:相邻导出的预测偏移(NPO),其线性模型将偏移应用于当前块的每个像素位置;和局部照度补偿(Local Illumination compensation,简写为LIC),其线性模型将缩放因子和偏移应用于当前块的每个像素值。

I.相邻导出的预测偏差(NPO)

相邻导出的预测偏移(Neighboring-derived Prediction Offset,简写为NPO)用于添加预测偏移以改进运动补偿的预测子。通过该偏移,可以考虑帧之间的不同照明条件。使用相邻重建像素(neighboring reconstructed pixel,简写为NRP)和扩展的运动补偿预测子(EMCP)导出偏移。NRP是当前块的相邻样本。EMCP是参考块的相邻样本。

在一些实施例中,为NRP和EMCP选择的模式分别是当前块和参考块左边的N个像素和上方的M个像素,其中N和M是预定值。图案可以具有任何尺寸和形状,并且可以根据任何编码参数(例如PU或CU尺寸)来确定,只要它们对于NRP和EMCP都是相同的。然后,将偏移计算为NRP的平均像素值减去EMCP的平均像素值。该导出的偏移在PU上是唯一的,并且与运动补偿预测子一起应用于整个PU。

图2示出了针对作为当前块的PU 200的不同像素位置导出NPO偏移。对于每个相邻位置(当前块200的边界左侧和上方的阴影区域),将个体偏移计算为NRP中的对应像素(当前块200的相邻像素)减去EMCP中的对应像素(参考PU 210的相邻像素)。在该示例中,对于上述相邻位置,偏移值是6、4、2、-2,对于左相邻位置,偏移值是6、6、6、6。

基于上方和左方相邻位置的偏移值,计算当前块的各个位置的偏移位置。具体地,将当前块200中的每个位置的导出偏移量计算为来自左侧和上方位置的偏移的平均值。例如,对于顶行中最左侧的位置,通过平均来自左(6)和上(6)的偏移来生成6的偏移。对于顶行中的第二个最左侧位置,偏移量5计算为来自左(6)和上(4)的偏移的平均值。可以按光栅扫描顺序依次处理和生成每个位置的偏移。由于相邻像素与边界像素的相关性更高,因此偏移也是如此。在一些实施例中,偏移值根据像素位置是自适应的。导出的偏移在PU上是自适应的,并且与运动补偿的预测子一起单独地应用于每个PU位置。

II.局部照度补偿(Local Illumination Compensation,简写为LIC)

局部照度补偿(LIC)是帧间预测的方法,其使用当前块的相邻样本和参考块的相邻样本来导出包括缩放因子a和偏移b的线性模型。针对每个CU自适应地启用或禁用LIC。

当LIC应用于块时,采用最小平方误差(least square error)方法通过使用当前块的相邻样本及参考图像中其对应的参考采样来导出参数a和b(即,参考块的相邻的采样)。在一些实施例中,使用子采样(subsample)(例如,2:1子采样)的CU的相邻样本和参考图像中的相应像素(由当前CU或子CU的运动信息识别)的来导出参数a和b。导出LIC参数并分别应用于每个预测方向。

当以2Nx2N合并模式对CU进行编码时,以类似于合并模式中的运动信息复制的方式从相邻块复制LIC标志;否则,向CU发信LIC标志以指示LIC是否适用。在一些实施例中,当针对图像启用LIC时,执行额外CU级别速率-失真(rate-distortion,简写为RD)检查以确定是否针对CU应用LIC。

当针对CU启用LIC时,均值移除的绝对差之和(mean-removed sum of absolutedifference,简写为MR-SAD)和均值移除的绝对Hadamard变换差之和(mean-removed sumof absolute Hadamard-transformed difference,简写为MR-SATD)可用分别于整数像素(integer pel)运动搜索和非整数像素(fractional pel)运动搜索。在一些实施例中,SAD和SATD分别用于整数像素运动搜索和非整数像素运动搜索。

在一些实施例中,当在当前图像与其参考图像之间没有明显的照度变化时,对于整个图像禁用LIC。可以在编码器处计算当前图像的直方图和当前图像的每个参考图像以识别这种情况。如果当前图像与当前图像的每个参考图像之间的直方图差异小于给定阈值,则对当前图像禁用LIC;否则,对当前图像启用LIC。

III.位置约束

在一些实施例中,当前块可以是包含多个子块的较大块的子块。当前块也可以是包含多个CU的较大CTU中的CU。当前块还可以是包括多个视频处理和分配单元(VideoProcessing and Distribution Unit,简写为VPDU)的大CU内的VPDU。

在一些实施例中,视频编解码器可使用位置约束来确定是否启用或禁用当前块的照度补偿模式(例如,LIC,NPO)。即,如果较大块内的当前块的位置满足约束,则开启照度补偿模式,否则关闭。在一些实施例中,当当前CU处于当前CTU内的最上侧位置时,开启照度补偿模式。在一些实施例中,当当前CU处于当前CTU内的最左侧位置时,开启照度补偿模式。在一些实施例中,当当前CU位于CTU最左侧位置和/或最上侧位置时,开启照度补偿模式。在一些实施例中,当当前块不满足位置约束时,隐式地关闭照度补偿模式,并且视频编码器不发信开启/关闭用于照度补偿模式的语法。

与位置约束相结合,从中获取相邻样本的L形模板可以丢弃垂直部分或水平部分。例如,如果当前CU是当前CTU的最左侧CU但不是当前CTU的最顶部CU(例如,CU的起始X坐标等于当前CTU坐标的起始X坐标但是当前CU的起始Y坐标不等于当前CTU坐标的起始Y坐标),从中获取相邻样本的L形区域可以仅包括垂直部分而不包括水平部分。相反,如果当前CU是当前CTU的最顶部CU而不是当前CTU的最左侧CU,则从其获取相邻样本的L形区域可以仅包括水平部分而不包括垂直部分。在一些实施例中,来自当前CTU上方的CTU行的重建采样在CTU行缓冲器中可用于当前流水线级。因此,使用CTU的顶部或左侧相邻像素作为相邻样本来计算当前CU的线性模型可以减少延迟时间。

图3a示出了当前块的照度补偿模式,该当前块是较大块的最顶部子块。具体地,该图示出了在CTU 300中的CU 310。CU 310是CTU 300的最顶部CU。然而,CU 310不是CTU 300的最左侧CU。

由于CU 310的顶部边缘接触CTU 300的顶部边缘,因此针对CU 310开启照度补偿模式。然而,用于计算用于照度补偿模式的线性模型的相邻样本仅包括L形的水平部分,示为区域320。区域320不包括与CTU 300或CU 310的左边缘相邻的像素。CU 310具有由MV 315标识的对应参考块311。在计算CU 310的线性模型时,仅使用区域321中的相邻样本到参考块311的顶部。不使用参考块311左侧的采样。

图3b示出了当前块的照度补偿模式,该当前块是较大块的最左侧子块。具体地,该图示出了CTU 300中的CU 330。CU 330是CTU 300的最左侧CU。然而,CU 330不是CTU 300的最顶部CU。

由于CU 330的左边缘接触CTU 300的左边缘,因此针对CU 330开启照度补偿模式。然而,用于计算用于照度补偿模式的线性模型的相邻样本仅包括L形的垂直部分,示为区域340。区域340不包括与CTU 300或CU 330的顶部边缘相邻的像素。CU 330具有由MV 335标识的对应参考块331。在计算CU 330的线性模型时,仅使用参考块331左侧的区域341中的相邻样本。不使用参考块331上方的采样。

在一些实施例中,对于当前块的照度补偿模式,从其获取相邻样本的L形模板可以在包括当前块的较大块之外。相邻样本可以是与CU垂直或水平对齐的CTU的相邻像素。

图4示出了从当前CTU外部获取的当前CU的相邻样本。在该示例中,对CTU 400内的当前CU 410执行照度补偿模式。用于照度补偿模式的当前CU 410的相邻样本取自“修改的”L形区域420,其包括水平部分421和垂直部分422。L形的水平部分421恰好位于当前CTU 400的外部,其水平位置与CU 410对齐。L形的垂直部分422也恰好位于当前CTU 400之外,其垂直位置与CU 410对齐。L形的水平部分421也可以位于远离当前CTU的位置,但其水平位置与CU 410对齐。L形的垂直部分422也可以位于远离当前CTU的位置,其垂直位置与CU 410对齐。

通过参考参考块430的MV 415来帧间预测CU 410。参考块430的相邻样本取自L形区域440,其包括水平部分441和垂直部分442。L形区域440具有与L形区域420对应的相同相对位置(即,区域441和442相对于参考块430具有与来自如区域421和422相对于CU 410相同的相对位置)。

在一些实施例中,照度补偿模式使用CTU的L形相邻区域中的像素来提供CTU内的任何CU的相邻样本。图5示出了CTU 500,其相邻L形区域520在照度补偿模式期间为CTU 500中的CU 510提供相邻样本。如图所示,当前CTU 500的相邻L形区域520用于导出(基于子采样或类似于帧内模式平面模式的平面模式)当前CU 510的估计的相邻L形区域。与当前CU510相关联的515参考参考块530,并且来自参考块530的相邻L形区域540的相邻样本用于导出当前CU 510的照度补偿模式参数(线性模型的缩放因子和偏移)。

在一些实施例中,当前块是包括其他子块的较大块的子块,并且为当前块计算的照度补偿模式参数适用于较大块的其他子块。例如,在一些实施例中,内部CU(CU不接触CTU行顶部边界)可以使用顶部CU(CU接触CTU行顶部边界)的照度补偿模式参数(线性模型的缩放因子和偏移)。在一些实施例中,顶部CU的照度补偿线性模型通过合并模式由CTU中的其他CU继承。在一些实施例中,在合并模式中,可以继承照度补偿模式开/关标志以及照度补偿模式参数。此外,顶部CU可以被配置为不继承照度补偿模式参数,而是从CTU行的顶部相邻像素导出照度补偿模式参数。因此,顶部CU可以使用CTU行的顶部相邻像素来导出精确的照度补偿模式参数,并且内部CU可以通过合并模式重用顶部CU的照度补偿模式参数。

图6示出了CU的照度补偿模式参数由CTU内的其他CU继承或共享。该图示出了包括四个CU 611-614的CTU 600。CU 611位于CTU 600的左上角。换句话说,紧邻CTU 600的顶部和左侧的相邻像素也紧邻CU 611的顶部和左侧。

为了计算CU 611的照度补偿模式参数(或线性模型),L形区域621中的像素用作相邻样本。L形区域621包括紧邻CTU 600和CU 611的顶部和左侧的相邻像素。CU 611与MV 615相关联,MV 615参考参考块631。参考块631上方和左侧的L形区域641中的像素用作参考块631的相邻样本。L形区域641中的相邻样本和L形区域621中的相邻样本用于确定CU 611的照度补偿模式参数(或线性模型)650。

线性模型650用于对CU 611执行照度补偿。它还用于对CU 612、613、614执行照度补偿,即使它们不与L形区域621相邻。

在一些实施例中,CU 612、613和614可以通过合并模式从CU 611继承线性模型650,例如,通过选择对应于CU 611的合并候选。在一些实施例中,历史缓冲区用于存储先前编解码的CU的照度补偿参数。可以从历史缓冲器(例如,170)撷取先前编解码的CU的照度补偿参数,并用于修改当前块的像素。

计算上文针对CTU内的CU的照度补偿模式参数的方法可用于计算较大块内的子块以及较大CU内的VPDU或PU的照度补偿模式参数。举例来说,如果CU具有多个PU且每一PU具有特定大小,那么仅CU的第一PU(例如,CU的左上角处的PU)使用其相邻重建采样来导出照度补偿模式参数。CU中的其他PU可以固有来自第一PU的模型参数。

在一些实施例中,如果当前块大小大于或等于特定阈值,则将当前块划分为多个子块,并且独立地为每个子块执行照度补偿模式。对于当前子块,如果视频编解码器不能同时获得L形模板的预测像素和残差像素,则视频编解码器可仅使用L形模板的预测像素用于照度补偿模式。

IV.基于预测设置的照度补偿

在一些实施例中,比特流中的显式标志可用于发信号通知当前块是启用还是禁用照度补偿模式。还可以基于CTU中的当前CU的位置来启用或禁用照度补偿模式。还可以基于当前块的大小来启用或禁用照度补偿模式。例如,在一些实施例中,大于或等于特定阈值的当前CU或PU具有隐含地关闭的照度补偿模式。

在一些实施例中,与编码或解码当前块有关的其他工具或操作的配置设置(诸如与帧间预测或帧内预测相关的那些)用于确定对当前块是启用还是禁用照度补偿。例如,用于当前块的其他帧间预测工具的设置,诸如通用双预测(GBi)、双向光流(BIO)、子PU时间运动向量预测(SPTMVP或ATMVP)、仿射模式、双边模板MV微调(DMVR)、多假设内合并模式、多假设合并模式、多假设合并+AMVP模式可用于隐式地打开或关闭照度补偿。示例包括:BIO开启时推断照度补偿模式已关闭;GBi开启,推断照度补偿模式关闭;BIO和GBI开启,推断照度补偿模式已关闭;DMVR开启,推断照度补偿模式关闭;多假设(帧内合并(Intra-Merge)),推断照度补偿模式已关闭。其他工具的配置设置也可用于推断照度补偿模式的设置。上面列出的配置设置的一些组合也可用于推断照度补偿模式的设置。

在一些实施例中,当开启照度补偿模式时,关闭与编码或解码当前块有关的其他工具或操作。例子包括:

当照度补偿模式开启时,BIO关闭;当照度补偿模式开启时,GBi关闭;当照度补偿模式开启时,BIO和GBI关闭;当照度补偿模式开启时,DMVR关闭;当开启照度补偿模式时,关闭多假设内合并模式和DMVR。照度补偿模式的设置还可以用于开启或关闭上述工具或操作的一些组合。关闭其他工具或操作可以是隐式的(不使用比特流语法元素)或显式的(使用比特流语法元素)。

例如,如果开启照度补偿模式(通过语法或通过合并模式继承),则可以隐式地关闭GBi。在一些实施例中,如果开启照度补偿模式,则可以将GBI索引语法重新用于AMVP。例如,如果开启照度补偿模式(通过语法或通过合并模式继承),则可以保存多假设内合并的语法元素并推断为0(关闭)。

A.双向光流(BIO)

双向光流(Bi-directional Optical Flow,简写为BIO)利用光流和稳定运动的假设来实现采样级运动微调。它仅适用于真正的双向预测块,它是从两个参考帧预测的,一个是前一帧,另一个是后一帧。BIO可以利用一个5x5窗口来导出一个采样的运动微调,因此对于一个NxN块,需要运动补偿结果和一个(N+4)x(N+4)块的相应梯度信息来导出当前块的基于采样的运动微调。一个6抽头(tap)梯度滤波器和一个6抽头插值滤波器用于在BIO中生成梯度信息。

B.广义双预测(GBi)

广义双向预测(Generalized bi-prediction,简写为GBi)是加权双预测技术,其允许分别使用来自L0和L1的预测子的不同权重,而不是使用相等权重。它使用块级自适应权重计算块的预测信号作为两个运动补偿预测块的加权平均,其中权重值不限于0.5。视频编解码器可通过使用索引从一组候选权重中选择候选权重来指示GBi的权重值。

C.时间运动向量预测(SPTMVP或ATMVP)

为了提高编解码效率,在合并模式中应用子PU时间运动向量预测(Sub-PU TMVP)模式。对于Sub-PU TMVP候选,将当前PU划分为多个子PU,并且为每个子PU识别对应的时间并置运动向量(temporal collocated motion vector)。大小为MxN的当前PU具有(M/P)×(N/Q)个子PU,每个子PU的大小为PxQ,其中M可被P整除,并且N可被Q整除。用于导出Sub-PUTMVP的算法描述如下。

步骤1:对于当前PU,Sub-PU TMVP模式找到“初始运动向量”,其将其表示为vec_init。根据定义,vec_init是第一个可用空间相邻块的第一个可用列表。例如,如果第一可用空间相邻块具有L0和L1 MV,并且LX是用于搜索并置信息的第一列表,则如果LX=L0则vec_init使用L0 MV,如果LX=L1则使用L1。LX(L0或L1)的值取决于哪个列表(L0或L1)对于并置信息更好,如果L0对于并置信息更好(例如,POC距离比L1更近),则LX=L0,反之亦然。LX分配可以是切片级别或图像级别。

并置图像搜索过程用于在Sub-PU TMVP模式中找到所有子PU的主要并置图像。主要并置图像表示为main_colpic。并置图像搜索处理搜索由第一可用空间相邻块选择的参考图像,然后搜索当前图像的所有参考图像。对于B切片,搜索过程开始于L0(或L1)、参考索引0,然后索引1,然后索引2,依此类推。如果搜索过程完成搜索L0(或L1),则它随后搜索另一个列表。对于P切片,搜索过程搜索由第一可用空间相邻块选择的参考图像,然后从参考索引0开始搜索列表的当前图像的所有参考图像,然后索引1,然后索引2,依此类推。

对于每个搜索到的图像,并置(collocated)图像搜索过程执行运动信息的可用性检查。当执行可用性检查时,将vec_init的缩放版本(表示为vec_init_scaled)添加到当前PU的围绕中心(around-center)位置。然后使用添加的位置来检查搜索到的图像的预测类型(帧内/帧间)。围绕中心位置可以是(i)中心像素(PU大小M*N,中心=位置(M/2,N/2)),(ii)中心子PU的中心像素,或者(iii)a(i)和(ii)的组合取决于当前PU的形状,或(iv)某些其他位置。如果预测类型是帧间类型,则运动信息可用(可用性为真)。如果预测类型是帧内类型,则运动信息不可用(可用性为假)。当搜索过程完成可用性检查时,如果运动信息可用,则将当前搜索到的图像记录为主并置图像。如果运动信息不可用,则搜索过程继续搜索下一个图像。

当vec_init的参考图像不是当前参考图像时,并置图像搜索过程执行MV缩放以创建vec_init的缩放版本(即,vec_init_scaled)。基于当前图像、vec_init的参考图像和搜索的参考图像之间的时间距离来创建vec_init的缩放版本。

步骤2:对于每个子PU,Sub-PU TMVP模式进一步找到子PU的初始运动向量,表示为vec_init_sub_i(i=0~((M/P)x(N/Q)-1))。根据定义,vec_init_sub_i=vec_init_scaled。

步骤3:对于每个子PU,Sub-PU TMVP模式找到用于参考列表0的并置图像和用于参考列表1的并置图像。根据定义,仅存在一个用于当前PU的所有子PU的参考列表0和参考列表1的并置图像(即,main_colpic)。

步骤4:对于每个子PU,Sub-PU TMVP模式根据以下内容找到并置图像中的并置位置:

并置位置x=sub-PU_i_x+integer(vec_init_sub_i_x)+shift_x

并置位置y=sub-PU_i_y+integer(vec_init_sub_i_y)+shift_y

术语sub-PU_i是当前子PU。术语sub-PU_i_x是当前图像内的子PU_i的水平左上位置(整数字置);sub-PU_i_y是当前图像内的子PU_i的垂直左上位置(整数字置);vec_init_sub_i_x是vec_init_sub_i的水平部分(仅限整数部分);vec_init_sub_i_y是vec_init_sub_i的垂直部分(仅限整数部分);shift_x是一个移位值,可以是子PU宽度的一半;shift_y是一个移位值,可以是子PU高度的一半。

步骤5:对于每个子PU,Sub-PU TMVP模式找到运动信息时间预测子,其被表示为SubPU_MI_i。SubPU_MI_i是来自步骤4中计算的并置位置上的collocated_picture_i_L0和collocated_picture_i_L1的运动信息(MI)。并置MV的MI被定义为{MV_x,MV_y,参考列表,参考索引,其他合并模式敏感信息}的集合。合并模式敏感信息可以是诸如包括局部照度补偿标志的信息。可以根据并置MV的并置图片、当前图片和参考图片之间的时间距离来缩放MV_x和MV_y。

如上所述,在一些实施例中,将多个Sub-PU TMVP候选添加到合并候选列表。使用不同的算法来导出不同的Sub-PU TMVP候选。在一些实施例中,假设在候选列表中总共存在M_C个候选,则N_S Sub-PU TMVP候选被添加到候选列表中,M_C>N_S。用于导出每个Sub-PUTMVP候选i(i=1,2,...,N_S)的算法表示为algo_i。对于不同的Sub-PU TMVP候选(例如,Sub-PU TMVP候选i和Sub-PU TMVP候选j,i和j是不同的),algo_i可以与algo_j不同。

D.PMVD和DMVR

基于模式的运动向量导出(PMVD)是从参考帧的现有运动向量(MV)导出时间运动向量预测子(MVP)的方法。类似于以跳过和合并模式编解码的块,由PMVD编解码的块不需要将运动信息从视频编码器发送到视频解码器。相反,解码器在可用参考帧中搜索可用于重建块的合适运动向量。PMVD是帧速率上转换(frame rate up-conversion,简写为FRUC)的一种形式,其允许在解码器处导出块的运动信息而无需来自编码器的信令(signaling)。

解码器可通过检查一组候选运动向量以选择初始运动向量来执行PMVD,然后通过搜索由初始运动向量指向的区域周围来执行解码器侧运动向量微调(DMVR)以用于具有最小的匹配成本或失真成本的参考像素设置。搜索的结果是微调的运动向量,其随后用于解码块。解码器可以通过针对块的每个子块进一步微调运动向量来执行第二级DMVR。

DMVR是用于视频编解码(编码/解码)以微调当前像素块的运动向量而不传输附加信息(例如,语法元素)的技术。但是,DMVR可以增加计算工作量并增加处理时间。在一些实施例中,为了确保通过增加处理时间来证明DMVR的视频质量改善是合理的,基于当前块的某些属性或特性来跳过或部分地执行DMVR。

在一些实施例中,PMVD和DMVR用于导出和微调用于当前块的双向帧间预测(或双向预测)的两个运动向量。当前帧中的当前块由指向第一参考帧中的第一参考像素集的第一运动向量和指向第二参考帧中的第二参考像素集的第二运动向量编码。通过第一参考像素组和第二参考像素组的组合来预测当前块。PMVD和DMVR技术用于识别和微调第一和第二运动向量,使得使用第一和第二参考像素组的组合来重建当前块的失真成本是最小的。

E.多假设合并模式

多假设模式平均多个合并候选或多个AMVP候选或多个帧间候选及多个帧内候选以形成最终预测子。在一些重要的实施例中,多假设模式使用一个合并候选或一个AMVP候选或一个帧间候选及一个帧内候选来进行平均并形成最终预测子。在一些实施例中,多假设(帧内合并)是一个合并候选及一个帧内模式;多假设(合并)是一个合并候选及一个合并候选;多假设(合并+AMVP)是一个合并候选及一个AMVP候选。

V.大型CTU的方法和语法设计

更大解析度视频压缩的应用变得更加重要。在下一代视频编解码中,CTU大小和最大TU大小分别大于64x64和32x32,例如,CTU大小可以是128x128或256x256,并且对于亮度分量,最大TU大小可以是64x64或128x128,对于色度分量,最大TU大小可以为32x32或64x64。然而,如果我们想要重用HEVC解码器结构,例如,32x32或64x64解码器流水线,应修改一些语法设计或编码/解码算法,以支持更大的CTU和更大的TU。

对于大CTU设计,如果CTU大小大于最大TU大小,则存在两种分区方法。一种是将CTU隐式地分割为大小等于最大TU大小或预定义/导出大小的CU,然后显式地信令CU分割语法。另一个是即使在CU大小大于最大TU大小时也显式地信令CU分割语法。如果叶CU大于TU大小,则推断当前CU被分成多于一个TU,其大小等于最大TU大小或预定义/导出大小。

在亮度/色度分离编解码中,首先编解码亮度CTU,然后对色度CTU进行编解码。如果亮度CTU大小为128x128或256x256且色度CTU大小为64x64或128x128,则传统的64x64流水线解码器架构(在每个流水线级或每个流水线缓冲器中可能具有64x64亮度纹理/残差缓冲器和/或32x32色度纹理残留缓冲器)不合适。例如,128x128亮度CU可以隐式地划分为四个64x64 CU,并且64x64色度CU也可以隐式地划分为四个32x32 CU。然而,在比特流中,顺序地信令四个亮度CU。在解码器中,它不能一起接收64x64亮度纹理/残差和32x32色度纹理/残差。因此,传统的64×64流水线解码器架构不适合或需要针对具有大CTU的亮度/色度分离编解码进行修改。

为了重用传统的64×64(或更小)流水线解码器架构,在一些实施例中,亮度/色度分量相关语法(例如,残差、量化级别、预测模式、编解码参数)以交织的方式在MxN块中重新排序。MxN块可以是预定义或导出的块大小,或等于最大TU大小,或者是与最大/最小TU大小相关的大小。在一个实施例中,如果亮度CTU大小是128x128并且色度CTU大小是64x64,并且亮度的最大TU大小是64x64并且色度是32x32,并且CTU被推断为分成四个CU,则四个64x64亮度CU和四个32x32色度CU被交错发信(interleaved signaled)。例如,64x64亮度CU之后是32x32色度CU,并且之后编码三对{64x64亮度CU,32x32色度CU}。64x64亮度CU和32x32色度可以进一步分成子CU。在一些实施例中,仍然应用亮度/色度分离编解码的概念。64x64亮度CU和32x32色度CU可以具有不同的编解码树。

在一些实施例中,如果亮度CTU大小是128x128并且色度CTU大小是64x64,并且亮度的最大TU大小是64x64并且对于色度32x32,则即使当CU大小大于最大TU大小时,也明确地信令CU分割(例如128x128亮度CU和64x64色度CU中的信号分割标志)。如果将128x128亮度CU分成四个64x64 CU,则在编解码第一个64x64 CU(64x64亮度CU可以进一步分成子CU)之后,它首先对色度分量进行编码/解码。如果64x64色度CU也被分成四个32x32 CU(32x32色度CU可以进一步分成子CU),则对第一个32x32色度CU进行编码/解码。在对第一32x32色度CU进行编码/解码之后,对第二64x64亮度CU进行编码/解码,并且对第二32x32色度CU进行编码/解码,依此类推。如果128x128亮度CU被分成四个64x64 CU但64x64色度未被分成子CU(色度TU被推断为四个32x32 TU),则它对第一个64x64亮度CU进行编码/解码,然后编码/解码64x64色度CU和32x32色度TU的模式信息。在对第一个32x32色度TU进行编码/解码之后,对第二个64x64亮度CU进行编码/解码,并对第二个32x32色度TU进行编码/解码,依此类推。当128x128亮度CU未分割但64x64色度CU被分割时,可以应用类似的概念。它首先对128x128亮度CU和第一个64x64亮度TU的模式信息进行编码/解码,然后对64x64色度CU和第一个32x32色度CU的分割语法进行编码/解码。在对第一个32x32色度CU进行编码/解码之后,对第二个64x64亮度TU进行编码/解码,并对第二个32x32色度CU进行编码/解码,依此类推。在另一实例中,如果未分割128x128亮度CU和64x64色度CU,则首先对128x128亮度CU的分割语法和模式信息进行编码/解码,然后对第一64x64亮度TU进行编码/解码。然后,它对64x64色度CU和第一个32x32色度CU的分割语法和模式信息进行编码/解码。在对第一个32x32色度TU进行编码/解码之后,对第二个64x64亮度TU进行编码/解码,对第二个32x32色度TU进行编码/解码,依此类推。

在一些实施例中,可首先对大小大于最大TU大小或预定义/导出大小的亮度CU和色度CU的分割语法进行编码/解码。举例来说,可首先编码/解码128x128亮度CU的第一CU分割语法和64x64色度CU的第一CU分割语法。然后,根据CU被分割或不分割,模式信息和/或CU/TU语法以交织的方式被编码/解码。交织单元可以等于最大TU大小或预定义/导出大小。

除了语法重新排序之外,对于若干特定编解码工具,一些实施例提供了一种方法来解决针对PU_thd大小流水线的硬件编解码器实现的某个工具处理太大CU的问题。定义PU大小阈值PU_thd。该方法可以应用于亮度/色度分离编解码或亮度/色度编解码树共享。PU_thd可以等于预定义/导出的大小,等于最大TU大小,或者与最大/最小TU大小相关的大小。

A.DMVR

定义PU大小阈值PU_thd。存在若干实施例来解决针对PU_thd大小流水线的编解码器处理用于DMVR的过大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐式地关闭DMVR模式。在一些实施例中,对于算法级别,当进行DMVR时,其将当前PU子采样为PU_thd的大小。在子采样之后,PU_thd大小流水线的编解码器可以进行用于子采样PU的DMVR。可以针对大小为PU_thd的每个子PU共享通过子采样的DMVR的MV微调结果,以用于运动补偿处理。在一些实施例中,对于DMVR,如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行DMVR。

B.LIC/NPO

有若干实施例解决了针对PU_thd大小流水线的编解码器处理用于LIC/NPO的太大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐含地关闭LIC/NPO模式。在一些实施例中,对于算法级别,当进行LIC/NPO时,其将当前PU的L形模板和参考PU的L形模板子采样为PU_thd的大小。在子采样之后,可以通过子采样L形来计算LIC/NPO的加权因子和偏移因子。然后,对于LIC/NPO加权(或偏移处理)运动补偿处理,可以为大小为PU_thd的(当前PU的)每个子PU共享LIC/NPO的加权因子和偏移因子。在一些实施例中,对于LIC/NPO,如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行LIC/NPO。对于当前子PU,如果当前子PU的L形模板的顶部或左部或两者都不能获得“预测+残差”像素,则可以将“预测”像素用于LIC/NPO算法。

C.FRUC/PMVD(L形模板模式)

有若干实施例来解决针对PU_thd大小流水线的编解码器处理用于FRUC(L形模板模式)的太大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐含地关闭FRUC(L形模板模式)模式。在一些实施例中,对于算法级别,当执行FRUC(L形模板模式)时,其将当前PU的L形模板和参考PU的L形模板子采样为PU_thd的大小。在子采样之后,可以通过PU_thd的硬件缓冲器大小来处理MV微调。然后,可以针对大小为PU_thd的(当前PU的)每个子PU共享微调的MV,以用于稍后的运动补偿处理。在一些实施例中,对于FRUC(L形模板模式),如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行FRUC(L形模板模式)。对于当前子PU,如果当前子PU的L形模板的顶部或左部或两者都不能获得“预测+残差”像素,则可以使用FRUC(L形模板模式)算法的“预测”像素。

D.FRUC(双向微调模式)

有几个实施例解决了针对PU_thd大小流水线的编解码器处理用于FRUC(双向微调模式)的太大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐含地关闭FRUC(双向微调模式)模式。在一些实施例中,对于算法级别,当进行FRUC(双向微调模式)时,其将当前PU子采样为PU_thd的大小。在子采样之后,PU_thd大小流水线的编解码器可以针对初始PU级别MV微调进行用于子采样PU的FRUC(双向微调模式)。通过子采样FRUC(双向微调模式)的MV微调结果可以针对大小为PU_thd的每个子PU共享,用于阶段2微调(4x4微调或KxK微调,其中K=4或8或其他值)和运动补偿处理。对于一些实施例,对于FRUC(双向微调模式),如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行FRUC(双向微调模式)。

E.ATMVP

有几个实施例解决了针对PU_thd大小流水线的编解码器处理用于FRUC的太大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐含地关闭ATMVP模式。在一些实施例中,对于算法级别,当进行ATMVP时,将当前PU子采样为PU_thd的大小。在子采样之后,PU_thd大小流水线的编解码器可以进行用于子采样PU的ATMVP。在一些实施例中,对于ATMVP,如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行ATMVP。

F.STMVP

存在若干实施例来解决针对PU_thd大小流水线的编解码器处理用于STMVP的过大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐含地关闭STMVP模式。在一些实施例中,对于STMVP,如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行STMVP。

G.解码器侧MV/预测子导出

存在若干实施例解决了针对PU_thd大小流水线的编解码器的解码器侧MV/预测子微调/导出工具(例如,PMVD、BIO、解码器侧MV导出/微调、解码器侧帧内模式导出)处理太大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,隐含地关闭解码器侧MV/预测子微调/导出工具。

对于解码器侧MV/预测子微调/导出工具,如果当前PU大于或等于PU_thd,则可将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU大小)。然后,可以独立地为每个子PU执行解码器侧MV/预测子微调/导出工具。在一些实施例中,对于算法级别,当进行解码器侧MV/预测子微调/导出工具时,对当前PU的相邻像素进行子采样,将参考采样和/或当前模板采样为PU_thd的大小。

H.LM模式

存在若干实施例解决了针对PU_thd大小流水线的编解码器处理用于LM帧内模式的太大CU的问题。在一些实施例中,对于如果当前PU大于或等于PU_thd的情况,则隐式地关闭LM模式。在一些实施例中,对于LM模式,如果当前PU大于或等于PU_thd,则可以将当前PU划分为M个子PU,每个大小为PU_thd(使得M*PU_thd=当前PU尺寸)。然后,可以独立地为每个子PU执行LM模式。每个子PU将从其对应的亮度块导出所需信息。

I.LM缓冲器管理

如果色度模式使用LM模式,且色度CU大小大于最大TU大小或流水线缓冲器大小,则可以在解码相应的亮度采样时生成LM预测子。例如,如果64x64色度使用LM模式,则当它解码第一个对应的64x64亮度CU/TU时,可以生成第一个32x32 LM预测子并将其存储在流水线缓冲器或预测子缓冲器中。在解码所有64x64亮度CU/TU之后,生成64x64色度LM预测子且其可以用于采样重建。

VI.示例的视频编码器

图7说明与本发明的一些实施例一致的实施照度补偿模式的实例视频编码器700。如图所示,视频编码器700从视频源705接收输入视频信号并将信号编码到比特流795中。视频编码器700具有用于编码来自视频源705的信号的若干组件或模块,包括变换模块710、量化模块711、逆量化模块714、逆变换模块715、图像内估计模块720、帧内预测模块(也称为图像内预测模块)725、运动补偿模块730、运动估计模块735、环路滤波器745、重建图像缓冲器750、MV缓冲器765和MV预测模块775,以及熵编码器790。运动补偿模块730和运动估计模块735是帧间预测模块740的一部分。

在一些实施例中,模块710-790是由计算设备或电子装置的一个或多个处理单元(例如,处理器)执行的软件指令的模块。在一些实施例中,模块710-790是由电子装置的一个或多个集成电路(IC)实现的硬件电路的模块。尽管模块710-790被示为单独的模块,但是一些模块可以组合成单个模块。

视频源705提供原始视频信号,其呈现每个视频帧的像素数据而无需压缩。减法器708计算来自的视频源705的原始视频像素数据与来自运动补偿模块730或帧内预测模块725的预测像素数据713之间的差异。变换模块710将差值(或残差像素数据或残差信号709)转换为变换系数(例如,通过执行离散余弦变换/DCT)716。量化模块711将变换系数716量化为量化数据(或量化系数)712,其由熵编码器790编码到比特流795中。

逆量化模块714对量化数据(或量化系数)712进行去量化以获得变换系数,并且逆变换模块715对变换系数执行逆变换以产生重建残差719。重建残差719与预测像素数据713相加来产生重建像素数据717。在一些实施例中,重建像素数据717临时存储在行(line)缓冲器(未示出)中,用于图像内预测和空间MV预测。重建的像素由环路滤波器745滤波并存储在重建的图像缓冲器750中。在一些实施例中,重建的图像缓冲器750是视频编码器700外部的存储器。在一些实施例中,重建的图像缓冲器750是视频编码器700内部的存储器。

图像内估计模块720基于重建的像素数据717执行帧内预测以产生帧内预测数据。帧内预测数据被提供给熵编码器790以被编码成比特流795。帧内预测模块725还使用帧内预测数据来产生预测像素数据713。

运动估计模块735通过产生MV来执行帧间预测,以参考存储在重建图像缓冲器750中的先前解码的帧的像素数据。这些MV被提供给运动补偿模块730以产生预测的像素数据。

代替对比特流中的完整实际MV进行编码,视频编码器700使用MV预测来生成预测的MV,并且用于运动补偿的MV与预测的MV之间的差被编码为残差运动数据并存储在比特流795中。

MV预测模块775基于为先前视频帧编码而生成的参考MV(即,用于执行运动补偿的运动补偿MV)来生成预测的MV。MV预测模块775从MV缓冲器765撷取来自先前视频帧的参考MV。视频编码器700将针对当前视频帧生成的MV存储在MV缓冲器765中作为用于生成预测MV的参考MV。

MV预测模块775使用参考MV来创建预测的MV。可以通过空间MV预测或时间MV预测来计算预测的MV。预测的MV与当前帧的运动补偿MV(MC MV)之间的差异(残差运动数据)由熵编码器790编码到比特流795中。

熵编码器790通过使用诸如上下文自适应二进制算术编解码(CABAC)或霍夫曼编码的熵编解码技术将各种参数和数据编码到比特流795中。熵编码器790将各种标头(header)元素、标志以及量化的变换系数712和残差运动数据作为语法元素编码到比特流795中。比特流795又存储在存储设备中或通过通信媒体,如网络传输到解码器。

环路滤波器745对重建的像素数据717执行滤波或平滑操作以减少编解码的伪像,特别是在像素块的边界处。在一些实施例中,执行的滤波操作包括采样自适应偏移(SAO)。在一些实施例中,滤波操作包括自适应环路滤波器(ALF)。

图8示出了与本公开的一些实施例一致的实现照度补偿模式的视频编码器700的部分。如图所示,照度补偿模块800接收当前块的重建像素数据717,其是预测像素数据713和重建残差719之和。重建像素数据717是可能未执行照度补偿的运动补偿像素。基于运动补偿像素,照度补偿模块800生成经过修改的像素数据810以进一步处理并存储在重建图像缓冲器750和行缓冲器850中。重建图像缓冲器750存储当前帧的重建块以及参考帧。行缓冲器850存储恰好在当前CTU行之上的最后解码的CTU或CU行。

照度补偿模块800应用线性模型(或一组照度补偿参数)来修改当前块的重建像素数据717。在一些实施例中,应用线性模型来微调预测的像素数据713。照度补偿模块800可以基于存储在重建的图像缓冲器750和/或行缓冲器850中的像素数据来生成线性模型。例如,可以从重建图像缓冲器750和/或行缓冲器850的内容导出当前块的相邻样本,而可以基于重建图像缓冲器750的内容导出参考块的相邻样本。可以由帧间预测模块740提供与当前块相关联的运动向量830,以从重建的图像缓冲器750定位参考块及其相邻样本的像素。照度补偿模块800还可以从历史缓冲器820中撷取线性模型。,其存储最近编解码的块的线性模型(或照度补偿参数)。

虽然未示出,但是照度补偿模块800可以接收适用于当前块的操作的配置设置(例如,GBi、BIO、DMVR和其他预测工具),以及当前块本身的配置设置(例如,它的大小)。在一些实施例中,这些配置设置由运动估计模块735或速率-失真过程提供。

VII.示例视频解码器

图9说明与本发明的一些实施例一致的实施照度补偿模式的实例视频解码器900。如图所示,视频解码器900是图像解码或视频解码电路,其接收比特流995并将比特流的内容解码为视频帧的像素数据以供显示。视频解码器900具有用于解码比特流995的若干组件或模块,包括逆量化模块905、逆变换模块910、帧内预测模块925、运动补偿模块930、环路滤波器945、已解码图像缓冲器950、MV缓冲器965、MV预测模块975和解析器990。运动补偿模块930是帧间预测模块940的一部分。

在一些实施例中,模块910-990是由计算设备的一个或多个处理单元(例如,处理器)执行的软件指令的模块。在一些实施例中,模块910-990是由电子装置的一个或多个IC实现的硬件电路的模块。尽管模块910-990被示为单独的模块,但是一些模块可以组合成单个模块。

解析器990(或熵解码器)接收比特流995并根据由视频编解码或图像编码标准定义的语法执行初始解析。经解析的语法元素包括各种标头元素、标志以及量化数据(或量化系数)912。解析器990通过使用诸如上下文自适应二进制算术编解码(CABAC)或霍夫曼编码之类的熵编解码技术来解析各种语法元素。

逆量化模块905对量化数据(或量化系数)912进行去量化以获得变换系数,并且逆变换模块910对变换系数916执行逆变换以产生重建残差信号919。在重建残差信号919中添加来自帧内预测模块925或运动补偿模块930的预测像素数据913,以产生解码像素数据917。解码的像素数据由环路滤波器945滤波并存储在解码图像缓冲器950中。在一些实施例中,解码图像缓冲器950是视频解码器900外部的存储器。在一些实施例中,解码图像缓冲器950是视频解码器900内部的存储器。

帧内预测模块925从比特流995接收帧内预测数据,并且据此根据存储在解码图像缓冲器950中的解码像素数据917产生预测像素数据913。在一些实施例中,解码像素数据917还存储在行缓冲器(未示出)中,用于图像内预测和空间MV预测。

在一些实施例中,解码图像缓冲器950的内容用于显示。显示设备955或者撷取解码图像缓冲器950的内容以便直接显示,或者将解码图像缓冲器的内容撷取到显示缓冲器。在一些实施例中,显示设备通过像素传输从解码图像缓冲器950接收像素值。

运动补偿模块930根据运动补偿MV(MC MV)从存储在解码图像缓冲器950中的解码像素数据917产生预测像素数据913。通过将从比特流995接收的残差运动数据与从MV预测模块975接收的预测MV相加来解码这些运动补偿MV。

MV预测模块975基于参考MV生成预测的MV,参考MV是用于解码先前视频帧(例如,用于执行运动补偿的运动补偿MV)而生成的。MV预测模块975从MV缓冲器965撷取先前视频帧的参考MV。视频解码器900将用于解码当前视频帧而生成的运动补偿MV存储在MV缓冲器965中为用于产生预测MV的参考MV。

环路滤波器945对解码的像素数据917执行滤波或平滑操作,以减少编解码的伪像,特别是在像素块的边界处。在一些实施例中,执行的滤波操作包括采样自适应偏移(SAO)。在一些实施例中,滤波操作包括自适应环路滤波器(ALF)。

图10示出了与本公开的一些实施例一致的实现照度补偿模式的视频解码器900的部分。如图所示,照度补偿模块1000接收当前块的解码像素数据917,其是预测像素数据913和重建残差919的和。解码像素数据917是可能未执行照度补偿的运动补偿像素。基于运动补偿像素917,照度补偿模块1000生成经过修改的像素数据1010以进一步处理并存储在解码图像缓冲器950和行缓冲器1050中。解码图像缓冲器950存储当前帧的先前重建的块以及参考帧。行缓冲器1050存储恰好在当前CTU行之上的最后解码的CTU或CU行。

照度补偿模块1000应用线性模型(基于一组照度补偿参数)来修改当前块的解码像素数据917。在一些实施例中,应用线性模型来微调预测的像素数据913。照度补偿模块1000可以基于存储在解码图像缓冲器950和/或行缓冲器1050中的像素数据来生成线性模型。例如,可以基于解码图像缓冲器950和/或行缓冲器1050的内容导出当前块的相邻样本,而可以基于解码图像缓冲器950的内容导出参考块的相邻样本。可以由帧间预测模块940提供与当前块相关联的运动向量1030,以从解码图像缓冲器950定位参考块及其相邻样本的像素。照度补偿模块1000还可以从历史缓冲器1020撷取线性模型,其存储最近编解码的块的线性模型(或照度补偿参数)。

尽管未示出,但是照度补偿模块1000可以接收适用于当前块的操作的配置设置(例如,GBi、BIO、DMVR和其他预测工具),以及当前块本身的配置设置(例如,它的大小)。在一些实施例中,这些配置设置由解析器或熵解码器990提供。

图11概念性地示出了用于执行当前块的照度补偿模式的过程1100。在一些实施例中,实现视频编解码器(编码器700或解码器900)的计算设备的一个或多个处理单元(例如,处理器)通过执行存储在计算机可读介质中的指令来执行过程1100。在一些实施例中,实现视频编解码器的电子装置执行过程1100。

视频编解码器(在步骤1110)接收第一视频图像中的第一像素块以编解码为当前块。从由逆变换操作产生的残差和由帧间预测或帧内预测产生的预测像素重建像素块。在编码时,像素块将在比特流中编码为当前块。在解码时,像素块从比特流解码为当前块。当前块与运动向量相关联,该运动向量将第二视频图像中的第二像素块作为参考块。视频编解码器通过使用运动向量来执行(在步骤1120)当前块的帧间预测,以产生用于当前块的一组运动补偿像素。

视频编解码器基于(i)当前块在较大块中的位置,(ii)当前块的大小,或(iii)当前块的帧间预测设置确定(在步骤1130)是否启用或禁用当前块的照度补偿模式。在一些实施例中,当前块可以是较大块的子块或CTU中的CU。如果当前块不是较大块或CTU的最顶部块或最左侧块,则可以禁用照度补偿模式。在一些实施例中,当对于当前块开启GBi、BIO、SPTMVP或ATMVP、仿射模式、DMVR、多假设内合并模式、多假设合并模式或多假设合并及AMVP模式时,关闭照度补偿模式。

视频编解码器确定(在步骤1140处)是启用还是禁用照度补偿模式。如果启用了照度补偿模式,则处理进行到1160。如果禁用了照度补偿,则处理进行到1150。

在步骤1150,视频编解码器将当前块的经运动补偿像素集合编码成比特流或输出当前块的经运动补偿像素集合以供显示。

在步骤1160,视频编解码器通过应用基于参考块和当前块的相邻样本计算的线性模型来修改当前块的经运动补偿像素的集合。基于较大块内的当前块的位置来识别相邻样本。线性模型基于一组照度补偿参数,其包括线性模型的缩放因子和偏移。较大的块可以包括多个子块,并且当前块是第一子块。第一子块的相邻像素用作相邻样本以计算用于修改当前块和较大块的其他子块的线性模型。在一些实施例中,较大块的相邻像素被子采样并用作相邻样本以计算用于修改当前块和较大块的其他子块的线性模型。

在一些实施例中,当前块可以是包括多个CU的CTU中的CU。基于CTU的相邻像素导出当前块的所识别的相邻样本。在一些实施例中,当前块是预测单元(PU),并且较大的块是包括多个PU并且具有大于阈值的大小的编解码单元(CU)。基于CU的相邻像素导出当前块的所识别的相邻样本。

在一些实施例中,所识别的当前块的相邻样本是较大块的与当前块垂直或水平对齐的相邻像素。相邻样本可以包括较大块上方的相邻像素,并且当当前块位于较大块的顶部边缘但不在较大块的左边缘时不包括其他像素。相邻样本可以包括较大块左侧的相邻像素,而当当前块位于较大块的左边缘但不位于较大块的顶部边缘时,不包括其他像素。

在一些实施例中,当剩余像素可用时,通过使用基于预测像素和残差像素的相邻块的重建像素来计算相邻样本,并且当残差像素不可用时,通过使用相邻块的预测像素来计算相邻样本。在一些实施例中,线性模型从当前块的相邻块(其提供所选择的合并候选)继承。

视频编解码器(在步骤1170处)将当前块的经修改的经运动补偿的像素集合编码到比特流中或输出当前块的经修改的经运动补偿的像素集合以供显示。

VIII.示例的电子系统

许多上述特征和应用被实现为被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的一组指令的软件过程。当这些指令由一个或多个计算或处理单元(例如,一个或多个处理器、处理器核或其他处理单元)执行时,它们使处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于CD-ROM、闪存驱动器、随机存取存储器(RAM)芯片、硬盘驱动器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)。计算机可读介质不包括通过无线或有线连接传递的载波和电子信号。

在本说明书中,术语“软件”旨在包括驻留在只读存储器中的固件或存储在磁存储器中的应用程序,其可被读入存储器以供处理器处理。而且,在一些实施例中,多个软件发明可以实现为较大程序的子部分,同时保持不同的软件发明。在一些实施例中,多个软件发明也可以实现为单独的程序。最后,一起实现这里描述的软件发明的单独程序的任何组合都在本公开的范围内。在一些实施例中,当软件程序被安装在一个或多个电子系统上以被操作时,定义执行和执行软件程序的操作的一个或多个特定机器实现。

图12概念性地示出了电子系统1200,利用该电子系统1200实现本公开的一些实施例。电子系统1200可以是计算机(例如,台式计算机、个人计算机、平板计算机等)、电话、PDA或任何其他种类的电子设备。这种电子系统包括各种类型的计算机可读介质和用于各种其他类型的计算机可读介质的介面。电子系统1200包括总线1205、处理单元1210、图形处理单元(GPU)1215、系统存储器1220、网络1225、只读存储器1230、永久存储设备1235、输入设备1240和输出设备1245。

总线1205共同表示通信地连接电子系统1200的众多内部设备的所有系统、外围设备和芯片组总线。例如,总线1205将处理单元1210与GPU 1215、只读存储器1230、系统存储器1220和永久存储设备1235通信地连接。

从这些各种存储器单元,处理单元1210撷取要执行的指令和要处理的数据,以便执行本公开的过程。在不同实施例中,处理单元可以是单个处理器或多核处理器。一些指令被传递到GPU 1215并由GPU 1215执行。GPU 1215可以卸载(offload)各种计算或补充由处理单元1210提供的图像处理。

只读存储器(ROM)1230存储由处理单元1210和电子系统的其他模块使用的静态数据和指令。另一方面,永久存储设备1235是读写存储设备。该设备是非易失性存储器单元,即使在电子系统1200关闭时也存储指令和数据。本公开的一些实施例使用大容量存储设备(诸如磁盘或光盘及其相应的磁盘驱动器)作为永久存储设备1235。

其他实施例使用可移动存储设备(诸如软盘,闪存设备等,以及其对应的磁盘驱动器)作为永久存储设备。与永久存储设备1235类似,系统存储器1220是读写存储器设备。然而,与存储设备1235不同,系统存储器1220是易失性读写存储器,例如随机存取存储器。系统存储器1220存储处理器在运行时使用的一些指令和数据。在一些实施例中,根据本公开的过程存储在系统存储器1220、永久存储设备1235和/或只读存储器1230中。例如,各种存储器单元包括用于根据一些实施例处理多媒体剪辑的指令。从这些各种存储器单元,处理单元1210撷取要执行的指令和要处理的数据,以便执行一些实施例的过程。

总线1205还连接到输入和输出设备1240和1245。输入设备1240使用户能够向电子系统传送信息和选择命令。输入设备1240包括字母数字键盘和指示设备(也称为“光标控制设备”)、相机(例如,网络摄像头)、麦克风或用于接收语音命令等的类似设备。输出设备1245显示由电子系统生成的图像或输出数据。输出设备1245包括打印机和显示设备,例如阴极射线管(CRT)或液晶显示器(LCD),以及扬声器或类似的音频输出设备。一些实施例包括诸如触摸屏的设备,其用作输入和输出设备。

最后,如图12所示,总线1205还通过网络适配器(未示出)将电子系统1200耦合到网络1225。以这种方式,计算机可以是计算机网络的一部分(例如局域网(“LAN”)、广域网(“WAN”)或内联网、或网络网(例如因特网))。电子系统1200的任何或所有组件可以与本公开结合使用。

一些实施例包括电子组件,例如微处理器,将计算机程序指令存储在机器可读或计算机可读介质中(或者称为计算机可读存储介质、机器可读介质或机器可读存储介质)的存储设备和存储器。这种计算机可读介质的一些示例包括RAM、ROM、只读光盘(CD-ROM)、可记录光盘(CD-R)、可重写光盘(CD-RW)、只读数字通用光盘(例如,DVD-ROM、双层DVD-ROM)、各种可记录/可重写DVD(例如DVD-RAM、DVD-RW、DVD+RW等)、闪存(例如SD卡、mini-SD卡、micro-SD卡等)、磁性和/或固态硬盘驱动器、只读和可记录

虽然上述讨论主要涉及执行软件的微处理器或多核处理器,但是许多上述特征和应用由一个或多个集成电路执行,例如专用集成电路(ASIC)或现场可编程门阵列(FPGA)。在一些实施例中,这种集成电路执行存储在电路自身上的指令。另外,一些实施例执行存储在可编程逻辑器件(PLD)、ROM或RAM器件中的软件。

如在本说明书和本申请的任何权利要求中使用的,术语“计算机”、“服务器”、“处理器”和“存储器”均指电子或其他技术设备。这些条款不包括人或人群。出于说明书的目的,术语显示或显示装置显示在电子设备上。如在本说明书和本申请的任何权利要求中所使用的,术语“计算机可读介质”、“计算机可读媒体”和“机器可读介质”完全限于以计算机可读的有形形式存储信息的有形实体对象。这些术语不包括任何无线信号、有线下载信号和任何其他短暂信号。

虽然已经参考许多具体细节描述了本公开,但是本领域技术人员将认识到,在不脱离本公开的精神的情况下,本公开可以以其他具体形式实施。另外,许多附图(包括图11)概念性地示出了过程。这些过程的具体操作可能无法按照所示和描述的确切顺序执行。可以不在一个连续的一系列操作中执行特定操作,并且可以在不同的实施例中执行不同的特定操作。此外,该过程可以使用多个子过程来实现,或者作为更大的宏过程的一部分来实现。因此,本领域技术人员将理解,本公开不受前述说明性细节的限制,而是由所附权利要求限定。

附加声明

文中描述的主题有时示出了包含在其它不同部件内的或与其它不同部件连接的不同部件。应当理解:这样描绘的架构仅仅是示例性的,并且,实际上可以实施实现相同功能的许多其它架构。在概念意义上,实现相同功能的部件的任何布置是有效地“相关联的”,以使得实现期望的功能。因此,文中被组合以获得特定功能的任意两个部件可以被视为彼此“相关联的”,以实现期望的功能,而不管架构或中间部件如何。类似地,这样相关联的任意两个部件还可以被视为彼此“可操作地连接的”或“可操作地耦接的”,以实现期望的功能,并且,能够这样相关联的任意两个部件还可以被视为彼此“操作上可耦接的”,以实现期望的功能。“操作上可耦接的”的具体示例包含但不限于:实体地可联结和/或实体地相互、作用的部件、和/或无线地可相互作用和/或无线地相互作用的部件、和/或逻辑地相互作用的和/或逻辑地可相互作用的部件。

此外,关于文中基本上任何复数和/或单数术语的使用,只要对于上下文和/或应用是合适的,本领域技术人员可以将复数变换成单数,和/或将单数变换成复数。为清楚起见,这里可以明确地阐述各种单数/复数排列。

本领域技术人员将会理解,通常,文中所使用的术语,特别是在所附权利要求(例如,所附权利要求中的主体)中所使用的术语通常意在作为“开放性”术语(例如,术语“包含”应当被解释为“包含但不限干”,术语“具有”应当被解释为“至少具有”,术语“包含”应当被解释为“包含但不限干”等)。本领域技术人员还将理解,如果意在所介绍的权利要求陈述对象的具体数目,则这样的意图将会明确地陈述在权利要求中,在缺乏这样的陈述的情况下,不存在这样的意图。例如,为了帮助理解,所附权利要求可以包含使用介绍性短语“至少一个”和“一个或更多个”来介绍权利要求陈述对象。然而,这样的短语的使用不应当被解释为:用不定冠词“一个(a或an)”的权利要求陈述对象的介绍将包含这样介绍的权利要求陈述对象的任何权利要求限制为只包含一个这样的陈述对象的发明,即使在同一权利要求包含介绍性短语“一个或更多个”或“至少一个”以及诸如“一个(a)”或“一个(an)”之类的不定冠词的情况下(例如,“一个(a)”和/或“一个(an)”应当通常被解释为意味着“至少一个”或“一个或更多个”)也如此;上述对以定冠词来介绍权利要求陈述对象的情况同样适用。另外,即使明确地陈述了介绍的权利要求陈述对象的具体数目,但本领域技术人员也会认识到:这样的陈述通常应当被解释为意味着至少所陈述的数目(例如,仅有“两个陈述对象”而没有其他修饰语的陈述通常意味着至少两个陈述对象,或两个或更多个陈述对象)。此外,在使用类似于“A、B和C中的至少一个等”的惯用语的情况下,通常这样的结构意在本领域技术人员所理解的该惯用语的含义(例如,“具有A、B和C中的至少一个的系统”将包含但不限于具有单独的A、单独的B、单独的C、A和B—起、A和C一起、B和C一起和/或A、B和C一起的系统等)。在使用类似于“A、B或C中的至少一个等”的惯用语的情况下,通常这样的结构意在本领域技术人员所理解的该惯用语的含义(例如,“具有A、B或C中的至少一个的系统”将包含但不限于具有单独的A、单独的B、单独的C、A和B—起、A和C一起、B和C一起和/或A、B和C一起的系统等)。本领域技术人员将进一歩理解,不管在说明书、权利要求中还是在附图中,表示两个或更多个可替换的术语的几乎任意析取词和/或短语应当理解成考虑包含术语中的一个、术语中的任一个或所有两个术语的可能性。例如,短语“A或B”应当被理解成包含“A”、“B”、或“A和B”的可能性。

从前述内容可以理解,本文已经出于说明的目的描述了本公开的各种实施方式,并且在不脱离本公开的范围和精神的情况下可以进行各种修改。因此,本文公开的各种实施方式不旨在是限制性的,真正的范围和精神由所附权利要求指示。

相关技术
  • 指纹检测方法与指纹图像补偿方法及装置、电子装置
  • 图像分割方法、相应的装置及电子设备
  • 法律相关文本的归类方法、归类装置及相应的电子设备
  • 一种显示面板的补偿方法、补偿装置及显示装置
  • 显示装置补偿计算的方法、补偿结构及显示装置
  • 具照度补偿功能的照明装置及照明装置的照度补偿方法
  • 用于减少多视图编码视频中的照度补偿和/或色彩补偿的编码伪像的方法和装置
技术分类

06120116229089