CN114503584A - 基于历史的运动矢量预测 - Google Patents
基于历史的运动矢量预测 Download PDFInfo
- Publication number
- CN114503584A CN114503584A CN202080065270.4A CN202080065270A CN114503584A CN 114503584 A CN114503584 A CN 114503584A CN 202080065270 A CN202080065270 A CN 202080065270A CN 114503584 A CN114503584 A CN 114503584A
- Authority
- CN
- China
- Prior art keywords
- motion vector
- block
- motion
- prediction
- video
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 482
- 238000000034 method Methods 0.000 claims abstract description 166
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims abstract description 157
- 230000008859 change Effects 0.000 claims description 48
- 238000012545 processing Methods 0.000 claims description 46
- 238000003860 storage Methods 0.000 claims description 34
- 238000013519 translation Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 description 57
- 238000010586 diagram Methods 0.000 description 39
- 239000010410 layer Substances 0.000 description 31
- 238000013139 quantization Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 26
- 238000005192 partition Methods 0.000 description 24
- 241000023320 Luma <angiosperm> Species 0.000 description 23
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 23
- 230000005540 biological transmission Effects 0.000 description 22
- 230000002123 temporal effect Effects 0.000 description 22
- 238000000638 solvent extraction Methods 0.000 description 14
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 12
- 230000003044 adaptive effect Effects 0.000 description 12
- 238000010276 construction Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 238000013138 pruning Methods 0.000 description 8
- 238000009795 derivation Methods 0.000 description 7
- 238000000605 extraction Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 6
- 238000012360 testing method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 239000004342 Benzoyl peroxide Substances 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 2
- 241000723655 Cowpea mosaic virus Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 238000012432 intermediate storage Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 241000342334 Human metapneumovirus Species 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/527—Global motion vector estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/56—Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供了用于更新基于历史的运动矢量表的系统、方法和计算机可读介质。在一些示例中,一种方法可以包括:获得视频数据的一个或多个块;确定从一个或多个块中的块的第一控制点而推导的第一运动矢量,该块是使用仿射运动模式来编码的;确定从该块的第二控制点而推导的第二运动矢量;基于第一运动矢量和第二运动矢量来估计用于该块内的预定位置的第三运动矢量;以及利用第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
Description
技术领域
概括而言,本公开内容涉及视频编码和压缩,并且更具体地,本公开内容涉及基于历史的运动矢量预测。
背景技术
许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据包括大量数据,以满足消费者和视频提供商的需求。例如,视频数据的消费者期望具有高保真度、分辨率、帧速率等的最高质量的视频。结果,为了满足这些需求所需要的大量视频数据为处理和存储视频数据的通信网络和设备带来了负担。
各种视频编码技术可以用于压缩视频数据。视频编码是根据一种或多种视频编码标准来执行的。例如,视频编码标准包括基本视频编码(EVC)、高效率视频编码(HEVC)、高级视频编码(AVC)、MPEG-2第2部分编码(MPEG代表运动图像专家组)、VP9、开放媒体联盟(AOMedia)视频1(AV1)等。视频编码通常利用预测方法(例如,帧间预测、帧内预测等),预测方法利用在视频图像或序列中存在的冗余。通常,视频编码技术的目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着不断发展的视频服务变得可用,需要具有更好的编码效率和性能的编码技术。
发明内容
公开了用于提供基于历史的运动矢量预测的系统、方法和计算机可读介质。根据至少一个示例,提供了一种用于基于历史的运动矢量预测的方法。所述方法可以包括:获得视频数据的一个或多个块;确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;确定从所述块的第二控制点而推导的第二运动矢量;基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
根据至少一个示例,提供了一种用于基于历史的运动矢量预测的装置。在一些示例中,所述装置可以包括:存储器;以及耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:获得视频数据的一个或多个块;确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;确定从所述块的第二控制点而推导的第二运动矢量;基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
根据至少一个示例,提供了一种用于基于历史的运动矢量预测的非暂时性计算机可读存储介质。所述非暂时性计算机可读介质可以包括存储在其上的指令,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:获得视频数据的一个或多个块;确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;确定从所述块的第二控制点而推导的第二运动矢量;基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
根据至少一个示例,提供了一种用于生成用于基于历史的运动矢量预测的模糊控制界面的装置。所述装置可以包括用于进行以下操作的单元:获得视频数据的一个或多个块;确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;确定从所述块的第二控制点而推导的第二运动矢量;基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
在一些示例中,以上描述的方法、计算机可读介质和装置可以将来自所述HMVP表的一个或多个HMVP候选添加到高级运动矢量预测(AMVP)候选列表、合并模式候选列表和用于使用所述仿射运动模式进行编码的运动矢量预测预测器中的至少一项中。
在一些示例中,所述预定位置可以包括所述块的中心。在一些示例中,所述第一控制点可以包括左上方控制点,并且所述第二控制点可以包括右上方控制点。在一些情况下,所述第三运动矢量可以是进一步基于与底部控制点相关联的控制点运动矢量来估计的。
在一些情况下,估计所述第三运动矢量可以包括:基于所述第一运动矢量和所述第二运动矢量之间的差,来确定所述第一运动矢量和所述第二运动矢量之间的变化率;以及将所述变化率乘以对应于所述预定位置的乘法因数。在一些示例中,所述预定位置可以包括所述块的中心,并且所述乘法因数可以包括所述块的宽度和/或所述块的高度中的一半。在一些示例中,所述变化率可以包括每单位变化率,并且所述每单位变化率的每个单位可以包括样本、子块和/或像素。在一些情况下,所述乘法因数可以包括所述预定位置和所述块的边界之间的样本数量。
在一些示例中,所述第三运动矢量是基于所述第一运动矢量的水平分量和所述第二运动矢量的水平分量之间的第一运动变化以及所述第一运动矢量的垂直分量和所述第二运动矢量的垂直分量之间的第二运动变化的。
在一些示例中,所述第三运动矢量可以包括基于与所述块相关联的仿射运动信息而生成的平移运动矢量。在一些情况下,所述第三运动矢量可以包括与所述块的一个或多个子块相关联的运动信息,并且所述一个或多个子块中的至少一个子块对应于所述预定位置。
在一些情况下,所述HMVP表和/或所述第三运动矢量可以用于对额外块的运动预测。
在一些方面中,上述每个装置是或者包括相机、移动设备(例如,移动电话或者所谓的“智能电话”或其它移动设备)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备)、个人计算机、膝上型计算机、服务器计算机、自动驾驶车辆、编码器、解码器或其它设备。在一些方面中,该装置包括用于捕获一个或多个视频和/或图像的一个或多个相机。在一些方面中,该装置还包括用于显示一个或多个视频和/或图像的显示器。在一些方面中,上述装置可以包括一个或多个传感器。
本发明内容并不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独地用于确定所要求保护的主题的范围。通过参考本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求,应当理解本主题。
在参考以下说明书、权利要求书和附图之后,前述内容以及其它特征和实施例将变得更加显而易见。
附图说明
为了描述在其中可以获得本公开内容的各种优点和特征的方式,将参考在附图中示出的其特定实施例,来提供对上述原理的更加具体的描述。要理解的是,这些附图仅描绘了本公开内容的示例性实施例,并且不被认为是对其范围进行限制,通过使用附图,以另外的特殊性和细节来描述和解释本文的原理,其中:
图1是示出根据一些示例的编码设备和解码设备的示例的框图;
图2A是示出根据一些示例的用于合并模式的示例性空间相邻运动矢量候选的概念图;
图2B是示出根据一些示例的用于高级运动矢量预测(AMVP)模式的示例性空间相邻运动矢量候选的概念图;
图3A是示出根据一些示例的示例性时间运动矢量预测器(TMVP)候选的概念图;
图3B是示出根据一些示例的运动矢量缩放的示例的概念图;
图4是示出根据一些示例的示例性基于历史的运动矢量预测器(HMVP)表的图;
图5是示出根据一些示例的提取非邻接空间合并候选的示例的图;
图6A是示出根据一些示例的在MVP预测中利用的空间位置和时间位置的示例的图;
图6B是示出根据一些示例的用于空间MVP(S-MVP)的访问顺序的示例的图;
图6C是示出根据一些示例的空间反向图案替代(与图6B中的顺序相比)的示例的图;
图7是示出根据一些示例的用于当前块的简化的仿射运动模型的示例的图;
图8是示出根据一些示例的块的子块的运动矢量场的示例的图;
图9是示出根据一些示例的在仿射帧间(AF_INTER)模式下的运动矢量预测的示例的图;
图10A和图10B是示出根据一些示例的在仿射合并(AF_MERGE)模式下的运动矢量预测的示例的图;
图11是示出根据一些示例的用于当前块的仿射运动模型的示例的图;
图12是示出根据一些示例的用于当前块的仿射运动模型的另一示例的图;
图13是示出根据一些示例的当前块和候选块的示例的图;
图14是示出根据一些示例的当前块、当前块的控制点和候选块的示例的图;
图15是示出根据一些示例的针对仿射编码块估计的并且对应于编码块的中心位置的示例性运动矢量的图;
图16是示出根据一些示例的用于利用从仿射编码块生成的运动信息来更新基于历史的运动预测表的示例性过程的流程图;
图17是示出根据一些示例的示例性编码设备的框图;以及
图18是示出根据一些示例的示例性视频解码设备的框图。
具体实施方式
下文提供了本公开内容的某些方面和实施例。如对于本领域技术人员将显而易见的,这些方面和实施例中的一些可以独立地应用,并且它们中的一些可以相结合地应用。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实施各个实施例。附图和描述并不旨在是限制性的。
随后的描述仅提供了示例性实施例,而并不旨在限制本公开内容的范围、适用性或配置。确切而言,对这些示例性实施例的随后描述将向本领域技术人员提供用于实现示例性实施例的可行描述。应当理解的是,在不脱离如在所附的权利要求书中阐述的本申请的精神和范围的情况下,可以对元素的功能和布置进行各种改变。
视频编码设备实现视频压缩技术以有效地编码和解码视频数据。视频压缩技术可以包括应用不同的预测模式,包括空间预测(例如,帧内预测(intra-frame prediction)或帧内预测(intra-prediction))、时间预测(例如,帧间预测(inter-frame prediction)或帧间预测(inter-prediction))、层间预测(跨视频数据的不同层)、和/或用于减少或去除视频序列中固有的冗余的其它预测技术。视频编码器可以将原始视频序列的每个图片分割为多个矩形区域,这些矩形区域被称为视频块或编码单元(下文将更加详细地描述的)。这些视频块可以使用特定的预测模式来编码。
视频块可以以一种或多种方式被划分为一组或多组较小的块。块可以包括编码树块、预测块、变换块和/或其它适当的块。除非另外指定,否则通常对“块”的引用可以指代这样的视频块(例如,如本领域普通技术人员将理解的,编码树块、编码块、预测块、变换块、或其它合适的块或子块)。此外,这些块中的每个块在本文中也可以被互换地称为“单元”(例如,编码树单元(CTU)、编码单元、预测单元(PU)、变换单元(TU)等)。在一些情况下,单元可以指示在比特流中编码的编码逻辑单元,而块可以指示视频帧缓冲器中的过程所针对的一部分。
对于帧间预测模式,视频编码器可以在位于另一时间位置的帧(或图片)(其被称为参考帧或参考图片)中搜索与经编码的块相似的块。视频编码器可以将搜索限制为距要被编码的块一定的空间位移。可以使用包括水平位移分量和垂直位移分量的二维(2D)运动矢量来定位最佳匹配。对于帧内预测模式,视频编码器可以基于来自同一图片内先前编码的相邻块的数据,使用空间预测技术来形成预测块。
视频编码器可以确定预测误差。例如,可以将预测确定为正被编码的块和预测块中的像素值之间的差。预测误差也可以被称为残差。视频编码器还可以使用变换编码(例如,使用离散余弦变换(DCT)的形式、离散正弦变换(DST)的形式或其它适当的变换)来将变换应用于预测误差,以生成变换系数。在变换之后,视频编码器可以对变换系数进行量化。经量化的变换系数和运动矢量可以使用语法元素来表示,并且与控制信息一起形成视频序列的编码表示。在一些情况下,视频编码器可以对语法元素进行熵编码,从而进一步减少用于其表示所需要的比特数量。
视频解码器可以使用以上讨论的语法元素和控制信息来构造用于解码当前帧的预测数据(例如,预测块)。例如,视频解码器可以将预测块和经压缩的预测误差相加。视频解码器可以通过使用量化系数对变换基函数进行加权来确定经压缩的预测误差。在经重构的帧与原始帧之间的差被称为重构误差。
如下文更加详细地描述的,本文描述了用于将仿射运动信息用于基于历史的运动矢量预测的系统、装置、方法(也被称为过程)和计算机可读介质。本文描述的技术可以被应用于各种基于块的视频编码技术(其中,视频是以块为基础来重构的)中的一种或多种技术。例如,本文描述的技术可以被应用于任何现有的视频编解码器(例如,高效率视频编码(HEVC)、高级视频编码(AVC)、或其它适当的现有视频编解码器),和/或可以是用于正在开发的任何视频编码标准和/或将来的视频编码标准的高效编码工具,例如,基本视频编码(EVC)、通用视频编码(VVC)、联合探索模型(JEM)、VP9、AV1和/或正在开发或要被开发的其它视频编码标准。
在一些示例中,本文描述的方法可以用于基于仿射编码块来生成平移运动矢量。仿射运动模型可以使用多个控制点来推导用于块的多个运动矢量。例如,仿射运动模型可以生成用于块的子块或像素的多个局部运动矢量。然而,在某些视频编码标准中,用于基于历史的运动矢量预测(HMVP)的HMVP表仅包括和/或支持每块的单个平移运动矢量。因此,在一些示例中,为了扩展被包括在HMVP表中的运动信息的类型,本文中的方法可以使用仿射运动信息来近似用于块的平移矢量,并且将平移矢量包括在HMVP表中。平移矢量可以表示用于块的运动信息,其一旦被包括在HMVP表中就可以用于HMVP。
在一些情况下,本文描述的方法可以基于与左上方控制点相关联的控制点运动矢量以及与右上方控制点相关联的控制点运动矢量来生成用于块的中心位置的运动矢量。例如,本文的方法可以计算与左上方控制点和右上方控制点相关联的控制点运动矢量的水平分量和垂直分量之间的变化率,并且基于该变化率来生成用于中心位置的运动矢量。运动矢量可以表示用于块的运动信息,并且可以被包括在HMVP表中以供将来在运动预测中使用。
将如下在以下公开内容中描述本文的技术。讨论开始于对用于视频编码和运动矢量预测的示例性系统和技术的描述,如图1至图15所示。然后,接着将是对用于利用从仿射编码块生成的运动信息来更新基于历史的运动预测表的示例性方法的描述,如图16所示。讨论以对示例性编码设备架构和示例性解码设备架构的描述结束,如图17和18所示。本公开内容现在转到图1。
图1是示出包括编码设备104和解码设备112的系统100的示例的框图。编码设备104可以是源设备的一部分,并且解码设备112可以是接收设备(也被称为客户端设备)的一部分。源设备和/或接收设备可以包括电子设备,例如,移动或固定电话手机(例如,智能电话、蜂窝电话等)、台式计算机、膝上型计算机或笔记本计算机、平板计算机、机顶盒、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、互联网协议(IP)相机、服务器系统中的服务器设备(包括一个或多个服务器设备(例如,视频流服务器系统、或其它适当的服务器系统))、头戴式显示器(HMD)、平视显示器(HUD)、智能眼镜(例如,虚拟现实(VR)眼镜、增强现实(AR)眼镜、或其它智能眼镜)、或任何其它适当的电子设备。
系统100的组件可以包括和/或可以使用电路或其它电子硬件来实现,其可以包括一个或多个可编程电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、和/或其它适当的电路),和/或可以包括和/或使用计算机软件、固件或其任何组合来实现以执行本文描述的各种操作。
虽然系统100被示为包括某些组件,但是本领域普通技术人员将明白的是,系统100可以包括比图1中所示的组件更多或更少的组件。例如,在一些情况下,系统100还可以包括除了存储器108和存储单元118之外的一个或多个存储器设备(例如,一个或多个随机存取存储器(RAM)组件、只读存储器(ROM)组件、高速缓存存储器组件、缓冲器组件、数据库组件、和/或其它存储器设备)、与一个或多个存储器设备相通信和/或电连接到其的一个或多个处理设备(例如,一个或多个CPU、GPU和/或其它处理设备)、用于执行无线通信的一个或多个无线接口(例如,包括用于每个无线接口的一个或多个收发机和基带处理器)、用于在一个或多个硬接线连接上执行通信的一个或多个有线接口(例如,诸如通用串行总线(USB)输入之类的串行接口、照明连接器、和/或其它有线接口)、和/或在图1中未示出的其它组件。
本文描述的编码技术适用于各种多媒体应用中的视频编码,包括流式视频传输(例如,通过互联网)、电视广播或传输、对数字视频的编码以用于存储在数据存储介质上、对被存储在数据存储介质上的数字视频进行解码、或其它应用。在一些示例中,系统100可以支持单向或双向视频传输,以支持诸如视频会议、视频流、视频回放、视频广播、游戏和/或视频电话之类的应用。
编码设备104(或编码器)可以用于使用视频编码标准或协议来对视频数据进行编码,以生成经编码的视频比特流。视频编码标准的示例包括ITU-T H.261、ISO/IEC MPEG-1视频、ITU-T H.262、或ISO/IEC MPEG-2视频、ITU-T H.263、ISO/IEC MPEG-4视频、ITU-TH.264(也被称为ISO/IEC MPEG-4AVC)(包括其可伸缩视频编码(SVC)和多视图视频编码(MVC)扩展)、以及高效率视频编码(HEVC)或ITU-T H.265。存在处理多层视频编码的HEVC的各种扩展,包括范围和屏幕内容编码扩展、3D视频编码(3D-HEVC)和多视图扩展(MV-HEVC)和可伸缩扩展(SHVC)。ITU-T视频编码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)的视频编码联合协作小组(JCT-VC)以及3D视频编码扩展开发联合协作小组(JCT-3V)已经开发了HEVC以及其扩展。
MPEG和ITU-T VCEG还成立了联合探索视频小组(JVET),以探索和开发用于下一代视频编码标准的新视频编码工具,其被命名为通用视频编码(VVC)。参考软件被称为VVC测试模型(VTM)。VVC的目标是相比于现有HEVC标准来提供压缩性能的显著改善,以辅助部署较高质量的视频服务和新兴应用(例如,360°全向沉浸式多媒体、高动态范围(HDR)视频以及其它示例)。基本视频编码(EVC)、VP9和开放媒体联盟(AOMedia)视频1(AV1)是本文描述的技术可以应用于其的其它视频编码标准。
可以使用诸如EVC、VTM、VVC、HEVC、AVC和/或其扩展之类的视频编解码器来执行本文描述的许多实施例。然而,本文描述的技术和系统也可以适用于其它编码标准,例如,MPEG、JPEG(或用于静止图像的其它编码标准)、VP9、AV1、其扩展、或已经可用或尚不可用或开发的其它适当的编码标准。因此,尽管可以参考特定的视频编码标准来描述本文描述的技术和系统,但是本领域的普通技术人员将明白的是,不应当将描述解释为仅适用于该特定标准。
参考图1,视频源102可以将视频数据提供给编码设备104。视频源102可以是源设备的一部分,或者可以是除了源设备之外的设备的一部分。视频源102可以包括视频捕获设备(例如,摄像机、照相电话、视频电话等),包含被存储的视频的视频存档单元、提供视频数据的视频服务器或内容提供商、从视频服务器或内容提供商接收视频的视频馈送接口、用于生成计算机图形视频数据的计算机图形系统、此类源的组合、或任何其它适当的视频源。
来自视频源102的视频数据可以包括一个或多个输入图片。图片还可以被称为“帧”。图片或帧是静止图像,其在一些情况下是视频的一部分。在一些示例中,来自视频源102的数据可以是不作为视频的一部分的静止图像。在HEVC、VVC和其它视频编码规范中,视频序列可以包括一系列图片。图片可以包括三个样本阵列,其被表示为SL、SCb和SCr。SL是亮度样本的二维阵列,SCb是Cb色度样本的二维阵列,并且SCr是Cr色度样本的二维阵列。色度样本在本文中也可以被称为“色度(chroma)”样本。在其它情况下,图片可以是单色的,并且可以仅包括亮度样本的阵列。
编码设备104的编码器引擎106(或编码器)对视频数据进行编码以生成经编码的视频比特流。在一些示例中,经编码的视频比特流(或“视频比特流”或“比特流”)是一系列的一个或多个经编码的视频序列。经编码的视频序列(CVS)包括一系列访问单元(AU),这一系列访问单元从在基本层中具有随机访问点图片并且具有某些属性的AU开始,直到在基本层中具有随机访问点图片并且具有某些属性的下一个AU并且不包括该下一个AU。例如,开始CVS的随机访问点图片的某些属性可以包括等于1的RASL标志(例如,NoRaslOutputFlag)。否则,随机访问点图片(其中RASL标志等于0)并不开始CVS。访问单元(AU)包括一个或多个经编码的图片以及与共享相同输出时间的经编码的图片相对应的控制信息。图片的编码切片在比特流级别被封装为数据单元,该数据单元被称为网络抽象层(NAL)单元。例如,HEVC视频比特流可以包括一个或多个CVS,其包括NAL单元。NAL单元中的每个NAL单元具有NAL单元报头。在一个示例中,报头对于H.264/AVC(除了多层扩展之外)而言为一个字节,而对于HEVC而言为两个字节。NAL单元报头中的语法元素采用指定的比特,并且因此对于所有种类的系统和传输层(诸如传输流、实时传输(RTP)协议、文件格式以及其它)都是可见的。
在HEVC标准中存在两类NAL单元,包括视频编码层(VCL)NAL单元和非VCL NAL单元。VCL NAL单元包括形成经编码的视频比特流的经编码的图片数据。例如,在VCL NAL单元中存在形成经编码的视频比特流的比特序列。VCL NAL单元包括经编码的图片数据的一个切片或切片段(下文描述),并且非VCLNAL单元包括与一个或多个经编码的图片有关的控制信息。在一些情况下,NAL单元可以被称为分组。HEVC AU包括:包含经编码的图片数据的VCLNAL单元、以及与经编码的图片数据相对应的非VCL NAL单元(如果有的话)。除了其它信息之外,非VCL NAL单元还可以包含具有与经编码的视频比特流有关的高级信息的参数集。例如,参数集可以包括视频参数集(VPS)、序列参数集(SPS)和图片参数集(PPS)。比特流的每个切片或其它部分可以参考单个有效的PPS、SPS和VPS,以允许解码设备112访问可以用于对比特流的切片或其它部分进行解码的信息。
NAL单元可以包含形成视频数据的编码表示的比特序列(例如,经编码的视频比特流、比特流的CVS等),诸如在视频中的图片的编码表示。编码器引擎106通过将每个图片分割为多个切片来生成图片的编码表示。一切片是独立于其它切片的,使得可以对该切片中的信息进行编码,而不依赖于在同一图片内的其它切片的数据。切片包括一个或多个切片段,其包括独立的切片段以及(如果存在的话)依赖于先前切片段的一个或多个从属切片段。
在HEVC中,然后将切片分割为亮度(luma)样本和色度(chroma)样本的编码树块(CTB)。亮度样本的CTB和色度样本的一个或多个CTB连同用于样本的语法一起被称为编码树单元(CTU)。CTU还可以被称为“树块”或“最大编码单元”(LCU)。CTU是用于HEVC编码的基本处理单元。CTU可以被拆分为大小不同的多个编码单元(CU)。CU包含被称为编码块(CB)的亮度和色度样本阵列。
亮度和色度CB可以被进一步拆分为预测块(PB)。PB是亮度分量或色度分量的样本块,其使用相同的运动参数来进行帧间预测或块内复制(IBC)预测(当可用或被启用时)。亮度PB和一个或多个色度PB连同相关联的语法一起形成预测单元(PU)。对于帧间预测,运动参数集合(例如,一个或多个运动矢量、参考索引等)是在用于每个PU的比特流中用信号通知的,并且用于亮度PB和一个或多个色度PB的帧间预测。运动参数也可以被称为运动信息。CB也可以被分割为一个或多个变换块(TB)。TB表示色彩分量的样本的正方形块,其中对其应用了残差变换(例如,在一些情况下,相同的二维变换)以对预测残差信号进行编码。变换单元(TU)表示亮度和色度样本的TB以及相应的语法元素。下文更加详细地描述了变换编码。
CU的大小对应于编码模式的大小并且可以是正方形形状。例如,CU的大小可以是8x8个样本、16x16个样本、32x32个样本、64x64个样本、或高达对应的CTU的大小的任何其它适当的大小。短语“N x N”在本文中用于指代视频块在垂直和水平维度方面的像素尺寸(例如,8个像素x8个像素)。块中的像素可以是按行和列来排列的。在一些实施例中,块在水平方向上可以不具有与垂直方向上相同数量的像素。与CU相关联的语法数据可以描述例如将CU分割为一个或多个PU。分割模式可以在CU是经帧内预测模式编码的还是经帧间预测模式编码的之间而不同。PU可以被分割为非正方形形状。与CU相关联的语法数据还可以例如描述根据CTU将CU分割为一个或多个TU。TU可以是正方形或非正方形形状。
根据HEVC标准,可以使用变换单元(TU)来执行变换。对于不同的CU,TU可以不同。可以基于给定CU内的PU的大小来设定TU的大小。TU可以具有与PU相同的大小或者小于PU。在一些示例中,可以使用被称为残差四叉树(RQT)的四叉树结构来将与CU相对应的残差样本细分为更小的单元。RQT的叶子节点可以对应于TU。与TU相关联的像素差值可以被变换以产生变换系数。然后可以由编码器引擎106对变换系数进行量化。
一旦视频数据的图片被分割为CU,编码器引擎106就使用预测模式来预测每个PU。然后从原始视频数据中减去预测单元或预测块以获得残差(下文描述)。对于每个CU,可以使用语法数据在比特流内用信号通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用在图片内的空间上相邻的样本之间的相关性。例如,使用帧内预测,每个PU是使用例如DC预测来从相同图片中的相邻图像数据进行预测的以找到用于PU的平均值,使用平面预测以使平面表面适配PU,使用方向预测来从相邻数据进行推断,或者使用任何其它合适的预测类型。帧间预测使用在图片之间的时间相关性,以便推导出用于图像样本块的运动补偿预测。例如,使用帧间预测,每个PU是使用运动补偿预测来从一个或多个参考图片(按照输出次序在当前图片之前或之后)中的图像数据预测的。例如,可以在CU级别处作出是使用图片间预测还是使用图片内预测来对图片区域进行编码的决定。
编码器引擎106和解码器引擎116(下文更加详细地描述)可以被配置为根据VVC进行操作。根据VVC,视频编码装置(coder)(例如,编码器引擎106和/或解码器引擎116)将图片分割为多个编码树单元(CTU)(其中,亮度样本的CTB和色度样本的一个或多个CTB连同用于样本的语法一起被称为CTU)。视频编码装置可以根据树结构(例如,四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)来分割CTU。QTBT结构去除了多种分割类型(例如,在HEVC的CU、PU和TU之间的区分)的概念。QTBT结构包括两级,包括根据四叉树分割而被分割的第一级、以及根据二叉树分割而被分割的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编码单元(CU)。
在MTT分割结构中,可以使用四叉树分割、二叉树分割以及一种或多种类型的三叉树分割来对块进行分割。三叉树分割是其中块被分为三个子块的分割。在一些示例中,三叉树分割将块划分为三个子块,而不将原始块划分为通过中心。MTT中的分割类型(例如,四叉树、二叉树和三叉树)可以是对称的或不对称的。
在一些示例中,视频编码装置可以使用单个QTBT或MTT结构来表示亮度和色度分量中的每一者,而在其它示例中,视频编码装置可以使用两个或更多个QTBT或MTT结构,例如,用于亮度分量的一个QTBT或MTT结构以及用于两个色度分量的另一个QTBT或MTT结构(或者用于相应色度分量的两个QTBT和/或MTT结构)。
视频编码装置可以被配置为使用每HEVC的四叉树分割、QTBT分割、MTT分割、或其它分割结构。为了说明性目的,本文的描述可以参考QTBT分割。然而,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树分割或者还使用其它类型的分割的视频编码装置。
在一些示例中,图片的一个或多个切片被指派切片类型。切片类型包括帧内编码切片(I切片)、帧间编码P切片和帧间编码B切片。I切片(帧内编码帧,可独立地解码)是图片的仅通过帧内预测而编码的切片,并且因此是可独立解码的,这是因为I切片仅需要帧内的数据来预测切片的任何预测单元或预测块。P切片(单向预测帧)是图片的可以利用帧内预测和单向帧间预测来编码的切片。P切片内的每个预测单元或预测块是利用帧内预测或帧间预测来编码的。当应用帧间预测时,预测单元或预测块是仅通过一个参考图片来预测的,并且因此参考样本是仅来自一个帧的一个参考区域。B切片(双向预测帧)是图片的可以利用帧内预测和帧间预测(例如,双向预测或单向预测)来编码的切片。可以从两个参考图片来对B切片的预测单元或预测块进行双向预测,其中每个图片贡献一个参考区域,并且对两个参考区域的样本集进行加权(例如,具有相等的权重或具有不同的权重)以产生双向预测块的预测信号。如上所解释的,一个图片的切片被独立地编码。在一些情况下,图片可以仅被编码为一个切片。
如上所提到的,图片内预测利用图片内的在空间上相邻的样本之间的相关性。存在多种帧内预测模式(也被称为“帧内模式”)。在一些示例中,亮度块的帧内预测包括35种模式,其包括平面模式、DC模式和33种角度模式(例如,对角线帧内预测模式和与对角线帧内预测模式相邻的角度模式)。如以下表1所示,对帧内预测的35种模式进行索引。在其它示例中,可以定义更多的帧内模式,包括可能尚未由33种角度模式表示的预测角度。在其它示例中,与角度模式相关联的预测角度可以不同于在HEVC中使用的那些预测角度。
帧内预测模式 | 相关联的名称 |
0 | INTRA_PLANAR |
1 | INTRA_DC |
2..34 | INTRA_ANGULAR2..INTRA_ANGULAR34 |
表1-帧内预测模式和相关联的名称的规范
图片间预测使用在图片之间的时间相关性,以便推导针对图像样本块的运动补偿预测。使用平移运动模型,在先前解码图片(参考图片)中块的位置由运动矢量(Δx,Δy)表示,其中,Δx指定参考块相对于当前块的位置的水平位移,而Δy指定参考块相对于当前块的位置的垂直位移。在一些情况下,运动矢量(Δx,Δy)可以是整数样本精确度(也被称为整数精确度),在这种情况下,运动矢量指向参考帧的整数像素网格(或整数像素采样网格)。在一些情况下,运动矢量(Δx,Δy)可以具有分数样本精确度(也被称为分数像素精确度或非整数精确度),以更加准确地捕获基础对象的运动,而不受限于参考帧的整数像素网格。运动矢量的精确度可以通过运动矢量的量化水平来表达。例如,量化水平可以是整数精确度(例如,1像素)或分数像素精确度(例如,1/4像素、1/2像素或其它像素以下的值)。当对应的运动矢量具有分数样本精确度时,将插值应用于参考图片以推导预测信号。例如,可以对在整数位置处可用的样本进行滤波(例如,使用一个或多个插值滤波器)以估计在分数位置处的值。先前经解码的参考图片由针对参考图片列表的参考索引(refIdx)来指示。运动矢量和参考索引可以被称为运动参数。可以执行两种图片间预测,其包括单预测和双预测。
在使用双预测进行帧间预测的情况下,使用两个运动参数集(Δx0,y0,refIdx0和Δx1,y1,refIdx1)来生成两个运动补偿预测(来自同一参考图片或可能来自不同的参考图片)。例如,在双预测的情况下,每个预测块使用两个运动补偿预测信号,并且生成B个预测单元。然后,将两个运动补偿预测进行组合以获得最终的运动补偿预测。例如,可以通过进行平均来组合两个运动补偿预测。在另一示例中,可以使用加权预测,在这种情况下,可以将不同的权重应用于每个运动补偿预测。可以在双预测中使用的参考图片被存储在两个单独的列表中,分别被表示为列表0和列表1。可以在编码器处使用运动估计过程来推导运动参数。
在使用单预测进行帧间预测的情况下,使用一个运动参数集(Δx0,y0,refIdx0)来从参考图片生成运动补偿预测。例如,在单预测的情况下,每个预测块最多使用一个运动补偿预测信号,并且生成P个预测单元。
PU可以包括与预测过程相关的数据(例如,运动参数或其它适当的数据)。例如,当PU是使用帧内预测来编码时,PU可以包括描述用于PU的帧内预测模式的数据。作为另一示例,当PU是使用帧间预测来编码的时,PU可以包括定义用于PU的运动矢量的数据。定义用于PU的运动矢量的数据可以描述例如运动矢量的水平分量(Δx)、运动矢量的垂直分量(Δy)、用于运动矢量的分辨率(例如,整数精度、四分之一像素精度、或八分之一像素精度)、运动矢量所指向的参考图片、参考索引、用于运动矢量的参考图片列表(例如,列表0、列表1或列表C)、或其任何组合。
在使用帧内预测和/或帧间预测执行预测之后,编码设备104然后可以执行变换和量化。例如,在预测之后,编码器引擎106可以计算与PU相对应的残差值。残差值可以包括在正被编码的当前像素块(PU)与用于预测当前块的预测块(例如,当前块的预测版本)之间的像素差值。例如,在生成预测块(例如,使用帧间预测或帧内预测)之后,编码器引擎106可以通过从当前块中减去由预测单元产生的预测块来生成残差块。残差块包括像素差值集合,其对在当前块的像素值与预测块的像素值之间的差进行量化。在一些示例中,可以用二维块格式(例如,像素值的二维矩阵或阵列)来表示残差块。在这样的示例中,残差块是像素值的二维表示。
使用块变换来对在执行预测之后可能剩余的任何残差数据进行变换,块变换可以是基于离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、小波变换、其它适当的变换函数、或其任何组合的。在一些情况下,可以将一个或多个块变换(例如,具有大小32x32、16x16、8x8、4x4或其它适当的大小的内核)应用于每个CU中的残差数据。在一些示例中,可以将TU用于由编码器引擎106实现的变换和量化过程。具有一个或多个PU的给定CU也可以包括一个或多个TU。如下文进一步详细描述的,残差值可以使用块变换而被变换为变换系数,并且然后可以使用TU进行量化和扫描,以产生用于熵编码的串行化变换系数。
在一些示例中,在使用CU的PU进行帧内预测或帧间预测编码之后,编码器引擎106可以计算用于CU的TU的残差数据。PU可以包括空间域(或像素域)中的像素数据。如前所提到的,残差数据可以对应于在未被编码的图片的像素与对应于PU的预测值之间的像素差值。编码器引擎106可以形成包括用于CU(其包括PU)的残差数据的一个或多个TU,并且然后可以对TU进行变换以产生用于CU的变换系数。TU可以包括在应用块变换之后在变换域中的系数。
编码器引擎106可以执行变换系数的量化。量化通过对变换系数进行量化以减少用于表示系数的数据量来提供进一步的压缩。例如,量化可以减小与系数中的一些或所有系数相关联的比特深度。在一个示例中,具有n比特值的系数可以在量化期间向下舍入为m比特值,其中n大于m。
一旦执行了量化,则经编码的视频比特流包括经量化的变换系数、预测信息(例如,预测模式、运动矢量、块矢量等)、分割信息以及任何其它适当的数据(诸如其它语法数据)。经编码的视频比特流的不同元素然后可以由编码器引擎106进行熵编码。在一些示例中,编码器引擎106可以利用预定义的扫描次序来扫描经量化的变换系数,以产生可以被熵编码的串行化矢量。在一些示例中,编码器引擎106可以执行自适应扫描。在扫描经量化的变换系数以形成矢量(例如,一维矢量)之后,编码器引擎106可以对该矢量进行熵编码。例如,编码器引擎106可以使用上下文自适应变长编码、上下文自适应二进制算术编码、基于语法的上下文自适应二进制算术编码、概率区间分割熵编码或另一种适当的熵编码技术。
编码设备104的输出110可以在通信链路120上将构成经编码的视频比特流数据的NAL单元发送给接收设备的解码设备112。解码设备112的输入114可以接收NAL单元。通信链路120可以包括由无线网络、有线网络或有线网络和无线网络的组合提供的信道。无线网络可以包括任何无线接口或无线接口的组合,并且可以包括任何适当的无线网络(例如,互联网或其它广域网、基于分组的网络、WiFiTM、射频(RF)、UWB、WiFi直连、蜂窝、长期演进(LTE)、WiMaxTM等)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、同轴电缆以太网、数字信号线(DSL)等)。可以使用各种装置来实现有线和/或无线网络,诸如基站、路由器、接入点、桥接器、网关、交换机等。可以根据诸如无线通信协议之类的通信标准来调制经编码的视频比特流数据,并且将其发送给接收设备。
在一些示例中,编码设备104可以将经编码的视频比特流数据存储在存储单元108中。输出110可以从编码器引擎106或从存储单元108取得经编码的视频比特流数据。存储单元108可以包括各种分布式或本地访问的数据存储介质中的任何一种。例如,存储单元108可以包括硬盘驱动器、存储盘、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它适当的数字存储介质。存储单元108还可以包括用于存储供在帧间预测中使用的参考图片的解码图片缓冲器(DPB)。在另外的示例中,存储单元108可以对应于文件服务器或可以存储由源设备生成的经编码的视频的另一中间存储设备。在这样的情况下,包括解码设备112的接收设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据并且将该经编码的视频数据发送给接收设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。接收设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。这可以包括适于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或这两者的组合。经编码的视频数据从存储单元108的传输可以是流式传输、下载传输或其组合。
解码设备112的输入114接收经编码的视频比特流数据,并且可以将视频比特流数据提供给解码器引擎116,或者提供给存储单元118以供解码器引擎116稍后使用。例如,存储单元118可以包括用于存储供在帧间预测中使用的参考图片的DPB。包括解码设备112的接收设备可以经由存储单元108来接收要被解码的经编码的视频数据。可以根据诸如无线通信协议之类的通信标准来对经编码的视频数据进行调制,并且将其发送给接收设备。用于发送经编码的视频数据的通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备到接收设备的通信的任何其它装置。
解码器引擎116可以通过熵解码(例如,使用熵解码器)并且提取构成经编码的视频数据的一个或多个经编码的视频序列的元素,从而对经编码的视频比特流数据进行解码。解码器引擎116然后可以重新缩放经编码的视频比特流数据并且对其执行逆变换。残差数据然后被传递到解码器引擎116的预测阶段。解码器引擎116然后预测像素块(例如,PU)。在一些示例中,将预测与逆变换的输出(残差数据)相加。
视频解码设备112可以将经解码的视频输出到视频目的地设备122,视频目的地设备122可以包括用于将经解码的视频数据显示给内容的消费者的显示器或其它输出设备。在一些方面中,视频目的地设备122可以是包括解码设备112的接收设备的一部分。在一些方面中,视频目的地设备122可以是不同于接收设备的单独设备的一部分。
在一些示例中,视频编码设备104和/或视频解码设备112可以分别与音频编码设备和音频解码设备集成。视频编码设备104和/或视频解码设备112还可以包括用于实现上述编码技术所必需的其它硬件或软件,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任何组合。视频编码设备104和视频解码设备112可以被集成为在相应设备中的组合编码器/解码器(编解码器)的一部分。
图1中示出的示例系统仅是可以在本文中使用的一个说明性示例。用于使用本文描述的技术来处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管一般来说,本公开内容的技术是由视频编码设备或视频解码设备来执行的,但是所述技术还可以由通常被称为“CODEC”的组合视频编码器-解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和接收设备仅是这样的编码设备的示例,其中,源设备生成经编码的视频数据以用于传输给接收设备。在一些示例中,源设备和接收设备可以以基本上对称的方式进行操作,使得这些设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。
HEVC标准的扩展包括被称为MV-HEVC的多视图视频编码扩展、以及被称为SHVC的可伸缩视频编码扩展。MV-HEVC和SHVC扩展共享分层编码的概念,其中不同的层被包括在经编码的视频比特流中。经编码的视频序列中的每个层是通过唯一的层标识符(ID)来寻址的。可以在NAL单元的报头中存在层ID,以标识NAL单元所关联的层。在MV-HEVC中,不同的层通常表示视频比特流中的相同场景的不同视图。在SHVC中,提供了以不同的空间分辨率(或图片分辨率)或不同的重构保真度来表示视频比特流的不同的可伸缩层。可伸缩层可以包括基本层(其中层ID=0)和一个或多个增强层(其中层ID=1,2,…n)。基本层可以符合HEVC的第一版本的简档,并且表示比特流中的最低可用层。与基本层相比,增强层具有增加的空间分辨率、时间分辨率或帧速率和/或重构保真度(或质量)。增强层是分层次来组织的,并且可以依赖于(或者可以不依赖于)较低层。在一些示例中,可以使用单标准编解码器对不同的层进行编码(例如,使用HEVC、SHVC或其它编码标准对所有层进行编码)。在一些示例中,可以使用多标准编解码器对不同的层进行编码。例如,可以使用AVC对基本层进行编码,而可以使用SHVC和/或HEVC标准的MV-HEVC扩展来对一个或多个增强层进行编码。
如上所述,对于每个块,运动信息(本文中也被称为运动参数)集合可以是可用的。运动信息集合可以包含用于前向预测方向和后向预测方向的运动信息。此处,前向预测方向和后向预测方向可以是双向预测模式的两个预测方向,并且术语“前向”和“后向”不一定具有几何含义。相反,前向和后向可以对应于当前图片、切片或块的参考图片列表0(RefPicList0)和参考图片列表1(RefPicList1)。在一些示例中,当仅有一个参考图片列表可用于图片、切片或块时,仅有RefPicList0是可用的,并且切片的每个块的运动信息总是前向的。在一些示例中,RefPicList0包括在时间上在当前图片之前的参考图片,而RefPicList1包括在时间上跟随在当前图片之后的参考图片。在一些情况下,在解码过程中使用运动矢量连同相关联的参考索引。具有相关联的参考索引的这种运动矢量被表示为运动信息的单预测集合。
对于每个预测方向,运动信息可以包含参考索引和运动矢量。在一些情况下,为了简单起见,运动矢量可以具有相关联的信息,根据该信息,可以假定运动矢量具有相关联的参考索引。参考索引可以用于标识当前参考图片列表(RefPicList0或RefPicList1)中的参考图片。运动矢量可以具有水平分量和垂直分量,其提供从当前图片中的坐标位置到由参考索引标识的参考图片中的坐标位置的偏移。例如,参考索引可以指示应当用于当前图片中的块的特定参考图片,并且运动矢量可以指示在参考图片中最佳匹配的块(与当前块最佳匹配的块)在参考图片中位于何处。
可以在视频编码标准中使用图片顺序计数(POC)来标识图片的显示顺序。尽管存在一个经编码的视频序列内的两个图片可能具有相同的POC值的情况,但是在一个经编码的视频序列内,通常不会出现具有相同的POC的两个图片。当在比特流中存在多个经编码的视频序列时,具有相同的POC值的图片在解码顺序方面可能彼此更接近。图片的POC值可以用于参考图片列表构造(如在HEVC中的参考图片集推导)和/或运动矢量缩放以及其它事项。
在H.264/AVC中,每个帧间宏块(MB)可以被分割为四种不同的方式,包括:一个16x16宏块分区;两个16x8宏块分区;两个8x16宏块分区;以及四个8x8宏块分区、以及其它分区。一个宏块中的不同宏块分区可以具有针对每个预测方向的不同的参考索引值(例如,针对RefPicList0和RefPicList1的不同的参考索引值)。
在一些情况下,当宏块未被分割为四个8x8宏块分区时,其在每个预测方向上可以仅具有针对每个宏块分区的一个运动矢量。在一些情况下,当宏块被分割为四个8x8宏块分区时,每个8x8宏块分区可以被进一步分割为子块,每个子块在每个预测方向上可以具有不同的运动矢量。可以以不同的方式来将8x8宏块分区划分为子块,包括:一个8x8子块;两个8x4子块;两个4x8子块;以及四个4x4子块;以及其它子块。每个子块在每个预测方向上可以具有不同的运动矢量。因此,运动矢量可以以等于或高于子块的级别存在。
在HEVC中,切片中的最大编码单元被称为编码树块(CTB)或编码树单元(CTU)。CTB包含四叉树,其节点是编码单元。在HEVC主简档中,CTB的大小范围可以从16x16像素到64x64像素。在一些情况下,可以支持8x8像素的CTB大小。可以以四叉树方式来使CTB被递归地分为编码单元(CU)。CU可以具有与CTB相同的大小,并且小至8x8像素。在一些情况下,可以利用一种模式(例如,帧内预测模式或帧间预测模式)来对每个编码单元进行编码。当使用帧间预测模式来对CU进行帧间编码时,CU可以被进一步分割为两或四个预测单元(PU),或者当进一步分割不适用时,CU可以被视为一个PU。当在一个CU中存在两个PU时,两个PU可以是一半大小的矩形,或者是作为CU的1/4或3/4大小的两个矩形。
当CU被帧间编码时,针对每个PU可以存在一个运动信息集合,PU可以是利用唯一的帧间预测模式来推导的。例如,每个PU可以是利用一种帧间预测模式来编码的,以推导运动信息集合。在一些情况下,当使用帧内预测模式来对CU进行帧内编码时,PU形状可以是2Nx2N和NxN。在每个PU内,对单一帧内预测模式进行编码(而色度预测模式是以CU级别用信号通知的)。在一些情况下,在当前CU大小等于在SPS中定义的最小CU大小时,允许NxN帧内PU形状。
对于HEVC中的运动预测,存在用于预测单元(PU)的两种帧间预测模式,包括合并模式和高级运动矢量预测(AMVP)模式。跳过被视为合并的特殊情况。在AMVP模式或合并模式下,可以维护针对多个运动矢量预测器的运动矢量(MV)候选列表。在合并模式下当前PU的运动矢量以及参考索引是通过从MV候选列表中选取一个候选来生成的。
在一些示例中,MV候选列表包含用于合并模式的多达五个候选以及用于AMVP模式的两个候选。在其它示例中,可以将不同数量的候选包括在用于合并模式和/或AMVP模式的MV候选列表中。合并候选可以包含运动信息集合。例如,运动信息集合可以包括与两个参考图片列表(列表0和列表1)相对应的运动矢量以及参考索引。如果合并候选是通过合并索引来标识的,则参考图片被用于当前块的预测,以及确定关联的运动矢量。然而,在AMVP模式下,针对来自列表0或列表1的每个潜在预测方向,需要将参考索引连同对MV候选列表的MV预测器(MVP)索引一起明确地用信号通知,这是因为AMVP候选仅包含运动矢量。在AMVP模式中,可以进一步细化预测运动矢量。
合并候选可以对应于完整的运动信息集合,而AMVP候选可以包含用于特定预测方向的一个运动矢量和参考索引。可以类似地从相同的空间和时间相邻块来推导用于两种模式的候选。
在一些示例中,合并模式允许帧间预测的PU从如下的帧间预测的PU继承相同的一个或多个运动矢量、预测方向以及一个或多个参考图片索引:该帧间预测的PU包括从一组空间上相邻的运动数据位置中选择的运动数据位置以及两个时间上同位的运动数据位置中的一个运动数据位置。对于AMVP模式,可以相对于来自由编码器构造的AMVP候选列表中的一个或多个运动矢量预测器(MVP),来对PU的一个或多个运动矢量进行预测编码。在一些情况下,对于PU的单方向帧间预测,编码器可以生成单个AMVP候选列表。在一些情况下,对于PU的双向预测,编码器可以生成两个AMVP候选列表,一个使用来自前向预测方向的空间和时间相邻的PU的运动数据,以及一个使用来自后向预测方向的空间和时间相邻的PU的运动数据。
用于两种模式的候选可以从空间和/或时间相邻块来推导。例如,图2A和图2B包括示出空间相邻候选的概念图。图2A示出了用于合并模式的空间相邻运动矢量(MV)候选。图2B示出了用于AMVP模式的空间相邻运动矢量(MV)候选。虽然对于合并和AMVP模式,根据块来生成候选的方法不同,但是根据用于特定PU(PU0)的相邻块来推导空间MV候选。
在合并模式下,编码器可以通过考虑来自各种运动数据位置的合并候选来形成合并候选列表。
例如,如图2A所示,关于在图2A中以数字0-4示出的空间上相邻的运动数据位置,可以推导出多
达四个空间MV候选。在合并候选列表中,MV候选可以按照由数字0-4所示的顺序进行排序。例如,位置和顺序可以包括:左侧位置(0)、上方位置(1)、右上方位置(2)、左下方位置(3)和左上方位置(4)。在图2A中,块200包括PU0 202和PU1 204。在一些示例中,当视频编码装置将使用合并模式对用于PU0 202的运动信息进行编码时,视频编码装置可以按照上述顺序将来自空间相邻块210-218的运动信息添加到候选列表中。
在图2B中所示的AVMP模式下,可以将相邻块划分为两组:包括块0和1的左侧组、以及包括块2、3和4的上方组。在图2B中,块0、1、2、3和4分别被标记为块230、232、234、236和238。此处,块220包括PU0 222和PU1 224,并且块230、232、234、236和238表示与PU0 222的空间邻居。对于每个组,在相邻块中的引用与用信号通知的参考索引所指示的参考图片相同的参考图片的潜在候选具有最高优先级,以被选择以形成该组的最终候选。可能的是,所有的相邻块都不包含指向同一参考图片的运动矢量。因此,如果无法找到这样的候选,则可以将第一可用候选进行缩放以形成最终候选,因此可以补偿时间距离差。
图3A和图3B包括示出时间运动矢量预测的概念图。图3A示出了包括PU0 302和PU1304的示例性CU 300。PU0 302包括用于PU0 302的中心块310和PU0 302的右下方块306。图3A还示出了外部块308,用于外部块308的运动信息可以是从PU0 302的运动信息来预测的,如下所讨论的。图3B示出了包括要预测用于其的运动信息的当前块326的当前图片342。图3B还示出了针对当前图片342的同位图片330(包括针对当前块326的同位块324)、当前参考图片342和同位参考图片332。同位块324是使用同位运动矢量320来预测的,同位运动矢量320用作用于块326的运动信息的时间运动矢量预测器(TMVP)322。
视频编码装置将时间运动矢量预测器(TMVP)候选(例如,TMVP 322)(如果启用并且可用的话)添加到MV候选列表中在任何空间运动矢量候选之后。针对TMVP候选的运动矢量推导的过程对于合并和AMVP模式两者而言是相同的。然而,在一些情况下,在合并模式下针对TMVP候选的目标参考索引总是被设置为零。
如图3A所示,用于TMVP候选推导的主要块位置是在同位PU 304外部的右下方块306,以补偿与用于生成空间相邻候选的上方和左侧块的偏差。然而,如果块306位于当前CTB(或LCU)行外部(例如,如图3A中的块308所示)或者如果用于块306的运动信息是不可用的,则将该块替换为PU 302的中心块310。
参考图3B,可以从以切片级别指示的同位图片330的同位块324来推导用于TMVP候选322的运动矢量。类似于AVC中的时间直接模式,可以对TMVP候选的运动矢量进行运动矢量缩放,这可以被执行以补偿在当前图片342与当前参考图片340以及在同位图片330与同位参考图片332之间的距离差。也就是说,可以基于在当前图片(例如,当前图片342)与当前参考图片(例如,当前参考图片340)以及同位图片(例如,同位图片330)与同位参考图片(例如,同位参考图片332)之间的距离差来对运动矢量320进行缩放,以产生TVMP候选322。
还在HEVC、VVC和其它视频编码规范中涵盖了运动预测的其它方面。例如,一个方面包括运动矢量缩放。在运动矢量缩放中,假定运动矢量的值是与在呈现时间中的图片之间的距离成比例的。在一些示例中,第一运动矢量可以与两个图片(包括第一参考图片和包括第一运动矢量的第一包含图片)相关联。可以利用第一运动矢量来预测第二运动矢量。为了预测第二运动矢量,可以基于与第一运动的第一参考图片和第一包含图片相关联的图片顺序计数(POC)值来计算第一包含图片和第一参考图片之间的第一距离。
第二参考图片和第二包含图片可以与要被预测的第二运动矢量相关联,其中,第二参考图片可以与第一参考图片不同,并且第二包含图片可以是与第一包含图片不同的。可以基于与第二参考图片和第二包含图片相关联的POC值,来计算第二参考图片与第二包含图片之间的第二距离,其中,第二距离可以是与第一距离不同的。为了预测第二运动矢量,可以基于第一距离和第二距离来对第一运动矢量进行缩放。对于在空间上相邻的候选,第一运动矢量和第二运动矢量的第一包含图片和第二包含图片可以分别是相同的,而第一参考图片和第二参考图片可以是不同的。在一些示例中,运动矢量缩放可以应用于针对空间和时间相邻候选的TMVP和AMVP模式。
运动预测的另一方面包括人工运动矢量候选生成。例如,如果运动矢量候选列表是不完整的,则生成人工运动矢量候选并且将其插入到运动矢量候选列表的末尾处,直到获得所有候选为止。在合并模式下,存在两种类型的人工MV候选:第一种类型,其包括仅针对B切片来推导的组合候选;以及第二种类型,其包括仅用于AMVP的零候选(如果第一种类型没有提供足够的人工候选的话)。对于已经在运动矢量候选列表中并且具有必要的运动信息的每对候选而言,可以通过参考在列表0中的图片的第一候选的运动矢量和参考在列表1中的图片的第二候选的运动矢量的组合,来推导双向组合运动矢量候选。
合并和AMVP模式的另一方面包括用于候选插入的修剪过程。例如,来自不同块的候选可能恰好是相同的,这降低了合并和/或AMVP候选列表的效率。可以应用修剪过程来解决此问题。修剪过程包括将候选与在当前候选列表中已经存在的候选进行比较,以避免插入相同或重复的候选。为了降低比较的复杂度,可以针对少于要被插入候选列表中的所有潜在候选来执行修剪过程。
在一些示例中,可以实现增强的运动矢量预测。例如,在诸如VVC之类的视频编码标准中指定了一些帧间编码工具,根据这些工具,可以推导或细化针对当前块的运动矢量预测或合并预测的候选列表。下文描述了这样的方法的示例。
基于历史的运动矢量预测(HMVP)是如下的运动矢量预测方法:该方法允许每个块除了找到紧邻的具有因果关系的相邻运动场中的那些MV预测器之外,还从过去解码的MV列表中找到其MV预测器。例如,使用HMVP,除了紧邻的具有因果关系的相邻运动场中的那些MV预测器之外,还可以从先前解码的MV列表中获得或预测用于当前块的一个或多个MV预测器。先前解码的MV列表中的MV预测器被称为HMVP候选。HMVP候选可以包括与帧间编码块相关联的运动信息。可以在针对切片的编码和/或解码过程期间维护具有多个HMVP候选的HMVP表。在一些示例中,可以动态地更新HMVP表。例如,在对帧间编码块进行解码之后,可以通过将经解码的帧间编码块的相关联的运动信息作为新的HMVP候选添加到HMVP表中来更新HMVP表。在一些示例中,当遇到新切片时,可以清空HMVP表。
在一些情况下,每当存在帧间编码块时,就可以以先进先出(FIFO)的方式将相关联的运动信息作为新的HMVP候选插入到表中。可以应用约束FIFO规则。当将HMVP插入到表中时,可以首先应用冗余检查以查找在该表中是否存在相同的HMVP。如果找到的话,则可以从该表中去除该特定HMVP,并且然后移动所有HMVP候选。
在一些示例中,可以在合并候选列表构造过程中使用HMVP候选。在一些情况下,将来自表中的最后一个条目到第一个条目的所有HMVP候选插入到TMVP候选之后。可以对HMVP候选应用修剪。一旦可用合并候选的总数达到用信号通知的最大允许合并候选,就可以终止合并候选列表构造过程。
在一些示例中,可以在AMVP候选列表构造过程中使用HMVP候选。在一些情况下,将表中的最后K个HMVP候选的运动矢量插入到TMVP候选之后。在一些实现方式中,仅将具有与AMVP目标参考图片相同的参考图片的HMVP候选用于构造AMVP候选列表。可以对HMVP候选应用修剪。
图4是示出HMVP表400的示例的框图。在一些示例中,HMVP表400可以被实现为使用先进先出(FIFO)规则管理的存储设备和/或结构。例如,包括MV预测器的HMVP候选可以被存储在HMVP表400中。HMVP候选可以按照它们被编码或解码的顺序来存储。在一个示例中,HMVP候选被存储在HMVP表400中的顺序可以对应于HMVP候选被构造的时间。例如,当在诸如解码设备112之类的解码器中实现时,HMVP候选可以被构造为包括经解码的帧间编码块的运动信息。在一些示例中,来自HMVP表400的一个或多个HMVP候选可以包括运动矢量预测器,其可以用于针对要被解码的当前块的运动矢量预测。在一些示例中,一个或多个HMVP候选可以包括一个或多个这样的先前解码的块,其中可以采用FIFO方式将它们以它们被解码的顺序来存储在HMVP表400的一个或多个条目中。
HMVP候选索引402被示为与HMVP表400相关联。HMVP候选索引402可以标识HMVP表400的一个或多个条目。根据一个说明性示例,HMVP候选索引402被示为包括索引值0到4,其中,HMVP候选索引402的每个索引值与对应的条目相关联。在其它示例中,HMVP表400可以包括与参考图4示出且描述的那些条目相比较多或较少的条目。当构造HMVP候选时,它们以FIFO方式被填充在HMVP表400中。例如,随着HMVP候选被解码,它们在一端被插入到HMVP表400中,并且顺序地移动通过HMVP表400的条目,直到它们从另一端离开HMVP表400为止。因此,在一些示例中,诸如移位寄存器之类的存储器结构可以用于实现HMVP表400。
在一个示例中,索引值0可以指向HMVP表400的第一条目,其中该第一条目可以对应于HMVP表400的在其处插入HMVP候选的第一端。相应地,索引值4可以指向HMVP表400的第二条目,其中,第二条目可以对应于HMVP表400的HMVP候选从其退出HMVP表400或从HMVP表400中被清空的第二端。因此,在索引值0处的第一条目处被插入的HMVP候选可以遍历HMVP表400,以便为较新的或最近解码的HMVP候选腾出空间,直到HMVP候选到达索引值4处的第二条目为止。因此,在任何给定时间处存在于HMVP表400中的HVMP候选当中,索引值4处的第二条目中的HMVP候选可以是最旧的或最早的,而索引值0处的第一条目中的HMVP候选可以是最新或最近的。通常,与第一条目中的HMVP候选相比,第二条目中的HMVP候选可以是较旧或较早构造的HMVP候选。
在图4中,利用附图标记400A、400B和400C来标识HMVP表400的不同状态。参照状态400A,HMVP候选HMVP0至HMVP4被示为存在于HMVP表400的相应的索引值4至0处的条目中。例如,HMVP0可以是被插入到HMVP表400中的在索引值0处的第一条目处的最旧或最早的HMVP候选。HMVP0可以被顺序地移位以便为较早插入的和较新的HMVP候选HMVP1至HMVP4腾出空间,直到HMVP0到达在状态400A中所示的索引值4处的第二条目为止。相应地,HMVP4可以是要被插入到索引值0的第一条目中的最近的HMVP候选。因此,相对于HMVP4,HMVP0是HMVP表400中的较旧或较早的HMVP候选。
在一些示例中,HMVP候选HMVP0至HMVP4中的一者或多者可以包括可能是冗余的运动矢量信息。例如,冗余HMVP候选可以包括运动矢量信息,该运动矢量信息是与被存储在HMVP表400中的一个或多个其它HMVP候选中的运动矢量信息相同的。由于冗余HMVP候选的运动矢量信息可以从一个或多个其它HMVP候选来获得,所以可以避免将冗余HMVP候选存储在HMVP表400中。通过避免将冗余HMVP候选存储在HMVP表400中,可以更高效地利用HMVP表400的资源。在一些示例中,在将HMVP候选存储在HMVP表400中之前,可以执行冗余检查以确定HMVP候选是否将是冗余的(例如,可以将HMVP候选的运动矢量信息与已经存储的其它HMVP候选的运动矢量信息进行比较,以确定是否存在匹配)。
在一些示例中,HMVP表400的状态400B是上述冗余检查的概念性图示。在一些示例中,可以在对HMVP候选进行解码时将它们填充在HMVP表400中,并且冗余检查可以周期性地执行,而不是在存储HMVP候选之前作为阈值测试来执行。例如,如状态400B所示,可以将HMVP候选HMVP1和HMVP3标识为冗余候选(例如,它们的运动信息是与HMVP表400中的其它HMVP候选之一的运动信息相同的)。可以去除冗余HMVP候选HMVP1和HMVP3,并且可以相应地将剩余的HMVP候选移位。
例如,如状态400C中所示,HMVP候选HMVP2和HMVP4朝着与较旧条目相对应的较高索引值而被移位,而已经在HMVP表400的末端的第二条目中的HMVP0被示为未进一步移位。在一些示例中,将HMVP候选HMVP2和HMVP4移位可以为较新的HMVP候选释放HMVP表400中的空间。因此,新的HMVP候选HMVP5和HMVP6被示为移位到HMVP表400中,其中HMVP6是最新的或包括最近解码的运动矢量信息,并且被存储在索引值0处的第一条目中。
在一些示例中,来自HMVP表400的HMVP候选中的一者或多者可以用于构造可以用于当前块的运动预测的其它候选列表。例如,可以将来自HMVP表400的一个或多个HMVP候选添加到合并候选列表中,例如作为额外的合并候选。在一些示例中,可以将来自相同HMVP表400或另一这样的HMVP表的一个或多个HMVP候选添加到高级运动矢量预测(AMVP)候选列表中,例如作为额外的AMVP预测器。
例如,在合并候选列表构造过程中,可以将被存储在HMVP表400的条目中的一些或所有HMVP候选插入到合并候选列表中。在一些示例中,在合并候选列表中插入HMVP候选可以包括在合并候选列中的时间运动矢量预测器(TMVP)候选之后插入HMVP候选。如先前参考图3A和图3B所讨论的,如果TMVP候选被启用并且可用,则可以将其添加到MV候选列表中在空间运动矢量候选之后。
在一些示例中,可以在构造合并候选列表时对HMVP候选应用上述修剪过程。例如,一旦合并候选列表中的合并候选的总数达到可允许合并候选的最大数量,则可以终止合并候选列表构造过程,并且可以不再将更多的HMVP候选插入到合并候选列表中。合并候选列表中的可允许合并候选的最大数量可以是预定数量或者可以例如从编码器用信号通知给解码器的可以以其来构造合并候选列表的数量。
在构造合并候选列表的一些示例中,可以在合并候选列表中插入一个或多个其它候选。在一些示例中,与当前块不邻接的先前经编码的块的运动信息可以用于更高效的运动矢量预测。例如,可以在构造合并候选列表中使用非邻接的空间合并候选。在一些情况下,对非邻接的空间合并候选的构造(例如,在JVET-K0228中描述的,据此将JVET-K0228通过引用的方式整体地并入并且用于所有目的)涉及从两个非邻接的相邻位置推导新的空间候选(例如,从在左侧/上方最接近的非邻接块,如图5所示并且下文讨论的)。可以将这些块限制在到当前块的1个CTU的最大距离内。非邻接候选的提取过程从在垂直方向上追溯先前经解码的块开始。当遇到帧间块或者追溯后退距离达到1个CTU大小时,垂直反向追溯停止。然后,提取过程在水平方向上追溯先前经解码的块。用于停止水平提取过程的准则取决于垂直的非邻接候选是否被成功提取。如果没有提取出垂直的非邻接候选,则在遇到帧间块或者追溯后退距离超过一个CTU大小阈值时,水平提取过程停止。如果存在所提取的垂直的非邻接候选,则当遇到包含来自垂直的非邻接候选的不同MV的帧间块或者追溯后退距离超过CTU大小阈值时,水平提取过程停止。在一些示例中,可以在合并候选列表中的TMVP候选之前插入非邻接空间合并候选。
在一些示例中,可以在相同合并候选列表中的TMVP候选之前插入非邻接空间合并候选,其可以包括在TMVP候选之后插入的HMVP候选中的一个或多个HMVP候选。下文将参考图5来描述识别和提取可以被插入到合并候选列表中的一个或多个非邻接空间合并候选。
如本文中进一步描述的,在一些示例中,HMVP表400中的一个或多个HMVP候选可以包括使用仿射运动矢量预测来生成的仿射运动矢量。例如,块可以具有使用仿射运动矢量预测而计算的多个仿射运动矢量。然而,不是将用于块的多个运动矢量存储在HMVP表400中,而是可以针对该块来生成单个仿射运动矢量并且将其存储在HMVP表400中。在一些情况下,可以针对块的特定位置来生成单个仿射运动矢量和/或生成对应于块的特定位置的单个仿射运动矢量。例如,在一些情况下,可以针对块的中心位置来生成仿射运动矢量,并且可以将针对块的中心位置来生成的仿射运动矢量存储在HMVP表400中。因此,代替存储用于块的多个仿射运动矢量,而是针对该块来生成单个仿射运动矢量,并且将其存储在HMVP表400中。
图5是示出图片或切片500的框图,图片或切片500包括要被编码的当前块502。在一些示例中,可以构造用于对当前块502进行编码的合并候选列表。例如,可以从合并候选列表中的一个或多个合并候选来获得用于当前块的运动矢量。合并候选列表可以包括确定非邻接空间合并候选。例如,非邻接空间合并候选可以包括从相对于当前块502的两个非邻接的相邻位置推导的新的空间候选。
示出了当前块502的若干邻接或相邻块,包括左上方块B2 510(在当前块502上方且左侧)、上方块B1 512(在当前块502上方)、右上方块B0 514(在当前块502上方且右侧)、左侧块A1 516(在当前块502左侧)以及左下方块A0 518(在当前块502左侧且下方)。在一些示例中,可以从在当前块的上方和/或左侧的最接近的非邻接块之一获得非邻接空间合并候选。
在一些示例中,用于当前块502的非邻接空间合并候选可以包括在垂直方向(在当前块502上方)和/或水平方向(在当前块502的左侧)追溯先前经解码的块。垂直追溯后退距离504指示相对于当前块502(例如,当前块502的顶部边界)的垂直距离和垂直非邻接块VN520。水平追溯后退距离508指示相对于当前块502(例如,当前块502的左边界)的水平距离和水平非邻接块HN 522。垂直追溯后退距离504和水平追溯后退距离508被限制为等于一个编码树单元(CTU)的最大距离。
可以通过分别在垂直方向和水平方向上追溯先前经解码的块来识别诸如垂直非邻接块VN 520和水平非邻接块HN 522之类的非邻接空间合并候选。例如,提取垂直非邻接块VN 520可以包括垂直反向追溯过程,以确定在垂直追溯后退距离504内是否存在帧间编码块(被约束为一个CTU的最大大小)。如果存在这样的块,则将其识别为垂直非邻接块VN520。在一些示例中,可以在垂直反向追溯过程之后执行水平反向追溯过程。水平反向追溯过程可以包括确定在水平追溯后退距离506内是否存在帧间编码块(被约束为一个CTU的最大大小),并且如果找到这样的块,则将其识别为水平非邻接块HN 522。
在一些示例中,垂直非邻接块VN 520和水平非相邻块HN 522中的一者或多者可以被提取以用作非邻接空间合并候选。如果在垂直反向追溯过程中识别出垂直非邻接块VN520,则提取过程可以包括提取垂直非邻接块VN 520。然后,提取过程可以继续进行水平反向追溯过程。如果在垂直反向追溯过程中未识别出垂直非邻接块VN 520,则当遇到帧间编码块或者水平追溯后退508距离超过最大距离时,可以终止水平反向追溯过程。如果识别并且提取出垂直非邻接块VN 520,则当遇到包含与被包含在垂直非邻接块VN 520中的MV不同的MV的帧间编码块或者如果水平追溯后退508距离超过最大距离时,终止水平反向追溯过程。如前所提到的,在合并候选列表中的TMVP候选之前,添加所提取的非邻接空间合并候选(例如,垂直非邻接块VN 520和水平非邻接块HN 522)中的一者或多者。
返回参考图4,在一些情况下,HMVP候选还可以在构造AMVP候选列表时使用。在AMVP候选列表构造过程中,可以将被存储在相同HMVP表400(或与用于合并候选列表构造的HMVP表不同的HMVP表)的条目中的一些或所有HMVP候选插入到AMVP候选列表中。在一些示例中,在AMVP候选列表中插入HMVP候选可以包括在AMVP候选列表中的TMVP候选之后插入HMVP候选的条目集合(例如,k个最新或最早条目的数量)。在一些示例中,可以在构造AMVP候选列表时对HMVP候选应用上述修剪过程。在一些示例中,仅具有与AMVP目标参考图片相同的参考图片的那些HMVP候选可以用于构造AMVP候选列表。
因此,基于历史的运动矢量预测器(HMVP)预测模式可以涉及使用基于历史的查找表,例如包括一个或多个HMVP候选的HMVP表400。HMVP候选可以在帧间预测模式下使用,例如合并模式和AMVP模式。在一些示例中,不同的帧间预测模式可以使用不同的方法来从HMVP表400中选择HMVP候选。
在一些情况下,可以使用替代运动矢量预测设计。例如,可以利用用于空间MVP(S-MVP)预测和时间MVP(T-MVP)预测的替代设计。例如,在合并模式的一些实现方式中(在一些情况下,合并模式可以被称为跳过模式或直接模式),可以按照在图6A、图6B和图6C中所示的给定顺序来访问(或搜索或选择)在这些图中所示的空间和时间MVP候选,以填充MVP列表。图6A示出了MVP候选的位置。例如,在MVP预测中利用的空间和时间位置如图6A所示。在图6B中示出用于S-MVP的访问顺序(或搜索顺序或选择顺序)的示例。在图6C中示出了空间反向图案(与图6B中的顺序相比)替代。
在一些示例中,用作用于当前块620的MVP候选的空间邻居可以包括块A(602)、B(604)、(C(606),A1(610)|B1(614))、A0(608)、B2(616),其可以以在图6B中标记并且下文描述的访问顺序,利用两阶段过程来实现。
在一些示例中,第一组(例如,组1)可以包括具有访问顺序0的块A(602)、具有访问顺序1的B(604)和具有访问顺序2的C(606),C(606)可以是与HEVC表示法中的B0(612)同位的。根据中心块C(606)中的MVP的可用性和块分割的类型,第一组还可以包括具有访问顺序3的块A1(610)或具有访问顺序3的B1(614)。第二组(例如,组2)可以包括具有访问顺序5的块A0(608)和具有访问顺序4的块B2(616)。
此外,参照图6A,用作MVP候选的时间上同位的邻居可以是在当前块620的中心(中心块C622)同位的块以及在当前块620外部的最右下方位置处的块H(624)。例如,一组可以包括块C 622、H 624。如果发现块H(624)在同位图片外部,则可以替代地使用一个或多个回退H位置(H块626)。
在一些情况下,根据所使用的块分割和编码顺序,可以使用反向S-MVP候选顺序,如图6C所示。例如,第一组可以包括具有访问顺序0的块614、具有访问顺序1的614、具有访问顺序2的616、具有访问顺序3的604或具有访问顺序3的626。第二组可以包括具有访问顺序4的块612和具有访问顺序5的块624。
在HEVC和较早期的视频编码标准中,仅将平移运动模型应用于运动补偿预测(MCP)。例如,可以针对图片的每个块(例如,每个CU或每个PU)确定平移运动矢量。然而,在各种情况下,除了平移运动之外,还可以存在另外种类的运动,包括缩放(例如,放大和/或缩小)、旋转、透视运动以及其它不规则运动。因此,仿射变换运动补偿预测也可以被应用以提高编码效率。
例如,在诸如HEVC之类的一些视频编码标准中,每个块具有单个运动矢量(例如,平移运动矢量)。然而,在仿射编码模式中,块可以具有多个仿射运动矢量(例如,块中的每个样本可以具有独立的仿射运动矢量)。此外,某些视频编码标准(例如,HEVC)中的HMVP表未被扩展为包括仿射信息。如本文中进一步描述的,为了使得能够使用仿射信息,在一些情况下,可以推导用于仿射运动矢量的平移近似并且将其存储在HMVP表中。在一些示例中,对于可以具有多个运动矢量的仿射块,可以针对块的特定位置(例如,中心位置)来生成单个运动矢量,并且可以将该单个运动矢量存储在HMVP表中以允许这样的HMVP表包括仿射信息(即使没有以其它方式支持)。这样,仿射变换运动补偿预测可以被应用以提高编码效率。
在等式(1)中,vx和vy形成用于当前块702内的每个像素的运动矢量,x和y提供当前块702内的每个像素的位置(例如,块中的左上方像素可以具有坐标或索引(x,y)=(0,0)),(v0x,v0y)是左上角控制点710的运动矢量,w是当前块702的宽度,并且(v1x,v1y)是右上角控制点712的运动矢量。v0x和v1x值是用于相应运动矢量的水平值,并且v0y和v1y值是用于相应运动矢量的垂直值。可以通过添加额外的控制点矢量来定义额外的控制点(例如,四个控制点、六个控制点、八个控制点或一些其它数量的控制点),例如在当前块702的下部角、当前块702的中心或当前块702中的其它位置。
上面的等式(1)示出了4参数运动模型,其中,四个仿射参数a、b、c和d被定义为: c=v0x;以及d=v0y。使用等式(1),在给定左上角控制点710的运动矢量(v0x,v0y)和右上角控制点712的运动矢量(v1x,v1y)的情况下,用于当前块的每个像素的运动矢量可以使用每个像素位置的坐标(x,y)来计算。例如,对于当前块702的左上方像素位置,(x,y)的值可以等于(0,0),在这种情况下,用于左上方像素的运动矢量变为Vx=v0x和Vy=v0y。为了进一步简化MCP,可以应用基于块的仿射变换预测。
图8是示出被划分为子块的当前块802的基于块的仿射变换预测的图。在图8中所示的示例包括4x4分区,具有16个子块。可以使用任何适当的分区和相应数量的子块。然后可以使用等式(1)来推导用于每个子块的运动矢量。例如,为了推导每个4x4个子块的运动矢量,根据等式(1)来计算每个子块的中心样本的运动矢量(如图8所示)。所得到的运动矢量可以被舍入,例如舍入到1/16分数精确度或其它适当的精确度(例如,1/4、1/8等)。然后可以使用所推导的子块的运动矢量来应用运动补偿,以生成每个子块的预测。例如,解码设备可以接收描述控制点810的运动矢量和控制点812的运动矢量的四个仿射参数(a,b,c,d),并且可以根据描述每个子块的中心样本的位置的像素坐标索引,来计算每子块运动矢量。如上所提到的,在MCP之后,每个子块的高精确度运动矢量可以被舍入,并且可以以与平移运动矢量相同的精确度来保存。
图9是示出在仿射帧间(AF_INTER)模式下的运动矢量预测的示例的图。在JEM中,存在两种仿射运动模式:仿射帧间(AF_INTER)模式和仿射合并(AF_MERGE)模式。在一些示例中,当CU具有大于8个像素的宽度和高度时,可以应用AF_INTER模式。可以在与块相关的比特流中(例如,在CU级别)放置(或用信号通知)仿射标志,以指示是否将AF_INTER模式应用于该块。如图9的示例中所示,在AF_INTER模式下,可以使用相邻块来构造运动矢量对的候选列表。例如,对于位于当前块902的左上角的子块910,可以从在子块910的上方且左侧的相邻块A 920、在子块910上方的相邻块B 922、以及在子块910左侧的相邻块C 924中选择运动矢量v0。作为另外的示例,对于位于当前块902的右上角的子块912,可以从分别在上方和右上方向上的相邻块D 926和相邻块E 928中选择运动矢量v1。可以使用相邻块来构造运动矢量对的候选列表。例如,在给定运动矢量vA、vB、vC、vD和vE分别对应于块A920、B 922、C924、D 926和E 928的情况下,运动矢量对的候选列表可以被表示为{(v0,v1)|v0={vA,vB,vC},v1={vD,vE}}。
如上所提到的并且如图9所示,在AF_INTER模式下,可以从块A 9720、B 922或C924的运动矢量中选择运动矢量v0。可以根据以下各项来对来自相邻块(块A、B或C)的运动矢量进行缩放:参考列表、以及用于相邻块的参考的POC、用于当前CU(例如,当前块902)的参考的POC和当前CU的POC之间的关系。在这些示例中,可以从参考列表来确定部分或所有POC。从相邻块D或E中选择v1类似于选择v0。
在一些情况下,如果候选列表的数量少于两个,则可以通过复制AMVP候选中的每一者来利用运动矢量对填充候选列表。当候选列表大于两个时,在一些示例中,可以首先根据相邻运动矢量的一致性来对候选列表中的候选进行排序(例如,一致性可以是基于运动矢量对候选中的两个运动矢量之间的相似性)。在这样的示例中,前两个候选被保留,而其余可以被丢弃。
在一些示例中,率失真(RD)代价检查可以用于确定哪个运动矢量对候选被选择作为当前CU(例如,当前块902)的控制点运动矢量预测(CPMVP)。在一些情况下,可以在比特流中用信号通知(或以其它方式指示)用于指示CPMVP在候选列表中的位置的索引。一旦(基于运动矢量对候选)确定了当前仿射CU的CPMVP,就可以应用仿射运动估计,并且可以确定控制点运动矢量(CPMV)。在一些情况下,可以在比特流中用信号通知CPMV和CPMVP的差。CPMV和CPMVP两者包括两个平移运动矢量集合,在这种情况下,仿射运动信息的信令成本比平移运动的信令成本高。
图10A和图10B示出了在AF_MERGE模式下的运动矢量预测的示例。当使用AF_MERGE模式对当前块1002(例如,CU)进行编码时,可以从有效的相邻重构块获得运动矢量。例如,可以选择以仿射模式编码的有效相邻重构块中的第一块作为候选块。如图10A所示,可以从相邻块A 1020、B 1022、C 1024、D 1026和E 1028的集合中选择相邻块。可以按照用于选择作为候选块的特定选择顺序来考虑相邻块。选择顺序的一个示例是左侧邻居(块A 1020),之后是上方邻居(块B 1022),然后是右上方邻居(块C 1024),然后是左下方邻居(块D1026),以及然后是左上方邻居(块E 1028)。
如上所提到的,所选择的相邻块可以是已经以仿射模式编码的第一块(例如,按照选择顺序)。例如,块A 1020可以已经以仿射模式被编码。如图10B所示,块A 1020可以被包括在相邻CU 1004中。对于相邻CU 1004,可以已经推导出用于相邻CU 1004的左上角的运动矢量(v2 1030)、右上角的运动矢量(v3 1032)和左下角的运动矢量(v4 1034)。在该示例中,根据v2 1030、v3 1032和v4 1034来计算用于当前块1002的左上角的控制点运动矢量v01040。然后可以确定用于当前块1002的右上角的控制点运动矢量v1 1042。
一旦推导出当前块1002的控制点运动矢量(CPMV)(v0 1040和v1 1042),就可以应用等式(1)来确定用于当前块1002的运动矢量场。为了识别当前块1002是否是以AF_MERGE模式来编码的,当存在以仿射模式编码的至少一个相邻块时,仿射标志可以被包括在比特流中。
在许多情况下,仿射运动估计的过程包括在编码器侧通过将原始块和仿射运动预测块之间的失真最小化来确定用于块的仿射运动。由于仿射运动比平移运动具有更多的参数,因此仿射运动估计可能比平移运动估计更为复杂。在一些情况下,可以执行基于信号的泰勒展开的快速仿射运动估计方法来确定仿射运动参数(例如,4参数模型中的仿射运动参数a、b、c、d)。
快速仿射运动估计可以包括基于梯度的仿射运动搜索。例如,在给定时间t处的像素值It(其中,t0是参考图片的时间)的情况下,可以将针对像素值It的一阶泰勒展开确定为:
可以如下将等式(2)重写为等式(3):
It=Ito+Gx0·Vx+Gy0·Vy 等式(3)
然后,可以通过使预测(Ito+Gx0·Vx+Gy0·Vy)和原始信号之间的失真最小化来求解用于像素值It的仿射运动Vx和Vy。以4参数仿射模型为例,
Vx=a·x-b·y+c 等式(4)
Vy=b·x+a·y+d 等式(5)
其中,x和y表示像素或子块的位置。将等式(4)和(5)代入等式(3),并且然后使用等式(3)来将原始信号和预测之间的失真最小化,可以确定仿射参数a、b、c、d的解:
一旦确定了仿射运动参数(其定义用于控制点的仿射运动矢量),就可以使用仿射运动参数(例如,使用等式(4)和(5),其也可以用等式(1)来表示)来确定每像素或每子块的运动矢量。可以针对当前块(例如,CU)的每个像素执行等式(3)。例如,如果当前块是16像素x16像素,则等式(6)中的最小二乘解可以用于通过使在256个像素上的总值最小化来推导用于当前块的仿射运动参数(a、b、c、d)。
可以在用于视频数据的仿射运动模型中使用任何数量的参数。例如,可以以与以上针对4参数仿射运动模型所描述的相同方式来求解6参数仿射运动或其它仿射运动。例如,6参数仿射运动模型可以被描述为:
图11是示出通过三个控制点1110、1112和1114处的三个运动矢量描述的当前块1102的仿射运动场的图。运动矢量在位于当前块1102的左上角处的控制点1110处,运动矢量在位于当前块1102的右上角处的控制点1112处,并且运动矢量在位于当前块1102的左下角的控制点1114处。可以通过以下等式来描述当前块1102的运动矢量场(MVF):
等式(8)表示6参数仿射运动模型,其中,w和h是当前块1102的宽度和高度。
虽然参考上面的等式(1)描述了4参数运动模型,但是可以通过以下等式来描述使用当前块的宽度和高度的简化的4参数仿射模型:
图12是示出对用于当前块1202的仿射运动模型的控制点矢量的选择的图。示出了用于当前块1202的四个控制点1210、1212、1214和1216。运动矢量在位于当前块1202的左上角处的控制点1210处,运动矢量在位于当前块1202的右上角处的控制点1212处,运动矢量在位于当前块1202的左下角处的控制点1214处,并且运动矢量在位于当前块1202的右下角处的控制点1216处。
在一个示例中,对于4参数仿射运动模型(根据等式(1)或等式(10)),可以从四个运动矢量中的任何两个矢量中选择控制点对。在另一示例中,对于6参数仿射运动模型,可以从四个运动矢量中的任何三个运动矢量中选择控制点对。基于所选择的控制点运动矢量,可以例如使用所推导的仿射运动模型来计算用于当前块1202的其它运动矢量。
在一些示例中,基于CPMV的仿射运动模型表示可以被转换为具有增量MV的替代仿射运动模型表示。例如,增量MV仿射运动模型表示中的是与左上角CPMV相同的: 要注意的是,对于这些矢量运算,加法、除法和乘法是逐个元素地应用的。
在一些示例中,可以使用仿射运动预测器来执行仿射运动矢量预测。在一些示例中,可以从相邻编码块的仿射运动矢量或正常运动矢量来推导用于当前块的仿射运动预测器。如上所述,仿射运动预测器可以包括继承仿射运动矢量预测器(例如,使用仿射合并(AF_MERGE)模式而继承的)和构造仿射运动矢量预测器(例如,使用仿射帧间(AF_INTER)模式而构造的)。
继承仿射运动矢量预测器(MVP)使用相邻编码块的一个或多个仿射运动矢量来推导当前块的预测CPMV。对于继承仿射,当前块可以与相邻编码块共享相同的仿射运动模型。相邻编码块被称为相邻块或候选块。可以从不同的空间或时间相邻位置中选择相邻块。
图13是示出当前块1302的来自相邻块1302(块A)的继承仿射MVP的图。如下依据在控制点1320、1322和1324处的相应运动矢量来表示相邻块1302的仿射运动矢量:在一个示例中,相邻块1304的大小可以由参数(w,h)来表示,其中,w是相邻块1304的宽度,并且h是相邻块1304的高度。相邻块1304的控制点的坐标被表示为(x0,y0)、(x1,y1)和(x2,y2)。可以针对当前块1302来预测在相应控制点1310、1312和1314处的仿射运动矢量针对当前块1302所预测的仿射运动矢量可以通过将等式(8)中的(x,y)替换为当前块1302的控制点与相邻块1304的左上方控制点之间的坐标差来推导,如以下等式中所描述的:
类似地,如果相邻编码块(例如,相邻块1304)的仿射运动模型是4参数仿射运动模型,则等式(10)可以被应用于推导用于当前块1302的控制点处的仿射运动矢量。在一些示例中,使用等式(10)来获得4参数仿射运动模型可以包括避开上面的等式(13)。
图14是示出在用于当前块1402的继承仿射MVP模型中使用的相邻候选块的可能位置的图。例如,当前块的控制点1410、1412和1414处的仿射运动矢量可以从相邻块1430(块A0)、1426(块B0)、1428(块B1)、1432(块A1)和/或1420(块B2)中的一者来推导。在一些情况下,也可以使用相邻块1424(块A2)和/或1422(块B3)。更具体地,位于当前块1402的左上角处的控制点1410处的运动矢量可以从位于控制点1410的上方且左侧的相邻块1420(块B2)、位于控制点1410上方的相邻块1422(块B3)、或位于控制点1410左侧的相邻块1424(块A2)继承;位于当前块1402的右上角处的控制点1412处的运动矢量可以从位于控制点1410上方的相邻块1426(块B0)或位于控制点1410上方且右侧的相邻块1428(块B1)继承;以及位于当前块1402的左下角处的控制点1414处的运动矢量可以从位于控制点1410的左侧的相邻块1430(块A0)或位于控制点1410的左侧且下方的相邻块1432(块A1)继承。
在一些视频编码标准中,HMVP缓冲器(例如,HMVP表)无法利用用于利用仿射运动模型的CU预测的运动信息来更新,而仅利用来自一个或多个常规帧间编码CU的运动信息来更新。然而,随着引入更加复杂的编码工具,编码块的粒度可以小至4x4。即使在一些情况下,用于仿射模式(使用仿射运动模型)的CU大小可能被约束为至少8x8,但考虑具有2K分辨率的高清(HD)序列、具有4K分辨率的超高清(UHD)或其它高分辨率视频(例如,可以位于接近平移编码CU的小的仿射编码块)可以有助于提供用于预测平移编码CU中的运动信息的有用信息。因此,如本文中进一步描述的,本文中的方法可以允许来自一个或多个仿射编码CU的运动信息被包括在用于常规帧间预测模式的HMVP表中。
在一些示例中,提供了用于改进基于历史的运动矢量预测的系统、方法(也被称为过程)和计算机可读介质。例如,在一些情况下,可以利用在使用仿射运动模型的CU编码中产生和/或利用的运动信息来更新HMVP表。在一些实现方式中,HMVP表可以利用以下各项来更新:在仿射编码块(例如,CU、PU或其它块)中可用的运动信息(其可以包括与仿射块的控制点相关联的运动信息)、或者从仿射块的控制点推导的子块运动矢量信息、或者从仿射编码块的时空和/或时间邻域推导的运动信息、或者用作用于仿射编码块的预测器的运动信息(例如,从仿射合并候选产生的MVP的输出)。
在一些情况下,可以将包含一个或多个先前经解码的CU的运动矢量和参考索引的历史表定义为HMVPCandList。在第一说明性示例中,仿射编码块的左上方CPMV和对应参考索引(被表示为CPMV_top_left_info)可以如下被插入到历史表中:HMVPCandList=CPMV_top_left_info。
在另一说明性示例中,仿射编码块的右上方CPMV和对应参考索引(被表示为CPMV_top_right_info)可以如下被插入到历史表中:HMVPCandList=CPMV_top_right_info。
在一些情况下,仿射编码CU可以被划分为子块,并且可以针对每个子块来推导运动矢量。当仿射CU大小是大的时(例如,大于阈值大小,诸如8x8、8x16、16x8、16x16或其它大小),则与较远的子块的运动相比,来自给定角(例如,左上角、右上角、或其它角)的特定CPMV可以相当不同。因此,在一些情况下,为了生成用于块的代表性运动矢量,可以将所计算出的CPMV用作整个CU的运动信息的表示。由于整个CU的中心位置可以提供子块中的每个子块的整体运动信息的平均,因此在一些示例中,可以将使用中心CU位置而推导的运动矢量插入到历史表中。
图15是示出针对仿射编码块估计的并且对应于编码块的中心位置的示例性运动矢量的图。在该示例中,当前块1500是仿射编码块。运动矢量和对应于控制点1510和1512。具体地,运动矢量表示与左上角控制点1510相关联的控制点运动矢量(CPMV),并且运动矢量表示与右上角控制点1512相关联的CPMV。此外,在一些示例中,运动矢量和可以具有相应的水平值和垂直值。例如,运动矢量和的v0x和v1x值可以是用于相应运动矢量(例如,运动矢量和)的水平值,而v0y和v1y值可以是用于相应运动矢量(例如,运动矢量和)的垂直值。在一些情况下,可以通过添加额外的控制点矢量(例如,在当前块702的下部角、当前块1500的中心、或当前块1500中的其它位置)来定义额外的控制点(例如,四个控制点、六个控制点、八个控制点或某个其它数量的控制点)。
对应于控制点1510和1512的运动矢量和可以用于生成表示当前块1500的运动矢量1504,其可以被存储在HMVP表(例如,HMVP表400)中以供在编码将来块时使用。如前所提到的,仿射模型使用多个控制点(例如,控制点1510、1512)来推导用于块的多个运动矢量。例如,仿射模型可以生成用于块的子块或像素的多个局部运动矢量。然而,在某些视频编码标准中使用的HMVP表可能仅在HMVP列表中支持和/或包括每块的单个平移运动矢量。因此,在一些示例中,为了包括在使用仿射运动模型对块(例如,当前块1500)进行编码时产生和/或利用的运动信息,可以使用来自块中的控制点(例如,控制点1510和1512)的其它运动矢量(例如,和)来生成表示该块的单个运动矢量(例如,1504)。HMVP表然后可以被更新为包括针对仿射编码块而生成的运动矢量。
在一些示例中,运动矢量1504可以是基于与控制点1510和1512相对应的运动矢量和来针对当前块1500的特定位置而生成的运动矢量。在图15中所示的示例中,运动矢量1504对应于当前块1500的中心位置处的子块1502。中心位置可以反映当前块1500的总体运动信息和/或当前块1500中的每个子块的平均和/或表示。因此,中心位置处的子块1502可以用作表示当前块1500的总体运动信息的运动矢量。
在一些情况下,可以基于运动矢量和之间的差和/或运动矢量和之间的变化率来生成运动矢量1504。例如,可以针对垂直和水平分量来计算运动矢量和之间的变化率。在一些情况下,可以针对垂直和水平尺寸来每样本计算运动矢量和之间的变化率。例如,可以计算运动矢量和之间的差以确定总差,然后将总差除以与运动矢量和相关联的控制点之间的样本数量,以获得在运动矢量和之间的每样本变化率。
所计算出的变化率然后可以用于估计用于当前块1500内的特定位置的运动矢量。例如,由于图15中的子块1502对应于当前块1500内的中心位置,所以用于子块1502的运动矢量可以通过以下方式来计算:将当前块1500的宽度除以二以获得对应于中心位置的变化率乘数(例如,中心位置与控制点1510或1512之间的样本数量,或者换句话说,从当前块1500的一端(例如,从左或右边界)到中心位置的以样本数量为单位的距离),并且将运动矢量和之间的变化率增加(例如,乘以)变化率乘数。
为了进行说明,如果运动矢量和之间的每样本变化率是x,并且当前块1500的宽度是8,则可以将每样本变化率x乘以由8(当前块1500的宽度)除以2得到的结果。此处,8除以2的结果为4,其表示针对中心位置的变化率乘数(例如,到中心位置的样本数量),并且用于子块1502的运动矢量是4x(例如,变化率x乘以4)。然后,可以将用于子块1502的运动矢量作为对应于当前块1500的平移运动矢量存储在HMPV表中。
在一些示例中,使用仿射编码CU的中心位置来对用于仿射编码CU的运动矢量(表示为center_subblock_mv)的推导可以如下。在给定左上方和右上方CPMV(分别被表示为CPMV_top_left和CPMV_top_right)以及分别被表示为w和h的CU宽度和高度:
mvScaleHor=CPMV_top_left_hor<<7 等式(14)
mvScaleVer=CPMV_top_left_ver<<7 等式(15)
dHorX=(CPMV_top_right_hor-CPMV_top_left_hor)<<(7–log2(w))
等式(16)
dVerX=(CPMV_top_right_ver-CPMV_top_left_ver)<<(7–log2(w))
等式(17)
在存在左下方的CPMV并且其被表示为CPMV_bottom_left的情况下:
dHorY=(CPMV_bottom_left_hor-CPMV_top_left_hor)<<(7–log2(h))
等式(18)
dVerY=(CPMV_bottom_left_ver-CPMV_top_left_ver)<<(7–log2(h))
等式(19)
否则:
dHorY=-dVerX 等式(20)
dVerY=dHorX 等式(21)
其中,CPMV_top_left_hor和CPMV_top_left_ver是左上方CPMV(CPMV_top_left)的水平和垂直分量;CPMV_top_right_hor和CPMV_top_right_ver是右上方CPMV(CPMV_top_right)的水平和垂直分量。然后可以如下推导用于中心子块的运动矢量:
center_subblock_mv_hor=(mvScaleHor+dHorX*(w>>1)+dHorY*(h>>1))
等式(22)
center_subblock_mv_ver=(mvScaleVer+dVerX*(w>>1)+dVerY*(h>>1))
等式(23)
center_subblock_mv=(center_subblock_mv_hor,center_subblock_mv_ver)
等式(24)
此外,center_subblock_mv_info可以包括运动矢量center_subblock_mv和相应的参考索引(或者在一些情况下由其组成)。然后可以如下更新HMVP候选列表:HMVPCandList=center_subblock_mv_inf。在一些示例中,图15中的运动矢量1504可以是如上所述在等式(14)-(24)中计算的center-sub-block_mv。
在一些实现方式中,另一子块位置可以用于HMVP表更新,例如左上方、右上方、左下方、右下方或接近中心的位置(例如,与中心具有偏移)的子块位置。在一些实现方式中,本文描述的技术可以插入左下方CPMV或除了CU中心位置子块MV之外的某个子块运动矢量。在一些情况下,可以执行诸如下文提供的规范性过程之类的规范性过程。
在用于基于历史的运动矢量预测器候选列表的更新过程的示例中,该过程的输入可以包括1/16分数样本精确度的亮度运动矢量mvL0和mvL1、参考索引refIdxL0和refIdxL1、指定亮度编码块的宽度和高度的变量cbWidth和cbHeight、相对于当前图片的左上方亮度样本来指定当前亮度编码块的左上方样本的亮度位置(xCb,yCb)、以及基于历史的运动信息表HmvpCandList。该过程的输出可以是经修改的基于历史的运动信息表HmvpCandList。
如果affine_flag[xCb][yCb]等于1,numCpMv被设置为控制点运动矢量的数量,cpMvLX[cpIdx]被设置为当前块的控制点运动矢量,其中,cpIdx=0,..,numCpMv–1并且X为0或1,则运动矢量的水平变化dX、运动矢量的垂直变化dY以及基本运动矢量mvBaseScaled是通过以下方式来推导的:调用从控制点运动矢量来针对仿射运动模型参数的推导过程,其中,亮度编码块宽度cbWidth、亮度编码块高度cbHeight、控制点运动矢量的数量numCpMv和控制点运动矢量cpMvLX[cpIdx](其中,cpIdx=0,..,numCpMv-1)作为输入。运动矢量MvLX可以如下计算:
xPosSb=cbWidth>>1 等式(25)
yPosSb=cbHeight>>1 等式(26)
mvLX[0]=(mvBaseScaled[0]+dX[0]*xPosSb+dY[0]*yPosSb)
等式(27)
mvLX[1]=(mvBaseScaled[1]+dX[1]*xPosSb+dY[1]*yPosSb)
等式(28)
如下进一步描述的,可以调用针对运动矢量的舍入过程,其中,被设置为等于mvLX的mvX、被设置为等于5的rightShift、被设置为等于0的leftShift作为输入以及经舍入的mvLX作为输出。此外,运动矢量mvLX可以如下裁剪:
mvLX[0]=Clip3(-217,217-1,mvLX[0]) 等式(29)
mvLX[1]=Clip3(-217,217-1,mvLX[1]) 等式(30)
MVP候选hMvpCand可以包括亮度运动矢量mvL0和mvL1、参考索引refIdxL0和refIdxL1(或者在一些情况下可以由其组成)。NumHmvpCand可以被设置为HmvpCandList中的运动条目数量。
如果slice_type等于P并且refIdxL0是有效的,或者如果slice_type等于B并且refIdxL0或refIdxL1是有效的,则通过以下步骤,使用候选mvCand来修改候选列表HmvpCandList(在一些情况下,可以以任何其它顺序来执行这些步骤)。首先,变量curIdx被设置为等于NumHmvpCand。如果NumHmvpCand等于23,则对于每个索引hMvpIdx=1,…,NumHmvpCand-1,将HMVPCandList[hMvpIdx]复制到HMVPCandList[hMvpIdx-1],并且然后将hMvpCand复制到HMVPCandList[hMvpIdx]。如果NumHmvpCand小于23,则将NumHmvpCand增加1。
可以如下调用以上提及的从控制点运动矢量来针对仿射运动模型参数的推导过程。首先,用于推导过程的输入可以包括:指定亮度编码块的宽度和高度的变量cbWidth和cbHeight、控制点运动矢量的数量numCpMv、以及控制点运动矢量cpMvLX[cpIdx],其中,cpIdx=0,..,numCpMv–1并且X为0或1。该过程的输出可以包括运动矢量的水平变化dX、运动矢量的垂直变化dY以及与亮度编码块的左上角相对应的运动矢量mvBaseScaled。
变量log2CbW和log2CbH可以如下推导:
log2CbW=Log2(cbWidth) 等式(31)
log2CbH=Log2(cbHeight) 等式(32)
运动矢量的水平变化dX可以如下推导:
dX[0]=(cpMvLX[1][0]-cpMvLX[0][0])<<(7-log2CbW)
等式(33)
dX[1]=(cpMvLX[1][1]-cpMvLX[0][1])<<(7-log2CbW)
等式(34)
运动矢量的垂直变化dY可以如下推导。如果numCpMv等于3,则可以如下推导dY:
dY[0]=(cpMvLX[2][0]-cpMvLX[0][0])<<(7-log2CbH)
等式(35)
dY[1]=(cpMvLX[2][1]-cpMvLX[0][1])<<(7-log2CbH)
等式(36)
否则(numCpMv等于2),可以如下推导dY:
dY[0]=-dX[1] 等式(37)
dY[1]=dX[0] 等式(38)
与亮度编码块的左上角相对应的运动矢量mvBaseScaled可以如下推导:
mvBaseScaled[0]=cpMvLX[0][0]<<7 等式(40)
mvBaseScaled[1]=cpMvLX[0][1]<<7 等式(41)
可以如下调用以上提及的针对运动矢量的舍入过程。针对该过程的输入可以包括运动矢量mvX、用于舍入的右移参数rightShift和用于分辨率提高的左移参数leftShift。该过程的输出可以是经舍入的运动矢量mvX。对于mvX的舍入,适用以下各项:
偏移=(rightShift==0)?0:(1<<(rightShift-1)) 等式(42)
mvX[0]=((mvX[0]+offset-(mvX[0]>=0))>>rightShift)<<leftShift
等式(43)
mvX[1]=((mvX[1]+offset-(mvX[1]>=0))>>rightShift)<<leftShift
等式(44)
图16是示出用于利用从仿射编码块生成的运动信息来更新基于历史的运动预测表的示例性方法1600(也称为过程)的流程图。
在框1602处,方法1600可以包括:获得视频数据的一个或多个块。例如,一个或多个块可以包括使用仿射运动模式而编码的块,如先前所描述的。在一些情况下,一个或多个块可以包括当前块。此外,在一些示例中,视频数据可以包括当前图片和参考图片。
在框1604处,方法1600可以包括:确定从一个或多个块中的块(例如,当前块1500)的第一控制点(例如,控制点1510)而推导的第一运动矢量(例如,)。该块可以包括使用仿射运动模式而编码的块。在框1606处,方法1600可以包括:确定从该块的第二控制点(例如,控制点1512)而推导的第二运动矢量(例如,)。
在框1608处,方法1600可以包括:基于第一运动矢量和第二运动矢量来估计用于该块内的预定位置的第三运动矢量(例如,运动矢量1504)。在一些示例中,可以基于上述等式(14)-(24)来计算第三运动矢量。在一些情况下,第三运动矢量可以是用于该块(例如,用于整个块)的运动信息的表示。
在一些情况下,预定位置可以是该块的中心或该块中的某个位置。在一些示例中,第一控制点可以是左上方控制点,并且第二控制点可以是右上方控制点。在一些情况下,可以进一步基于与诸如左下方控制点之类的底部控制点相关联的控制点运动矢量来估计第三运动矢量。
在一些示例中,估计第三运动矢量可以包括:基于第一运动矢量和第二运动矢量之间的差来确定第一运动矢量和第二运动矢量之间的变化率,并且将该变化率乘以对应于预定位置的乘法因数。在一些情况下,预定位置可以包括该块的中心,并且乘法因数可以包括该块的宽度和/或该块的高度的一半。
在一些情况下,变化率可以是每单位变化率。此外,每单位变化率的每个单位可以包括样本、子块和/或像素。在一些示例中,乘法因数可以包括在预定位置和块的边界之间的样本数量。例如,如果预定位置是该块的中心,并且该块沿着该块的维度包括n个样本,则乘法因数可以是n除以2,其在该示例中对应于到块的中心的样本数量。
在一些实现方案中,第三运动矢量可以是基于在第一运动矢量的水平分量与第二运动矢量的水平分量之间的第一运动变化以及在第一运动矢量的垂直分量与第二运动矢量的垂直分量之间的第二运动变化的。
在一些示例中,第三运动矢量可以是基于与块相关联的仿射运动信息而生成的平移运动矢量。此外,第三运动矢量可以包括与块的一个或多个子块相关联的运动信息。在一些示例中,一个或多个子块中的至少一个子块可以对应于预定位置。
在框1610处,方法1600可以包括:利用第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表(例如,HMVP表400)。在一些情况下,HMVP表和/或第三运动矢量可以用于对额外块(诸如将来块)的运动预测中。
在一些方面中,方法1600可以包括:将来自HMVP表的一个或多个HMVP候选添加到高级运动矢量预测(AMVP)候选列表和/或合并模式候选列表中。
在一些示例中,本文描述的过程可以由计算设备或装置(例如,编码设备104、解码设备112和/或任何其它计算设备)来执行。在一些情况下,计算设备或装置可以包括处理器、微处理器、或被配置为执行本文描述的过程的步骤的设备的其它组件。在一些示例中,计算设备或装置可以包括被配置为捕获包括视频帧的视频数据(例如,视频序列)的相机。例如,计算设备可以包括相机设备,其可以包括或者可以不包括视频编解码器。作为另一示例,计算设备可以包括具有相机的移动设备(例如,诸如数字相机、IP相机等的相机设备、包括相机的移动电话或平板设备、或具有相机的另一种类型的设备)。在一些情况下,计算设备可以包括用于显示图像的显示器。在一些示例中,捕获视频数据的相机或其它捕获设备是与计算设备分开的,在这种情况下,计算设备接收所捕获的视频数据。计算设备还可以包括被配置为传送视频数据的网络接口、收发机、和/或发射机。网络接口、收发机和/或发射机可以被配置为传送基于互联网协议(IP)的数据或其它网络数据。
本文描述的过程可以用硬件、计算机指令或其组合来实现。在计算机指令的背景下,所述操作表示被存储在一个或多个计算机可读存储介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序并不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现这些过程。
另外,本文描述的过程可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用),通过硬件来实现,或其组合。如上所提到,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读或机器可读存储介质上。计算机可读存储介质或机器可读存储介质可以是非暂时性的。
本文讨论的编码技术可以在示例视频编码和解码系统(例如,系统100)中实现。在一些示例中,系统包括源设备,源设备提供稍后要由目的地设备解码的经编码的视频数据。具体地,源设备经由计算机可读介质将视频数据提供给目的地设备。源设备和目的地设备可以包括多种设备中的任何一种,包括台式计算机、笔记本(即膝上型计算机)计算机、平板计算机、机顶盒、电话手机(例如,所谓的“智能”手机)、所谓的“智能”板、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备和目的地设备可以被配备用于无线通信。
目的地设备可以经由计算机可读介质接收要被解码的经编码的视频数据。计算机可读介质可以是能够将经编码的视频数据从源设备移动到目的地设备的任何类型的介质或设备。在一个示例中,计算机可读介质可以包括用于使得源设备能够将经编码的视频数据直接实时地发送给目的地设备的通信介质。可以根据诸如无线通信协议之类的通信标准来对经编码的视频数据进行调制,并且将其发送给目的地设备。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,诸如,局域网、广域网或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备到目的地设备的通信的任何其它装置。
在一些示例中,可以将经编码的数据从输出接口输出到存储设备。类似地,可以通过输入接口从存储设备存取经编码的数据。存储设备可以包括各种分布式或本地存取的数据存储介质中的任何一种,例如,硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它适当的数字存储介质。在另外的示例中,存储设备可以对应于文件服务器或另一中间存储设备,其可以存储由源设备生成的经编码的视频。目的地设备可以经由流式传输或下载来从存储设备存取被存储的视频数据。文件服务器可以是能够存储经编码的视频数据并且将该经编码的视频数据发送给目的地设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。目的地设备可以通过任何标准数据连接(包括互联网连接)来存取经编码的视频数据。这可以包括适于存取被存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或这两者的组合。经编码的视频数据从存储设备的传输可以是流式传输、下载传输或其组合。
本公开内容的技术不一定限于无线应用或设置。所述技术可以被应用于视频编码,以支持多种多媒体应用中的任何一种,诸如,空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(例如,基于HTTP的动态自适应流传输(DASH))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频的解码、或其它应用。在一些示例中,系统可以被配置为支持单向或双向视频传输,以支持诸如视频流式传输、视频回放、视频广播和/或视频电话之类的应用。
在一个示例中,源设备包括视频源、视频编码器和输出接口。目的地设备可以包括输入接口、视频解码器和显示设备。源设备的视频编码器可以被配置为应用本文公开的技术。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备可以从诸如外部相机之类的外部视频源接收视频数据。同样,目的地设备可以与外部显示设备对接,而不是包括集成显示设备。
上文的示例系统仅是一个示例。用于并行地处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管一般而言,本公开内容的技术是由视频编码设备来执行的,但是所述技术还可以由通常被称为“CODEC”的视频编码器/解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和目的地设备仅是这样的编码设备的示例:其中,源设备生成经编码的视频数据以用于传输给目的地设备。在一些示例中,源设备和目的地设备可以以基本上对称的方式操作,使得这些设备中的每一者包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
视频源可以包括视频捕获设备,例如,摄像机、包含先前捕获的视频的视频存档单元、和/或用于从视频内容提供商接收视频的视频馈送接口。作为另外的替代方式,视频源可以生成基于计算机图形的数据作为源视频,或者生成实时视频、存档视频和计算机生成的视频的组合。在一些情况下,如果视频源是摄像机,则源设备和目的地设备可以形成所谓的照相电话或视频电话。然而,如上所述,在本公开内容中描述的技术通常可以适用于视频编码,并且可以被应用于无线和/或有线应用。在每种情况下,所捕获的、预捕获的或计算机生成的视频都可以由视频编码器进行编码。然后,可以通过输出接口将经编码的视频信息输出到计算机可读介质上。
如所提到的,计算机可读介质可以包括诸如无线广播或有线网络传输之类的临时介质、或者诸如硬盘、闪存驱动器、压缩光盘、数字多功能光盘、蓝光光盘之类的存储介质(即非暂时性存储介质)、或其它计算机可读介质。在一些示例中,网络服务器(未示出)可以例如经由网络传输从源设备接收经编码的视频数据,并且将经编码的视频数据提供给目的地设备。类似地,诸如光盘冲压设施之类的介质生产设施的计算设备可以从源设备接收经编码的视频数据,并且制造包含经编码的视频数据的光盘。因此,在各个示例中,计算机可读介质可以被理解为包括各种形式的一个或多个计算机可读介质。
目的地设备的输入接口从计算机可读介质接收信息。计算机可读介质的信息可以包括由视频编码器定义的语法信息(其也被视频解码器使用),语法信息包括描述块和其它编码单元(例如,图片组(GOP))的特性和/或处理的语法元素。显示设备将经解码的视频数据显示给用户,并且可以包括各种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、或另一种类型的显示设备。已经描述了本申请的各个实施例。
在图17和图18中分别示出了编码设备104和解码设备112的具体细节。图17是示出可以实现在本公开内容中描述的技术中的一种或多种技术的示例性编码设备104的框图。编码设备104可以例如生成本文描述的语法结构(例如,VPS、SPS、PPS或其它语法元素的语法结构)。编码设备104可以执行对视频切片内的视频块的帧内预测和帧间预测编码。如前所述,帧内编码至少部分地依赖于空间预测以减少或去除在给定视频帧或图片内的空间冗余。帧间编码至少部分地依赖于时间预测以减少或去除在视频序列的相邻或周围帧内的时间冗余。帧内模式(I模式)可以指代若干种基于空间的压缩模式中的任何一种。诸如单向预测(P模式)或双向预测(B模式)之类的帧间模式可以指代若干种基于时间的压缩模式中的任何一种。
编码设备104包括分割单元35、预测处理单元41、滤波器单元63、图片存储器64、求和器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41包括运动估计单元42、运动补偿单元44和帧内预测处理单元46。对于视频块重构,编码设备104还包括逆量化单元58、逆变换处理单元60和求和器62。滤波器单元63旨在表示一个或多个环路滤波器,诸如去块滤波器、自适应环路滤波器(ALF)和样本自适应偏移(SAO)滤波器。尽管在图17中将滤波器单元63示为环路内滤波器,但是在其它配置中,滤波器单元63可以被实现为环路后滤波器。后处理设备57可以对由编码设备104生成的经编码的视频数据执行额外的处理。在一些情况下,本公开内容的技术可以由编码设备104来实现。然而,在其它情况下,本公开内容的技术中的一种或多种技术可以由后处理设备57来实现。
如图17所示,编码设备104接收视频数据,并且分割单元35将数据分割为视频块。这种分割还可以包括例如根据LCU和CU的四叉树结构来分割为切片、切片段、瓦片或其它较大的单元,以及视频块分割。编码设备104总体上示出了对在要被编码的视频切片内的视频块进行编码的组件。切片可以被划分为多个视频块(并且可能被划分为被称为瓦片的视频块集合)。预测处理单元41可以基于误差结果(例如,编码率和失真水平等)来为当前视频块选择多种可能的编码模式之一,诸如多种帧内预测编码模式之一或多种帧间预测编码模式之一。预测处理单元41可以将所得到的帧内或帧间编码块提供给求和器50以生成残差块数据,并且提供给求和器62以重构编码块以用作参考图片。
在预测处理单元41内的帧内预测处理单元46可以相对于在与要被编码的当前视频块相同的帧或切片中的一个或多个相邻块,来执行当前块的帧内预测编码,以提供空间压缩。在预测处理单元41内的运动估计单元42和运动补偿单元44相对于在一个或多个参考图片中的一个或多个预测块来执行对当前视频块的帧间预测编码,以提供时间压缩。
运动估计单元42可以被配置为根据用于视频序列的预定图案来确定用于视频切片的帧间预测模式。预定图案可以将序列中的视频切片指定为P切片、B切片或GPB切片。运动估计单元42和运动补偿单元44可以是高度集成的,但是出于概念性目的而被分别示出。由运动估计单元42执行的运动估计是生成运动矢量的过程,该运动矢量估计针对视频块的运动。运动矢量例如可以指示在当前视频帧或图片内的视频块的预测单元(PU)相对于在参考图片内的预测块的位移。
预测块是被发现在像素差方面与要被编码的视频块的PU紧密匹配的块,其可以通过绝对差之和(SAD)、平方差之和(SSD)或其它差度量来确定。在一些示例中,编码设备104可以计算用于被存储在图片存储器64中的参考图片的整数以下的像素位置的值。例如,编码设备104可以对四分之一像素位置、八分之一像素位置或参考图片的其它分数像素位置的值进行插值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索,并且以分数像素精度输出运动矢量。
运动估计单元42通过将在经帧间编码的切片中的视频块的PU的位置与参考图片的预测块的位置进行比较,来计算针对PU的运动矢量。可以从第一参考图片列表(列表0)或第二参考图片列表(列表1)中选择参考图片,这两个参考图片列表中的每一者标识被存储在图片存储器64中的一个或多个参考图片。运动估计单元42将所计算出的运动矢量发送给熵编码单元56和运动补偿单元44。
由运动补偿单元44执行的运动补偿可以涉及基于通过运动估计而确定的运动矢量来取得或生成预测块,可能对像素以下的精度执行插值。在接收到针对当前视频块的PU的运动矢量时,运动补偿单元44可以在参考图片列表中定位运动矢量所指向的预测块。编码设备104通过从正被编码的当前视频块的像素值中减去预测块的像素值来形成像素差值,从而形成残差视频块。像素差值形成针对该块的残差数据,并且可以包括亮度差分量和色度差分量两者。求和器50表示执行这种减法运算的一个或多个组件。运动补偿单元44还可以生成与视频块和视频切片相关联的语法元素,以供解码设备112在对视频切片的视频块进行解码时使用。
如上所述,帧内预测处理单元46可以对当前块进行帧内预测,作为对由运动估计单元42和运动补偿单元44执行的帧间预测的替代方式。具体地,帧内预测处理单元46可以确定要用于对当前块进行编码的帧内预测模式。在一些示例中,帧内预测处理单元46可以例如在单独的编码过程期间使用各种帧内预测模式来对当前块进行编码,并且帧内预测处理单元46可以从被测试的模式中选择合适的帧内预测模式来使用。例如,帧内预测处理单元46可以使用针对各种被测试的帧内预测模式的率失真分析来计算率失真值,并且可以在被测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定在编码块与被编码以产生编码块的原始的未被编码块之间的失真(或误差)量、以及用于产生编码块的比特速率(即比特数量)。帧内预测处理单元46可以根据针对各种编码块的失真和速率来计算比率,以确定哪种帧内预测模式表现出针对该块的最佳率失真值。
在任何情况下,在为块选择帧内预测模式之后,帧内预测处理单元46可以将指示针对块选择的帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以对用于指示所选择的帧内预测模式的信息进行编码。编码设备104可以在所发送的比特流配置数据中包括用于各种块的编码上下文的定义以及对要用于这些上下文中的每个上下文的最可能的帧内预测模式、帧内预测模式索引表和经修改的帧内预测模式索引表的指示。比特流配置数据可以包括多个帧内预测模式索引表和多个经修改的帧内预测模式索引表(也被称为码字映射表)。
在预测处理单元41经由帧间预测或帧内预测生成用于当前视频块的预测块之后,编码设备104通过从当前视频块中减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个TU中,并且被应用于变换处理单元52。变换处理单元52使用变换(诸如离散余弦变换(DCT)或概念上类似的变换)来将残差视频数据变换为残差变换系数。变换处理单元52可以将残差视频数据从像素域转换到变换域(诸如频域)。
变换处理单元52可以将所得到的变换系数发送给量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程可以减小与这些系数中的一些或所有系数相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54然后可以执行对包括经量化的变换系数的矩阵的扫描。替代地或另外,熵编码单元56可以执行该扫描。
在量化之后,熵编码单元56对经量化的变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应变长编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、基于语法的上下文自适应二进制算术编码(SBAC)、概率区间分割熵(PIPE)编码或另一种熵编码技术。在由熵编码单元56进行熵编码之后,可以将经编码的比特流发送给解码设备112,或者将其存档以供稍后传输或者由解码设备112取得。熵编码单元56还可以对用于正被编码的当前视频切片的运动矢量和其它语法元素进行熵编码。
逆量化单元58和逆变换处理单元60分别应用逆量化和逆变换,以重构像素域中的残差块,以供稍后用作参考图片的参考块。运动补偿单元44可以通过将残差块加上在参考图片列表内的参考图片之一的预测块来计算参考块。运动补偿单元44还可以将一个或多个插值滤波器应用于经重构的残差块,以计算用于运动估计的整数以下的像素值。求和器62将经重构的残差块加到由运动补偿单元44产生的经运动补偿的预测块上,以产生用于存储在图片存储器64中的参考块。参考块可以由运动估计单元42和运动补偿单元44用作参考块,以对在随后的视频帧或图片中的块进行帧间预测。
编码设备104可以执行本文描述的技术中的任何技术。已经关于编码设备104总体上描述了本公开内容的一些技术,但是如上所提到的,本公开内容的技术中的一些技术还可以由后处理设备57来实现。
图17的编码设备104表示被配置为执行本文描述的变换编码技术中的一种或多种技术的视频编码器的示例。编码设备104可以执行本文描述的技术中的任何技术,包括以上关于图16描述的过程。
图18是示出示例性解码设备112的框图。解码设备112包括熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、求和器90、滤波器单元91和图片存储器92。预测处理单元81包括运动补偿单元82和帧内预测处理单元84。在一些示例中,解码设备112可以执行通常与关于来自图17的编码设备104所描述的编码阶段相反的解码阶段。
在解码过程期间,解码设备112接收由编码设备104发送的经编码的视频比特流,其表示经编码的视频切片的视频块和关联的语法元素。在一些实施例中,解码设备112可以从编码设备104接收经编码的视频比特流。在一些实施例中,解码设备112可以从网络实体79(诸如服务器、媒体感知网络元素(MANE)、视频编辑器/拼接器、或被配置为实现上述技术中的一种或多种技术的其它这种设备)接收经编码的视频比特流。网络实体79可以包括或者可以不包括编码设备104。在网络实体79将经编码的视频比特流发送给解码设备112之前,网络实体79可以实现在本公开内容中描述的技术中的一些技术。在一些视频解码系统中,网络实体79和解码设备112可以是单独设备的部分,而在其它情况下,关于网络实体79所描述的功能可以由包括解码设备112的相同设备来执行。
解码设备112的熵解码单元80对比特流进行熵解码以生成量化系数、运动矢量和其它语法元素。熵解码单元80将运动矢量和其它语法元素转发给预测处理单元81。解码设备112可以接收在视频切片级别和/或视频块级别的语法元素。熵解码单元80可以处理和解析在诸如VPS、SPS和PPS之类的更多参数集中的固定长度语法元素和可变长度语法元素两者。
当视频切片被编码为经帧内编码(I)的切片时,预测处理单元81的帧内预测处理单元84可以基于用信号通知的帧内预测模式以及来自当前帧或图片的先前经解码的块中的数据,来生成用于当前视频切片的视频块的预测数据。当视频帧被编码为经帧间编码(即,B、P或GPB)的切片时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动矢量以及其它语法元素来产生用于当前视频切片的视频块的预测块。可以从在参考图片列表内的参考图片之一产生预测块。解码设备112可以基于被存储在图片存储器92中的参考图片,使用默认构造技术来构造参考帧列表,即列表0和列表1。
运动补偿单元82通过解析运动矢量和其它语法元素来确定用于当前视频切片的视频块的预测信息,并且使用该预测信息来产生用于正在被解码的当前视频块的预测块。例如,运动补偿单元82可以使用参数集中的一个或多个语法元素来确定用于对视频切片的视频块进行编码的预测模式(例如,帧内或帧间预测)、帧间预测切片类型(例如,B切片、P切片或GPB切片)、用于针对该切片的一个或多个参考图片列表的构造信息、用于该切片的每个经帧间编码的视频块的运动矢量、用于该切片的每个经帧间编码的视频块的帧间预测状态、以及用于对当前视频切片中的视频块进行解码的其它信息。
运动补偿单元82还可以基于插值滤波器来执行插值。运动补偿单元82可以使用在视频块的编码期间由编码设备104使用的插值滤波器来计算针对参考块的整数以下的像素的插入的值。在这种情况下,运动补偿单元82可以根据所接收的语法元素来确定由编码设备104使用的插值滤波器,并且可以使用插值滤波器来产生预测块。
逆量化单元86对在比特流中提供并且由熵解码单元80解码的经量化的变换系数进行逆量化或解量化。逆量化过程可以包括使用由编码设备104针对视频切片中的每个视频块计算出的量化参数来确定量化程度,以及同样地确定应当被应用的逆量化度。逆变换处理单元88将逆变换(例如,逆DCT或其它适当的逆变换)、逆整数变换或概念上类似的逆变换过程应用于变换系数,以便在像素域中产生残差块。
在运动补偿单元82基于运动矢量和其它语法元素生成用于当前视频块的预测块之后,解码设备112通过将来自逆变换处理单元88的残差块与由运动补偿单元82生成的相应预测块相加以形成经解码的视频块。求和器90表示执行这种求和运算的一个或多个组件。如果需要的话,还可以使用环路滤波器(在编码环路中或在编码环路之后)来使像素过渡平滑,或者以其它方式提高视频质量。滤波器单元91旨在表示一个或多个环路滤波器,诸如去块滤波器、自适应环路滤波器(ALF)和样本自适应偏移(SAO)滤波器。尽管在图18中将滤波器单元91示为环路中滤波器,但是在其它配置中,滤波器单元91可以被实现为环路后滤波器。然后将给定帧或图片中的经解码的视频块存储在图片存储器92中,图片存储器92存储用于随后运动补偿的参考图片。图片存储器92还存储经解码的视频,以供稍后在显示设备(诸如在图1中所示的视频目的地设备122)上呈现。
图18的解码设备112表示被配置为执行本文描述的变换编码技术中的一种或多种技术的视频解码器的示例。解码设备112可以执行本文描述的技术中的任何技术,包括以上关于图16描述的方法1600。
在前面的描述中,参考本申请的特定实施例描述了本申请的各方面,但是本领域技术人员将认识到,本申请的主题不限于此。因此,尽管本文已经详细描述了本申请的说明性实施例,但是应理解的是,可以以其它方式不同地体现和采用本发明构思,并且所附的权利要求旨在被解释为包括这样的变型,除了由现有技术限制的变型。可以单独地或共同地使用上述主题的各个特征和方面。此外,在不脱离本说明书的更宽泛的精神和范围的情况下,实施例可以在除了本文描述的环境和应用之外的任何数量的环境和应用中使用。因此,说明书和附图被认为是说明性的而不是限制性的。为了说明的目的,以特定次序描述了方法。应当明白的是,在替代实施例中,可以以与所描述的次序不同的次序来执行所述方法。
本领域普通技术人员将明白的是,在不脱离本说明书的范围的情况下,本文中使用的小于(“<”)和大于(“>”)符号或术语可以分别用小于或等于(“≤”)以及大于或等于(“≥”)符号来替换。
在将组件描述为“被配置为”执行某些操作的情况下,这种配置可以例如通过以下方式来实现:将电路或其它硬件设计为执行该操作,将可编程电路(例如,微处理器或其它适当的电路)编程为执行该操作,或其任何组合。
记载集合中的“至少一个”和/或集合中的“一个或多个”的权利要求语言或其它语言指示该集合中的一个成员或者该集合中的多个成员(以任何组合)满足该权利要求。例如,记载“A和B中的至少一个”的权利要求语言意指A、B、或者A和B。在另一示例中,记载“A、B和C中的至少一个”的权利要求语言意指A、B、C、或者A和B、或者A和C、或者B和C、或者A和B和C。语言集合中的“至少一个”和/或集合中的“一个或多个”并不将该集合限制为在该集合中列出的项目。例如,记载“A和B中的至少一个”的权利要求语言可以意指A、B或者A和B,并且可以另外包括未在A和B的集合中列出的项目。
结合本文公开的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,上面已经对各种说明性的组件、框、模块、电路和步骤围绕其功能进行了总体描述。至于这种功能被实现为硬件还是软件取决于特定的应用和被施加在整个系统上的设计约束。技术人员可以针对每种特定应用以不同的方式来实现所描述的功能,但是这种实现决策不应当被解释为导致脱离本申请的范围。
本文描述的技术还可以用电子硬件、计算机软件、固件或其任何组合来实现。这样的技术可以在各种设备中的任何一种中实现,诸如通用计算机、无线通信设备手机或具有多种用途(包括在无线通信设备手机和其它设备中的应用)的集成电路设备。被描述为模块或组件的任何特征都可以在集成逻辑设备中一起实现,或者分别作为分立但是可互操作的逻辑设备来实现。如果用软件来实现,则所述技术可以至少部分地由计算机可读数据存储介质来实现,计算机可读数据存储介质包括程序代码,程序代码包括在被执行时执行上述方法中的一种或多种方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,计算机程序产品可以包括包装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(RAM)(诸如同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁或光数据存储介质等。另外或替代地,所述技术可以至少部分地由以指令或数据结构的形式携带或传送程序代码并且可以由计算机访问、读取和/或执行的计算机可读通信介质(诸如传播的信号或波)来实现。
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或分立逻辑电路。这样的处理器可以被配置为执行在本公开内容中描述的任何技术。通用处理器可以是微处理器,但是在替代方式中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP核的结合、或任何其它这样的配置。因此,如本文所使用的术语“处理器”可以指代任何前述结构、前述结构的任何组合、或适于实现本文描述的技术的任何其它结构或装置。另外,在一些方面中,本文描述的功能可以在被配置用于编码和解码的专用软件模块或硬件模块内提供,或者被合并在组合视频编码器-解码器(CODEC)中。
Claims (35)
1.一种用于处理视频数据的装置,所述装置包括:
存储器;以及
耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:
获得视频数据的一个或多个块;
确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;
确定从所述块的第二控制点而推导的第二运动矢量;
基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及
利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
2.根据权利要求1所述的装置,其中,所述预定位置包括所述块的中心。
3.根据权利要求1所述的装置,其中,所述第一控制点包括左上方控制点,并且所述第二控制点包括右上方控制点。
4.根据权利要求3所述的装置,其中,所述第三运动矢量是进一步基于与底部控制点相关联的控制点运动矢量来估计的。
5.根据权利要求1所述的装置,其中,估计所述第三运动矢量包括:
基于所述第一运动矢量和所述第二运动矢量之间的差,来确定所述第一运动矢量和所述第二运动矢量之间的变化率;以及
将所述变化率乘以对应于所述预定位置的乘法因数。
6.根据权利要求5所述的装置,其中,所述预定位置包括所述块的中心,并且其中,所述乘法因数包括所述块的宽度和所述块的高度中的至少一项的一半。
7.根据权利要求5所述的装置,其中,所述变化率包括每单位变化率,其中,所述每单位变化率的每个单位包括样本、子块和像素中的至少一项。
8.根据权利要求5所述的装置,其中,所述乘法因数包括所述预定位置和所述块的边界之间的样本数量。
9.根据权利要求1所述的装置,其中,所述第三运动矢量是基于所述第一运动矢量的水平分量和所述第二运动矢量的水平分量之间的第一运动变化以及所述第一运动矢量的垂直分量和所述第二运动矢量的垂直分量之间的第二运动变化的。
10.根据权利要求1所述的装置,其中,所述第三运动矢量包括基于与所述块相关联的仿射运动信息而生成的平移运动矢量。
11.根据权利要求1所述的装置,其中,所述第三运动矢量包括与所述块的一个或多个子块相关联的运动信息,其中,所述一个或多个子块中的至少一个子块对应于所述预定位置。
12.根据权利要求1所述的装置,其中,所述HMVP表和所述第三运动矢量中的至少一者用于对额外块的运动预测。
13.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
将来自所述HMVP表的一个或多个HMVP候选添加到高级运动矢量预测(AMVP)候选列表、合并模式候选列表和用于使用所述仿射运动模式进行编码的运动矢量预测预测器中的至少一项中。
14.根据权利要求1所述的装置,其中,处理视频数据包括对视频数据进行编码,其中,所述一个或多个处理器被配置为:
生成经编码的视频比特流,所述经编码的视频比特流包括视频数据的所述一个或多个块。
15.根据权利要求14所述的装置,其中,所述一个或多个处理器被配置为:
发送所述经编码的视频比特流、所述第一控制点和所述第二控制点。
16.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
使用所述仿射运动模型来对视频数据的所述一个或多个块进行解码。
17.根据权利要求1所述的装置,其中,所述装置是移动设备。
18.一种处理视频数据的方法,所述方法包括:
获得视频数据的一个或多个块;
确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;
确定从所述块的第二控制点而推导的第二运动矢量;
基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及
利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
19.根据权利要求18所述的方法,其中,所述预定位置包括所述块的中心。
20.根据权利要求18所述的方法,其中,所述第一控制点包括左上方控制点,并且所述第二控制点包括右上方控制点。
21.根据权利要求20所述的方法,其中,所述第三运动矢量是进一步基于与底部控制点相关联的控制点运动矢量来估计的。
22.根据权利要求18所述的方法,其中,估计所述第三运动矢量包括:
基于所述第一运动矢量和所述第二运动矢量之间的差,来确定所述第一运动矢量和所述第二运动矢量之间的变化率;以及
将所述变化率乘以对应于所述预定位置的乘法因数。
23.根据权利要求22所述的方法,其中,所述预定位置包括所述块的中心,并且其中,所述乘法因数包括所述块的宽度和所述块的高度中的至少一项的一半。
24.根据权利要求22所述的方法,其中,所述变化率包括每单位变化率,其中,所述每单位变化率的每个单位包括样本、子块和像素中的至少一项。
25.根据权利要求22所述的方法,其中,所述乘法因数包括所述预定位置和所述块的边界之间的样本数量。
26.根据权利要求18所述的方法,其中,所述第三运动矢量是基于所述第一运动矢量的水平分量和所述第二运动矢量的水平分量之间的第一运动变化以及所述第一运动矢量的垂直分量和所述第二运动矢量的垂直分量之间的第二运动变化的。
27.根据权利要求18所述的方法,其中,所述第三运动矢量包括基于与所述块相关联的仿射运动信息而生成的平移运动矢量。
28.根据权利要求18所述的方法,其中,所述第三运动矢量包括与所述块的一个或多个子块相关联的运动信息,其中,所述一个或多个子块中的至少一个子块对应于所述预定位置。
29.根据权利要求18所述的方法,其中,所述HMVP表和所述第三运动矢量中的至少一者用于对额外块的运动预测。
30.根据权利要求18所述的方法,还包括:
将来自所述HMVP表的一个或多个HMVP候选添加到高级运动矢量预测(AMVP)候选列表、合并模式候选列表和用于使用所述仿射运动模式进行编码的运动矢量预测预测器中的至少一项中。
31.根据权利要求18所述的方法,其中,所述第三运动矢量包括用于所述块的运动信息的表示。
32.根据权利要求18所述的方法,其中,处理视频数据包括对视频数据进行编码,所述方法还包括:
生成经编码的视频比特流,所述经编码的视频比特流包括视频数据的所述一个或多个块。
33.根据权利要求32所述的方法,还包括:
发送所述经编码的视频比特流、所述第一控制点和所述第二控制点。
34.根据权利要求18所述的方法,还包括:
使用所述仿射运动模型来对视频数据的所述一个或多个块进行解码。
35.一种具有存储在其上的指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
获得视频数据的一个或多个块;
确定从所述一个或多个块中的块的第一控制点而推导的第一运动矢量,所述块是使用仿射运动模式来编码的;
确定从所述块的第二控制点而推导的第二运动矢量;
基于所述第一运动矢量和所述第二运动矢量来估计用于所述块内的预定位置的第三运动矢量;以及
利用所述第三运动矢量来填充基于历史的运动矢量预测器(HMVP)表。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962905311P | 2019-09-24 | 2019-09-24 | |
US201962905371P | 2019-09-24 | 2019-09-24 | |
US62/905,311 | 2019-09-24 | ||
US62/905,371 | 2019-09-24 | ||
US17/028,064 | 2020-09-22 | ||
US17/028,064 US11582475B2 (en) | 2019-09-24 | 2020-09-22 | History-based motion vector prediction |
PCT/US2020/052178 WO2021061746A1 (en) | 2019-09-24 | 2020-09-23 | History-based motion vector prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114503584A true CN114503584A (zh) | 2022-05-13 |
Family
ID=74881404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080065270.4A Pending CN114503584A (zh) | 2019-09-24 | 2020-09-23 | 基于历史的运动矢量预测 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11582475B2 (zh) |
EP (1) | EP4035382A1 (zh) |
JP (1) | JP2022548650A (zh) |
KR (1) | KR20220064962A (zh) |
CN (1) | CN114503584A (zh) |
AU (1) | AU2020354483A1 (zh) |
BR (1) | BR112022004552A2 (zh) |
TW (1) | TW202126042A (zh) |
WO (1) | WO2021061746A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11356657B2 (en) * | 2018-01-26 | 2022-06-07 | Hfi Innovation Inc. | Method and apparatus of affine inter prediction for video coding system |
CN116668679A (zh) * | 2018-05-10 | 2023-08-29 | Lg电子株式会社 | 编解码设备、非暂态计算机可读存储介质和数据发送设备 |
WO2020060374A1 (ko) * | 2018-09-21 | 2020-03-26 | 엘지전자 주식회사 | 어파인 예측을 이용하여 비디오 신호를 처리하기 위한 방법 및 장치 |
US12120289B2 (en) * | 2019-08-21 | 2024-10-15 | Lg Electronics Inc. | Image encoding/decoding method and device for performing prediction on basis of HMVP candidate, and method for transmitting bitstream |
US11451809B2 (en) * | 2019-08-28 | 2022-09-20 | Tencent America LLC | Method and apparatus for video coding |
US11949909B2 (en) * | 2020-12-29 | 2024-04-02 | Qualcomm Incorporated | Global motion estimation using road and ground object labels for geometry-based point cloud compression |
US20220279204A1 (en) * | 2021-02-26 | 2022-09-01 | Qualcomm Incorporated | Efficient video encoder architecture |
WO2023028965A1 (en) * | 2021-09-02 | 2023-03-09 | Nvidia Corporation | Hardware codec accelerators for high-performance video encoding |
US20230344984A1 (en) * | 2022-04-25 | 2023-10-26 | Tencent America LLC | Affine models use in affine bilateral matching |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI700922B (zh) * | 2018-04-02 | 2020-08-01 | 聯發科技股份有限公司 | 用於視訊編解碼系統中的子塊運動補償的視訊處理方法和裝置 |
US10958934B2 (en) * | 2018-07-27 | 2021-03-23 | Tencent America LLC | History-based affine merge and motion vector prediction |
US10944984B2 (en) * | 2018-08-28 | 2021-03-09 | Qualcomm Incorporated | Affine motion prediction |
US11212550B2 (en) * | 2018-09-21 | 2021-12-28 | Qualcomm Incorporated | History-based motion vector prediction for affine mode |
CN118055249A (zh) * | 2018-09-22 | 2024-05-17 | Lg 电子株式会社 | 使用间预测处理视频信号的方法和装置 |
-
2020
- 2020-09-22 US US17/028,064 patent/US11582475B2/en active Active
- 2020-09-23 EP EP20788938.7A patent/EP4035382A1/en active Pending
- 2020-09-23 TW TW109132897A patent/TW202126042A/zh unknown
- 2020-09-23 BR BR112022004552A patent/BR112022004552A2/pt unknown
- 2020-09-23 KR KR1020227008453A patent/KR20220064962A/ko active Search and Examination
- 2020-09-23 AU AU2020354483A patent/AU2020354483A1/en not_active Abandoned
- 2020-09-23 CN CN202080065270.4A patent/CN114503584A/zh active Pending
- 2020-09-23 WO PCT/US2020/052178 patent/WO2021061746A1/en unknown
- 2020-09-23 JP JP2022517190A patent/JP2022548650A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US11582475B2 (en) | 2023-02-14 |
US20210092432A1 (en) | 2021-03-25 |
JP2022548650A (ja) | 2022-11-21 |
AU2020354483A1 (en) | 2022-03-10 |
KR20220064962A (ko) | 2022-05-19 |
EP4035382A1 (en) | 2022-08-03 |
TW202126042A (zh) | 2021-07-01 |
WO2021061746A1 (en) | 2021-04-01 |
BR112022004552A2 (pt) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7342115B2 (ja) | 履歴ベースの動きベクトル予測子の改善 | |
CN110383839B (zh) | 仿射运动信息导出 | |
US11140408B2 (en) | Affine motion prediction | |
US11582475B2 (en) | History-based motion vector prediction | |
CN114208176A (zh) | 用于使用与图像大小相关的缩放比例的译码视频的方法和装置 | |
KR20220030988A (ko) | 스위칭가능 필터들로의 레퍼런스 픽처 리샘플링 | |
CN118714294A (zh) | 简化的局部照度补偿 | |
CN114402617A (zh) | 利用矢量裁剪的仿射译码 | |
CN113302939A (zh) | 从局部照度补偿参数推导中排除帧内译码的参考样本 | |
JP2023554269A (ja) | 重複ブロック動き補償 | |
CN113228677A (zh) | 用于照度补偿模式的修剪 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |