CN114402617A - 利用矢量裁剪的仿射译码 - Google Patents

利用矢量裁剪的仿射译码 Download PDF

Info

Publication number
CN114402617A
CN114402617A CN202080065276.1A CN202080065276A CN114402617A CN 114402617 A CN114402617 A CN 114402617A CN 202080065276 A CN202080065276 A CN 202080065276A CN 114402617 A CN114402617 A CN 114402617A
Authority
CN
China
Prior art keywords
motion vector
block
value
affine
horizontal
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
Application number
CN202080065276.1A
Other languages
English (en)
Inventor
D·鲁萨诺夫斯基
M·卡切夫维茨
Y·张
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN114402617A publication Critical patent/CN114402617A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/54Motion estimation other than block-based using feature points or meshes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/563Motion estimation with padding, i.e. with filling of non-object values in an arbitrarily shaped picture block or region for estimation purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

描述了用于视频译码和压缩的系统、方法和计算机可读存储介质。一些示例包括用于视频译码和压缩的仿射译码模式。一个示例是用于对视频数据进行译码的装置,该装置包括存储器和耦合到存储器的一个或多个处理器。一个或多个处理器被配置为:从视频数据获得当前译码块;确定用于当前译码块的控制数据;以及根据控制数据来确定一个或多个仿射运动矢量裁剪参数。一个或多个处理器进一步进行以下操作:选择当前译码块的样本;确定用于当前译码块的样本的仿射运动矢量;以及使用一个或多个仿射运动矢量裁剪参数来裁剪仿射运动矢量,以生成经裁剪的仿射运动矢量。

Description

利用矢量裁剪的仿射译码
技术领域
本申请涉及视频译码和压缩。更具体地,本申请涉及用于视频译码和压缩的仿射译码模式。
背景技术
许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据通常包括大量数据,以满足视频消费者和提供者的需求。例如,视频数据的消费者期望高质量、高保真度、高分辨率、高帧速率等的视频。因此,满足这些需求所需要的大量视频数据为处理和存储视频数据的通信网络和设备带来了负担。
各种视频译码技术可以用于对视频数据进行压缩。可以根据一种或多种视频译码标准来执行视频译码技术。例如,视频译码标准包括高效率视频译码(HEVC)、高级视频译码(AVC)、运动图像专家组(MPEG)2第2部分译码、VP9、开放媒体联盟(AOMedia)视频1(AV1)、基本视频译码(EVC)等。视频译码通常利用预测方法(例如,帧间预测、帧内预测等),预测方法利用在视频图像或序列中存在的冗余。视频译码技术的重要目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着不断发展的视频服务变得可用,需要具有提高的译码精度和效率的编码技术。
发明内容
本文描述了用于改进的视频处理的系统和方法。在一些示例中,描述了使用仿射译码模式来高效地对视频数据进行编码和解码的视频译码技术。
在一个说明性示例中,描述了一种对视频数据进行译码的方法。所述方法包括:从所述视频数据获得当前译码块;确定用于所述当前译码块的控制数据;根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;选择所述当前译码块的样本;确定用于所述当前译码块的所述样本的仿射运动矢量;以及使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
在另一说明性示例中,描述了一种非暂时性计算机可读存储介质。所述非暂时性计算机可读介质包括指令,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:从视频数据获得当前译码块;确定用于所述当前译码块的控制数据;根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;选择所述当前译码块的样本;确定用于所述当前译码块的所述样本的仿射运动矢量;以及使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
在另一说明性示例中,描述了另一种用于对视频数据进行译码的装置。所述装置包括:用于从所述视频数据获得当前译码块的单元;用于确定用于所述当前译码块的控制数据的单元;用于根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数的单元;用于选择所述当前译码块的样本的单元;用于确定用于所述当前译码块的所述样本的仿射运动矢量的单元;以及用于使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量的单元。
在另一说明性示例中,描述了一种用于对视频数据进行译码的装置。所述装置包括:存储器;以及耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:从所述视频数据获得当前译码块;确定用于所述当前译码块的控制数据;根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;选择所述当前译码块的样本;确定用于所述当前译码块的所述样本的仿射运动矢量;以及使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
在一些方面中,所述控制数据包括:在全样本单元中具有相关联的水平坐标和相关联的垂直坐标的位置;指定所述当前译码块的宽度的宽度变量;指定所述当前译码块的高度的高度变量;运动矢量的水平变化;运动矢量的垂直变化;以及基础缩放运动矢量。在一些示例中,控制数据还可以包括样本中的与所述当前译码块相关联的图片的高度和样本中的所述图片的宽度。
在一些方面中,所述一个或多个仿射运动矢量裁剪参数包括:水平最大变量;水平最小变量;垂直最大变量;以及垂直最小变量。在一些方面中,水平最小变量是由从水平最小图片值和水平最小运动矢量值中选择的最大值来定义的。
在一些方面中,所述水平最小图片值是根据所述相关联的水平坐标来确定的。在一些方面中,所述水平最小运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。在一些方面中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。在一些方面中,所述基础缩放运动矢量对应于所述当前译码块的左上角并且是根据控制点运动矢量值来确定的。在一些方面中,所述垂直最大变量是由从垂直最大图片值和垂直最大运动矢量值中选择的最小值来定义的。
在一些方面中,所述垂直最大图片值是根据所述图片的所述高度、所述相关联的垂直坐标和所述高度变量来确定的。在一些方面中,所述垂直最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定所述当前译码块的所述宽度的所述高度变量来确定的。
在一些方面中,示例从所述视频数据顺序地获得多个当前译码块;针对所述多个当前译码块中的块,以每译码块为基础来确定仿射运动矢量裁剪参数集合;以及针对所述多个当前译码块,以每块为基础使用所述仿射运动矢量裁剪参数集合来取回对应参考图片的部分。
在一些方面中,示例识别与所述当前译码块相关联的参考图片;以及存储所述参考图片的由所述一个或多个仿射运动矢量裁剪参数定义的一部分。在一些方面中,示例使用来自由所述经裁剪的仿射运动矢量指示的参考图片的参考图片数据来处理所述当前译码块。
在一些方面中,用于所述当前译码块的所述样本的所述仿射运动矢量是根据以下各项来确定的:第一基础缩放运动矢量值、运动矢量值的第一水平变化、运动矢量值的第一垂直变化、第二基础缩放运动矢量值、运动矢量值的第二水平变化、运动矢量值的第二垂直变化、所述样本的水平坐标和所述样本的垂直坐标。在一些这样的方面中,所述控制数据包括来自推导表的值。
在一些方面中,上述装置可以包括具有用于捕获一个或多个图片的相机的移动设备。在一些方面中,上述装置可以包括用于显示一个或多个图片的显示器。本发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独用于确定所要求保护的主题的范围。通过参照本专利的整个说明书的适当部分、任何或所有附图以及每个权利要求,应当理解该主题。
在参考以下说明书、权利要求和附图之后,前述内容以及其它特征和实施例将变得更加显而易见。
附图说明
下文参考以下附图详细描述了各种实现的示例:
图1是示出根据一些示例的编码设备和解码设备的框图;
图2A是示出根据一些示例的用于合并模式的空间相邻运动矢量候选的概念图;
图2B是示出根据一些示例的用于高级运动矢量预测(AMVP)模式的空间相邻运动矢量候选的概念图;
图3A是示出根据一些示例的时间运动矢量预测器(TMVP)候选的概念图;
图3B是示出根据一些示例的运动矢量缩放的概念图;
图4是示出根据一些示例的基于历史的运动矢量预测器(HMVP)表的图;
图5是示出根据一些示例的取回非邻接空间合并候选的图;
图6A是示出根据一些示例的在MVP预测中利用的空间和时间位置的图;
图6B是示出根据一些示例的在MVP预测中利用的空间和时间位置的各方面的图;
图6C是示出根据一些示例的用于空间MVP(S-MVP)的访问顺序的图;
图6D是示出根据一些示例的空间反向模式替代的图;
图7是示出根据一些示例的用于当前块的简化的仿射运动模型的图;
图8是示出根据一些示例的块的子块的运动矢量场的图;
图9是示出根据一些示例的仿射帧间(AF_INTER)模式下的运动矢量预测的图;
图10A和图10B是示出根据一些示例的仿射合并(AF_MERGE)模式下的运动矢量预测的图;
图11是示出根据一些示例的用于当前块的仿射运动模型的图;
图12是示出根据一些示例的用于当前块的另一仿射运动模型的图;
图13是示出根据一些示例的当前块和候选块的图;
图14是示出根据一些示例的当前块、当前块的控制点和候选块的图;
图15是示出根据一些示例的MPEG5 EVC中的仿射模型和空间邻域的图;
图16是示出根据一些示例的仿射模型和空间邻域的各方面的图;
图17是示出根据一些示例的仿射模型和空间邻域的各方面的图;
图18A是示出根据一些示例的使用门限的裁剪的各方面的图;
图18B是示出根据一些示例的使用门限的裁剪的各方面的图;
图18C是示出根据一些示例的使用门限的裁剪的各方面的图;
图19是示出根据本文描述的示例的利用仿射模式的译码的过程的流程图;
图20是示出根据一些示例的视频编码设备的框图;以及
图21是示出根据一些示例的视频解码设备的框图。
具体实施方式
下文提供了本公开内容的某些方面和实施例。如对于本领域技术人员将显而易见的,这些方面和实施例中的一些可以独立地应用,并且它们中的一些可以组合地应用。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本申请的实施例的透彻的理解。然而,将显而易见的是,各个实施例可以在没有这些具体细节的情况下实施。附图和描述并不旨在是限制性的。
随后的描述仅提供了示例实施例,而并不旨在限制本公开内容的范围、适用性或配置。确切地说,对示例性实施例的随后的描述将向本领域技术人员提供用于实现示例性实施例的可行描述。应当理解的是,在不背离如在所附的权利要求书中阐述的本申请的精神和范围的情况下,可以对元素的功能和排列进行各种改变。
如上所述,本文描述了用于改进的视频处理的示例。在一些示例中,描述了使用仿射译码模式来高效地对视频数据进行编码和解码的视频译码技术。仿射模型是可以用于近似与视频中的特定类型的图像运动相关联的流模式(尤其是与相机运动相关联的流模式(例如,视点的运动或用于视频流的捕获位置))的模型。视频处理系统可以包括仿射译码模式,其被配置为使用仿射运动模型对视频进行译码。下文描述了用于视频译码的仿射模式的额外细节。本文描述的示例包括通过改进仿射译码模式下的存储器带宽使用来改进视频译码设备的操作的操作和结构。在一些示例中,通过裁剪仿射译码模式所使用的运动矢量(这可以通过限制用于仿射译码的可能参考区域(例如,和相关联的数据)来减少在本地缓冲器中使用的数据)来产生存储器带宽改进。
一些系统使用每样本运动矢量生成,这可能极大地增加用于取回用于仿射译码的滤波器样本的存储器访问操作的数量。如果本地缓冲器能够容纳参考数据,则系统可以处置大量的取回操作,但是如果针对每次取回的参考数据是大的(例如,超过本地缓冲器大小,诸如解码图片缓冲器的大小),则存储器带宽使用可能使系统性能降级。通过限制与参考图片访问相关联的存储器带宽使用,可以在不使存储器带宽性能降级的情况下使用大量取回操作,从而改进设备操作。本文描述的示例可以在较大的视频译码系统的背景下以及作为视频译码设备的一部分来提供这样的好处。
视频译码设备实现视频压缩技术以高效地对视频数据进行编码和解码。视频压缩技术可以包括应用不同的预测模式,包括空间预测(例如,帧内预测(intra-frameprediction)或帧内预测(intra-prediction))、时间预测(例如,帧间预测(inter-frameprediction)或帧间预测(inter-prediction))、层间预测(跨视频数据的不同层)、和/或用于减少或去除在视频序列中固有的冗余的其它预测技术。视频编码器可以将原始的视频序列的每个图片分割为矩形区域,这些矩形区域被称为视频块或译码单元(下文将更详细地进行描述)。这些视频块可以是使用特定的预测模式进行编码的。
视频块可以以一种或多种方式被划分为一组或多组较小的块。块可以包括译码树块、预测块、变换块和/或其它合适的块。除非另外指定,否则通常对“块”的引用可以指代这样的视频块(例如,如本领域普通技术人员将理解的,译码树块、译码块、预测块、变换块、或其它适当的块或子块)。此外,这些块中的每个块在本文中也可以被互换地称为“单元”(例如,译码树单元(CTU)、译码单元、预测单元(PU)、变换单元(TU)等)。在一些情况下,单元可以指示在比特流中编码的译码逻辑单元,而块可以指示视频帧缓冲器中的过程所针对的一部分。
对于帧间预测模式,视频编码器可以在位于另一时间位置的帧(或图片)(其被称为参考帧或参考图片)中搜索与正被编码的块相似的块。视频编码器可以将搜索限制到距要被编码的块一定的空间位移。可以使用包括水平位移分量和垂直位移分量的二维(2D)运动矢量来定位最佳匹配。对于帧内预测模式,视频编码器可以基于来自相同图片内的先前编码的相邻块的数据,使用空间预测技术来形成预测块。
视频编码器可以确定预测误差。例如,可以将预测确定为正被编码的块和预测块中的像素值之间的差。预测误差也可以被称为残差。视频编码器还可以使用变换译码(例如,使用离散余弦变换(DCT)的形式、离散正弦变换(DST)的形式或其它合适的变换)来将变换应用于预测误差,以生成变换系数。在变换之后,视频编码器可以对变换系数进行量化。经量化的变换系数和运动矢量可以使用语法元素来表示,并且与控制信息一起形成对视频序列的经译码的表示。在一些情况下,视频编码器可以对语法元素进行熵译码,从而进一步减少对于其表示所需要的比特数量。
视频解码器可以使用以上讨论的语法元素和控制信息来构造用于解码当前帧的预测数据(例如,预测块)。例如,视频解码器可以将预测块和经压缩的预测误差相加。视频解码器可以通过使用经量化的系数对变换基函数进行加权来确定经压缩的预测误差。在经重构的帧与原始帧之间的差被称为重构误差。
如下文更详细地描述的,本文描述了用于提供对基于历史的运动矢量预测的改进的系统、装置、方法(也被称为过程)和计算机可读介质(统称为“系统和技术”)。本文描述的技术可以应用于各种基于块的视频译码技术中的一种或多种,其中视频是在逐块的基础上重构的。例如,本文描述的系统和技术可以应用于现有视频编解码器中的任何一者(例如,高效率视频译码(HEVC)、高级视频译码(AVC)或其它合适的现有视频编解码器),和/或可以是用于正在开发的任何视频译码标准和/或未来视频译码标准的高效译码工具,诸如通用视频译码(VVC)、联合探索模型(JEM)、VP9、AV1、基本视频译码(EVC)和/或正在开发或将开发的其它视频译码标准。
将在本文中关于各图讨论本文描述的系统和技术的各个方面。图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)输入之类的串行接口、lightening(闪电)连接器、和/或其它有线接口)、和/或在图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)。HEVC及其扩展已经由ITU-T视频译码专家组(VCEG)和ISO/IEC运动图像专家组(MPEG)的视频译码联合协作小组(JCT-VC)以及3D视频译码扩展开发联合协作小组(JCT-3V)开发。
MPEG和ITU-T VCEG也已经组建了联合探索视频小组(JVET),以探索和开发用于下一代视频译码标准的新视频译码工具,其被命名为通用视频译码(VVC)。参考软件被称为VVC测试模型(VTM))。VVC的目标是提供相比于现有HEVC标准而言在压缩性能方面的显著改进,从而辅助部署更高质量的视频服务和新兴应用(例如,诸如360°全向沉浸式多媒体、高动态范围(HDR)视频等)。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色度样本的二维阵列。色度(chrominance)样本在本文中也可以被称为“色度(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单元可以包括经译码的图片数据的一个切片或切片段(下文描述),并且非VCL NAL单元包括与一个或多个经译码的图片有关的控制信息。在一些情况下,NAL单元可以被称为分组。HEVC AU包括:包含经译码的图片数据的VCL NAL单元、以及与经译码的图片数据相对应的非VCL NAL单元(如果有的话)。除了其它信息之外,非VCL NAL单元还可以包含具有与经编码的视频比特流有关的高级信息的参数集。例如,参数集可以包括视频参数集(VPS)、序列参数集(SPS)和图片参数集(PPS)。在一些情况下,比特流的每个切片或其它部分可以引用单个有效的PPS、SPS和/或VPS,以允许解码设备112访问可以用于对比特流的切片或其它部分进行解码的信息。
NAL单元可以包含形成对视频数据的经译码的表示的比特序列(例如,经编码的视频比特流、比特流的CVS等),诸如在视频中的图片的经译码的表示。编码器引擎106通过将每个图片分割为多个切片来生成图片的经译码的表示。一切片是独立于其它切片的,使得可以对该切片中的信息进行译码,而不依赖于来自相同图片内的其它切片的数据。切片包括一个或多个切片段,其包括独立的切片段以及(如果存在的话)依赖于先前切片段的一个或多个从属切片段。
在HEVC中,将切片分割为亮度样本和色度样本的译码树块(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的大小可以是8x 8个样本、16x 16个样本、32x 32个样本、64x 64个样本、或高达对应的CTU的大小的任何其它适当的大小。短语“N x N”在本文中用于指代视频块在垂直和水平维度方面的像素尺寸(例如,8个像素x 8个像素)。块中的像素可以是按行和列来排列的。在一些实施例中,块在水平方向上可以不具有与垂直方向上相同数量的像素。与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相关联的像素差值可以被变换以产生变换系数。可以由编码器引擎206对变换系数进行量化。
一旦视频数据的图片被分割为CU,编码器引擎106就使用预测模式来预测每个PU。从原始视频数据中减去预测单元或预测块以获得残差(下文描述)。对于每个CU,可以使用语法数据在比特流内用信号通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用在图片内的空间上相邻的样本之间的相关性。例如,使用帧内预测,每个PU是使用例如DC预测来从相同图片中的相邻图像数据进行预测的以找到用于PU的平均值,使用平面预测以使平面表面适配PU,使用方向预测来从相邻数据进行推断,或者使用任何其它合适的预测类型。帧间预测使用在图片之间的时间相关性,以便推导出用于图像样本块的运动补偿预测。例如,使用帧间预测,每个PU是使用运动补偿预测来从一个或多个参考图片(按照输出顺序在当前图片之前或之后)中的图像数据预测的。例如,可以在CU级别处作出是使用图片间预测还是使用图片内预测来对图片区域进行译码的决定。
编码器引擎106和解码器引擎116(下文更加详细地描述)可以被配置为根据VVC进行操作。根据VVC,视频译码器(诸如编码器引擎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)、整数变换、小波变换、其它合适的变换函数、或其任何组合的。在一些情况下,可以将一个或多个块变换(例如,具有大小32x 32、16x16、8x 8、4x 4或其它合适的大小的内核)应用于每个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对基础层进行译码,而可以使用HEVC标准的SHVC和/或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进行译码,以推导运动信息集合。在一些情况下,当使用帧内预测模式对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包括示出HEVC中的空间相邻候选的概念图。图2A示出了用于合并模式的空间相邻运动矢量(MV)候选。图2B示出了用于AMVP模式的空间相邻运动矢量(MV)候选。根据用于特定PU(PU0)的相邻块来推导空间MV候选,但是对于合并和AMVP模式,根据块来生成候选的方法不同。
在合并模式下,编码器可以通过考虑来自各种运动数据位置的合并候选来形成合并候选列表。例如,如图2A所示,关于在图2A中利用数字0-4示出的空间相邻运动数据位置,可以推导最多四个空间MV候选。MV候选可以按照数字0-4所示的顺序在合并候选列表中排序。例如,位置和顺序可以包括:左侧位置(0)、上方位置(1)、右上方位置(2)、左下方位置(3)和左上方位置(4)。
在图2B中示出的AVMP模式下,相邻块被划分为两组:包括块0和1的左侧组,以及包括块2、3和4的上方组。对于每个组,引用与用信号通知的参考索引所指示的参考图片相同的参考图片的相邻块中的潜在候选具有被选择以形成该组的最终候选的最高优先级。有可能所有相邻块都不包含指向同一参考图片的运动矢量。因此,如果无法找到这样的候选,则将缩放第一可用候选以形成最终候选;因此可以补偿时间距离差。
图3A和图3B包括示出HEVC中的时间运动矢量预测的概念图。将时间运动矢量预测器(TMVP)候选(如果启用并且可用的话)添加到MV候选列表中在空间运动矢量候选之后。用于TMVP候选的运动矢量推导的过程与合并模式和AMVP模式两者相同。然而,在一些情况下,在合并模式下用于TMVP候选的目标参考索引始终被设置为零。
用于TMVP候选推导的主要块位置是在同位PU之外的右下方块(如在图3A中示为块“T”),以补偿用于生成空间相邻候选的上方块和左侧块的偏移。然而,如果该块位于当前CTB(或LCU)行之外或者运动信息不是可用的,则利用PU的中心块替换该块。从在切片级别指示的同位图片的同位PU推导用于TMVP候选的运动矢量。与AVC中的时间直接模式类似,TMVP候选的运动矢量可以经受运动矢量缩放,运动矢量缩放被执行以补偿距离差。
在HEVC、VVC和其它视频译码规范中也涵盖了运动预测的其它方面。例如,一个方面包括运动矢量缩放。在运动矢量缩放中,假设运动矢量的值与按照呈现时间在图片之间的距离成比例。在一些示例中,第一运动矢量可以与两个图片(包括第一参考图片和包括第一运动矢量的第一包含图片)相关联。第一运动矢量可以用于预测第二运动矢量。为了预测第二运动矢量,可以基于与第一参考图片和第一包含图片相关联的图片顺序计数(POC)值来计算第一运动的第一包含图片与第一参考图片之间的第一距离。
第二参考图片和第二包含图片可以与要预测的第二运动矢量相关联,其中第二参考图片可以不同于第一参考图片,并且第二包含图片可以不同于第一包含图片。可以基于与第二参考图片和第二包含图片相关联的POC值来计算第二参考图片与第二包含图片之间的第二距离,其中第二距离可以不同于第一距离。为了预测第二运动矢量,可以基于第一距离和第二距离来对第一运动矢量进行缩放。对于空间相邻候选,第一运动矢量和第二运动矢量的第一包含图片和第二包含图片可以分别相同,而第一参考图片和第二参考图片可以不同。在一些示例中,对于空间和时间相邻候选,运动矢量缩放可以应用于TMVP和AMVP模式。
运动预测的另一方面包括人工运动矢量候选生成。例如,如果运动矢量候选列表不完整,则生成人工运动矢量候选,并且将其插入在运动矢量候选列表的末尾,直到获得所有候选为止。在合并模式下,存在两种类型的人工MV候选:第一类型,其包括仅针对B切片推导的组合候选;以及第二类型,其包括仅用于AMVP的零候选(如果第一类型没有提供足够的人工候选的情况下)。对于已经在运动矢量候选列表中并且具有相关运动信息的每对候选,可以通过引用列表0中的图片的第一候选的运动矢量和引用列表1中的图片的第二候选的运动矢量的组合来推导双向组合运动矢量候选。
合并模式和AMVP模式的另一方面包括用于候选插入的修剪过程。例如,来自不同块的候选可能恰好相同,这会降低合并和/或AMVP候选列表的效率。可以应用修剪过程以解决该问题。修剪过程包括将候选与在当前候选列表中已经存在的候选进行比较,以避免插入相同或重复的候选。为了降低比较的复杂性,可以针对少于要插入候选列表中的所有潜在候选执行修剪过程。
在一些示例中,可以实现增强的运动矢量预测。例如,在诸如VVC之类的视频译码标准中指定了一些帧间译码工具,根据VCC可以推导或细化用于当前块的运动矢量预测或合并预测的候选列表。下文描述了此类方法的示例。
基于历史的运动矢量预测(HMVP)是一种运动矢量预测方法,其允许每个块从过去解码的MV(除了紧邻的因果相邻运动场中的MV)的列表中找到其MV预测器。例如,除了紧邻的因果相邻运动场中的MV之外,使用HMVP,还可以从先前解码的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清空。因此,在索引值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以各自的索引值4到0存在于HMVP表400的条目中。例如,HMVP0可以是在索引值0处的第一条目处插入到HMVP表400中的最旧或最久远HMVP候选。可以顺序地移位HMVP0,以便为最近插入的和较新的HMVP候选HMVP1到HMVP4留出空间,直到HMVP0到达在附图标记400A的状态中所示的索引值4处的第二条目。对应地,HMVP4可以是插入到索引值0处的第一条目中的最新HMVP候选。因此,HMVP0是在HMVP表400中相对于HMVP4而言较旧或较久远的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候选可以用于构造可以用于当前块的运动预测的其它候选列表。例如,可以将来自HMVP表400的一个或多个HMVP候选添加到合并候选列表中,例如,作为额外合并候选。在一些示例中,来自同一HMVP表400或另一这样的HMVP表的一个或多个HMVP候选可以被添加到高级运动矢量预测(AMVP)候选列表中,例如,作为额外AMVP预测器。
例如,在合并候选列表构造过程中,被存储在HMVP表400的条目中的一些或所有HMVP候选可以被插入合并候选列表中。在一些示例中,将HMVP候选插入合并候选列表中可以包括在合并候选列表中的时间运动矢量预测器(TMVP)候选之后插入HMVP候选。如先前参照图3A和图3B讨论的,如果TMVP候选被启用并且可用,则可以将其添加到MV候选列表中在空间运动矢量候选之后。
在一些示例中,在构造合并候选列表时,可以对HMVP候选应用上述修剪过程。例如,一旦合并候选列表中的合并候选的总数达到最大允许合并候选数量,就可以终止合并候选列表构造过程,并且不将更多的HMVP候选插入合并候选列表中。合并候选列表中的最大允许合并候选数量可以是预定数量,或者是可以是例如从编码器用信号向解码器通知的数量,在该解码器处可以构造合并候选列表。
在构造合并候选列表的一些示例中,可以在合并候选列表中插入一个或多个其它候选。在一些示例中,可以与当前块不邻接的先前译码的块的运动信息可以用于更高效的运动矢量预测。例如,在构造合并候选列表时,可以使用非邻接空间合并候选。在一些情况下,非邻接空间合并候选的构造(例如,在JVET-K0228中描述的,据此通过引用的方式将其全部内容并入并且用于所有目的)涉及从两个非邻接的相邻位置推导新空间候选(例如,从距左侧/上方最近的非邻接块,如在图5中示出并且在下文讨论的)。这些块可以被限制在与当前块相距1个CTU的最大距离内。非邻接候选的取回过程开始于在垂直方向上追踪先前解码的块。当遇到帧内块或追溯距离达到1CTU大小时,垂直反向追踪停止。取回过程在水平方向上追踪先前解码的块。用于停止水平取回过程的准则取决于是否存在成功地取回的垂直非邻接候选。如果没有取回垂直非邻接候选,则当遇到帧内或追溯距离超过1个CTU大小的门限时,水平取回过程停止。如果存在取回的垂直非邻接候选,则当遇到包含与垂直非邻接候选不同的MV的帧间块或追溯距离超过1个CTU大小的门限时,水平取回过程停止。在一些示例中,可以将非邻接空间合并候选插入在合并候选列表中的TMVP候选之前。在一些示例中,可以将非邻接空间合并候选插入在同一合并候选列表中的TMVP候选之前,该合并候选列表可以包括在TMVP候选之后插入的一个或多个HMVP候选。下面将参照图5描述识别和取回可以插入到合并候选列表中的一个或多个非邻接空间合并候选。
图5是示出包括要被译码的当前块502的图片或切片500的框图。在一些示例中,可以构造用于对当前块502进行译码的合并候选列表。例如,可以从合并候选列表中的一个或多个合并候选获得用于当前块的运动矢量。合并候选列表可以包括确定非邻接空间合并候选。例如,非邻接空间合并候选可以包括从相对于当前块502的两个非邻接的相邻位置推导的新空间候选。
示出了当前块502的若干邻接或相邻块,包括左上方块B2 510(在当前块502的左上方)、上方块B1 512(在当前块502上方)、右上方块B0 514(在当前块502的右上方)、左侧块A1 516(在当前块502左侧)和左下方块A0 518(在当前块502的左下方)。在一些示例中,可以从在当前块上方和/或左侧的一个最近非邻接块获得非邻接空间合并候选。
在一些示例中,用于当前块502的非邻接空间合并候选可以包括在垂直方向上(在当前块502上方)和/或在水平方向上(在当前块502左侧)追踪先前解码的块。垂直追溯距离504指示相对于当前块502(例如,当前块502的上边界)和垂直非邻接块VN 520的垂直距离。水平追溯距离506指示相对于当前块502(例如,当前块502的左边界)和水平非邻接块HN522的水平距离。垂直追溯距离504和水平追溯距离506被限制为等于一个译码树单元(CTU)的大小的最大距离。
可以通过分别在垂直方向和水平方向上追踪先前解码的块来识别非邻接空间合并候选,诸如垂直非邻接块VN 520和水平非邻接块HN 522。例如,取回垂直非邻接块VN 520可以包括垂直反向追踪过程,以确定在垂直追溯距离504(被约束为一个CTU的最大大小)内是否存在经帧间译码的块。如果存在这样的块,则将其标识为垂直非邻接块VN 520。在一些示例中,可以在垂直反向追踪过程之后执行水平反向追踪过程。水平反向追踪过程可以包括确定在水平追溯距离506(被约束为一个CTU的最大大小)内是否存在经帧间译码的块,并且如果发现这样的块,则将其识别为水平非邻接块HN 522。
在一些示例中,可以取回垂直非邻接块VN 520和水平非邻接块HN 522中的一者或多者以用作非邻接空间合并候选。取回过程可以包括:如果在垂直反向追踪过程中识别出垂直非邻接块VN 520,则取回垂直非邻接块VN 520。取回过程可以继续进行水平反向追踪过程。如果在垂直反向追踪过程中未识别出垂直非邻接块VN 520,则当遇到经帧间译码的块或水平追溯距离506超过最大距离时,可以终止水平反向追踪过程。如果识别出并且取回垂直非邻接块VN 520,则当遇到包含与垂直非邻接块VN 520中包含的MV不同的MV的经帧间译码的块时,或者如果水平追溯距离506超过最大距离,则终止水平反向追踪过程。如前所述,可以将所取回的非邻接空间合并候选(诸如垂直非邻接块VN 520和水平非邻接块HN 522)中的一者或多者添加到合并候选列表中的TMVP候选之前。
返回参照图4,在一些情况下,HMVP候选也可以用于构造AMVP候选列表。在AMVP候选列表构造过程中,可以将被存储在同一HMVP表400(或与用于合并候选列表构造的HMVP表不同的HMVP表)的条目中的一些或全部HMVP候选插入AMVP候选列表中。在一些示例中,在AMVP候选列表中插入HMVP候选可以包括将HMVP候选的条目集合(例如,k个最近或最久远的条目)插入AMVP候选列表中的TMVP候选之后。在一些示例中,在构造AMVP候选列表时,可以对HMVP候选应用上述修剪过程。在一些示例中,仅有具有与AMVP目标参考图片相同的参考图片的那些HMVP候选可以用于构造AMVP候选列表。
因此,基于历史的运动矢量预测器(HMVP)预测模式可以涉及使用基于历史的查找表,诸如包括一个或多个HMVP候选的HMVP表400。可以在帧间预测模式(诸如合并模式和AMVP模式)下使用HMVP候选。在一些示例中,不同的帧间预测模式可以使用不同的方法来从HMVP表400中选择HMVP候选。
在一些情况下,可以使用替代的运动矢量预测设计。例如,可以利用用于空间MVP(S-MVP)预测和时间MVP(T-MVP)预测的替代设计。例如,在合并模式的一些实现中(在一些情况下,合并模式可以被称为跳过模式或直接模式),在图6A、图6B和图6C中所示的空间和时间MVP候选可以按照在这些图中所示的给定顺序被访问(或搜索或选择),以填充MVP列表。
图6A示出了用于当前块600的MVP候选A、B、(C、A1|B1)、A0、B2的位置。图6B示出了在中心位置610处在时间上同位的邻居,其具有用于当前块600的回退候选H。在MVP预测中使用的空间和时间位置如图6A所示。在图6C中利用搜索顺序块0、1、2、3、4和5示出了用于S-MVP的访问顺序(例如,搜索顺序或选择顺序)的示例。在图6D中示出了用于搜索顺序块0-5的空间反向模式(与图6C中的顺序相比)替代。
用作MVP候选的空间邻居是A、B、(C、A1|B1)、A0、B2,这是利用两阶段过程来实现的,其中在图6C中标记了访问顺序:
1、组1:
a.A、B、C(在HEVC记法中与B0同位)
b.A1或B1,取决于MVP在C位置的可用性和块分割的类型。
2、组2:
a.A0和B2
用作MVP候选的在时间上同位的邻居是在当前块的中心位置610处同位的块和在当前块之外最右下方位置处的块:
1、组3:
a.C、H
b.如果发现H位置在同位图片之外,则可以替代地使用回退H位置。
在一些实现中,取决于使用的块分割和译码顺序,并且可以使用反向S-MVP候选顺序,如图6D所示。
在HEVC和早期的视频译码标准中,仅有平移运动模型应用于运动补偿预测(MCP)。例如,可以针对图片的每个块(例如,每个CU或每个PU)确定平移运动矢量。然而,在现实世界中,除了平移运动之外,还存在更多种类的运动,包括缩放(例如,放大和/或缩小)、旋转、透视运动以及其它不规则运动。在ITU-T VCEG和MPEG的联合探索模型(JEM)中,可以应用仿射变换运动补偿预测,以使用仿射译码模式来提高译码效率。
图7是示出由两个运动矢量描述的当前块702的仿射运动场的图,这两个运动矢量被示为两个对应控制点510和512的矢量720
Figure BDA0003550944630000171
和矢量722
Figure BDA0003550944630000172
使用控制点710的运动矢量720
Figure BDA0003550944630000173
和控制点712的运动矢量722
Figure BDA0003550944630000174
可以通过以下等式来描述当前块702的运动矢量场(MVF):
Figure BDA0003550944630000175
在等式(1)中,vx和vy形成用于当前块702内的每个像素的运动矢量,x和y提供当前块702内的每个像素的位置(例如,块中的左上方像素可以具有坐标或索引(x,y)=(0,0)),并且(v0x,v0y)是左上角控制点710的运动矢量,w是当前块702的宽度,并且(v1x,v1y)是右上角控制点712的运动矢量722。v0x和v1x值是相应运动矢量的水平值,并且v0y和v1y值是相应运动矢量的垂直值。额外控制点(例如,四个控制点、六个控制点、八个控制点或某个其它数量的控制点)可以通过例如在当前块702的下角、当前块702的中心或当前块702中的其它位置添加额外控制点矢量来定义。
上述等式(1)示出了4-参数运动模型,其中四个仿射参数a、b、c和d被定义为:
Figure BDA0003550944630000176
Figure BDA0003550944630000177
c=v0x;以及d=v0y。使用等式(1),给定左上角控制点710的运动矢量(v0x,v0y)和右上角控制点712的运动矢量(v1x,v1y),可以使用每个像素位置的坐标(x,y)来计算用于当前块的每个像素的运动矢量。例如,对于当前块702的左上方像素位置,(x,y)的值可以等于(0,0),在这种情况下,用于左上方像素的运动矢量变为Vx=v0x和Vy=v0y。为了进一步简化MCP,可以应用基于块的仿射变换预测。
图8是示出被划分为子块(包括示出的子块804、806和808)的当前块802(例如,其可以类似于当前块600或当前块702)的基于块的仿射变换预测的图。在图8中示出的示例包括4x 4分区,共有16个子块。在其它示例中,可以使用任何合适的分区和对应数量的子块。可以使用等式(1)针对每个子块来推导运动矢量。在一些示例中,推导每个4x 4子块的运动矢量,根据等式(1)来计算每个子块的中心样本的运动矢量(如图8所示),如针对子块804推导的运动矢量805、针对子块806推导的运动矢量807和针对子块808推导的运动矢量809所示,每个运动矢量来自对应子块的中心样本。在其它示例中,可以使用其它样本。在一些示例中,每个所得到的运动矢量可以被舍入到例如1/16分数精确度或其它合适的精确度(例如,1/4、1/8等)。可以使用子块的推导出的运动矢量来应用运动补偿,以生成每个子块的预测。例如,解码设备可以接收描述控制点810的运动矢量
Figure BDA0003550944630000181
820和控制点812的运动矢量
Figure BDA0003550944630000182
822的四个仿射参数(a、b、c、d),并且可以根据描述每个子块的中心样本的位置的像素坐标索引来计算每子块运动矢量。在MCP之后,每个子块的高精确度运动矢量可以被舍入,如上所述,并且可以被保存为与平移运动矢量相同的精确度。此外,在一些示例中,可以限制仿射模式下的运动矢量,以限制要在仿射译码操作期间使用的参考数据,所述仿射译码操作将运动矢量用作仿射译码模式下的仿射运动矢量。在一些这样的示例中,裁剪可以应用于这样的矢量,如下面更详细地描述的,尤其是关于图18A、18B和18C描述的。
图9是示出仿射帧间(AF_INTER)模式下的运动矢量预测的示例的图。在JEM中,存在两种仿射运动模式:仿射帧间(AF_INTER)模式和仿射合并(AF_MERGE)模式。在一些示例中,当CU具有大于8个像素的宽度和高度时,可以应用AF_INTER模式。可以在比特流中放置(或用信号通知)关于块(例如,在CU级别)的仿射标志,以指示是否向块应用了AF_INTER模式。在图9的示例中,在AF_INTER模式下,可以使用相邻块来构造运动矢量对的候选列表。例如,对于位于当前块902的左上角的子块910,可以从在子块910左上方的相邻块920、在子块910上方的相邻块B 922和在子块910左侧的相邻块C 924中选择运动矢量v0。作为另外的示例,对于位于当前块902的右上角的子块912,可以分别从在上方和右上方方向上的相邻块D926和相邻块E 928中选择运动矢量v1。可以使用相邻块来构造运动矢量对的候选列表。例如,给定分别对应于块A920、B 922、C 924、D 926和E 928的运动矢量vA、vB、vC、vD和vE,运动矢量对的候选列表可以表达为{(v0,v1)|v0={vA,vB,vC},v1={vD,vE}}。
如上所述并且如图9所示,在AF_INTER模式下,可以从块A 920、B 922或C 924的运动矢量中选择运动矢量v0。可以根据参考列表以及用于相邻块的参考的POC、用于当前CU(例如,当前块902)的参考的POC和当前CU的POC之间的关系来对来自相邻块(例如,块A、B或C)的运动矢量进行缩放。在这些示例中,可以从参考列表确定一些或全部POC。从相邻块D926或E 928中选择v1类似于选择v0
在一些情况下,如果候选列表的数量少于两个,则可以通过复制AMVP候选中的每个AMVP候选来利用运动矢量对填充候选列表。当候选列表大于二时,在一些示例中,可以首先根据相邻运动矢量的一致性对候选列表中的候选进行排序(例如,一致性可以是基于运动矢量对候选中的两个运动矢量之间的相似性的)。在这样的示例中,前两个候选被保留,并且其余的候选可以被丢弃。
在一些示例中,率失真(RD)成本检查可以用于确定选择哪个运动矢量对候选作为当前CU(例如,当前块902)的控制点运动矢量预测(CPMVP)。在一些情况下,可以在比特流中用信号通知(或以其它方式指示)指示CPMVP在候选列表中的位置的索引。一旦确定当前仿射CU的CPMVP(基于运动矢量对候选),就可以应用仿射运动估计,并且可以确定控制点运动矢量(CPMV)。在一些情况下,可以在比特流中用信号通知CPMV和CPMVP的差异。CPMV和CPMVP两者包括两个平移运动矢量集合,在这种情况下,仿射运动信息的信令成本高于平移运动的信令成本。
图10A和图10B示出了在AF_MERGE模式下的运动矢量预测的示例。当使用AF_MERGE模式对当前块802(例如,CU)进行译码时,可以从有效相邻重构块获得运动矢量。例如,可以选择来自利用仿射模式进行译码的有效相邻重构块的第一块作为候选块。如图10A中所示,可以从相邻块A 1020、B 1022、C 1024、D 1026和E 1028的集合中选择相邻块。可以按照特定的选择顺序来考虑相邻块以被选择作为候选块。选择顺序的一个示例是左侧邻居(例如,块A 1020),接着是上方邻居(块B 1022)、右上方邻居(块C 1024)、左下方邻居(块D 1026)和左上方邻居(块E 1028)。
如上所述,被选择的相邻块可以是已经利用仿射模式进行译码的第一块(例如,按照选择顺序)。例如,块A 820可能已经在仿射模式下被译码。如图10B中所示,块A 1020可以被包括在相邻CU 1004中。对于相邻CU 1004,可能已经推导出用于相邻CU 1004的左上角的运动矢量(v2 1030)、用于右上角的运动矢量(v3 1032)和用于左下角(v4 1034)的运动矢量。在上述示例中,根据v2 1030、v3 1032和v4 1034来计算用于当前块1002的左上角的控制点运动矢量v0 1040。可以确定当前块1002的右上角的控制点运动矢量v1 1042。
一旦已经推导出当前块1002的控制点运动矢量(CPMV)(v0 1040和v1 1042),就可以应用等式(1)来确定用于当前块1002的运动矢量场。为了识别当前块1002是否是利用AF_MERGE模式进行译码的,当存在至少一个以仿射模式进行译码的相邻块时,可以在比特流中包括仿射标志。
在许多情况下,仿射运动估计的过程包括在编码器侧通过使原始块和仿射运动预测块之间的失真最小化来确定用于块的仿射运动。由于仿射运动具有与平移运动相比更多的参数,因此仿射运动估计可能比平移运动估计更复杂。在一些情况下,可以执行基于信号的泰勒展开的快速仿射运动估计方法来确定仿射运动参数(例如,4-参数模型中的仿射运动参数a、b、c、d)。
快速仿射运动估计可以包括基于梯度的仿射运动搜索。例如,给定在时间t处的像素值It(其中t0是参考图片的时间),针对像素值It的一阶泰勒展开可以确定为:
Figure BDA0003550944630000191
其中
Figure BDA0003550944630000192
Figure BDA0003550944630000193
分别是x和y方向上的像素梯度G0x、G0y,而
Figure BDA0003550944630000194
Figure BDA0003550944630000195
指示针对像素值It的运动矢量分量Vx和Vy。用于当前块中的像素It的运动矢量指向参考图片中的像素Ito
可以如下将等式(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的解:
Figure BDA0003550944630000196
一旦确定了定义用于控制点的仿射运动矢量的仿射运动参数,就可以使用仿射运动参数(例如,使用等式(4)和(5),它们也在等式(1)中表示)来确定每像素或每子块运动矢量。可以针对当前块(例如,CU)的每个像素执行等式(3)。例如,如果当前块是16像素×16像素,则等式(6)中的最小二乘解可以用于通过使256个像素上的总体值最小化来推导用于当前块的仿射运动参数(a,b,c,d)。
在用于视频数据的仿射运动模型中可以使用任何数量的参数。例如,6-参数仿射运动或其它仿射运动可以采用与上文针对4-参数仿射运动模型描述的方式相同的方式求解。例如,6-参数仿射运动模型可以描述为:
Figure BDA0003550944630000201
在等式(7)中,(vx,vy)是坐标(x,y)处的运动矢量,并且a、b、c、d、e和f是六个仿射参数。用于块的仿射运动模型也可以由在块的三个角处的三个运动矢量
Figure BDA0003550944630000202
Figure BDA0003550944630000203
Figure BDA0003550944630000204
来描述。
图11是示出由三个对应的控制点1110、1112和1114处的三个运动矢量1120、1122和1124描述的当前块1102的仿射运动场的图。运动矢量1120(例如,
Figure BDA0003550944630000205
)在位于当前块1102的左上角的控制点1110处,运动矢量1122(例如,
Figure BDA0003550944630000206
)在位于当前块1102的右上角的控制点1112处,并且运动矢量1124(例如,
Figure BDA0003550944630000207
)在位于当前块1102的左下角的控制点1114处。当前块1102的运动矢量场(MVF)可以通过以下等式来描述:
Figure BDA0003550944630000208
等式(8)表示6-参数仿射运动模型,其中,w和h是当前块1102的宽度和高度。
虽然上文参考等式(1)描述了4-参数运动模型,但是使用当前块的宽度和高度的简化4-参数仿射模型可以通过以下等式来描述:
Figure BDA0003550944630000209
基于等式(9)的用于块的简化4-参数仿射模型可以由块的四个角中的两个角处的两个运动矢量
Figure BDA00035509446300002010
Figure BDA00035509446300002011
来描述。运动场可以被描述为:
Figure BDA00035509446300002012
如前所述,运动矢量
Figure BDA00035509446300002013
在本文中称为控制点运动矢量(CPMV)。用于4-参数仿射运动模型的CPMV不一定与用于6-参数仿射运动模型的CPMV相同。在一些示例中,可以为仿射运动模型选择不同的CPMV。
图12是示出用于当前块1202的仿射运动模型的控制点矢量的选择的图。针对当前块1202示出了四个控制点1210、1212、1214和1216。运动矢量1220(例如,
Figure BDA00035509446300002014
)在位于当前块1202的左上角的控制点1210处,运动矢量1222(例如,
Figure BDA00035509446300002015
)在位于当前块1202的右上角的控制点1212处,运动矢量1224(例如,
Figure BDA00035509446300002016
)在位于当前块1202的左下角的控制点1214处,并且运动矢量1226(例如,
Figure BDA00035509446300002017
)在位于当前块1202的右下角的控制点1216处。
在一个示例中,对于4-参数仿射运动模型(根据等式(1)或等式(10)),可以从四个运动矢量
Figure BDA00035509446300002018
中的任何两个运动矢量中选择控制点对。在另一示例中,对于6-参数仿射运动模型,可以从四个运动矢量
Figure BDA00035509446300002019
中的任何三个运动矢量中选择控制点对。基于所选择的控制点运动矢量,可以例如使用所推导的仿射运动模型来计算用于当前块1002的其它运动矢量。
在一些示例中,也可以使用替代仿射运动模型表示。例如,基于增量运动矢量的仿射运动模型可以由坐标(x0,y0)处的锚运动矢量
Figure BDA0003550944630000211
水平增量运动矢量
Figure BDA0003550944630000212
和垂直增量运动矢量
Figure BDA0003550944630000213
表示。通常,坐标(x,y)处的运动矢量
Figure BDA0003550944630000214
可以计算为
Figure BDA0003550944630000215
在一些示例中,基于CPMV的仿射运动模型表示可以被转换为具有增量运动矢量的替代仿射运动模型表示。例如,增量运动矢量仿射运动模型表示中的
Figure BDA0003550944630000216
与左上方CPMV相同,
Figure BDA0003550944630000217
Figure BDA0003550944630000218
要注意的是,对于这些矢量运算,加法、除法和乘法是按元素应用的。
在一些示例中,可以使用仿射运动预测器来执行仿射运动矢量预测。在一些示例中,用于当前块的仿射运动预测器可以从相邻译码块的仿射运动矢量或法向运动矢量来推导。如上所述,仿射运动预测器可以包括继承的仿射运动矢量预测器(例如,使用仿射合并(AF_MERGE)模式继承的)和构造的仿射运动矢量预测器(例如,使用仿射帧间(AF_INTER)模式构造的)。
继承的仿射运动矢量预测器(MVP)使用相邻译码块的一个或多个仿射运动矢量来推导当前块的预测CPMV。继承的仿射MVP是基于关于当前块与相邻译码块共享相同的仿射运动模型的假设的。相邻译码块被称为相邻块或候选块。可以从不同的空间或时间相邻位置选择相邻块。
图13是示出从相邻块1302(块A)继承的当前块1302的仿射MVP的图。相邻块1302的仿射运动矢量依据在控制点1320、1322和1324处的相应的运动矢量1330、1332和
Figure BDA0003550944630000219
表示,如下:
Figure BDA00035509446300002110
在一个示例中,相邻块1304的大小可以由参数(w,h)表示,其中w是相邻块1304的宽度并且h是相邻块1304的高度。相邻块1304的控制点的坐标表示为(x0,y0)、(x1,y1)和(x2,y2)。可以在相应的控制点1310、1312和1314处针对当前块1302来预测仿射运动矢量1340、1342和1344,其被表示为
Figure BDA00035509446300002111
Figure BDA00035509446300002112
通过用当前块1302的控制点与相邻块1304的左上方控制点之间的坐标差替换等式(8)中的(x,y),可以推导用于当前块1302的预测仿射运动矢量
Figure BDA00035509446300002113
Figure BDA00035509446300002114
如以下等式中描述的:
Figure BDA00035509446300002115
Figure BDA00035509446300002116
Figure BDA00035509446300002117
在等式(11)-(13)中,(x0’,y0’)、(x1’,y1’)和(x2’,y2’)是当前块1102的控制点的坐标。如果被表示为增量MV,则
Figure BDA00035509446300002118
并且
Figure BDA00035509446300002119
Figure BDA00035509446300002120
类似地,如果相邻译码块(例如,相邻块1304)的仿射运动模型是4-参数仿射运动模型,则可以在推导用于当前块1102的控制点处的仿射运动矢量时应用等式(10)。在一些示例中,使用等式(10)来获得4-参数仿射运动模型可以包括避开上述等式(13)。
图14是示出供在针对当前块1402继承的仿射MVP模型中使用的相邻候选块的可能位置的图。例如,当前块的控制点1410、1412和1414处的仿射运动矢量1440、1442和1444或
Figure BDA00035509446300002121
可以从相邻块1430(块A0)、1426(块B0)、1428(块B1)、1432(块A1)和/或1420(块B2)之一来推导。在一些情况下,也可以使用相邻块1424(块A2)和/或1422(块B3)。更具体地,位于当前块1402的左上角的控制点1410处的运动矢量1440(例如,
Figure BDA0003550944630000221
)可以从位于控制点1410左上方的相邻块1420(块B2)、位于控制点1410上方的相邻块1422(块B3)或者从位于控制点1410左侧的相邻块1424(块A2)继承;位于当前块1402的右上角的控制点1412处的运动矢量1442或
Figure BDA0003550944630000222
可以从位于控制点1410上方的相邻块1426(块B0)或位于控制点1410右上方的相邻块1428(块B1)继承;以及位于当前块1402左下角的控制点1414处的运动矢量1444或
Figure BDA0003550944630000223
可以从位于控制点1410左侧的相邻块1430(块A0)或位于控制点1410左下方的相邻块1432(块A1)继承。
目前,在一些设计中(例如,在MPEG5基本视频译码(EVC)中),当仿射继承是来自上方CTU行中的仿射译码相邻块时,采用左下方和右下方的子块MV作为CPMV,并且始终使用4-参数仿射模型来推导当前CU的CPMV。
图15是示出MPEG5 EVC中的仿射模型和空间邻域的图。图15示出了当前CTU 1500,其具有相邻候选块1540(具有子块1542和1544)以及左侧邻居子块1552和左下方邻居子块1554。虽然图15使用CTU提供了说明性示例,但是在其它示例中,当前CTU可以是另一种块,诸如CU、PU、TU等。当前CTU 1500包括具有控制点1510、1512和1514以及相关联的CPMV1520、1522和1524的当前块1502。左上方CPMV 1520被称为
Figure BDA0003550944630000224
并且右上方CPMV 1522被示为
Figure BDA0003550944630000225
在所示出的示例中,CPMV 1520和1522被指定为当前CU(例如,当前块1502)的CPMV,其将通过用于相邻仿射译码CU(包括位于当前CTU 1500上方的候选块1540)的具有相关联的
Figure BDA0003550944630000226
(未示出)的左下方子块1542和具有运动矢量
Figure BDA0003550944630000227
(未示出)的右下方子块1544的运动矢量来推导。CPMV 1520和1522在图15中被示为
Figure BDA0003550944630000228
Figure BDA0003550944630000229
并且可以通过以下等式来推导:
Figure BDA00035509446300002210
Figure BDA00035509446300002211
其中neiW是相邻块的宽度,curW是当前块的宽度,posNeiX是相邻块的左上方像素(或在一些示例中,为样本)的x坐标,并且posCurX是当前块的左上方像素(或在一些示例中,为样本)的x坐标。
在一些情况下,存在三种仿射预测运动模式:AF_4_INTER模式、AF_6_INTER和AF_MERGE模式。当合并/跳过标志为真(例如,等于值1)并且CU的宽度和高度两者都大于或等于8个样本(或其它样本数量)时,在比特流中用信号通知CU级别(或其它块级别)的仿射标志,以指示是否使用仿射合并模式。并且当CU被译码为AF_MERGE时,用信号通知具有最大值4(或在一些情况下,为其它值)的合并候选索引以指定仿射合并候选列表中的哪个运动信息候选用于CU。
可以按照以下步骤构造仿射合并候选列表:1)插入基于模型的仿射候选,其中基于模型的候选是从其有效空间相邻仿射译码块的仿射运动模型推导的。用于候选位置的扫描顺序可以与图6A、图6B和/或图6C中的合并列表顺序相同,并且包括从0到5的位置。2)插入基于控制点的仿射候选。如果不满足对仿射合并列表大小的限制,则插入基于控制点的仿射候选。基于控制点的仿射候选意指通过组合每个控制点的相邻运动信息以形成仿射合并候选来构造候选。
使用总共4个控制点或CP(表示为CP1-CP4),其分别具有坐标(0,0)、(W,0)、(H,0)和(W,H),其中W和H是当前块的宽度和高度。
为了简化仿射合并列表构造过程的复杂性,在推导基于控制点的仿射合并候选时,不执行缩放。如果控制点运动矢量指向不同的参考索引,或者参考索引无效,则候选将被视为不可用。
当合并/跳过标志为假(例如,等于值0)并且CU的宽度和高度两者都大于或等于16个样本(或在一些情况下,为其它样本数量)时,在比特流中用信号通知在CU级别的仿射标志,以指示是否使用仿射帧间模式(例如,AF_4_INTER模式或AF_6_INTER模式)。当CU被译码为仿射帧间模式时,用信号通知模型标志以指定针对CU使用4-参数仿射模型还是6-参数仿射模型。如果模型标志为真(例如,等于值1),则应用AF_6_INTER模式(6-参数仿射模型),并且将解析3个MVD;否则,如果模型标志为假(例如,等于值0),则应用AF_4_INTER模式(4-参数仿射模型),并且将解析2个MVD。
可以按照以下步骤构造仿射AMVP候选列表:1)插入基于模型的仿射候选;2)插入基于控制点的仿射候选;3)插入基于平移的仿射AMVP候选;以及4)利用零运动矢量填充。
如果仿射合并候选列表中的候选数量小于2(或在一些情况下,为其它值),则插入具有零参考索引的零运动矢量,直到列表是满的为止。为了降低列表构造的复杂性,不应用修剪。
可以执行用于小块大小(例如,4x8和8x4大小)的样本推导仿射模式。在MPEG5 EVC中,用于仿射译码的最小块大小被设置为8x8。然而,编码器可以选择在4x8或8x4的子块大小中实现仿射预测。MPEG5 EVC通过增强型插值滤波器(EIF)为此类子块大小指定仿射预测。EIF实现利用每样本预测的仿射预测,其针对每个样本独立地计算运动矢量。为了防止MV指向参考图片之外,将针对每个样本所得到的MV裁剪为图片大小。下面的MPEG EVC的摘录示出了利用EIF的仿射预测的实现,其用在“<highlight>”和“<highlighted>”符号之间的带下划线的文本来标记(例如,“<highlight>突出显示的文本<highlighted>”):
如果affine_flag等于1并且变量sbWidth、sbHeight中的一项小于8,则以下内容适用:
–通过调用在条款8.5.3.9中规定的过程来推导运动矢量的水平变化dX、运动矢量的垂直变化dY和基础运动矢量mvBaseScaled,其中亮度译码块宽度nCbW、亮度译码块高度nCbH、控制点运动矢量数量numCpMv以及控制点运动矢量cpMvLX[cpIdx](其中cpIdx=0...numCpMv-1)作为输入。
–通过调用在条款8.5.4.3中规定的用于增强型插值滤波器的插值过程来推导阵列predSamplesLXL,其中亮度位置(xSb,ySb)、亮度译码块宽度nCbW、亮度译码块高度nCbH、运动矢量的水平变化dX、运动矢量的垂直变化dY、基础运动矢量mvBaseScaled、参考阵列refPicLXL、样本比特深度bitDepthY、图片宽度pic_width_in_luma_samples和高度pic_height_in_luma_samples作为输入。
1.1.1.1从控制点运动矢量针对仿射运动模型参数的推导过程
该过程的输入为:
–两个变量cbWidth和cbHeight,其指定亮度译码块的宽度和高度,
–控制点运动矢量数量numCpMv,
–控制点运动矢量cpMvLX[cpIdx],其中cpIdx=0..numCpMv-1,并且X等于0或1。
该过程的输出为:
–运动矢量的水平变化dX,
–运动矢量的垂直变化dY,
–运动矢量mvBaseScaled,其对应于亮度译码块的左上角。
如下推导变量log2CbW和log2CbH:
log2CbW=Log2(cbWidth) (8-688)
log2CbH=Log2(cbHeight) (8-689)
如下推导运动矢量的水平变化dX:
dX[0]=(cpMvLX[1][0]-cpMvLX[0][0])<<(7-log2CbW) (8-690)
dX[1]=(cpMvLX[1][1]-cpMvLX[0][1])<<(7-log2CbW) (8-691)
如下推导运动矢量的垂直变化dY:
–如果numCpMv等于3,则如下推导dY:
dY[0]=(cpMvLX[2][0]-cpMvLX[0][0])<<(7-log2CbH) (8-692)
dY[1]=(cpMvLX[2][1]-cpMvLX[0][1])<<(7-log2CbH) (8-693)
–否则(numCpMv等于2),如下推导dY:
dY[0]=-dX[1] (8-694)
dY[1]=dX[0] (8-695)
如下推导与亮度译码块的左上角相对应的运动矢量mvBaseScaled:
mvBaseScaled[0]=cpMvLX[0][0]<<7 (8-696)
mvBaseScaled[1]=cpMvLX[0][1]<<7 (8-697)
1.1.1.2用于增强型插值滤波器的插值过程
该过程的输入为:
–全样本单元中的位置(xCb,yCb),
–两个变量cbWidth和cbHeight,其指定当前编码块的宽度和高度,
–运动矢量的水平变化dX,
–运动矢量的垂直变化dY,
–运动矢量mvBaseScaled,
–所选择的参考图片样本阵列refPicLX,
–样本比特深度bitDepth
–样本中的图片的宽度pic_width,
–样本中的图片的高度pic_height。
该过程的输出为:
–预测样本值的(cbWidth)x(cbHeight)阵列predSamplesLX。
如下推导变量shift1、shift2、shift3、offset1、offset2和offset3:
shift0被设置为等于bitDepth–6,offset0等于2shift1-1
shift1被设置为11,offset1等于1024。
<highlight>对于x=-1..cbWidth并且y=-1..cbHeight,以下内容适用:
–如下推导运动矢量mvX:
mvX[0]=(mvBaseScaled[0]+dX[0]*x+dY[0]*y)(8-728)
mvX[1]=(mvBaseScaled[1]+dX[1]*x+dY[1]*y)(8-729)<highlightend>
–如下推导变量xInt、yInt、xFrac和yFrac:
xInt=xCb+(mvX[0]>>9)+x (8-730)
yInt=yCb+(mvX[1]>>9)+y (8-731)
xFrac=mvX[0]&511 (8-732)
yFrac=mvX[1]&511 (8-733)
如下推导给定阵列refPicLX内的位置(xInt,yInt):
<highlight>xInt=Clip3(0,pic_width-1,xInt)(8-734)
yInt=Clip3(0,pic_height-1,yInt)(8-735)<highlightend>
如下推导变量ax,y、ax+1,y、ax,y+1、ax+1,y+1
ax,y=((refPicLX[xInt][yInt]*(512–xFrac)+offset0)>>shift0)*(512–yFrac) (8-736)
ax+1,y=((refPicLX[xInt+1][yInt]*xFrac+offset0)>>shift0)*(512–yFrac) (8-737)
ax,y+1=((refPicLX[xInt][yInt+1]*(512–xFrac)+offset0)>>shift0)*yFrac (8-738)
ax+1,y+1=(((refPicLX[xInt][yInt]*xFrac+offset0)>>shift0)*yFrac (8-739)
如下推导对应于位置(x,y)的样本值bx,y
bx,y=(ax,y+ax+1,y+ax,y+1+ax+1,y+1+offset1)>>shift1 (8-740)
增强插值滤波器系数eF[]被指定为{-1,10,-1}。
如下推导变量shift2、shift3、offset2和offset3:
shift2被设置为等于4,offset2等于8,
shift3被设置为15–bitDepth,offset3等于2shift3-1
对于x=0...cbWidth–1并且y=–1..cbHeight,以下内容适用:
–hx,y=(eF[0]*bx-1,y+eF[1]*bx,y+eF[2]*bx+1,y+offset2)>>shift2 (8-741)
对于x=0..cbWidth–1并且y=0..cbHeight–1,以下内容适用:
–predSamplesLXL[x][y]=Clip3(0,(1<<bitDepth)–1,
(eF[0]*hx,y-1+eF[1]*hx,y+eF[2]*bx,y+1+offset3)>>shift3)
在增强型插值滤波器(EIF)中引入的每样本MV生成可能潜在地增加取回滤波器样本所需要的存储器访问次数,从而增加存储器带宽。存储器访问次数的增加可能远远高于在单向预测中针对块大小4x8或8x4(或其它块大小)通常使用的1次存储器取回或针对双向预测块的2次存储器取回。
如上所述,大量取回操作可能不是问题,例如,如果所需要的参考区域在本地缓冲器中可用的话。当前EIF设计将MV裁剪引入到图片边界,这要求整个图片在本地缓冲器中可用。如上所述,本文描述了改进仿射模式译码的技术和系统。本文描述的技术中的每种技术可以单独地或以任何组合执行。在一些示例中,本文描述的系统和技术将可以从仿射样本生成(例如,通过EIF)开始访问的参考图片区域限制(使用限制或约束)到特定限制,该限制在一些情况下可以被设置为块大小的函数。在一些示例中,系统和技术将限制或约束应用于某些块大小,例如小于8x8、或小于4x8、或小于8x4或其它块大小。在一些情况下,可以将限制或约束指定为块尺寸的函数。
可以通过不同的方法来施加限制或约束。此类约束的一个说明性且非限制性示例可以如下实现,其被描述为对用于仿射运动约束的MPEG EVC描述的修改。例如,编码设备和/或解码设备可以约束和/或裁剪一个或多个仿射运动矢量或其输出(例如,仿射运动矢量所指向的参考样本坐标),使得约束/裁剪确保没有较高粒度的仿射矢量(例如,子块或样本)将超过允许区域。可以引入此类约束的形式的两个示例包括比特流要求(一致性)和规范解码过程。可以通过裁剪一个或多个仿射运动矢量(MV)实现的规范解码过程的一个说明性示例如下(通过在“<insert>”和“<insertend>”符号之间添加用带下划线的文本标记的文本来修改上面突出显示的部分(例如,“<insert>添加的文本<insertend>”):
如下推导运动矢量mvX:
mvX[0]=(mvBaseScaled[0]+dX[0]*x+dY[0]*y) (8-728)
mvX[1]=(mvBaseScaled[1]+dX[1]*x+dY[1]*y) (8-729)
<insert>mvX[0]=Clip3(MinX,MaxX-1,mvX[0])
mvX[1]=Clip3(MinY,MaxX-1,mvX[1])<insertend>
其中裁剪参数是作为块大小、当前块/样本坐标和MV的函数来推导的。
在上述情况下,不要求空间坐标裁剪,并且可以从一种或多种实现中移除空间坐标裁剪,这在下文中示为在<delete>和<deleteend>符号之间的划掉文本(<delete>
Figure BDA0003550944630000251
<deleteend>),参考上文示出的对应部分8-734和8-735:
Figure BDA0003550944630000252
Figure BDA0003550944630000253
iii、规范解码过程,其可以通过裁剪实际坐标进行数据取回来实现,如下:
xInt=Clip3(MinX,MaxX-1,xInt) (8-734)
yInt=Clip3(MinY,MaxY-1,yInt) (8-735)
其中,裁剪参数是作为块大小、当前块/样本坐标和MV的函数来推导的。
在一些示例中,可以通过考虑针对仿射块的不同空间位置推导的一个或多个MV来推导裁剪参数,例如,来自由MV v0(左上方CP)或由通过仿射模型提供的其它MV(例如,v1或v2)指向的X/Y坐标。使用门限的此类实现的示例如下:
{minX,minY,maxX,maxY}=function(Threshold,{v0||v1||v2},{x0,y0})
{minX,minY,maxX,maxY}=function(Threshold,{v0||v1||v2},{x0,y0})
xInt=Clip3(MinX,MaxX-1,xInt)
yInt=Clip3(MinY,MaxY-1,yInt)
图16是示出根据一些示例的仿射模型和空间邻域的各方面的图。图16示出了来自图15的当前CTU 1500以及上方的邻接块和子块以及相关联的控制点和运动矢量。虽然图16使用CTU提供了说明性示例,但是在其它示例中,当前CTU可以是另一种块,诸如CU、PU、TU等。
如上详细描述的,对当前块1502的仿射译码可以使用参考数据。此类参考数据可以是来自在图16中所示的参考1670。在一些情况下,参考1670可以是被识别为用于当前块1502的参考图片的图片的一部分。在一些情况下,仿射运动矢量可能与关于参考图片的大不相同的部分的指示不一致(例如,可能与当前块有很大的变化)。例如,如上所述,因为仿射运动可能与由于改变视点(例如,相机位置的移动)而导致的运动相关联,所以可以预期仿射运动矢量跨越块相当一致。然而,在一些情况下,用于块的一个样本的仿射运动矢量与用于该块的另一样本的仿射运动矢量大不相同(例如,指向具有大幅度的不同方向)。当发生这样的情况时,用于访问由仿射运动矢量指示的参考数据(例如,参考1670)的存储器带宽可能使性能降级。
本文描述的示例可以包括执行仿射运动矢量的裁剪的设备(例如,编码设备104或解码设备112),以限制(例如,到边界区域1660)在参考1670中可能由仿射运动矢量指示的数据。在一些示例中,可以使用门限(例如,来自上文的“Threshold”)来完成此类裁剪。在一些示例中,门限可以是用户和/或系统指定的块大小比率,其用作用于定义边界区域1660的准则(例如,其可以被视为存储器访问区域,其是参考1670的被存储在存储器或DCB中用于对当前块1502进行译码的区域),如图16所示。参考1670(例如,参考图片或参考图片的一部分(诸如参考块))包括边界区域1660(例如,参考1670的一部分),该边界区域可以由基于被应用于仿射运动矢量的限制(例如,裁剪参数)的一个或多个仿射运动矢量指向。箭头1690指示当前块1502中的样本或点与边界区域1660之间的关系,使得仿射运动矢量被限制(例如,通过裁剪参数)到边界区域1660。根据不同的仿射运动参数,当前块1502的样本与由仿射矢量指示的边界区域1660中的数据之间的关系可以改变,以匹配在仿射译码模式下进行译码的特定仿射运动。下面关于图18A、图18B和图18C详细描述了与当前块(例如,当前块1502)的样本和从参考图片引用的数据(例如,来自参考1670中的边界区域1660的数据)之间的关系有关的额外细节。在许多情况下,仿射运动矢量将跨越当前块(例如,当前块1502)具有一致的值(例如,由于仿射运动的性质,例如如上所述的视点移动),在这种情况下,限制仿射运动矢量所导致的性能降级通常将受到限制。
将可能的参考数据限制到边界区域1660可以防止与存储器带宽相关联的性能降级,并且可以将要参考的可能数据限制到可以在存储器中缓冲并且用于当前块1502的仿射译码的可管理大小。本文描述的裁剪参数(例如,(cbWidth)x(cbHeight)阵列;变量,诸如水平最大变量、水平最小变量、垂直最大变量和垂直最小变量;或用于限制由用于当前块(诸如当前块1502)的仿射运动矢量指示的参考图片数据的任何其它此类参数)可以在各个示例中用于在当前块1502和参考1670的上下文中定义边界区域1660,并且还可以用于存储与边界区域1660相关联的参考数据,以供在对当前块1502进行译码时使用。
图17是示出根据一些示例的仿射模型和空间邻域的各方面的图。与图16类似,图17示出了来自图15的当前CTU 1500以及邻接块和子块以及相关联的控制点和运动矢量。虽然图17使用CTU提供了说明性示例,但是在其它示例中,当前CTU可以是另一种块,诸如CU、PU、TU等。在一些示例中,如图17所示并且如上所述,可以通过考虑针对仿射块的不同空间位置推导的一个或多个运动矢量(例如,针对仿射子块产生的实际仿射MV)或当前块内的仿射样本来推导裁剪参数。示例实现可以包括作为以下各项的裁剪参数:
{minX,minY,maxX,maxY}=function(Threshold,{mv(x,y)},{x,y})
{minX,minY,maxX,maxY}=function(Threshold,{mv(x,y)},{x,y})
并且经裁剪的运动矢量如下:
xInt=Clip3(MinX,MaxX-1,xInt)
yInt=Clip3(MinY,MaxY-1,yInt)。
其它示例可以包括此类运动矢量和裁剪参数的其它实现。
如上所述,门限(例如,指示用于限制可以由仿射运动矢量指示的参考数据的边界区域1660的门限)可以是用户和/或系统指定的块大小比率,其用作定义存储器访问区域(例如,边界区域1760)的准则,如图17所示。在图17中,参考边界区域1760(例如,类似于图16的边界区域1660)指定用于参考图片的数据的边界区域,其可以由来自当前块1502的样本的仿射运动矢量指向(例如,给定关于防止来自参考图片的在边界区域1760之外的数据被指示的裁剪限制)。当前块参考区域1750示出了表示用于中心位置的运动矢量所指向的当前块1502的块大小的示例(例如,在使用与箭头1790相关联的平移运动的假设下)。由于仿射矢量中的可接受变化,参考图片的可访问以处理当前块1502的区域(例如,边界区域1760)大于当前块参考区域1750,如下文更详细地描述的。根据作为仿射译码的一部分实现的约束或裁剪参数,针对当前块1502的样本位置或针对来自相关子块(诸如子块1542、1544、1552或1554)的矢量而产生的仿射运动矢量将指向边界区域1660内的位置。下面关于图18A、图18B和图18C描述了受到裁剪或门限限制的仿射运动矢量和相关联的参考数据的额外细节。
在一些示例中,可以执行缩放和/或裁剪CU的CP运动矢量,或者可以使用所得到的运动矢量变化参数(dXmv,dYmv)来验证较高粒度(例如,子块或样本)的仿射矢量不会超过允许区域(例如,边界区域1660或1760)。可以引入此类约束的形式的两个示例包括:比特流要求(例如,针对一致性)和规范解码过程。可以通过裁剪CP MV或者重新调整/缩放CP MV或改变参数来确保施加在仿射运动矢量上的约束,从而实现规范解码过程。
在一些示例中,在仿射MV推导中利用CP位置的MV{v0,v1,v2}之前,可以对其进行裁剪。例如,可以将CP MV之一(例如,v0)作为基础,并且可以检查其它CP MV(例如,v1和v2)以确定其它CP MV是否指向边界区域之外(这可以被称为检查是否识别边界块违反)。如果识别出这样的边界块违反,则可以按比例缩放所识别的矢量并且使其指向边界区域内,边界区域的一侧(角)由基础MV(例如,v0)指定。类似技术可以应用于具有少于三个CP运动矢量(例如,少于v0、v1、v2)的仿射运动模型和/或具有多于三个CP运动矢量(例如,多于v0、v1、v2)的仿射运动模型。
在另一示例中,v0、v1和v2的运动信息可以保持不改变,然而,仿射参数dX和dY将相应地被缩放,以防止仿射MV指向边界块之外。下面利用在“<insert2>”和“<insertend2>”符号之间的用带下划线的文本标记的文本(例如,“<insert2>添加的文本<insertend2>”)示出了此类实现的示例。类似技术可以应用于具有少于三个CP运动矢量(例如,少于v0、v1、v2)的仿射运动模型和/或具有多于三个CP运动矢量(例如,多于v0、v1、v2)的仿射运动模型。
1.1.1.3从控制点运动矢量针对仿射运动模型参数的推导过程
该过程的输入为:
–两个变量cbWidth和cbHeight,其指定亮度译码块的宽度和高度,
–控制点运动矢量数量numCpMv,
–控制点运动矢量cpMvLX[cpIdx],其中cpIdx=0..numCpMv-1,并且X等于0或1。
该过程的输出为:
–运动矢量的水平变化dX,
–运动矢量的垂直变化dY,
–运动矢量mvBaseScaled,其对应于亮度译码块的左上角。
如下推导变量log2CbW和log2CbH:
log2CbW=Log2(cbWidth) (8-688)
log2CbH=Log2(cbHeight) (8-689)
<insert1>调用将cpMvLX运动矢量裁剪到边界块大小(wBB,hBB,cbWidth, cbHeight,xCb,yCb,ratio);
<insertend1>
如下推导运动矢量的水平变化dX:
dX[0]=(cpMvLX[1][0]-cpMvLX[0][0])<<(7-log2CbW) (8-690)
dX[1]=(cpMvLX[1][1]-cpMvLX[0][1])<<(7-log2CbW) (8-691)
如下推导运动矢量的垂直变化dY:
–如果numCpMv等于3,则如下推导dY:
dY[0]=(cpMvLX[2][0]-cpMvLX[0][0])<<(7-log2CbH) (8-692)
dY[1]=(cpMvLX[2][1]-cpMvLX[0][1])<<(7-log2CbH) (8-693)
–否则(numCpMv等于2),如下推导dY:
dY[0]=-dX[1] (8-694)
dY[1]=dX[0] (8-695)
<insert2>从cpMvLX运动矢量、边界区域参数、当前块参数cbWidth、cbHeight和局 部坐标来推导缩放参数scDX和scDY。按比例缩放dX和dY参数,以防止所得到的MV指向边界 块之外<insertend2>
dX[0]=scDX*dX[0] ()
dX[1]=scDX*dX[1] ()
dY[0]=scDY*dY[0] ()
dY[1]=scDY*dY[1] ()
如下推导与亮度译码块的左上角相对应的运动矢量mvBaseScaled:
mvBaseScaled[0]=cpMvLX[0][0]<<7 (8-696)
mvBaseScaled[1]=cpMvLX[0][1]<<7 (8-697)
在一些示例中,对照门限而不是图片边界来对可访问以用于运动补偿的运动矢量和/或空间坐标进行裁剪。可以执行使用门限对运动矢量或空间坐标进行裁剪,以受益于现有的裁剪过程(例如,在EVC标准中给出的裁剪过程)。例如,可以如下根据制成表的参数针对每块计算一次裁剪的参数(其中在“<highlight>”和“<highlighted>”符号之间用下划线标记强调文本(例如,“<highlight>突出显示的文本<highlighted>”)):
Deviation_A[5]={16,80,224,512,1088};
Deviation_B[5]={16,96,240,528,1104};
hor_min=(center_mv_hor-Deviation_A[log2(w)-3])<<5;
ver_min=(center_mv_ver-Deviation_A[log2(h)-3])<<5;
hor_max=(center_mv_hor+Deviation_B[log2(w)-3])<<5;
ver_max=(center_mv_ver+Deviation_B[log2(h)-3])<<5;
<highlight>mvX[0]=Clip3(mv_max[0],mv_min[0],mvX[0]) (8-734)
mvX[1]=Clip3(mv_max[1],mv_min[1],mvX[1])(8-735)<highlightend>
如本文描述的,仿射样本生成可以用于视频译码(例如,视频编码和/或解码),包括基于标准(诸如EVC、VVC和/或其它现有或待开发的译码标准)的译码。视频译码中的仿射译码模式针对正在利用预测处理操作进行译码的当前块(例如,当前块1502)允许非相关运动矢量。在如上所述的一些此类系统中,对于整个当前块(例如,CU、CTU、PU、TU或其它块),不存在单个运动矢量。替代地,块内的一些样本具有独立的仿射运动矢量。这样的块中的每个样本可以具有独立的运动矢量,该运动矢量可能指向针对该块识别的参考图片周围相当远的地方。在没有限制的情况下操作的仿射模式译码器可能从参考图片的大区域调用或取回区域,这使用大量存储器资源来进行译码中的预测操作(例如,使用超过DPB的容量的参考图片数据)。在一些此类系统中,增强型插值滤波器(EIF)针对每个样本生成独立的运动矢量,并且单独地取回用于此类矢量的数据可能是带宽密集的并且使用大量计算资源。所取回的参考数据被存储(例如,缓冲)在存储器中,该存储器存储来自参考图片的运动矢量所指示的区域的样本。为了提供可接受的性能,可以根据本文描述的示例通过裁剪参数来限制可以被取回到存储器的可参考数据。
可以采用多种方式进行限制,包括限制坐标、限制由仿射模式预测使用的运动矢量、修改用于裁剪的仿射参数、利用用于裁剪在定义的区域之外的矢量的分割表对水平和垂直运动矢量的裁剪限制、以及使用其它此类限制。一些示例包括如下的设备和过程:将运动矢量幅度限制为由在中心位置周围的特定边界(例如,图16的边界区域1660或图17的边界区域1760、或下面描述的图18的中心位置1854周围的边界区域1810)划界。一些此类示例可以通过获得当前块、获得用于仿射预测的控制点、生成合成运动矢量以及近似用于位于块的中心的样本的运动矢量来操作。在一些此类示例中,中心位置可以与DPB一起用于存储来自参考的数据(例如,来自参考图片的边界区域1660或1760的数据)。在一些示例中,可以定义允许用于块的仿射运动矢量的最小-最大(min-max)偏差,其中指向用于矢量的限制区域之外的任何矢量被裁剪到限制区域。
在一些示例中,对于不同的块大小,译码设备将仿射译码模式的操作配置为取回不同的参考区域大小。在一些示例中,通过设备配置使大小比率与对于特定设备或系统在计算上可行的(例如,没有性能降级)相关联。在一些示例中,对于每个样本,通过仿射译码模式将译码设备配置为取回特定数量的参考样本。在本文描述的一些此类示例中,作为仿射译码模式的一部分,可以指示用于特定块大小的门限。在其它示例中,可以使用其它门限。在一些示例中,作为仿射译码模式操作的一部分,可以从参考图片中的中心矢量和其它输入值推导仿射运动矢量裁剪参数。在一些利用具有运动矢量的中心样本的此类示例中,运动矢量指向参考图片中的位置。在此类示例中,参考图片中的位置给出了参考区域的中心位置。参考区域的大小由偏差值定义,在一些示例中,该偏差值由中心运动矢量所标识的中心位置固定。
在一些示例中,裁剪参数是依赖于块大小的偏差。例如,偏差A和偏差B具有指定值,上文将其描述为Deviation_A[5]={16,80,224,512,1088};Deviation_B[5]={16,96,240,528,1104}。这样的值是基于特定大小值(诸如图像分辨率)来指定的,并且对于具有不同大小值(例如,不同图像分辨率)的图像将是不同的。
如上所述,在一些示例中,服从仿射译码的当前块中的样本具有指向参考图片的仿射运动矢量。运动矢量设置了可以从其定义可参考区域(例如,诸如边界区域1660或1760之类的区域)的中心位置。作为仿射译码操作的一部分,从标准仿射运动矢量生成过程定义仿射运动矢量。作为基于仿射运动模型的仿射译码操作的一部分,确定控制点运动矢量并且推导子块或样本运动矢量。
图18A是示出根据一些示例的使用门限的裁剪的各方面的图。如图18A中的示例所示,块1860是利用根据本文描述的示例的EIF仿射译码的实现的当前CU。由来自块1860的样本1852的中心运动矢量1850指向的参考图片的块大小区域1862定义了与块1860(CU)大小相同的参考块大小区域1862。边界区域1810和参考块大小区域1862的中心位置1854。区域1864、1866和1868示出了与样本1852、1842和1832相对应的运动矢量1850、1840和1830的允许偏差。在一些示例中,区域1864、1866和1868的区域大小由((MV(中心)–1)/(MV(中心)+1))整数个像素给出的偏差定义(例如,对于大小8)。
利用如上所述地定义的限制或偏差,在一些示例中,与样本1832相关联的左上方位置1834可以允许与运动矢量相关联的移位,为偏差宽度/2(w/2)和高度/2(h/2),对于区域1864,仍然通过中心MV(中心)-1/MV(中心)+1(例如,中心运动矢量1830)划界。当被应用于用于当前块1860的所有样本时,针对区域1864和位置1834(例如,与中心运动矢量1830和样本1832相关联)所示的偏差和划界引入了针对当前块1860的样本的存储器访问的有效边界块1810。在图18A的示例中,可以将边界块1810视为参考块大小区域1862(例如,其与当前块1860具有相同大小)加上由在区域1862的边缘的极限位置周围的边界区域(诸如在位置1834和1844周围的区域1864和1868)引起的deviation_on_mv。通过对当前块1860的每个样本施加裁剪限制,以将运动矢量限制为与区域1864、1866和1868的大小相关联的偏差(例如,使得这些区域是相同的大小,并且用于来自当前块1860的样本的所有其它仿射运动矢量的偏差将是相同的大小),如本文描述的仿射模式引入了对当前块1860内的每个单个运动矢量的限制。在一些示例中,即使运动矢量在边界块内,也向该运动矢量应用此类限制。这样的解决方案有效地提供了仿射运动上的“平移化”,这将在下文关于图18B和18C进一步描述。
图18B是示出根据一些示例的使用门限的裁剪的各方面的图。图18B示出了具有用于对应样本1832、1842和1872的仿射运动矢量1836、1847和1877的特定集合的当前块1860的示例。如上所述,每个样本与定义用于与特定样本相关联的仿射矢量的最大偏差的区域相关联。样本1832与区域1864相关联,样本1842与区域1868相关联,并且样本1872与区域1876相关联。如上所述,如果仿射运动矢量在为该矢量定义的限制区域之外(例如,由样本的中心矢量指示),则利用裁剪操作来调整仿射运动矢量,以生成经裁剪的仿射运动矢量,其不偏离用于样本的相关联的区域并且因此也将不偏离边界块1810。由于可以如上所述地将用于边界块1810的数据存储在本地缓冲器中,因此译码设备可以在不取回额外参考数据并且不以过度的存储器带宽使用而使设备性能降级的情况下,针对当前块1860的所有样本执行操作。
在图18B的示例中,用于样本1832的仿射运动矢量1836在区域1864之外(例如,其中中心位置1834与样本1832相关联)。通过仿射模式操作来裁剪仿射运动矢量1836,以创建指向区域1864和边界块1810的边框内的经裁剪的仿射运动矢量1838。相比之下,用于与中心位置1874和区域1876相关联的样本1872的运动矢量1877指向位置1875。由于由仿射运动矢量1877指示的位置1875在区域1876内,因此不裁剪仿射运动矢量1877。类似地,用于与中心位置1844和区域1868相关联的样本1842的运动矢量1847指向位置1845,位置1845位于区域1868和边界块1810两者内,并且因此不裁剪仿射运动矢量1847。
如上文针对图18A描述的,用于样本1852的中心位置1854用于定义中心运动矢量1850。无论中心运动矢量1850指示大运动还是小运动,用于该当前块1860的所有其它样本(包括样本1832、1842、1872和其它样本)的边界区域都具有基于可以平移的中心矢量(例如,具有相同大小但不同位置或与当前块相交的平行矢量)的相关联的裁剪区域。在各个示例中,不同样本位置之间的位置变化将与相关联的区域的位置变化相匹配(例如,样本1872和1832的位置之间的差异将与位置1874和1834之间的差异相同并且与区域1876和1864之间的差异相同)。限制区域与其对应样本之间的关系是上述仿射运动的“平移化(translationalization)”。
图18C是示出根据一些示例的使用门限的裁剪的各方面的图。图18C示出了与图18B类似但具有不同仿射运动矢量的示例。在图18C的示例中,用于样本1832的仿射矢量1836与图18B中相同,但是用于相应样本1872和1842的运动矢量1886和1896不同。与运动矢量1836类似,运动矢量1896超过允许的运动矢量偏差,并且因此运动矢量1896被处理以生成经裁剪的运动矢量1898,其指向位于边界块1810和区域1868内的位置1897。在图18C的示例中,对仿射运动矢量1886进行裁剪,即使其指向边界块1810内。因为仿射运动矢量1886超过由区域1876指示的允许变化,所以对其进行处理以生成经裁剪的运动矢量1888,其指向位于与用于样本1872的中心位置1874相关联的区域1876内的位置1887。在上述示例中,即使运动矢量1886指向边界块1810内的位置,运动矢量1886也由于裁剪参数而被裁剪。在边界区域1810内应用这样的裁剪参数可以简化裁剪操作并且提供系统资源的高效利用。
在另一示例中,仅存储器区域可以由边界块定义(例如,不具有关于边界块内的运动的限制,诸如上述关于与区域1876相关联的运动矢量1886的限制)。在此类示例中,存储器边界块(例如,边界区域1660、1760或1810)可以例如以整数精度在最终x/y坐标上实现。此类示例将允许边界块内的无限制仿射运动矢量。在此类示例中,运动矢量1836和1896将被裁剪,但是运动矢量1886将不被裁剪,因为由运动矢量1886指示的参考数据在边界块1810内,并且将被存储在存储器中并且可用于仿射译码,而不具有与区域1876相关联的额外限制。在此类示例中,可以使用额外的计算资源来构造裁剪,并且允许以构造更复杂的裁剪操作的资源为代价来改进性能,同时保持其它示例的存储器带宽性能(例如,具有对参考数据的相同的边界区域1660、1760或1810限制,但是不具有针对诸如区域1864、1876和1868之类的边界块内的每个运动矢量的单独区域限制)。
偏差限制的示例如下(其中在“<highlight>”和“<highlighted>”符号之间用下划线标记强调文本(例如,“<highlight>突出显示的文本<highlighted>”)):
Deviation_A[5]={16,80,224,512,1088};
Deviation_B[5]={16,96,240,528,1104};
MinX=center_pos_x+(center_mv_hor-Deviation_A[log2(w)-3])<<5;
MinY=center_pos_y+(center_mv_ver-Deviation_A[log2(h)-3])<<5;
MaxX=center_pos_x+(center_mv_hor+Deviation_B[log2(w)-3])<<5;
MaxY=center_pos_y+(center_mv_ver+Deviation_B[log2(h)-3])<<5;
<highlight>xInt=Clip3(MinX,MaxX-1,xInt) (8-734)
yInt=Clip3(MinY,MaxY-1,yInt)(8-735)<highlightend>
下面利用在“<insert1>”和“<insertend1>”符号之间用带下划线文本标记的文本(例如,“<insert1>添加的文本<insertend1>”)示出了提供用于此类解决方案的实现的示例的规范文本的示例:
1.1.1.4用于增强型插值滤波器的插值过程
该过程的输入为:
–全样本单元中的位置(xCb,yCb),
–两个变量cbWidth和cbHeight,其指定当前译码块的宽度和高度,
–运动矢量的水平变化dX,
–运动矢量的垂直变化dY,
–运动矢量mvBaseScaled,
–所选择的参考图片样本阵列refPicLX,
–样本比特深度bitDepth
–样本中的图片的宽度pic_width,
–样本中的图片的高度pic_height。
该过程的输出为:
–预测样本值的(cbWidth)x(cbHeight)阵列predSamplesLX。
如下推导变量shift1、shift2、shift3、offset1、offset2和offset3:
shift0被设置为等于bitDept–6,offset0等于2shift1-1
shift1被设置为11,offset1等于1024
<insert>变量hor_max、ver_max、hor_min和ver_min是通过调用在0中规定的过程 来推导的,其中全样本单元中的位置(xCb,yCb)、指定当前译码块的宽度和高度的两个变量 cbWidth和cbHeight、运动矢量的水平变化dX、运动矢量的垂直变化dY、运动矢量 mvBaseScaled、样本中的图片的宽度pic_width和样本中的图片的高度pic_height作为输 以及hor_max、ver_max、hor_min和ver_min作为输出。<insert>
对于x=-1..cbWidth并且y=-1..cbHeight,以下内容适用:
–如下推导运动矢量mvX:
mvX[0]=(mvBaseScaled[0]+dX[0]*x+dY[0]*y) (8-728)
mvX[1]=(mvBaseScaled[1]+dX[1]*x+dY[1]*y) (8-729)
<insert>mvX[0]=Clip3(hor_min,hor_max,mvX[0])(8-730)
mvX[1]=Clip3(ver_min,ver_max,mvX[1])(8-731)<insertend>
<insert>1.1.1.5用于仿射运动矢量的裁剪参数的推导
该过程的输入为:
全样本单元中的位置(xCb,yCb),
两个变量cbWidth和cbHeight,其指定当前译码块的宽度和高度,
运动矢量的水平变化dX,
运动矢量的垂直变化dY,
运动矢量mvBaseScaled,
样本中的图片的宽度pic_width,
样本中的图片的高度pic_height。
该过程的输出为:
hor_max、ver_max、hor_min和ver_min,其表示最大和最小允许运动矢量水平和 垂直分量。如下推导中心运动矢量mv_center:
mv_center[0]=(mvBaseScaled[0]+dX[0]*(cbWidth>>1)+dY[0]*(cbHeight>> 1))(8-743)
mv_center[1]=(mvBaseScaled[1]+dX[1]*(cbWidth>>1)+dY[1]*(cbHeight>> 1))(8-743)
调用如在条款8.5.3.10中规定的用于运动矢量的舍入过程,其中mv_center、被设 置为等于5的rightShift以及被设置为等于0的leftShift作为输入,并且经舍入的运动矢 量作为mv_center返回。如下裁剪运动矢量mv_center:
mv_center[0]=Clip3(-217,217-1,mv_center[0])(8-686)
mv_center[1]=Clip3(-217,217-1,mv_center[1])(8-686)
如下推导变量smv_hor_min、mv_ver_min、mv_hor_max和mv_ver_max:
mv_hor_min=mv_center[0]–deviationA[log2CbWidth-3](8-743)
mv_ver_min=mv_center[1]–deviationA[log2CbHeight-3](8-743)
mv_hor_max=mv_center[0]+deviationB[log2CbWidth-3](8-743)
mv_ver_max=mv_center[1]+deviationB[log2CbHeight–3](8-743)
其中对于k=0..4,将deviationA和deviationB指定为:
deviationA[k]={16,80,224,512,1088},
deviationB[k]{16,96,240,528,1104}。
如下推导变量hor_max_pic、ver_max_pic、hor_min_pic和ver_min_pic:
hor_max_pic=(pic_width+128-xCb-cbWidth+1)<<4 (8-743)
ver_max_pic=(pic_height+128-yCb-cbHeight+1)<<4(8-743)
hor_min_pic=(-128-xCb)<<4(8-743)
ver_min_pic=(-128-yCb)<<4(8-743)
如下推导表示最大和最小允许运动矢量水平和垂直分量的输出hor_max、ver_ max、hor_min和ver_min:
hor_max=min(hor_max_pic,mv_hor_max)<<5(8-743)
ver_max=min(ver_max_pic,mv_ver_max)<<5(8-743)
hor_min=max(hor_min_pic,mv_hor_min)<<5(8-743)
ver_min=max(ver_min_pic,mv_ver_min)<<5(8-743)<insert>
图19是示出根据本文描述的示例的具有裁剪参数的仿射译码的过程1900的流程图。在一些示例中,过程1900可以由编码设备104或解码设备112执行。在一些示例中,过程1900可以被实现为计算机可读存储介质中的指令,所述指令在由设备的处理电路执行时使得设备执行过程1900的操作。
在框1902处,过程1900包括如下操作:从视频数据获得当前译码块。此类操作可以是处理多个译码块的顺序操作的一部分,其中裁剪参数是针对每个块来确定的并且用于当前块的每个样本。当一个块被译码并且操作移到下一块时,可以针对新块确定新的裁剪参数集合,并且将其用于新块的每个样本。在过程1900的一些示例中,控制数据包括来自推导表的值。
在框1904处,过程1900包括如下操作:确定用于当前译码块的控制数据。在一些示例中,控制数据可以包括由以下各项组成的上述输入:全样本单元中的位置(xCb,yCb)、指定当前译码块的宽度和高度的两个变量cbWidth和cbHeight、运动矢量的水平变化dX、运动矢量的垂直变化dY、运动矢量mvBaseScaled、样本中的图片的宽度pic_width和样本中的图片的高度pic_height。在其它示例中,可以使用数据的其它组合或分组。在另一示例中,控制数据包括:具有全样本单元中的相关联的水平坐标和相关联的垂直坐标的位置;宽度变量,其指定当前译码块的宽度;高度变量,其指定当前译码块的高度;运动矢量的水平变化;运动矢量的垂直变化;基础缩放运动矢量;与样本中的当前译码块相关联的图片的高度;以及样本中的图片的宽度。
在框1906处,过程1900包括如下操作:根据控制数据来确定一个或多个仿射运动矢量裁剪参数。在一些示例中,仿射运动矢量裁剪参数包括:水平最大变量;水平最小变量;垂直最大变量;以及垂直最小变量。
在一些示例中,水平最小变量是由从水平最小图片值和水平最小运动矢量值中选择的最大值来定义的。在一些此类示例中,水平最小变量(hor_min)由从水平最小图片值(hor_min_pic)和水平最小运动矢量值(mv_hor_min)中选择的最大值定义为:hor_min=max(hor_min_pic,mv_hor_min)。
在一些此类示例中,水平最小图片值(hor_min_pic)是根据相关联的水平坐标来确定的。在一些此类示例中,其中hor_min_pic被定义为:hor_min_pic=(-128-xCb)。
在一些示例中,水平最小运动矢量值是根据中心运动矢量值、基于与视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定当前译码块的宽度的宽度变量来确定的。在一些此类示例中,mv_hor_min被定义为:mv_hor_min=mv_center[0]–deviationA[log2CbWidth-3];其中mv_center[0]是中心运动矢量值,deviationA是基于与视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列,并且cbWidth是指定当前译码块的宽度的宽度变量。
在一些示例中,中心运动矢量值是根据基础缩放运动矢量、运动矢量的水平变化、宽度变量和高度变量来确定的。在一些此类示例中,中心运动矢量值被定义为:
mv_center[0]=(mvBaseScaled[0]+dX[0]*(cbWidth>>1)+dY[0]*(cbHeight>>1))。
在一些示例中,基础缩放运动矢量对应于当前译码块的左上角并且是根据控制点运动矢量值来确定的。在一些示例中,mvBaseScaled对应于亮度译码块的左上角并且被定义为:mvBaseScaled[0]=cpMvLX[0][0]<<7;mvBaseScaled[1]=cpMvLX[0][1]<<7;其中cpMvLX是控制点运动矢量。
框1906的上述方面主要描述用于确定与水平最小变量(hor_min)相关联的参数的操作。用于矢量裁剪的水平、垂直、最大和最小参数的其它组合中的每个组合可以具有如本文描述的类似示例,包括用于以下各项的元素:水平最大变量;垂直最大变量;以及垂直最小变量。
在一些示例中,水平最大变量是由从水平最大图片值和水平最大运动矢量值中选择的最小值来定义的。在一些示例中,水平最大图片值是根据图片的宽度、相关联的水平坐标和宽度变量来确定的。在一些示例中,水平最大运动矢量值是根据中心运动矢量值、基于与视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定当前译码块的宽度的宽度变量来确定的。在一些示例中,中心运动矢量值是根据基础缩放运动矢量、运动矢量的水平变化、宽度变量和高度变量来确定的。在一些示例中,基础缩放运动矢量对应于当前译码块的角并且是根据控制点运动矢量值来确定的。
在一些示例中,垂直最大变量是由从垂直最大图片值和垂直最大运动矢量值中选择的最小值来定义的。在一些示例中,垂直最大图片值是根据图片的高度、相关联的垂直坐标和高度变量来确定的。在一些示例中,垂直最大运动矢量值是根据中心运动矢量值、基于与视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定当前译码块的宽度的高度变量来确定的。
在一些示例中,垂直最小变量由从垂直最小图片值和垂直最小运动矢量值中选择的最大值来定义。在一些示例中,垂直最小图片值是根据相关联的垂直坐标来确定的。在一些示例中,垂直最小运动矢量值是根据中心运动矢量值、基于与视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定当前译码块的高度的高度变量来确定的。
作为框1906的一部分,可以执行参数的额外特定推导,包括推导包括用于以下各项的元素:水平最大变量;垂直最大变量;以及垂直最小变量。在一些示例中,可以根据本文描述的细节来确定这些变量,包括:
hor_max=min(hor_max_pic,mv_hor_max)<<5;
ver_max=min(ver_max_pic,mv_ver_max)<<5;
hor_min=max(hor_min_pic,mv_hor_min)<<5;
ver_min=max(ver_min_pic,mv_ver_min)<<5;
mv_center[0]=(mvBaseScaled[0]+dX[0]*(cbWidth>>1)+dY[0]*(cbHeight>>1));
mv_center[1]=(mvBaseScaled[1]+dX[1]*(cbWidth>>1)+dY[1]*(cbHeight>>1));
mv_center[0]=Clip3(-217,217-1,mv_center[0]);
mv_center[1]=Clip3(-217,217-1,mv_center[1]);
mv_hor_min=mv_center[0]–deviationA[log2CbWidth-3];
mv_ver_min=mv_center[1]–deviationA[log2CbHeight-3];
mv_hor_max=mv_center[0]+deviationB[log2CbWidth-3];
mv_ver_max=mv_center[1]+deviationB[log2CbHeight–3];
其中对于k=0..4,将deviationA和deviationB指定为deviationA[k]={16,80,224,512,1088}以及deviationB[k]{16,96,240,528,1104};
hor_max_pic=(pic_width+128-xCb-cbWidth+1)<<4;
ver_max_pic=(pic_height+128-yCb-cbHeight+1)<<4;
hor_min_pic=(-128-xCb)<<4;
ver_min_pic=(-128-yCb)<<4;
以及本文描述的其它此类细节。在其它示例中,可以使用用于确定用于裁剪的参数的其它类似过程。
在框1908处,过程1900包括如下操作:选择当前译码块的样本。如上所述,可以使用用于当前块的选择数量的样本,或者可以使用当前块的每个样本。基于EVC的示例仿射预测可以利用不同的方法来实现。一种示例EVC方法针对子块利用平移运动预测。EVC仿射预测的另一示例使用更精细的粒度y(例如,按照像素)运动预测。不同的方法可以具有相关联的操作来选择样本。
在框1910处,过程1900包括如下操作:确定当前译码块的样本的仿射运动矢量。在一些示例中,用于当前译码块的样本的仿射运动矢量是根据以下各项来确定的:第一基础缩放运动矢量值、运动矢量值的第一水平变化、运动矢量值的第一垂直变化、第二基础缩放运动矢量值、运动矢量值的第二水平变化、运动矢量值的第二垂直变化、样本的水平坐标和样本的垂直坐标。在一些示例中,可以使用以下等式来推导被指定为mvX的运动矢量:mvX[0]=(mvBaseScaled[0]+dX[0]*x+dY[0]*y);mvX[1]=(mvBaseScaled[1]+dX[1]*x+dY[1]*y。
在框1912处,过程1900包括如下操作:使用一个或多个仿射运动矢量裁剪参数来裁剪仿射运动矢量,以生成经裁剪的仿射运动矢量。在一些示例中,根据以下等式来裁剪仿射运动矢量:mvX[0]=Clip3(hor_min,hor_max,mvX[0]);以及mvX[1]=Clip3(ver_min,ver_max,mvX[1])。
除上述框之外,过程1900的一些元素还可以包括额外操作、中间操作或某些框的操作的重复。在一些示例中,此类额外操作可以包括如下操作:识别与当前译码块相关联的参考图片;以及存储参考图片的由仿射运动矢量裁剪参数定义的一部分。当参考图片的该部分被存储在存储器缓冲器中以用于使用当前译码块的仿射运动处理操作时,一些此类操作可以起作用。
类似地,一些重复操作可以包括如下操作:从视频数据顺序地获得多个当前译码块;针对多个当前译码块中的块,以每个译码块为基础来确定仿射运动矢量裁剪参数集合;以及针对多个当前译码块,以每个块为基础使用仿射运动矢量裁剪参数集合来取回对应参考图片的部分。在任何此类示例中,操作还可以包括:使用来自由经裁剪的仿射运动矢量指示的参考图片的参考图片数据来处理当前块。此类块可以是亮度译码块或者用于以仿射译码模式进行译码的视频数据的任何其它此类块。这样的过程1900可以由本文中的任何设备执行,包括具有存储器和一个或多个处理器的设备。此类设备可以包括具有显示设备的设备,显示设备耦合到一个或多个处理器并且被配置为显示来自视频数据的图像;以及耦合到一个或多个处理器的一个或多个无线接口,一个或多个无线接口包括一个或多个基带处理器和一个或多个收发机。其它此类设备可以包括本文描述的其它组件。
在一些示例中,本文中所描述的过程可以由计算设备或装置(诸如编码设备104、解码设备112和/或任何其它计算设备)来执行。在一些情况下,计算设备或装置可以包括处理器、微处理器、微型计算机或被配置为执行本文中所描述的过程的步骤的设备的其它组件。在一些示例中,计算设备或装置可以包括被配置为捕获包括视频帧的视频数据(例如,视频序列)的相机。例如,计算设备可以包括相机设备,相机设备可以包括或者可以不包括视频编解码器。作为另一示例,计算设备可以包括具有相机的移动设备(例如,相机设备(诸如数码相机、IP相机等)、包括相机的移动电话或平板设备、或具有相机的其它类型的设备)。在一些情况下,计算设备可以包括用于显示图像的显示器。在一些示例中,捕获视频数据的相机或其它捕获设备与计算设备分离,在这种情况下,计算设备接收捕获的视频数据。计算设备还可以包括被配置为传送视频数据的网络接口、收发机和/或发射机。网络接口、收发机和/或发射机可以被配置为传送基于互联网协议(IP)的数据或其它网络数据。
本文中所描述的过程可以用硬件、计算机指令或其组合来实现。在计算机指令的背景下,操作表示被存储在一个或多个计算机可读存储介质上的计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。以其描述操作的顺序不旨在被解释为限制,并且可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现所述过程。
另外,本文中所描述的过程可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用),通过硬件来实现,或其组合。如上文所指出的,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式被存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂时性的。
本文中所讨论的译码技术可以在示例视频编码和解码系统(例如,系统100)中实现。在一些示例中,系统包括源设备,源设备提供稍后要由目的地设备解码的经编码的视频数据。具体地,源设备经由计算机可读介质将视频数据提供给目的地设备。源设备和目的地设备可以包括多种设备中的任何设备,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、电话手机(诸如所谓的“智能”手机)、所谓的“智能”板、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。在一些情况下,源设备和目的地设备可以被配备用于无线通信。
目的地设备可以经由计算机可读介质接收要被解码的经编码的视频数据。计算机可读介质可以包括能够将经编码的视频数据从源设备移动到目的地设备的任何类型的介质或设备。在一个示例中,计算机可读介质可以包括使得源设备能够将经编码的视频数据直接实时地发送给目的地设备的通信介质。经编码的视频数据可以根据诸如无线通信协议之类的通信标准进行调制,并且发送给目的地设备。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或全球网络(诸如互联网)。通信介质可以包括路由器、交换机、基站、或可以用于促进从源设备到目的地设备的通信的任何其它装置。
在一些示例中,可以将经编码的数据从输出接口输出到存储设备。类似地,可以通过输入接口从存储设备访问经编码的数据。存储设备可以包括各种分布式或本地访问的数据存储介质中的任何数据存储介质,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它适当的数字存储介质。在另外的示例中,存储设备可以对应于可以存储由源设备生成的经编码的视频的文件服务器或另一中间存储设备。目的地设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据并且将经编码的视频数据发送给目的地设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、FTP服务器、网络附加存储(NAS)设备或本地磁盘驱动器。目的地设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。连接可以包括适于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)或两者的组合。经编码的视频数据从存储设备的传输可以是流式传输、下载传输或其组合。
本公开内容的技术不一定限于无线应用或设置。所述技术可以应用于视频译码,以支持多种多媒体应用中的任何多媒体应用,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(诸如基于HTTP的动态自适应流式传输(DASH))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频的解码、或其它应用。在一些示例中,系统可以被配置为支持单向或双向视频传输,以支持诸如视频流式传输、视频回放、视频广播和/或视频电话之类的应用。
在一个示例中,源设备包括视频源、视频编码器和输出接口。目的地设备可以包括输入接口、视频解码器和显示设备。源设备的视频编码器可以被配置为应用本文中所公开的技术。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备可以从诸如外部相机之类的外部视频源接收视频数据。同样,目的地设备可以与外部显示设备对接,而不是包括集成的显示设备。
以上示例系统仅是一个示例。用于并行地处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管本公开内容的技术通常是由视频编码设备来执行的,但是所述技术还可以由通常被称为“CODEC”的视频编码器/解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和目的地设备仅是这样的译码设备的示例:其中,源设备生成经译码的视频数据以供传输给目的地设备。在一些示例中,源设备和目的地设备可以以基本上对称的方式操作,使得这些设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
视频源可以包括视频捕获设备,诸如摄像机、包含先前捕获的视频的视频存档单元、和/或用于从视频内容提供商接收视频的视频馈送接口。作为另外的替代方式,视频源可以生成基于计算机图形的数据作为源视频,或者生成实时视频、存档视频和计算机生成的视频的组合。在一些情况下,如果视频源是摄像机,则源设备和目的地设备可以形成所谓的照相电话或视频电话。然而,如上文所提及的,在本公开内容中所描述的技术通常可以适用于视频译码,并且可以应用于无线和/或有线应用。在每种情况下,所捕获的、预捕获的或计算机生成的视频可以由视频编码器进行编码。可以通过输出接口将经编码的视频信息输出到计算机可读介质上。
如所提到的,计算机可读介质可以包括暂时性介质(诸如无线广播或者有线网络传输)、或者存储介质(即,非暂时性存储介质)(诸如硬盘、闪存驱动器、压缩光盘、数字多功能光盘、蓝光光盘)、或者其它计算机可读介质。在一些示例中,网络服务器(未示出)可以例如经由网络传输从源设备接收经编码的视频数据,并且将经编码的视频数据提供给目的地设备。类似地,介质生产设施(诸如光盘冲压设施)的计算设备可以从源设备接收经编码的视频数据,并且制造包含经编码的视频数据的光盘。因此,在各个示例中,计算机可读介质可以被理解为包括各种形式的一个或多个计算机可读介质。
目的地设备的输入接口从计算机可读介质接收信息。计算机可读介质的信息可以包括由视频编码器定义的语法信息,语法信息也被视频解码器使用,语法信息包括描述块和其它译码单元(例如,图片组(GOP))的特性和/或对其的处理的语法元素。显示设备将经解码的视频数据显示给用户,并且可以包括各种显示设备中的任何显示设备,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、或另一类型的显示设备。已经描述了本申请的各个实施例。
在图20和图21中分别示出了编码设备104和解码设备112的具体细节。图20是示出可以实现在本公开内容中描述的技术中的一种或多种技术的示例编码设备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)滤波器。尽管在图20中将滤波器单元63示为环路内滤波器,但是在其它配置中,滤波器单元63可以被实现为后环路滤波器。后处理设备57可以对由编码设备104生成的经编码的视频数据执行额外的处理。在一些实例中,本公开内容的技术可以由编码设备104来实现。然而,在其它实例中,本公开内容的技术中的一种或多种技术可以由后处理设备57来实现。
如图20中所示,编码设备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实现。
图20的编码设备104表示被配置为执行本文中所描述的变换译码技术中的一种或多种技术的视频编码器的示例。编码设备104可以执行本文中所描述的技术中的任何技术,包括上文关于图21所描述的过程。
图21是示出示例解码设备112的框图。解码设备112包括熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、求和器90、滤波器单元91和图片存储器92。预测处理单元81包括运动补偿单元82和帧内预测处理单元84。在一些示例中,解码设备112可以执行通常与关于来自图20的编码设备104所描述的编码通路相反的解码通路。
在解码过程期间,解码设备112接收由编码设备104发送的表示经编码的视频切片的视频块和相关联的语法元素的经编码的视频比特流。在一些实施例中,解码设备112可以从编码设备104接收经编码的视频比特流。在一些实施例中,解码设备112可以从网络实体79(诸如服务器、媒体感知网络元素(MANE)、视频编辑器/拼接器、或被配置为实现上述技术中的一种或多种技术的其它这样的设备)接收经编码的视频比特流。网络实体79可以包括或者可以不包括编码设备104。在本公开内容中描述的技术中的一些技术可以由网络实体79在网络实体79将经编码的视频比特流发送给解码设备112之前实现。在一些视频解码系统中,网络实体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)滤波器。尽管滤波器单元91在图21中被示为环路中滤波器,但是在其它配置中,滤波器单元91可以被实现为后环路滤波器。在给定帧或图片中的经解码的视频块被存储在图片存储器92中,图片存储器92存储用于随后的运动补偿的参考图片。图片存储器92还存储经解码的视频,以供稍后在显示设备(诸如在图1中所示的视频目的地设备122)上呈现。
图21的解码设备112表示被配置为执行本文中所描述的变换译码技术中的一种或多种技术的视频解码器的示例。解码设备112可以执行本文中所描述的技术中的任何技术,包括上文关于图21所描述的过程1900。
在前面的描述中,本申请的各方面是参考其特定实施例来描述的,但是本领域技术人员将认识到,本申请的主题不限于此。因此,尽管本文已经详细描述了本申请的说明性实施例,但是要理解的是,可以以其它方式不同地体现和采用本发明构思,并且所附的权利要求旨在被解释为包括这样的变型,除了受现有技术限制的变型。可以单独地或共同地使用上述主题的各个特征和方面。此外,在不脱离本说明书的更宽泛的精神和范围的情况下,实施例可以在除了本文中所描述的环境和应用之外的任何数量的环境和应用中使用。因此,说明书和附图被认为是说明性的而不是限制性的。为了说明的目的,方法是以特定顺序来描述的。应当明白的是,在替代实施例中,方法可以以与所描述的顺序不同的顺序来执行。
本领域技术人员将明白的是,在不脱离本说明书的范围的情况下,本文中使用的小于(“<”)和大于(“>”)符号或术语可以分别被替换为小于或等于(“≤”)以及大于或等于(“≥”)符号。
在将组件描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过以下方式来实现:将电路或其它硬件设计为执行该操作,将可编程电路(例如,微处理器或其它适当的电路)编程为执行该操作,或其任何组合。
记载集合中的“至少一个”和/或集合中的“一个或多个”的权利要求语言或其它语言指示集合中的一个成员或者集合中的多个成员(以任何组合)满足该权利要求。例如,记载“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)中。
本公开内容的说明性示例包括:
示例1、一种处理视频数据的方法,所述方法包括:获得视频数据的一个或多个块;以及确定要用于预测所述视频数据的块的仿射运动矢量,其中,使用所述仿射运动矢量可访问的至少参考图片的区域是基于约束来限制的。
示例2、根据示例1所述的方法,其中,所述约束是基于所述块的大小的。
示例3、根据示例1到2中任一项所述的方法,还包括:根据所述约束来裁剪所述仿射运动矢量。
示例4、根据示例1到2中任一项所述的方法,还包括:根据所述约束来裁剪来自所述至少一个参考图片的至少一个样本的参考样本坐标,所述参考样本坐标是使用所述仿射运动矢量来确定的。
示例5、根据示例1到4中任一项所述的方法,还包括:作为所述块的大小的函数来推导裁剪参数。
示例6、根据示例1到5中任一项所述的方法,还包括:根据一个或多个制成表的参数按每块一次计算用于裁剪仿射运动矢量和参考样本坐标中的至少一项的参数。
示例7、一种装置,包括被配置为存储视频数据的存储器以及被配置为根据示例1到6中的任一项来处理所述视频数据的处理器。
示例8、根据示例7所述的装置,其中,所述装置包括解码器。
示例9、根据示例7所述的装置,其中,所述装置包括编码器。
示例10、根据示例7到9中任一项所述的装置,其中,所述装置是移动设备。
示例11、根据示例7到10中任一项所述的装置,还包括被配置为显示所述视频数据的显示器。
示例12、根据示例7到11中任一项所述的装置,还包括被配置为捕获一个或多个图片的相机。
示例13、一种具有存储在其上的指令的计算机可读介质,所述指令在由处理器执行时执行根据示例1到6中任一项所述的方法。
示例14、一种用于对视频数据进行译码的装置,所述装置包括:存储器;以及耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:从所述视频数据获得当前译码块;确定用于所述当前译码块的控制数据;根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;选择所述当前译码块的样本;确定用于所述当前译码块的所述样本的仿射运动矢量;以及使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
示例15、根据示例14所述的装置,其中,所述控制数据包括:在全样本单元中具有相关联的水平坐标和相关联的垂直坐标的位置;指定所述当前译码块的宽度的宽度变量;指定所述当前译码块的高度的高度变量;运动矢量的水平变化;运动矢量的垂直变化;基础缩放运动矢量;样本中的与所述当前译码块相关联的图片的高度;以及样本中的所述图片的宽度。
示例16、根据示例15所述的装置,其中,所述一个或多个仿射运动矢量裁剪参数包括:水平最大变量;水平最小变量;垂直最大变量;以及垂直最小变量。
示例17、根据示例16所述的装置,其中,所述水平最小变量是由从水平最小图片值和水平最小运动矢量值中选择的最大值来定义的。
示例18、根据示例17所述的装置,其中,所述水平最小图片值是根据所述相关联的水平坐标来确定的。
示例19、根据示例18所述的装置,其中,所述水平最小运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。
示例20、根据示例19所述的装置,其中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。
示例21、根据示例20所述的装置,其中,所述基础缩放运动矢量对应于所述当前译码块的左上角并且是根据控制点运动矢量值来确定的。
示例22、根据上述示例16-21所述的装置,其中,所述水平最大变量是由从水平最大图片值和水平最大运动矢量值中选择的最小值来定义的。
示例23、根据示例22所述的装置,其中,所述水平最大图片值是根据所述图片的所述宽度、所述相关联的水平坐标和所述宽度变量来确定的。
示例24、根据示例23所述的装置,其中,所述水平最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。
示例25、根据示例24所述的装置,其中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。
示例26、根据示例25所述的装置,其中,所述基础缩放运动矢量对应于所述当前译码块的角并且是根据控制点运动矢量值来确定的。
示例27、根据上述示例16-26所述的装置,其中,所述垂直最大变量是由从垂直最大图片值和垂直最大运动矢量值中选择的最小值来定义的。
示例28、根据示例27所述的装置,其中,所述垂直最大图片值是根据所述图片的所述高度、所述相关联的垂直坐标和所述高度变量来确定的。
示例29、根据示例28所述的装置,其中,所述垂直最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定所述当前译码块的所述宽度的所述高度变量来确定的。
示例30、根据上述示例16-30所述的装置,其中,所述垂直最小变量是由从垂直最小图片值和垂直最小运动矢量值中选择的最大值来定义的。
示例31、根据示例30所述的装置,其中,所述垂直最小图片值是根据所述相关联的垂直坐标来确定的。
示例32、根据示例31所述的装置,其中,所述垂直最小运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值或块区域大小(例如,当前译码块宽度x高度)的值的阵列以及指定所述当前译码块的所述高度的所述高度变量来确定的。
示例33、根据示例14-32所述的装置,其中,所述一个或多个处理器被配置为:从所述视频数据顺序地获得多个当前译码块;针对所述多个当前译码块中的块,以每个译码块为基础来确定仿射运动矢量裁剪参数集合;以及针对所述多个当前译码块,以每个块为基础使用所述仿射运动矢量裁剪参数集合来取回对应参考图片的部分。
示例34、根据示例14-33所述的装置,其中,所述一个或多个处理器被配置为:识别与所述当前译码块相关联的参考图片;以及存储所述参考图片的由所述一个或多个仿射运动矢量裁剪参数定义的一部分。
示例35、根据示例34所述的装置,还包括耦合到所述一个或多个处理器的存储器缓冲器,其中,所述参考图片的所述一部分被存储在所述存储器缓冲器中以用于使用所述当前译码块进行仿射运动处理操作。
示例36、根据示例14-35所述的装置,其中,所述一个或多个处理器被配置为:使用来自由所述经裁剪的仿射运动矢量指示的参考图片的参考图片数据来处理所述当前译码块。
示例37、根据示例14-36所述的装置,其中,用于所述当前译码块的所述样本的所述仿射运动矢量是根据以下各项来确定的:第一基础缩放运动矢量值、运动矢量值的第一水平变化、运动矢量值的第一垂直变化、第二基础缩放运动矢量值、运动矢量值的第二水平变化、运动矢量值的第二垂直变化、所述样本的水平坐标和所述样本的垂直坐标。
示例38、根据示例14-37所述的装置,其中,所述控制数据包括来自推导表的值。
示例39、根据示例14-38所述的装置,其中,所述当前译码块是亮度译码块。
示例40、根据示例14-39所述的装置,还包括:显示设备,其耦合到所述一个或多个处理器并且被配置为显示来自所述视频数据的图像;以及耦合到所述一个或多个处理器的一个或多个无线接口,所述一个或多个无线接口包括一个或多个基带处理器和一个或多个收发机。
示例41、一种对视频数据进行译码的方法,所述方法包括:从所述视频数据获得当前译码块;确定用于所述当前译码块的控制数据;根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;选择所述当前译码块的样本;确定用于所述当前译码块的所述样本的仿射运动矢量;以及使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
示例42、根据示例14-40中任一项的示例41所述的方法。
示例43、一种包括指令的非暂时性计算机可读介质,所述指令在由译码设备的一个或多个处理器执行时使得所述设备根据上述示例14-40中任一项对视频数据执行视频译码操作。
示例44、一种用于对视频数据进行译码的装置,所述装置包括:用于从所述视频数据获得当前译码块的单元;用于确定用于所述当前译码块的控制数据的单元;用于根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数的单元;用于选择所述当前译码块的样本的单元;用于确定用于所述当前译码块的所述样本的仿射运动矢量的单元;以及用于使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量的单元。
示例45、根据上述示例14-40中任一项的示例44所述的用于对视频数据进行译码的装置。
示例46、一种包括存储在其上的指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:从视频数据获得当前译码块;确定用于所述当前译码块的控制数据;根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;选择所述当前译码块的样本;确定用于所述当前译码块的所述样本的仿射运动矢量;以及使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
示例47、根据示例46所述的非暂时性计算机可读介质,包括用于使得所述一个或多个处理器根据上述示例14-40中任一项进行操作的指令。

Claims (54)

1.一种用于对视频数据进行译码的装置,所述装置包括:
存储器;以及
耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:
从所述视频数据获得当前译码块;
确定用于所述当前译码块的控制数据;
根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;
选择所述当前译码块的样本;
确定用于所述当前译码块的所述样本的仿射运动矢量;以及
使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
2.根据权利要求1所述的装置,其中,所述控制数据包括:
在全样本单元中具有相关联的水平坐标和相关联的垂直坐标的位置;
指定所述当前译码块的宽度的宽度变量;
指定所述当前译码块的高度的高度变量;
运动矢量的水平变化;
运动矢量的垂直变化;
基础缩放运动矢量;
样本中的与所述当前译码块相关联的图片的高度;以及
样本中的所述图片的宽度。
3.根据权利要求2所述的装置,其中,所述一个或多个仿射运动矢量裁剪参数包括:
水平最大变量;
水平最小变量;
垂直最大变量;以及
垂直最小变量。
4.根据权利要求3所述的装置,其中,所述水平最小变量是由从水平最小图片值和水平最小运动矢量值中选择的最大值来定义的。
5.根据权利要求4所述的装置,其中,所述水平最小图片值是根据所述相关联的水平坐标来确定的。
6.根据权利要求5所述的装置,其中,所述水平最小运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。
7.根据权利要求6所述的装置,其中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。
8.根据权利要求7所述的装置,其中,所述基础缩放运动矢量对应于所述当前译码块的左上角并且是根据控制点运动矢量值来确定的。
9.根据权利要求3所述的装置,其中,所述水平最大变量是由从水平最大图片值和水平最大运动矢量值中选择的最小值来定义的。
10.根据权利要求9所述的装置,其中,所述水平最大图片值是根据所述图片的所述宽度、所述相关联的水平坐标和所述宽度变量来确定的。
11.根据权利要求10所述的装置,其中,所述水平最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的分辨率值的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。
12.根据权利要求11所述的装置,其中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。
13.根据权利要求12所述的装置,其中,所述基础缩放运动矢量对应于所述当前译码块的角并且是根据控制点运动矢量值来确定的。
14.根据权利要求3所述的装置,其中,所述垂直最大变量是由从垂直最大图片值和垂直最大运动矢量值中选择的最小值来定义的。
15.根据权利要求14所述的装置,其中,所述垂直最大图片值是根据所述图片的所述高度、所述相关联的垂直坐标和所述高度变量来确定的。
16.根据权利要求15所述的装置,其中,所述垂直最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的块区域大小的值的阵列以及指定所述当前译码块的所述宽度的所述高度变量来确定的。
17.根据权利要求3所述的装置,其中,所述垂直最小变量是由从垂直最小图片值和垂直最小运动矢量值中选择的最大值来定义的。
18.根据权利要求17所述的装置,其中,所述垂直最小图片值是根据所述相关联的垂直坐标来确定的。
19.根据权利要求18所述的装置,其中,所述垂直最小运动矢量值是根据中心运动矢量值、与所述视频数据相关联的数据块区域大小以及指定所述当前译码块的所述高度的所述高度变量来确定的。
20.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
从所述视频数据顺序地获得多个当前译码块;
针对所述多个当前译码块中的块,以每译码块为基础来确定仿射运动矢量裁剪参数集合;以及
针对所述多个当前译码块,以每块为基础使用所述仿射运动矢量裁剪参数集合来取回对应参考图片的部分。
21.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
识别与所述当前译码块相关联的参考图片;以及
存储所述参考图片的由所述一个或多个仿射运动矢量裁剪参数定义的一部分。
22.根据权利要求21所述的装置,还包括耦合到所述一个或多个处理器的存储器缓冲器,其中,所述参考图片的所述一部分被存储在所述存储器缓冲器中以用于使用所述当前译码块进行仿射运动处理操作。
23.根据权利要求1所述的装置,其中,所述一个或多个处理器被配置为:
使用来自由所述经裁剪的仿射运动矢量指示的参考图片的参考图片数据来处理所述当前译码块。
24.根据权利要求1所述的装置,其中,用于所述当前译码块的所述样本的所述仿射运动矢量是根据以下各项来确定的:第一基础缩放运动矢量值、运动矢量值的第一水平变化、运动矢量值的第一垂直变化、第二基础缩放运动矢量值、运动矢量值的第二水平变化、运动矢量值的第二垂直变化、所述样本的水平坐标和所述样本的垂直坐标。
25.根据权利要求1所述的装置,其中,所述控制数据包括来自推导表的值。
26.根据权利要求1所述的装置,其中,所述当前译码块是亮度译码块。
27.根据权利要求1所述的装置,还包括:
显示设备,其耦合到所述一个或多个处理器并且被配置为显示来自所述视频数据的图像;以及
耦合到所述一个或多个处理器的一个或多个无线接口,所述一个或多个无线接口包括一个或多个基带处理器和一个或多个收发机。
28.一种对视频数据进行译码的方法,所述方法包括:
从所述视频数据获得当前译码块;
确定用于所述当前译码块的控制数据;
根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;
选择所述当前译码块的样本;
确定用于所述当前译码块的所述样本的仿射运动矢量;以及
使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
29.根据权利要求28所述的方法,其中,所述控制数据包括:
在全样本单元中具有相关联的水平坐标和相关联的垂直坐标的位置;
指定所述当前译码块的宽度的宽度变量;
指定所述当前译码块的高度的高度变量;
运动矢量的水平变化;
运动矢量的垂直变化;以及
基础缩放运动矢量。
30.根据权利要求29所述的方法,其中,所述一个或多个仿射运动矢量裁剪参数包括:
水平最大变量;
水平最小变量;
垂直最大变量;以及
垂直最小变量。
31.根据权利要求30所述的方法,其中,所述水平最小变量是由从水平最小图片值和水平最小运动矢量值中选择的最大值来定义的。
32.根据权利要求31所述的装置,其中,所述水平最小图片值是根据所述相关联的水平坐标来确定的。
33.根据权利要求32所述的方法,其中,所述水平最小运动矢量值是根据中心运动矢量值、基于块区域大小的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。
34.根据权利要求33所述的方法,其中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。
35.根据权利要求34所述的方法,其中,所述基础缩放运动矢量对应于所述当前译码块的左上角并且是根据控制点运动矢量值来确定的。
36.根据权利要求30所述的方法,其中,所述水平最大变量是由从水平最大图片值和水平最大运动矢量值中选择的最小值来定义的。
37.根据权利要求36所述的方法,其中,所述水平最大图片值是根据所述相关联的水平坐标和所述宽度变量来确定的。
38.根据权利要求37所述的方法,其中,所述水平最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的块区域大小的值的阵列以及指定所述当前译码块的所述宽度的所述宽度变量来确定的。
39.根据权利要求38所述的方法,其中,所述中心运动矢量值是根据所述基础缩放运动矢量、所述运动矢量的水平变化、所述宽度变量和所述高度变量来确定的。
40.根据权利要求39所述的方法,其中,所述基础缩放运动矢量对应于所述当前译码块的角并且是根据控制点运动矢量值来确定的。
41.根据权利要求30所述的方法,其中,所述垂直最大变量是由从垂直最大图片值和垂直最大运动矢量值中选择的最小值来定义的。
42.根据权利要求41所述的方法,其中,所述垂直最大图片值是根据所述相关联的垂直坐标和所述高度变量来确定的。
43.根据权利要求42所述的方法,其中,所述垂直最大运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的块区域大小的值的阵列以及指定所述当前译码块的所述宽度的所述高度变量来确定的。
44.根据权利要求30所述的方法,其中,所述垂直最小变量是由从垂直最小图片值和垂直最小运动矢量值中选择的最大值来定义的。
45.根据权利要求44所述的方法,其中,所述垂直最小图片值是根据所述相关联的垂直坐标来确定的。
46.根据权利要求45所述的方法,其中,所述垂直最小运动矢量值是根据中心运动矢量值、基于与所述视频数据相关联的块区域大小的值的阵列以及指定所述当前译码块的所述高度的所述高度变量来确定的。
47.根据权利要求28所述的方法,还包括:
从所述视频数据顺序地获得多个当前译码块;
针对所述多个当前译码块中的块,以每译码块为基础来确定仿射运动矢量裁剪参数集合;以及
针对所述多个当前译码块,以每块为基础使用所述仿射运动矢量裁剪参数集合来取回对应参考图片的部分。
48.根据权利要求28所述的装置,还包括:
识别与所述当前译码块相关联的参考图片;以及
存储所述参考图片的由所述一个或多个仿射运动矢量裁剪参数定义的一部分。
49.根据权利要求48所述的方法,其中,所述参考图片的所述一部分被存储在所述存储器缓冲器中以用于使用所述当前译码块进行仿射运动处理操作。
50.根据权利要求28所述的装置,还包括:
使用来自由所述经裁剪的仿射运动矢量指示的参考图片的参考图片数据来处理所述当前译码块。
51.根据权利要求1所述的方法,其中,用于所述当前译码块的所述样本的所述仿射运动矢量是根据以下各项来确定的:第一基础缩放运动矢量值、运动矢量值的第一水平变化、运动矢量值的第一垂直变化、第二基础缩放运动矢量值、运动矢量值的第二水平变化、运动矢量值的第二垂直变化、所述样本的水平坐标和所述样本的垂直坐标。
52.根据权利要求28所述的方法,其中,所述控制数据包括来自推导表的值。
53.根据权利要求28所述的方法,其中,所述当前译码块是亮度译码块。
54.一种包括存储在其上的指令的非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:
从视频数据获得当前译码块;
确定用于所述当前译码块的控制数据;
根据所述控制数据来确定一个或多个仿射运动矢量裁剪参数;
选择所述当前译码块的样本;
确定用于所述当前译码块的所述样本的仿射运动矢量;以及
使用所述一个或多个仿射运动矢量裁剪参数来裁剪所述仿射运动矢量,以生成经裁剪的仿射运动矢量。
CN202080065276.1A 2019-09-29 2020-09-28 利用矢量裁剪的仿射译码 Pending CN114402617A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962907664P 2019-09-29 2019-09-29
US62/907,664 2019-09-29
US201962910384P 2019-10-03 2019-10-03
US62/910,384 2019-10-03
US17/033,659 US11317111B2 (en) 2019-09-29 2020-09-25 Affine coding with vector clipping
US17/033,659 2020-09-25
PCT/US2020/053147 WO2021062401A1 (en) 2019-09-29 2020-09-28 Affine coding with vector clipping

Publications (1)

Publication Number Publication Date
CN114402617A true CN114402617A (zh) 2022-04-26

Family

ID=75162657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080065276.1A Pending CN114402617A (zh) 2019-09-29 2020-09-28 利用矢量裁剪的仿射译码

Country Status (7)

Country Link
US (1) US11317111B2 (zh)
EP (1) EP4035395A1 (zh)
JP (1) JP2022548990A (zh)
KR (1) KR20220064970A (zh)
CN (1) CN114402617A (zh)
AU (1) AU2020353234A1 (zh)
WO (1) WO2021062401A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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
KR20220129679A (ko) * 2018-05-10 2022-09-23 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
WO2020251417A2 (en) * 2019-09-30 2020-12-17 Huawei Technologies Co., Ltd. Usage of dct based interpolation filter and enhanced bilinear interpolation filter in affine motion compensation
EP4029250A4 (en) * 2019-09-30 2023-01-04 Huawei Technologies Co., Ltd. INTERPOLATION FILTER FOR INTER PREDICTION DEVICE AND VIDEO CODING METHOD
CN114450958B (zh) * 2019-09-30 2023-08-22 华为技术有限公司 用于减小增强插值滤波器的内存带宽的仿射运动模型限制
CN116076073A (zh) * 2021-09-02 2023-05-05 辉达公司 用于高性能视频编码的硬件编解码器加速器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017134957A1 (ja) * 2016-02-03 2017-08-10 シャープ株式会社 動画像復号装置、動画像符号化装置、および予測画像生成装置
CN112335247A (zh) * 2018-06-29 2021-02-05 Vid拓展公司 用于基于仿射运动模型的视频译码的自适应控制点选择
US11736713B2 (en) * 2018-11-14 2023-08-22 Tencent America LLC Constraint on affine model motion vector
CN113196771B (zh) * 2018-12-21 2023-12-22 北京字节跳动网络技术有限公司 基于运动矢量精度的运动矢量范围
US10904550B2 (en) * 2019-01-12 2021-01-26 Tencent America LLC Method and apparatus for video coding

Also Published As

Publication number Publication date
WO2021062401A1 (en) 2021-04-01
EP4035395A1 (en) 2022-08-03
US11317111B2 (en) 2022-04-26
JP2022548990A (ja) 2022-11-22
US20210099729A1 (en) 2021-04-01
AU2020353234A1 (en) 2022-03-17
KR20220064970A (ko) 2022-05-19

Similar Documents

Publication Publication Date Title
AU2019356483B2 (en) Improvements on history-based motion vector predictor
US10701390B2 (en) Affine motion information derivation
US11057636B2 (en) Affine motion prediction
JP6740243B2 (ja) ビデオコーディングにおける動きベクトル導出
WO2019136657A1 (en) Video coding using local illumination compensation
US11582475B2 (en) History-based motion vector prediction
US11317111B2 (en) Affine coding with vector clipping
CN114303374A (zh) 利用可切换滤波器的参考画面重采样
CN113170123A (zh) 照明补偿与帧间预测的相互作用
CN113287300A (zh) 针对照度补偿的块大小限制
RU2819420C2 (ru) Повторная дискретизация опорных кадров с помощью переключаемых фильтров

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40066332

Country of ref document: HK