CN112840646A - 仿射运动预测 - Google Patents

仿射运动预测 Download PDF

Info

Publication number
CN112840646A
CN112840646A CN201980054838.XA CN201980054838A CN112840646A CN 112840646 A CN112840646 A CN 112840646A CN 201980054838 A CN201980054838 A CN 201980054838A CN 112840646 A CN112840646 A CN 112840646A
Authority
CN
China
Prior art keywords
motion vector
affine
control point
block
list
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
CN201980054838.XA
Other languages
English (en)
Inventor
H.黄
W-J.钱
M.卡尔切维茨
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 CN112840646A publication Critical patent/CN112840646A/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/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
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/46Embedding additional information in the video signal during the compression process
    • 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
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/55Motion estimation with spatial constraints, e.g. at image or region borders
    • 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

一种视频编码器和视频解码器,被配置为使用仿射运动预测对视频数据块进行编码和解码。仿射运动预测可以包括使用仿射高级运动矢量预测(AMVP)运动矢量预测器列表来预测控制点运动矢量。视频编码器和视频解码器可以被配置为构造用于视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,其中,仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器。

Description

仿射运动预测
本申请要求于2019年8月26日递交的美国专利申请No.16/550,910的优先权,该专利要求于2018年8月28日递交的美国临时专利申请No.62/723,919、2018年9月7日递交的美国临时专利申请No.62/728,489,和2018年9月13日递交的美国临时专利申请No.62/730,814的优先权,每个申请的完整内容以引入的方式并入本文。
技术领域
本公开涉及视频编码和视频解码。
背景技术
数字视频功能能够集成到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、便携式或台式计算机、平板电脑、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏机、蜂窝式或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频译码技术,比如那些在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频译码(AVC)、ITU-T H.265/高效视频译码(HEVC)所定义的标准以及此类标准的扩展中所描述的技术。通过实施此类视频译码技术,视频设备可以更高效地发送、接收、编码、解码和/或存储数字视频信息。
视频译码技术包括空域(图片内)预测和/或时域(图片间)预测来减少或消除视频序列中固有的冗余。对于基于块的视频译码,可以将视频条带(例如,视频图片或视频图片的一部分)分割为视频块,其也可以称为编码树单元(CTU)、编码单元(CU)和/或编码节点。对于图片的帧内译码的(I)条带中的视频块,可以使用相对于同一图片中邻近块中的参考样点的空域预测进行编码。对于图片的帧间译码的(P或B)条带中的视频块,可以使用相对于同一图片中邻近块中的参考样点的空域预测或者相对于其他参考图片中的参考样点的时域预测。图片可以称为帧,并且参考图片可以称为参考帧。
发明内容
一般而言,本公开描述与视频编解码器中的帧间预测有关的技术。更具体地,本公开描述了用于执行仿射运动预测技术的方法和设备。仿射运动预测是一种运动预测技术,与简单的平移运动(例如,从当前译码的块的(x,y)位置减去预测器块的(x,y)位置)相比,其使用更为复杂的运动模型(例如,旋转、缩放、放大等)。在仿射运动预测中可以使用多个仿射运动模型。例如,4-参数仿射运动模型可以使用在块的两个角处确定的两个运动矢量(称为控制点运动矢量)。每个控制点运动矢量的x和y分量是4-参数仿射运动模型中的参数。6-参数仿射运动模型可以使用块的三个角处的三个控制点运动矢量。
视频编码器可以被配置为根据来自邻近块的控制点运动矢量和/或标准(例如,平移)运动矢量来预测控制点运动矢量的值,而不是针对每个块的控制点运动矢量进行译码。来自邻近块的这样的控制点运动矢量和/或标准(例如,平移)运动矢量可以被称为仿射运动矢量预测器。视频编码器和视频解码器可以被配置为基于一些预定规则来构造仿射运动矢量预测器列表。然后,视频编码器通过信令通知到列表的索引值来指令视频解码器要在其上使用列表中的哪种运动矢量预测器。
仿射运动矢量预测器可以包括两个示例类型:继承的仿射运动矢量预测器和构造的仿射运动矢量预测器。继承的仿射运动矢量预测器是从邻近块的控制点运动矢量导出的。构造的仿射运动矢量预测器是从邻近块的标准(例如,平移)运动矢量导出的。这样,继承的仿射运动矢量预测器来自使用仿射运动预测译码的邻近块,而构造的仿射运动矢量预测器来自使用标准(例如,平移)运动预测(通常是帧间预测)译码的邻近块。
可以以几种预测模式之一执行仿射运动矢量预测,预测模式包括高级运动矢量预测(AMVP)模式和合并模式。在仿射AMVP模式和仿射合并模式二者中,视频编码器构造仿射运动矢量预测器列表。但是,对于每种模式,构造该列表的技术可能是不同的。在仿射AMVP模式中,除了从使用的列表中识别仿射运动矢量预测器外,还信令通知运动矢量差。运动矢量差是针对当前块确定的实际控制点运动矢量的值与仿射运动矢量预测器的值之间的差。在仿射合并模式中,不发送运动矢量差。相反,所指示的仿射运动矢量预测器的值用作该块的控制点运动矢量。
在一些示例中,本公开描述了用于构造用于仿射AMVP模式的仿射运动矢量预测器列表的技术。在一个示例中,使用以下技术来构造仿射运动矢量预测器列表。首先,如果可用,视频译码器插入从邻近候选块导出的一个或多个继承的仿射运动矢量预测器。如果列表中现有预测器的数量小于预定义的最大数量,如果可用,则视频译码器插入构造的仿射运动矢量预测器。如果列表中现有预测器的数量仍小于该预定义的最大数量,则视频译码器插入仿射运动矢量预测器,该仿射运动矢量预测器的所有控制点运动矢量(MV)等于一个指定MV。这样,对于一些示例块,仿射运动矢量预测器列表可以包括继承的仿射运动矢量预测器或构造的仿射运动矢量预测器之一,连同使得所有控制点MV等于一个指定MV的仿射运动矢量预测器。
在本公开的一个示例中,一种解码视频数据的方法包括接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行解码。
在本公开的另一个示例中,一种装置被配置为对视频数据进行解码,该装置包括用于接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块的部件,用于构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,用于从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量的部件,以及用于使用确定的控制点运动矢量对该视频数据块进行解码的部件。
在另一个示例中,本公开描述了一种存储指令的非暂时性计算机可读存储介质,在指令被执行时使一个或多个处理器接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行解码。
在本公开的另一个示例中,一种对视频数据进行编码的方法,包括接收要使用仿射高级运动矢量预测(AMVP)模式进行编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行编码。
在本公开的另一个示例中,一种装置被配置为对视频数据进行编码,该装置包括存储器,其被配置为存储要使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,以及与存储器通信的一个或多个处理器,该一个或多个处理器被配置为接收该视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行编码。
在另一个示例中,本公开描述了一种存储指令的非暂时性计算机可读存储介质,指令被执行时使一个或多个处理器接收要使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行编码。
在附图和以下描述中阐述一个或多个示例的细节。根据说明书、附图和权利要求书,其它特征、目的和优势将显而易见。
附图说明
图1是示出可以执行本公开的技术的示例视频编码和解码系统的框图。
图2A和2B是示出示例四叉树二叉树(QTBT)结构和相对应的编码树单元(CTU)的概念示意图。
图3是示出可以执行本公开的技术的示例视频编码器的框图。
图4是示出可以执行本公开的技术的示例视频解码器的框图。
图5是示出用于6-参数仿射运动模型的示例运动矢量的概念示意图。
图6是示出用于简化的4-参数仿射运动模型的示例运动矢量的概念示意图。
图7是示出示例继承的仿射运动矢量预测器的概念示意图。
图8是示出用于继承的仿射运动矢量预测器的示例候选块的概念示意图。
图9是示出示例行缓冲器的概念示意图。
图10是示出超出行缓冲器的示例邻近仿射块的概念示意图。
图11是示出用于灵活译码器顺序的示例当前块的概念示意图。
图12是示出视频编码器的示例操作的流程图。
图13是示出视频解码器的示例操作的流程图。
图14是示出视频编码器的另一示例操作的流程图。
图15是示出视频解码器的另一示例操作的流程图。
具体实施方式
图1是图示可执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常指向对视频数据进行译码(编码和/或解码)。一般地,视频数据包括用于处理视频的任何数据。从而,视频数据可以包括原始的未译码视频、编码视频、解码(例如重构)视频以及视频元数据(诸如,信令通知的数据)。
如图1所示,在此示例中,系统100包括提供将由目标设备116进行解码和显示的编码视频数据的源设备102。特别地,源设备102经由计算机可读介质110将视频数据提供给目标设备116。源设备102和目标设备116可以包括多种设备中的任何一种,包括台式计算机、笔记本(即膝上型计算机)、平板电脑、机顶盒、手持电话(如智能手机)、电视、照相机、显示设备、数字媒体播放器、视频游戏机、视频流设备等。在一些情况下,源设备102和目标设备116可以被配备用于无线通信,并且因此可以称为无线通信设备。
在图1的示例中,源设备102包括视频源104(例如相机)、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目标设备116的视频解码器300可以配置为应用用于仿射运动预测的技术。因而,源设备102代表视频编码设备的示例,而目标设备116代表视频解码设备的示例。在其他示例中,源设备和目标设备可以包括其他组件或布置。例如,源设备102可以从比如外部摄像机的外部视频源接收视频数据。同样,目标设备116可以与外部显示设备通过接口相连接,而不包括集成的显示设备。
如图1所示的系统100仅是一个示例。一般地,任何数字视频编码和/或解码设备都可以执行用于仿射运动预测的技术。源设备102和目标设备116仅仅是此类译码设备的示例,其中,源设备102生成用于传输到目标设备116的译码视频数据。本公开将“译码”设备表示为执行数据译码(编码和/或解码)的设备。从而,视频编码器200和视频解码器300代表译码设备的示例,具体地,分别是视频编码器和视频解码器。在一些示例中,源设备102和目标设备116可以用基本上对称的方式操作,使得源设备102和目标设备116中的每一个均包括视频编码和解码组件。于是,系统100可以支持源设备102和目标设备116之间的单向或双向视频传输,例如用于视频流、视频回放、视频广播或者视频电话。
一般地,视频源104代表视频数据源(即原始的未译码视频数据),并将视频数据的连续的图片(也称为“帧”)序列提供给视频编码器200,其对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,比如摄像机、包括先前捕获的原始视频的视频档案和/或从视频内容提供商接收视频的视频馈送接口。作为进一步的替代方案,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括编码视频数据的比特流。然后,源设备102可以经由输出接口108将编码视频数据输出到计算机可读介质110上,通过例如目标设备116的输入接口122进行接收和/或取回。
源设备102的存储器106和目标设备116的存储器120代表通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如来自视频源104的原始视频和来自视频解码器300的原始的解码视频数据。附加地或可替代地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300执行的软件指令。尽管在此示例中存储器106和存储器120与视频编码器200和视频解码器300分开示出,但是应当理解的是,视频编码器200和视频解码器300还可以包括实现功能上相似或等效目的的内部存储器。进一步来说,存储器106、120可以存储例如从视频编码器200输出并输入到视频解码器300的编码视频数据。在一些示例中,部分的存储器106、120可以分配为一个或多个视频缓冲区,例如用来存储原始的解码和/或编码视频数据。
计算机可读介质110可以代表能够将编码视频数据从源设备102传输到目标设备116的任何类型的介质或设备。在一些示例中,计算机可读介质110代表通信介质以使源设备102能够例如经由射频网络或基于计算机的网络将编码视频数据实时地直接发送到目标设备116。根据比如无线通信协议的通信标准,输出接口108可以对包括编码视频数据的传输信号进行调制,并且输入接口122可以对接收到的传输信号进行调制。通信介质可以包括任何无线或有线通信介质,比如射频(RF)频谱或一条或多条物理传输线。通信介质可以形成比如局域网、广域网或比如因特网的全球网络的基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站或有助于从源设备102到目标设备116的通信的任何其他装备。
在一些示例中,计算机可读介质110可以包括存储设备112。源设备102可以将编码数据从输出接口108输出到存储设备112。类似地,目标设备116可以经由输入接口122访问来自存储设备112的编码数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,比如硬盘、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器,或者用于存储编码视频数据的任何其他合适的数字存储介质。
在一些示例中,计算机可读介质110可以包括文件服务器114或可存储由源设备102生成的编码视频数据的另一中间存储设备。源设备102可将编码视频数据输出到文件服务器114。目标设备116可以经由流传输或下载来访问来自文件服务器114的存储的视频数据。文件服务器114可以是能够存储编码视频数据并将编码视频数据发送到目标设备116的任何类型的服务器设备。文件服务器114可以代表(例如用于网站的)网络服务器、文件传输协议(FTP)服务器、内容传递网络设备或网络附加存储(NAS)设备。目标设备116可以通过包括因特网连接的任何标准数据连接来访问来自文件服务器114的编码视频数据。这可以包括无线信道(例如Wi-Fi连接)、有线连接(例如数字订户线路(DSL)、电缆调制解调器等)或者适合访问存储在文件服务器114上的编码视频数据的二者的组合。文件服务器114和输入接口122可以配置为根据流传输协议、下载传输协议或其组合来操作。
输出接口108和输入接口122可以代表无线发射机/接收机、调制解调器、有线联网组件(例如以太网卡)、根据各种IEEE 802.11标准中的任何一种进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以配置为根据比如4G、4G-LTE(长期演进)、LTE高级、5G或类似标准的蜂窝通信标准来传输比如编码视频数据的数据。在输出接口108包括无线发射机的某些示例中,输出接口108和输入接口122可以配置为根据其他无线标准,比如IEEE802.11规范、IEEE802.15规范(例如ZigBeeTM)、BluetoothTM标准等来传输比如编码视频数据的数据。在一些示例中,源设备102和/或目标设备116可以包括各自的片上系统(system-on-a-chip,SoC)设备。例如,源设备102可以包括SoC设备来执行归于视频编码器200和/或输出接口108的功能,并且目标设备116可以包括SoC设备来执行归于视频解码器300和/或输入接口122的功能。
本公开的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,比如空中电视广播、有线电视传输、卫星电视传输、比如基于HTTP的动态自适应流(DASH)的互联网流视频传输、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频进行解码或者其他应用。
目标设备116的输入接口122从计算机可读介质110(例如通信介质、存储设备112、文件服务器114等)接收编码视频比特流。来自计算机可读介质110的编码视频比特流可以包括由视频编码器200定义的、也由视频解码器300使用的信令信息,比如语法元素,该语法元素具有描述视频块或其他译码单元(例如条带、图片、图片组、序列等)的特点和/或处理的值。显示设备118向用户显示解码视频数据的解码图片。显示设备118可以代表比如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类显示设备的各种显示设备中的任何一种。
尽管未在图1中示出,但在一些示例中,视频编码器200和视频解码器300中的每一个可以与音频编码器和/或音频解码器集成在一起,并且可以包括适当的MUX-DEMUX单元或其他硬件和/或软件,来处理公共数据流中包括音频和视频的多路复用流。如果适用,MUX-DEMUX单元可以符合ITUH.223多路复用器协议或比如用户数据报协议(UDP)的其他协议。
视频编码器200和视频解码器300中的每一个可以实现为各种合适的编码器和/或解码器电路中的任何一种,比如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件,硬件、固件或其任何组合。当该技术部分地以软件实施时,设备可以将用于软件的指令存储在合适的非暂时计算机可读介质中,并使用一个或多个处理器在硬件中执行该指令来执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,这两者都可以集成为各自设备中组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或比如蜂窝电话的无线通信设备。
如下面将更详细描述的,视频编码器200和视频解码器300可以被配置为使用仿射运动预测来对视频数据块进行编码和解码。仿射运动预测是一种运动预测技术,与简单的平移运动(例如,从当前译码的块的(x,y)位置减去预测器块的(x,y)位置)相比,其使用更为复杂运动的运动(例如,旋转、缩放、放大等)。视频编码器200和视频解码器300可以在仿射运动预测中使用多个仿射运动模型。例如,4-参数仿射运动模型可以使用在块的两个角处确定的两个运动矢量(称为控制点运动矢量)。每个控制点运动矢量的x和y分量是4-参数仿射运动模型中的参数。6-参数仿射运动模型可以使用在块的三个角处的三个控制点运动矢量。
视频编码器200和视频解码器300可以被配置为根据来自邻近块的控制点运动矢量和/或标准(例如,平移)运动矢量来预测控制点运动矢量的值,而不是针对每个块的控制点运动矢量进行译码。来自邻近块的这样的控制点运动矢量和/或标准(例如,平移)运动矢量可以被称为仿射运动矢量预测器。视频编码器200和视频解码器300可以被配置为基于一些预定规则来构造仿射运动矢量预测器列表。然后,视频编码器200可以通过信令通知到列表的索引值来指令视频解码器300要在其上使用列表中的哪种运动矢量预测器。
仿射运动矢量预测可以包括两个示例类型:继承的仿射运动矢量预测器和构造的仿射运动矢量预测器。继承的仿射运动矢量预测器是从邻近块的控制点运动矢量导出的。构造的仿射运动矢量预测器是从邻近块的标准(例如,平移)运动矢量导出的。这样,继承的仿射运动矢量预测器来自使用仿射运动预测译码的邻近块,而构造的仿射运动矢量预测器来自使用标准(例如,平移)运动预测(通常是帧间预测)译码的邻近块。
视频编码器200和视频解码器300可以以几种预测模式之一执行仿射运动矢量预测,预测模式包括高级运动矢量预测(AMVP)模式和合并模式。在仿射AMVP模式和仿射合并模式中,视频编码器200和视频解码器300构造仿射运动矢量预测器列表。但是,对于每种模式,构造列表的技术可能是不同的。在仿射AMVP模式中,除了从使用的列表中识别仿射运动矢量预测器之外,还信令通知运动矢量差。运动矢量差是针对当前块确定的实际控制点运动矢量的值与仿射运动矢量预测器的值之间的差。在仿射合并模式中,不发送运动矢量差。相反,所指示的仿射运动矢量预测器的值用作该块的控制点运动矢量。
在一些示例中,本公开描述了用于构造用于仿射AMVP模式的仿射运动矢量预测器列表的技术。在一个示例中,视频编码器200和视频解码器300使用以下技术来构造仿射运动矢量预测器列表。首先,如果可用,视频编码器200和/或视频解码器300插入从邻近候选块导出的一个或多个继承的仿射运动矢量预测器。在一些示例中,可能不存在继承的仿射运动矢量预测器。如果列表中现有预测器的数量小于预定义的最大数量,并且如果可用,则视频编码器200和/或视频解码器300插入构造的仿射运动矢量预测器。在一些示例中,可能不存在构造的仿射运动矢量预测器。如果列表中现有预测器的数量仍小于预定义的最大数量,则视频编码器200和/或视频解码器300插入使得所有控制点MV等于一个指定MV的仿射运动矢量预测器。因此,对于一些示例块,仿射运动矢量预测器列表将包括一个或多个继承的仿射运动矢量预测器和/或一个或多个构造的仿射运动矢量预测器,连同使得所有控制点MV等于一个指定MV的仿射运动矢量预测器。
在本公开的另一个示例中,视频解码器300包括存储器,其被配置为存储使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,以及与该存储器通信的一个或多个处理器,该一个或多个处理器被配置为接收该视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行解码。
在本公开的另一各示例中,视频编码器200包括存储器,其被配置为存储要使用仿射高级运动矢量预测(AMVP)模式进行编码的视频数据块,以及与存储器通信的一个或多个处理器,该一个或多个处理器被配置为接收该视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行编码。
视频编码器200和视频解码器300可以根据视频码标准(诸如ITU-TH.265,也称为高效视频编码(HEVC))或其扩展(诸如多视图和/或可缩放的视频编码扩展)来操作。作为替代,视频编码器200和视频解码器300可以根据其它专有或工业标准,诸如联合探索测试模型(JEM)。最近,视频编码专家组(VCEG)和运动图像专家组(MPEG)的联合视频专家组(JVET)正在开发一种新的视频编码标准,称为通用视频编码(VVC)标准。Benjamin Bross的文档JVET-J1001“多功能视频编码(草案1)”中提供了VVC的早期草案,并且在Jianle Chen和Elena Alshina的文档JVET-J1002“通用视频编码和测试模型1(VTM 1)的算法描述”中可以获得其算法描述。但是,本公开的技术不限于任何特定的编码标准。
一般地,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”一般是指包括待处理的(例如编码、解码或以其他方式在编码和/或解码过程中使用的)数据的结构。例如,块可以包括亮度和/或色度数据的样点的二维矩阵。一般地,视频编码器200和视频解码器300可以对以YUV(例如Y、Cb、Cr)格式代表的视频数据进行译码。也就是说,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中色度分量可以包括红色和蓝色色度分量,而不是对图片的样点的红色、绿色和蓝色(RGB)数据进行译码。在一些示例中,视频编码器200在编码之前将接收到的RGB格式的数据转换成YUV表示,并且视频解码器300将YUV表示转换成RGB格式。可替代地,预处理和后处理单元(未示出)可以执行这些转换。
本公开通常表示图片的译码(例如编码和解码),包括对图片数据进行编码或解码的过程。类似地,本公开可以表示对图片的块进行译码以包括对块的数据进行编码或解码的过程,例如预测和/或残差译码。编码视频比特流一般包括用于代表译码决策(例如译码模式)的语法元素和将图片分割为块的一系列值。从而,对图片或块进行译码的引用一般应理解为对形成图片或块的语法元素的值进行译码。
HEVC定义各种的块,包括编码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频译码器(比如视频编码器200)根据四叉树结构将编码树单元(CTU)分割为CU。也就是说,视频译码器将CTU和CU分割为四个相等的非重叠正方形,并且四叉树的每一个节点具有零个或四个子代节点。没有子代节点的节点可以称为“叶节点”,并且这种叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频译码器可以进一步分割PU和TU。例如,在HEVC中,残差四叉树(RQT)代表TU的分割。在HEVC中,PU代表帧间预测数据,而TU代表残差数据。帧内预测的CU包括帧内预测信息,比如帧内模式指示。
作为另一示例,视频编码器200和视频解码器300可以配置为根据JEM和/或VVC进行操作。根据JEM和/或VVC的一些示例,视频译码器(比如视频编码器200)将图片分割为多个编码树单元(CTU)。视频编码器200可以根据比如四叉树-二叉树(QTBT)结构的树结构来对CTU进行分割。JEM的QTBT结构消除了多个分割类型的概念,比如HEVC的CU、PU和TU之间的区分。JEM/VCC的QTBT结构包括两个级别:根据四叉树分割而分割出来的第一级,以及根据二叉树分割而分割出来的第二级。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编码单元(CU)。
在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT结构来代表亮度分量和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT结构,比如用于亮度分量的一个QTBT结构和用于两个色度分量的另一QTBT结构(或用于各自色度分量的两个QTBT结构)。
视频编码器200和视频解码器300可以配置为使用根据HEVC的四叉树分割、JEM/VCC的QTBT分割或其他分割结构。出于说明的目的,针对QTBT分割给出了本公开的技术的描述。然而,应该理解的是,本公开的技术还可以应用于配置使用四叉树分割或其它类型的分割的视频译码器。
本公开可以互换地使用“N×N”和“N乘N”来表示块(比如CU或其他视频块)在垂直和水平维度方面的样点维度,例如16×16样点或16乘16样点。一般地,16×16CU在垂直方向上将有16个样点(y=16),在水平方向上将有16个样点(x=16)。同样地,N×N的CU一般地在垂直方向上具有N个样点,在水平方向上具有N个样点,其中N代表非负整数值。CU中的样点可以按行和列来排列。此外,CU在水平方向上不必具有与垂直方向上相同数量的样点。举例来说,CU可以包含N×M个样点,其中M不一定等于N。
视频编码器200对代表预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示将如何预测CU以便形成用于CU的预测块。残差信息一般代表编码前CU的样点与预测块之间的逐样点差异。
为了预测CU,视频编码器200一般地可以通过帧间预测或帧内预测来形成用于CU的预测块。帧间预测一般是指从先前译码的图片的数据中预测CU,而帧内预测一般是指从同一图片的先前译码数据中预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以识别例如在CU和参考块之间的差异的方面与CU紧密地匹配的参考块。视频编码器200可以使用绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)或其他此类差值计算来计算差值度量以确定参考块是否与当前CU紧密地匹配。在某些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。
JEM和VVC的示例还可以提供仿射运动补偿模式,其可以视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定代表非平移运动的两个或更多个运动矢量,比如放大或缩小、旋转、透视运动或其他不规则运动类型。此公开在下面更详细地描述与仿射运动预测相关的技术。
为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的示例提供了六十七种帧内预测模式,包括各种方向的模式以及平面模式和DC模式。一般地,视频编码器200选择帧内预测模式,其描述当前块(例如CU的块)的邻近样点,以从其预测当前块的预测样点。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对CTU和CU进行译码,则此类样点通常可以在与当前块相同的图片中在当前块的上方、上左侧或左侧。
视频编码器200对代表当前块的预测模式的数据进行编码。举例来说,对于帧间预测模式,视频编码器200可以对数据进行编码,该数据代表使用了各种可用帧间预测模式中的哪一种以及对应模式的运动信息。对于单向或双向帧间预测,例如视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来对运动矢量进行编码。视频编码器200可以使用类似模式来对仿射运动补偿模式的运动矢量进行编码。
在预测(比如块的帧内预测或帧间预测)之后,视频编码器200可以计算块的残差数据。残差数据(比如残差块)代表块与该块的预测块之间的逐样点差异,预测块是使用对应预测模式形成。视频编码器200可以将一个或多个变换应用于残差块以在变换域而非样点域中产生变换数据。举例来说,视频编码器200可以将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在一次变换之后应用二次变换,比如取决于模式的不可分二次变换(MDNSST)、取决于信号的变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。
如上所述,在进行任何变换以产生变换系数之后,视频编码器200可以对变换系数执行量化。量化通常是指对变换系数进行量化来可能地减少用于代表系数的数据量,从而提供进一步的压缩的过程。通过执行量化过程,视频编码器200可以减小与系数中的一些或所有相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值四舍五入为m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对待量化的值执行按位右移。
量化之后,视频编码器200可以扫描变换系数,从而从包括量化变换系数的二维矩阵中产生一维矢量。可以将扫描设计为将较高能量(因此频率较低)的系数放在矢量的前面,并将较低能量(因此频率较高)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来对量化变换系数进行扫描以产生序列化的矢量,然后对矢量的量化变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在对量化变换系数进行扫描以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术译码(CABAC)来对一维矢量进行熵编码。视频编码器200还可以熵编码用于语法元素的值,语法元素描述与视频解码器300在解码视频数据中使用的编码视频数据相关联的元数据。
为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给待发送的符号。例如,上下文可以涉及符号的邻近值是否是零值。概率确定可以是基于分配给符号的上下文。
视频编码器200可以进一步地生成例如在图片标头、块标头、条带标头中到视频解码器300的语法数据,比如基于块的语法数据、基于图片的语法数据以及基于序列的语法数据,或者生成其他语法数据,比如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。视频解码器300可以类似地对此类语法数据进行解码以确定如何解码对应视频数据。
以此方式,视频编码器200可以生成包括编码视频数据的比特流,例如描述将图片分割成块(例如CU)的语法元素以及块的预测和/或残差信息。最终,视频解码器300可以接收比特流并且解码编码视频数据。
一般地,视频解码器300执行由视频编码器200执行的相反过程以对比特流的编码视频数据进行解码。例如,视频解码器300可以使用CABAC,以与视频编码器200的CABAC编码过程基本相似(尽管与之相反)的方式,对比特流的语法元素的值进行解码。语法元素可以定义分割信息,该分割信息关于将图片分割为CTU和根据比如QTBT结构的对应分割结构对每一个CTU进行分割以定义CTU的CU。语法元素可以进一步定义视频数据的块(例如CU)的预测和残差信息。
例如,可以由量化变换系数代表残差信息。视频解码器300可以逆量化和逆变换块的量化变换系数以重现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关的预测信息(例如用于帧间预测的运动信息)来形成块的预测块。然后,视频解码器300可以(在逐样点的基础上)组合预测块和残差块以再现原始块。视频解码器300可以执行附加过程(诸如执行去方块过程)来减少沿块边界的视觉伪像。
根据本公开的技术,视频编码器200和视频解码器300可以被配置为执行以下描述的用于仿射运动预测的技术的任意组合。
一般地,本公开可以表示“信令通知”某些信息,比如语法元素。术语“信令通知”通常可以指对于语法元素和/或用于对编码视频数据进行解码的其他数据的值的通信。也就是说,视频编码器200可以信号通知比特流中的语法元素的值。一般地,信令通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地(或非实时地,比如可能在将语法元素存储到存储设备112以供稍后由目标设备116取回时发生)将比特流传送到目标设备116。
图2A和2B是图示示例四叉树二叉树(QTBT)结构130和对应编码树单元(CTU)132的概念图。实线代表四叉树划分,虚线指示二叉树划分。在二叉树的每一个划分(即非叶)节点中,信令通知一个标志以指示使用了哪种划分类型(即水平或垂直),其中在此示例中,0指示水平划分,1指示垂直划分。对于四叉树划分,由于四叉树节点将块水平地和垂直地分割为具有相等尺寸的4个子块,因此无需指示划分类型。相应地,视频编码器200可以编码QTBT结构130的区域树级(即实线)的语法元素(例如划分信息)和QTBT结构130的预测树级(即虚线)的语法元素(例如划分信息),并且视频解码器300可以对以上进行解码。对于QTBT结构130的终端叶节点代表的CU,视频编码器200可以编码视频数据(比如预测和变换数据),并且视频解码器300可以对以上进行解码。
一般地,图2B的CTU 132可以与参数相关联,这些参数定义与第一和第二级的QTBT结构130的节点相对应的块的尺寸。这些参数可以包括CTU尺寸(代表样点中CTU 132的尺寸)、最小四叉树尺寸(MinQTSize,代表最小允许的四叉树叶节点尺寸)、最大二叉树尺寸(MaxBTSize,代表最大允许的二叉树根节点尺寸)、最大二叉树深度(MaxBTDepth,代表最大允许的二叉树深度)和最小二叉树尺寸(MinBTSize,代表最小允许的二叉树叶节点尺寸)。
与CTU相对应的QTBT结构的根节点在QTBT结构的第一级可以具有四个子代节点,每个子代节点可以根据四叉树分割来进行分割。即,第一级的节点是叶节点(没有子代节点)或具有四个子代节点。QTBT结构130的示例代表这样的节点,其包括具有实线分支的子代节点和父节点。如果第一级的节点不大于最大允许的二叉树根节点尺寸(MaxBTSize),则能够通过各自的二叉树进一步对节点进行分割。能够迭代一个节点的二叉树划分,直到划分生成的节点达到最小允许的二叉树叶节点尺寸(MinBTSize)或最大允许的二叉树深度(MaxBTDepth)。QTBT结构130的示例将这样的节点代表为具有虚线分支。二叉树叶节点表示为编码单元(CU),其用于预测(例如图片内或图片间预测)和变换,而无需任何进一步分割。如上所述,CU也可以表示为“视频块”或“块”。
在QTBT分割结构的一些示例中,CTU尺寸设置为128×128(亮度样点和两个对应的64×64色度样点),MinQTSize设置为16×16,MaxBTSize设置为64×64,MinBTSize(用于宽度和高度)设置为4,MaxBTDepth设置为4。首先,将四叉树分割应用于CTU来生成四叉树叶节点。四叉树叶节点可以具有从16×16(即MinQTSize)到128×128(即CTU尺寸)的尺寸。如果叶四叉树节点为128×128,则由于其尺寸超过MaxBTSize(在此示例中为64×64),因此该叶四叉树节点不会进一步被二叉树划分。否则,叶四叉树节点将进一步进行二叉树分割。因此,四叉树叶节点也是二叉树的根节点,且具有为0的二叉树深度。当二叉树深度达到MaxBTDepth(在此示例中为4)时,不允许进一步划分。当二叉树节点具有等于MinBTSize(在此示例中为4)的宽度时,二叉树节点意味着不允许进一步的水平划分。类似地,具有等于MinBTSize的高度的二叉树节点表明不允许对该二叉树节点进行进一步的垂直划分。如上所述,二叉树的叶节点称为CU并且根据预测和变换对其进行进一步处理而无需进一步分割。
图3是图示可以执行本公开的技术的示例视频编码器200的框图。提供图3是为了解释的目的并且不应认为是对本公开中广泛示例和描述的技术的约束。出于说明的目的,本公开在比如开发中的HEVC视频译码标准和H.266视频译码标准(VCC)的视频译码标准的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频译码标准并且通常可应用于视频编码和解码。
在图3的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(DPB)218以及熵编码单元220。
视频数据存储器230可以存储将由视频编码器200的组件进行编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB 218可以用作参考图片存储器,参考图片存储器存储参考视频数据,供视频编码器200用于预测后续视频数据时使用。视频数据存储器230和DPB 218可以由多种存储设备中的任何一种形成,比如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、阻变RAM(RRAM)或其他类型的存储设备。视频数据存储器230和DPB 218可以由相同的存储设备或单独的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起置于片上,如图所示,或者相对于那些组件置于片外。
在本公开中,对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器(除非特别说明如此)或者视频编码器200外部的存储器(除非特别说明如此)。当然,对视频数据存储器230的引用应理解为存储视频编码器200接收的用于编码的视频数据(例如当前块的待编码视频数据)的参考存储器。图1的存储器106还可以对视频编码器200各个单元输出提供临时存储。
图示的图3的各个单元用来帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预设了能够执行的操作的电路。可编程电路是指可以被编程来执行各种任务并且在能够执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如来接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
视频编码器200可以包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程内核。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的指令(例如目标代码),或视频编码器200(未示出)内另一存储器可以存储这样的指令。
视频数据存储器230配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230中取回视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加功能单元,用于根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、帧内块复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元等。
一般地,模式选择单元202协调多个编码次数来测试编码参数的组合以及得出用于这种组合的速率失真值。编码参数可以包括CTU到CU的分割、CU的预测模式、CU的残差数据的变换类型、CU的残差数据的量化参数等。模式选择单元202可以最终选择编码参数的组合,该组合具有比其他测试的组合更佳的速率失真值。
视频编码器200可以将从视频数据存储器230中取回的图片分割为一系列CTU,并将一个或多个CTU封装在条带内。模式选择单元202可以根据树结构(比如上述HEVC的QTBT结构或四叉树结构)来对图片的CTU进行分割。如上所述,视频编码器200可以根据树结构通过对CTU进行分割来形成一个或多个CU。这样的CU通常也可以称为“视频块”或“块”。
一般地,模式选择单元202还控制其组件(例如运动估计单元222、运动补偿单元224和帧内预测单元226)以生成当前块(例如当前CU或HEVC中PU和TU的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可以执行运动搜索来识别在一个或多个参考图片(例如存储在DPB218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。特别地,运动估计单元222可以根据例如绝对差之和(SAD)、差值平方和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算代表潜在参考块与当前块有多相似的值。运动估计单元222通常可以使用当前块与考虑中的参考块之间的逐样点差异来执行这些计算。运动估计单元222可以识别具有这些计算生成的最低值的参考块,指示与当前块最紧密匹配的参考块。
运动估计单元222可以形成一个或多个运动矢量(MV),运动矢量定义参考图片中参考块相对于当前图片中当前块的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器来对预测块进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索由各自运动矢量标识的两个参考块的数据并且(例如通过逐样点平均或加权平均)组合检索的数据。
根据本公开的技术,运动估计单元222和运动补偿单元224可以被配置为执行下面针对仿射运动预测描述的技术的任何组合。例如,如将在下面更详细地解释说明的,运动估计单元222和运动补偿单元224可以被配置为接收要使用仿射高级运动矢量预测(AMVP)模式进行编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对视频数据块进行编码。
作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块邻近的样点来生成预测块。例如,对于定向模式,帧内预测单元22通常可以数学地组合邻近样点值,并且在当前块上沿定义的方向填充这些计算值来产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算当前块的邻近样点的平均值,并且生成预测块以包括对于预测块的每一个样点所得到的平均值。
模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未编码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样点差。得到的逐样点差定义当前块的残差块。在一些示例中,残差生成单元204还可以使用残差差分脉冲编码调制(RDPCM)来确定残差块中样点值之间的差以生成残差块。在某些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
在模式选择单元202将CU分割为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种尺寸的PU。如上所述,CU的尺寸可以指CU的亮度译码块的尺寸,而PU的尺寸可以指PU的亮度预测单元的尺寸。假设特定CU的尺寸为2N×2N,则视频编码器200可以支持2N×2N或N×N的PU尺寸用于帧内预测,以及2N×2N、2N×N、N×2N、N×N或类似的对称PU尺寸用于帧间预测。视频编码器20和视频解码器30还可以支持2N×nU、2N×nD、nL×2N和nR×2N的PU尺寸的非对称分割用于帧间预测。
在模式选择单元不将CU进一步分割为PU的示例中,每一个CU可以与亮度译码块和对应的色度译码块相关联。如上所述,CU的尺寸可以指CU的亮度译码块的尺寸。视频编码器200和视频解码器300可以支持2N×2N、2N×N或N×2N的CU尺寸。
对于其他视频译码技术,诸如作为一些示例的帧内块复制模式译码、仿射模式译码和线性模型(LM)模式译码,模式选择单元202经由与译码技术相关联的各自单元来生成正在被编码的当前块的预测块。在一些示例中,比如调色板模式译码,模式选择单元202可以不生成预测块,而是生成语法元素,语法元素指示基于所选调色板重构块的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220,以对其进行编码。
如上所述,残差生成单元204接收当前块和对应预测块的视频数据。然后,残差生成单元204生成用于当前块的残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样点差。
变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多次变换,例如,初次变换和比如旋转变换的二次变换。在一些示例中,变换处理单元206不将变换应用于残差块。
量化单元208可以对变换系数块中的变换系数进行量化以产生量化变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来对变换系数块的变换系数进行量化。视频编码器200(例如经由模式选择单元202)可以通过调整与CU相关联的QP值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能会引入信息损失,从而,量化变换系数可能比变换处理单元206产生的原始变换系数具有更低的精度。
逆量化单元210和逆变换处理单元212可以分别对量化变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元214可以基于重构残差块和由模式选择单元202生成的预测块来产生对应于当前块的重构块(尽管潜在地具有一些程度的失真)。例如,重构单元214可以将重构残差块的样点添加到模式选择单元202生成的预测块的对应样点以产生重构块。
滤波器单元216可以对重构块执行一个或多个滤波器操作。例如,滤波器单元216可以执行去方块操作来减少沿着CU的边缘的块状伪影。在一些示例中,可以跳过滤波器单元216的操作。
视频编码器200将重构块存储在DPB 218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构块存储到DPB 218。在需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波后的重构块存储到DPB 218。运动估计单元222和运动补偿单元224可以从DPB 218中取回参考图片,该参考图片是由重构(并且潜在地滤波的)块形成的,来对随后编码图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的DPB218中的重构块来对当前图片中的其他块进行帧内预测。
一般地,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对视频数据的另一示例的语法元素执行一个或多个熵编码操作来生成熵编码数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(CAVLC)操作、CABAC操作、可变到可变(V2V)长度译码操作、基于语法的上下文自适应二进制算术译码(SBAC)操作、概率区间分割熵(PIPE)译码操作、指数-格伦布译码操作或另一类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的情况下以旁路模式操作。
视频编码器200可以输出比特流,其包括对条带或图片的块进行重构所需的熵编码语法元素。特别地,熵编码单元220可以输出比特流。
上述操作是针对块来描述的。这样的描述应该理解为是用于亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是CU的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度和色度分量。
在一些示例中,不必针对色度译码块重复对于亮度译码块执行的操作。作为一个示例,不需要重复用于识别亮度译码块的运动矢量(MV)和参考图片的操作来识别用于色度块的MV和参考图片。相反,可以缩放亮度译码块的MV来确定色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。
视频编码器200代表被配置为对视频数据进行编码的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实现的一个或多个处理单元,该处理单元被配置为执行下面针对仿射运动预测描述的技术的任何组合。作为一个示例,视频编码器200可以被配置为接收要使用仿射高级运动矢量预测(AMVP)模式进行编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行编码。
图4是图示可执行本公开的技术的示例视频解码器300的框图。提供图4是出于解释的目的,而非限制本公开中广泛示例和描述的技术。为了说明的目的,本公开描述了根据JEM/VCC和HEVC的技术描述的视频解码器300。然而,本公开的技术可以由配置为其他视频译码标准的视频译码设备来执行。
在图4的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加单元以按照其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
CPB存储器320可以存储将由视频解码器300的组件进行解码的视频数据,比如编码视频比特流。例如,可以从计算机可读介质110(图1)获得存储在CPB存储器320中的视频数据。CPB存储器320可以包括存储来自编码视频比特流的编码视频数据(例如语法元素)的CPB。而且,CPB存储器320可以存储除了译码图片的语法元素之外的视频数据,比如代表来自视频解码器300各个单元的输出的临时数据。一般地,DPB 314存储解码图片,当对编码视频比特流的后续数据或图片进行解码时,视频解码器300可以输出解码图片和/或将其用作参考视频数据。CPB存储器320和DPB 314可以由多种存储设备中的任何一种形成,比如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、阻变RAM(RRAM)或者其他类型的存储设备。CPB存储器320和DPB 314可以由相同的存储设备或独立的存储设备提供。在各种示例中,CPB存储器320可以与视频解码器300的其他组件置于片上,或者相对于那些组件置于片外。
另外地或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)中取回译码视频数据。即存储器120可以如上述讨论与CPB存储器320一起存储数据。同样,当视频解码器300的某些或全部功能在将由视频解码器300的处理电路执行的软件实现时,存储器120可以存储将由视频解码器300执行的指令。
图示图4所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。类似于图3,固定功能电路是指提供特定功能并且在可以执行的操作上预设的电路。可编程电路是指可以被编程来执行各种任务并且在能够执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如用来接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,单元中的一个或多个可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。
视频解码器300可包括ALU、EFU、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如目标代码)。
熵解码单元302可从CPB接收编码视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成解码视频数据。
一般地,视频解码器300在逐块的基础上重构图片。视频解码器300可单独地对每一个块执行重构操作(其中当前正在进行重构(即解码)的块可称为“当前块”)。
熵解码单元302可以对定义量化变换系数块的量化变换系数的语法元素以及比如量化参数(QP)和/或变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与量化变换系数块相关联的QP来确定量化程度,并且同样地,确定逆量化程度以供逆量化单元306应用。逆量化单元306可以(例如执行按位左移操作来)对量化变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。
在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块来生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于变换系数块。
进一步来说,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示DPB 314中的参考图片,以从中取回参考块,以及指示识别参考图片中参考块相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以与针对运动补偿单元224(图3)所描述的方式基本上相似的方式来执行帧间预测过程。根据本公开的技术,运动补偿单元316可以被配置为执行下面针对仿射运动预测描述的技术的任何组合。例如,运动补偿单元316可以被配置为接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行解码。
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与针对帧内预测单元226(图3)所描述的方式基本上相似的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314中取回当前块的邻近样点的数据。
重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样点添加到预测块的对应样点来重构当前块。
滤波器单元312可以对重构块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去方块操作来减少沿着重构块的边缘的块状伪影。不一定在所有示例中都执行滤波器单元312的操作。
视频解码器300可以将重构块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,比如用于帧内预测的当前图片的样点以及用于随后的运动补偿的先前解码图片。此外,视频解码器300可以从DPB 314输出解码图片,用于随后呈现在比如图1的显示设备118的显示设备上。
以这种方式,视频解码器300代表视频解码设备的示例,该视频解码设备包括配置为存储视频数据的存储器以及在电路中实现并配置为执行下面针对仿射运动预测描述的技术的任何组合。如将在下面更详细解释说明的,视频解码器300可以被配置为接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块,构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器,从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量,以及使用确定的控制点运动矢量对该视频数据块进行解码。
在本节中将描述仿射运动模型。仿射运动模型可以描述为:
Figure BDA0002945449430000261
其中,(vx,vy)是坐标(x,y)处的运动矢量,并且a、b、c、d、e和f是仿射运动模型的六个参数。用于块的仿射运行模型还能够由块500的三个角处的三个运动矢量
Figure BDA0002945449430000262
Figure BDA0002945449430000263
(也称为控制点运动矢量)来描述,如图5中所示出的。运动场则描述为:
Figure BDA0002945449430000264
其中,w和h是块500的宽度和高度。上面的仿射运动模型可以被称为6-参数仿射运动模型。
简化的4-参数仿射运动模型描述为:
Figure BDA0002945449430000265
类似地,用于块的简化的4-参数仿射运动模型能够由块510的两个角处的两个控制点运动矢量
Figure BDA0002945449430000271
Figure BDA0002945449430000272
来描述,如图6中所示的。运动场则描述为:
Figure BDA0002945449430000273
现在将描述用于其它控制点运动矢量选择技术的技术。控制点运动矢量不一定与图5或图6中的相同。也可以使用其它控制点运动矢量选择技术。针对4-参数仿射运动模型,视频编码器200和/或视频解码器300可以被配置为从控制点运动矢量
Figure BDA0002945449430000274
中的任何两个确定控制点对,如图6中所示。针对6-参数仿射运动模型,视频编码器200和/或视频解码器300可以被配置为从控制点运动矢量的任意三个选择控制点对。给定所选择的控制点运动矢量,视频编码器200和/或视频解码器300可以被配置为通过导出的仿射运动模型来计算其它运动矢量。
如在HEVC中的运动矢量预测技术中,能够从邻近译码块的仿射运动矢量或标准(例如,平移)运动矢量导出仿射运动预测器。仿射运动预测器的两个示例类型包括继承的仿射运动矢量预测器和构造的仿射运动矢量预测器。
为了确定继承的仿射运动矢量预测器,视频编码器200和/或视频解码器300使用候选块的仿射运动模型来导出当前块的控制点处的预测运动矢量。假设当前块与候选块共享相同的仿射运动模型。图7中示出了针对当前块520的示例。候选块A 530的仿射运动矢量(表示为控制点处的运动矢量)是
Figure BDA0002945449430000275
Figure BDA0002945449430000276
候选块A 530的尺寸是(w,h),并且候选块A 530的控制点的坐标是(x0,y0)、(x1,y1)和(x2,y2)。视频编码器200和/或视频解码器300可以被配置为通过利用当前块520的控制点与候选块A 530的左上控制点之间的坐标差替代等式(2)中的(x,y)来导出当前块520的控制点处的预测的仿射运动矢量
Figure BDA0002945449430000277
Figure BDA0002945449430000278
Figure BDA0002945449430000279
Figure BDA00029454494300002710
Figure BDA0002945449430000281
Figure BDA0002945449430000282
其中,(x0’,y0’)、(x1’,y1’)和(x2’,y2’)是当前块520中的控制点的坐标。
类似地,如果用于候选块的仿射运动模型是4-参数仿射运动模型,则视频编码器200和/或视频解码器300可以被配置为应用等式(4)。如果用于当前块的仿射运动模型是4-参数仿射运动模型,则可以忽略等式(6)。
在上面的示例中,候选块A 530可以位于不同位置,诸如如图8中所示的位置A0、B0、B1、A1或B2。
现在将描述构造的仿射运动矢量预测器。视频编码器200和/或视频解码器300可以被配置为通过预测当前块的控制点处的运动矢量来导出构造的仿射运动矢量预测器,如在标准运动矢量预测中一样。例如,如图8中所示,左上控制点处的控制点运动矢量
Figure BDA0002945449430000283
可以通过B2、B3或A2处的标准(例如,平移)运动矢量来预测,右上控制点处的控制点运动矢量
Figure BDA0002945449430000284
可以通过B0或B1处的标准(例如,平移)运动矢量来预测,并且左下控制点处的控制点运动矢量
Figure BDA0002945449430000285
可以通过A0或A1处的标准(例如平移)运动矢量来预测。
现在将描述仿射运动矢量预测器的修剪的示例。为了移除重复的仿射运动矢量预测器,视频编码器200和/或视频解码器300可以被配置为应用修剪过程。当比较两个仿射运动矢量预测器时,视频编码器200和/或视频解码器300可以被配置为比较控制点处的运动矢量。在多个参考帧的情况中,视频编码器200和/或视频解码器300可以被配置为还比较参考索引。在双向预测的情况中,视频编码器200和/或视频解码器300可以被配置为比较以下两者:控制点处的运动矢量和用于两个预测方向的参考索引。
本公开描述了用于执行仿射运动预测的技术。视频编码器200和视频解码器300可以被配置为独立地执行下面的任何技术。另外,视频编码器200和视频解码器300可以被配置为以任何组合执行下面的技术。
在一些示例中,本公开描述了用于仿射运动矢量预测器的简化修剪技术。在一些示例中,视频编码器200和/或视频解码器300可以被配置为在修剪过程期间仅比较指定控制点处的一个运动矢量,而不是比较所有控制点处的运动矢量。在一个示例中,该指定控制点是左上控制点。视频编码器200和/或视频解码器300可以被配置为如果新的仿射运动矢量预测器的控制点运动矢量
Figure BDA0002945449430000291
与仿射运动矢量预测器列表中的任何现有仿射运动矢量预测器的控制点运动矢量
Figure BDA0002945449430000292
相同,则丢弃该新的预测器。
在另一示例中,该指定控制点是右上控制点。视频编码器200和/或视频解码器300可以被配置为如果新的仿射运动矢量预测器的控制点运动矢量
Figure BDA0002945449430000293
与仿射运动矢量预测器列表中的任何现有仿射运动矢量预测器的控制点运动矢量
Figure BDA0002945449430000294
相同,则丢弃该新的预测器。
在又一示例中,该指定控制点是左下控制点。视频编码器200和/或视频解码器300可以被配置为如果新的仿射运动矢量预测器的控制点运动矢量
Figure BDA0002945449430000295
与仿射运动矢量预测器列表中的任何现有仿射运动矢量预测器的控制点运动矢量
Figure BDA0002945449430000296
相同,则丢弃该新的预测器。要注意的是,如果可用,在比较期间也可以比较参考索引。
在另一示例中,修剪过程可以取决于仿射运动矢量预测器的类型。例如,如果新的仿射运动矢量预测器是继承的仿射运动矢量预测器,则视频编码器200和/或视频解码器300可以被配置为仅比较指定控制点处的一个运动矢量。如果新的仿射运动矢量预测器是构造的仿射运动矢量预测器,则视频编码器200和/或视频解码器300可以被配置为不应用修剪过程。
在另一示例中,本公开描述了可以允许用于继承的仿射运动矢量预测的行缓冲器减少的技术。由于运动信息预测器是从先前重构块的重构运动信息导出的,因此来自先前重构块的运动参数被存储在运动参数缓冲器中。
在典型的解码器设计中,工作缓冲器用于存储重构数据,诸如像素值、译码信息(例如,跳跃模式、预测模式、合并模式),并且还存储针对预定义工作块尺寸(例如,CTU或最大编码单元(LCU))的重构运动信息(例如,参考图片索引、运动矢量)。典型地,工作缓冲器使用访问延迟非常低的本地存储器,诸如高速缓存、片上存储器。为了简单起见,在本公开的以下上下文中,将工作块尺寸假设为CTU尺寸。对于CTU内的每个块,如果预测译码信息是从同一CTU内的邻近块导出的,则视频解码器300只需要提取存储在工作缓冲器中的数据即可。但是,当预测译码信息是从当前块所属的CTU外部的块导出的时,则必须从工作缓冲器外部的缓冲器中提取预测信息,这可能会导致更长的延迟。为了解决这一问题,使用了行缓冲器来避免较长的访问延迟。
行缓冲器是具有低访问延迟的本地存储器,并且用于存储当前工作块(例如,工作CTU)外部的块的预测译码信息,并且所存储的信息通常用于针对接下来的块的空域预测。通常的做法是,当涉及到高分辨率视频时,以光栅扫描顺序对CTU进行编码/解码,并且通常在解码CTU之后将重构的样点和其它译码信息写入远处的/非本地存储区域(例如,DDRSRAM),这样能够释放本地存储器(相比于该视频数据通常具有非常有限的尺寸)以用于后续CTU的编码/解码。
当开始向前编码/解码第二CTU行时,来自先前的CTU行的底部的重构样点和其它译码信息被重新加载到本地存储器中,以使得来自上面CTU的数据可以一旦计算单元在编码/解码过程中需要它们则可用。例如,如图9中所示出,在典型的HEVC实施方式中,行缓冲器用于存储图像宽度加上一个CTU高度上4x4块的一行的运动信息,以用于空域运动矢量(MV)预测。
对于继承的仿射运动矢量预测器,如果邻近候选块位于当前CTU之外,则附加的行缓冲器可能是有益的,以便存储所有控制点处的运动矢量。如图10中图示的,如果邻近块位于当前块的当前CTU的外部,则使用附加的缓冲器来存储左上控制点运动信息和右上控制点运动信息。
为了减少用于继承的仿射运动矢量预测器的附加行缓冲器,视频编码器200和/或视频解码器300可以被配置为仅使用原始行缓冲器中存储的控制点运动矢量来导出预测器。例如,如果邻近块位于上面CTU,则假设4-参数仿射运动模型用于邻近块,而不管其实际的仿射运动模型,并且视频编码器200和/或视频解码器300可以被配置为使用左下控制点MV和右下控制点MV来导出用于邻近块的仿射运动模型,然后导出预测器。如果邻近块位于左侧CTU,则也假设4-参数仿射运动模型用于该邻近块,而不管其实际的仿射运动模型,并且视频编码器200和/或视频解码器300可以被配置为使用右上控制点MV和右下控制点MV来导出用于邻近块的仿射运动模型,然后导出预测器。
在另一示例中,视频编码器200和/或视频解码器300可以被配置为将有限数量的左上控制点MV存储在附加的行缓冲器中。视频编码器200和/或视频解码器300可以被配置为使用行缓冲器中的标志来指示6-参数仿射邻近块的左上控制点MV是否被存储在附加的行缓冲器中。如果邻近块位于上面CTU,是使用6-参数仿射运动模型译码的,并且该标志为真,则视频编码器200和/或视频解码器300可以被配置为使用所存储的左上控制点MV以及左下和右下控制点MV来导出仿射运动模型,然后导出预测器。如果邻近块位于左侧CTU,是使用编码6-参数仿射运动模型译码的,并且该标志为真,则视频编码器200和/或视频解码器300可以被配置为使用所存储的左上控制点MV以及右上和右下控制点MV来导出仿射运动模型,然后导出预测器。如果该标志为假,则将6-参数仿射运动模型考虑是4-参数仿射运动模型。在这种情况中,视频编码器200和/或视频解码器300可以被配置为使用存储在原始行缓冲器中的两个控制点MV来导出仿射运动模型,然后导出预测器。
在一个示例中,附加的行缓冲器中的左上控制点MV的有限数量能是1或其它整数。对于上面CTU,能够通过选取具有最小X坐标的上面CTU的底边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。对于左侧CTU,能够通过选取具有最小Y坐标的左侧CTU的右边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。
在另一示例中,附加的行缓冲器中的左上控制点MV的有限数量能是1或其它整数。对于上面CTU,能够通过选取具有最大X坐标的上面CTU的底边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。对于左侧CTU,能够通过选取具有最大Y坐标的左侧CTU的右边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。
在另一示例中,附加的行缓冲器中的左上控制点MV的有限数量能是1或其它整数。对于上面CTU,能够通过选取位于上面CTU的底边界的中间处的6-参数仿射运动模型块来选择要存储的左上控制点MV。如果位于上面CTU的底边界的中间处的块不是由仿射运动译码的,则左上控制点MV被认为是不可用的。对于左侧CTU,能够通过选取位于左侧CTU的右边界中间处的6-参数仿射运动模型块来选择要存储的左上控制点MV。如果位于该左侧CTU的右边界的中间处的块不是由仿射运动译码的,则左上控制点MV被认为是不可用的。
在另一示例中,左上控制点MV的有限数量能是1或其它整数。对于上面CTU,能够通过选取具有最大区域的上面CTU的底边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。对于左侧CTU,能够通过选取具有最大区域的左侧CTU的右边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。
在另一示例中,左上控制点MV的有限数量能是1或其它整数。对于上面CTU,能够通过选取具有最大宽度的上面CTU的底边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。对于左侧CTU,能够通过选取具有最大高度的左侧CTU的右边界中的6-参数仿射运动模型块来选择要存储的左上控制点MV。
在又一示例中,左侧CTU的MV都被存储并且有限数量的左上控制点MV被存储在用于上面CTU的附加的行缓冲器中。对于上面CTU的存储的左上控制点的选择可以类似于上面描述的那些。
下面描述利用行缓冲器减少来导出继承的仿射运动矢量预测器的示例。变量(neiX,neiY)规定候选块的左上样点的坐标,变量(neiW,neiH)规定候选块的尺寸,变量(curX,curY)规定当前块的左上样点的坐标,并且变量(curW,curH)规定当前块的尺寸。变量affTopLeftIsInLineBuf规定候选块的左上控制点MV是否被存储在行缓冲器中。
如果候选块是在上面CTU中,则适用以下规则:
将(mvRBx,mvRBy)设置为等于候选块的右下控制点MV,并且将(mvLBx,mvLBy)设置为等于候选块的左下控制点MV。
Figure BDA0002945449430000321
Figure BDA0002945449430000322
将posNeiX和posNeiY的值设置为等于候选块的左上样点的x和y坐标。
如果affTopLeftIsInLineBuf为真,则将(mvLTx,mvLTy)设置为等于候选块的左上控制点MV。
Figure BDA0002945449430000323
Figure BDA0002945449430000324
将(mvAnchorx,mvAnchory)设置为等于(mvLTx,mvLTy)。
否则
dMvVerX=-dMvHorY
dMvVerY=dMvHorX
将posNeiY设置为等于posNeiY+neiH
将(mvAnchorx,mvAnchory)设置为等于(mvLBx,mvLBy)
否则,如果候选块是在左侧CTU中,则适用以下规则:
将(mvRBx,mvRBy)设置为等于候选块的右下控制点MV,并且
将(mvRTx,mvRTy)设置为等于候选块的右上控制点MV。
Figure BDA0002945449430000331
Figure BDA0002945449430000332
如果affTopLeftIsInLineBuf为真,则将(mvLTx,mvLTy)设置为等于候选块的左上控制点MV。
Figure BDA0002945449430000333
Figure BDA0002945449430000334
将(mvAnchorx,mvAnchory)设置为等于(mvLTx,mvLTy)。
否则
dMvHorX=dMvVerY
dMvHorY=-dMvVerX
将posNeiX设置为等于posNeiX+neiW
将(mvAnchorx,mvAnchory)设置为等于(mvRTx,mvRTy)
否则,如果候选块在当前CTU中,则适用以下规则:
将(mvRTx,mvRTy)设置为等于候选块的右上控制点MV,并且
将(mvLTx,mvLTy)设置为等于候选块的左上控制点MV。
将(mvAnchorx,mvAnchory)设置为等于(mvLTx,mvLTy)。
Figure BDA0002945449430000335
Figure BDA0002945449430000336
如果候选块的仿射运动模型是6-参数仿射运动模型,则将(mvLBx,mvLTBy)设置为等于候选块的左下控制点MV。
Figure BDA0002945449430000337
Figure BDA0002945449430000338
否则
dMvVerX=-dMvHorY
dMvVerY=dMvHorX
按照如下导出当前块的预测的左上控制点MV(v0x,v0y):
v0x=mvAnchorx+dMvHorX*(curX-neiX)+dMvVerX*(curY-neiY)
v0y=mvAnchory+dMvHorY*(curX-neiX)+dMvVerY*(curY-neiY)
按照如下导出当前块的预测的右上控制点MV(v1x,v1y):
v1x=mvAnchorx+dMvHorX*(curX+curW-neiX)+dMvVerX*(curY-neiY)
v1y=mvAnchory+dMvHorY*(curX+curW-neiX)+dMvVerY*(curY-neiY)
按照如下导出当前块的预测的左下控制点MV(v2x,v2y):
v2x=mvAnchorx+dMvHorX*(curX-neiX)+dMvVerX*(curY+curH-neiY)
v2y=mvAnchory+dMvHorY*(curX-neiX)+dMvVerY*(curY+curH-neiY)
在以上技术中使用的除法可以由对结果按比例缩放和右移位来替代。例如,如果候选块在当前CTU中,则适用以下规则:
将(mvAnchorx,mvAnchory)设置为等于(mvLTx<<maxShift,mvLTy<<maxShift)。
dMvHorX=(mvRTx-mvLTx)<<(maxShift-log2(neiW))
dMvHorY=(mvRTy-mvLTy)<<(maxShift-log2(neiW)),其中,<<是按位左移。变量maxShift是最大块尺寸的log2。例如,将maxShift设置为等于7,指示最大块尺寸是128。
如果候选块的仿射运动模型是6-参数仿射运动模型,则将(mvLBx,mvLBy)设置为等于候选块的左下控制点MV。
dMvVerX=(mvLBx-mvLTx)<<(maxShift-log2(neiH))
dMvVerY=(mvLBy-mvLTy)<<(maxShift-log2(neiH))
否则
dMvVerX=-dMvHorY
dMvVerY=dMvHorX
将偏移量(offset)设置为等于1<<(maxShift-1)
按照如下导出当前块的预测的左上控制点MV(v0x,v0y):
v0x=mvAnchorx+dMvHorX*(curX-neiX)+dMvVerX*(curY-neiY)
v0y=mvAnchory+dMvHorY*(curX-neiX)+dMvVerY*(curY-neiY)
v0x=v0x>0?(v0x+offset)>>maxShift:-((-v0x+offset)>>maxShift)
v0y=v0y>0?(v0y+offset)>>maxShift:-((-v0y+offset)>>maxShift)
按照如下导出当前块的预测的右上控制点MV(v1x,v1y):
v1x=mvAnchorx+dMvHorX*(curX+curW-neiX)+dMvVerX*(curY-neiY)
v1y=mvAnchory+dMvHorY*(curX+curW-neiX)+dMvVerY*(curY-neiY)
v1x=v1x>0?(v1x+offset)>>maxShift:-((-v1x+offset)>>maxShift)
v1y=v1y>0?(v1y+offset)>>maxShift:-((-v1y+offset)>>maxShift)
按照如下导出当前块的预测的左下控制点MV(v2x,v2y):
v2x=mvAnchorx+dMvHorX*(curX-neiX)+dMvVerX*(curY+curH-neiY)
v2y=mvAnchory+dMvHorY*(curX-neiX)+dMvVerY*(curY+curH-neiY)
v2x=v2x>0?(v2x+offset)>>maxShift:-((-v2x+offset)>>maxShift)
v2y=v2y>0?(v2y+offset)>>maxShift:-((-v2y+offset)>>maxShift)
其中,>>是按位右移。
现在描述将运动补偿运动矢量(例如,标准的平移运动矢量)用作继承的仿射运动矢量预测器中的控制点的技术。
视频编码器200和视频解码器300可以使用基于子块的运动补偿来实现仿射运动补偿。也就是说,视频编码器200和视频解码器300可以基于仿射运动模型导出用于每个子块的运动矢量,并且然后根据导出的运动矢量应用标准的基于块的运动补偿或块匹配。通常通过使用子块的中心坐标来完成子块运动矢量的导出。
在该子块运动矢量(例如,用于运动补偿)替代控制点运动矢量被存储在运动缓冲器的情况中,可以相应地调整继承的仿射运动矢量预测器导出过程。更具体地,可以根据子块尺寸修改(neiX,neiY)和(neiW,neiH)。子块的尺寸是(subBlkW,subBlkH)。(neiW,neiH)的值被修改为(neiW-subBlkW,neiH-subBlkH)。在一些示例中,修改后的值可以不是2的幂。在继承的仿射运动矢量预测器导出过程中使用的除法可以通过根据查询表按比例缩放并对结果移位来简化。变量(neiX,neiY)可以被修改为使得控制点所位于的子块的中心被移位。例如,如果候选块在当前CTU中,则适用以下规则。
由LUT[x]=(x*(1<<LUTPREC))/x导出查询表LUT,其中,LUTPREC是预定义的精度(例如,6或其它整数)。(neiX,neiY)的值被设置为等于(neiX+subBlkW/2,neiY+subBlkH/2)。(mvAnchorx,mvAnchory)被设置为等于(mvLTx<<maxShift,mvLTy<<maxShift)。
dMvHorX=(mvRTx-mvLTx)<<(maxShift-log2(neiW))
dMvHorY=(mvRTy-mvLTy)<<(maxShift-log2(neiW))
dMvHorX=dMvHorX*LUT[neiW-subBlkW]
dMvHorY=dMvHorY*LUT[neiW-subBlkW]
如果候选块的仿射运动模型是6-参数仿射运动模型,则(mvLBx,mvLBy)被设置为等于候选块的左下控制点MV。
dMvVerX=(mvLBx-mvLTx)<<(maxShift-log2(neiH))
dMvVerY=(mvLBy-mvLTy)<<(maxShift-log2(neiH))
dMvVerX=dMvHorX*LUT[neiH-subBlkW]
dMvVerY=dMvHorY*LUT[neiW-subBlkW]
否则
dMvVerX=-dMvHorY
dMvVerY=dMvHorX
偏移量(offset)被设置为等于1<<(maxShift-1)
当前块的预测的左上控制点MV(v0x,v0y)导出为:
v0x=mvAnchorx+(dMvHorX*(curX-neiX)>>LUTPREC)+(dMvVerX*(curY-neiY)>>LUTPREC)
v0y=mvAnchory+(dMvHorY*(curX-neiX)>>LUTPREC)+(dMvVerY*(curY-neiY)>>LUTPREC)
v0x=v0x>0?(v0x+offset)>>maxShift:-((-v0x+offset)>>maxShift)
v0y=v0y>0?(v0y+offset)>>maxShift:-((-v0y+offset)>>maxShift)
当前块的预测的右上控制点MV(v1x,v1y)导出为:
v1x=mvAnchorx+(dMvHorX*(curX+curW-neiX)>>LUTPREC)+(dMvVerX*(curY-neiY)>>LUTPREC)
v1y=mvAnchory+(dMvHorY*(curX+curW-neiX)>>LUTPREC)+(dMvVerY*(curY-neiY)>>LUTPREC)
v1x=v1x>0?(v1x+offset)>>maxShift:-((-v1x+offset)>>maxShift)
v1y=v1y>0?(v1y+offset)>>maxShift:-((-v1y+offset)>>maxShift)
当前块的预测的左下控制点MV(v2x,v2y)导出为:
v2x=mvAnchorx+(dMvHorX*(curX-neiX)>>LUTPREC)+(dMvVerX*(curY+curH-neiY)>>LUTPREC)
v2y=mvAnchory+(dMvHorY*(curX-neiX)>>LUTPREC)+(dMvVerY*(curY+curH-neiY)>>LUTPREC)
v2x=v2x>0?(v2x+offset)>>maxShift:-((-v2x+offset)>>maxShift)
v2y=v2y>0?(v2y+offset)>>maxShift:-((-v2y+offset)>>maxShift)
类似的修改可以应用于候选块在上面CTU或左侧CTU中的情况。如果候选块在上面CTU中并且用于该候选块的affTopLeftIsInLineBuf的值不为真,则(neiX,neiY)被设置为等于(neiX+subBlkW/2,neiY+neiH-subBlkH/2)。如果候选块在左侧CTU中并且用于该候选块的affTopLeftIsInLineBuf的值不为真,则(neiX,neiY)被设置为等于(neiX+neiW-subBlkW/2,neiY+subBlkH/2)。
现在将描述修改后的继承的仿射运动矢量预测器。能够修改继承的仿射运动矢量预测器以创建新的仿射运动矢量预测器。该修改可以通过用新的运动矢量替代一个(或两个)控制点运动矢量来完成。
在一个示例中,修改后的控制点运动矢量是在固定的指定位置处(例如,左上控制点、右上控制点或左下控制点)。
在另一示例中,修改后的控制点运动矢量取决于邻近候选块的位置。例如,如果候选块在位置A0或A1处(例如,见图8),则修改后的控制点MV在右上控制点处。如果候选块在位置B0或B1处,则修改后的控制点MV在左下控制点处。如果候选块在位置B2处,则修改后的控制点MV取决于候选块的宽度和高度。如果宽度大于所述高度,则修改后的控制点MV在右上控制点处,否则修改后的控制点MV在左下控制点处。
在另一示例中,修改后的控制点MV也取决于用于当前块的目标仿射运动模型。例如,如果用于当前块的目标仿射运动模型是6-参数仿射运动模型并且候选块在位置B0或B1处,则修改后的控制点MV在左下控制点处,否则修改后的控制点MV在右上控制点处。
现在将描述用于仿射高级运动矢量预测(AMVP)模式的仿射运动矢量预测器列表构造。
类似于HEVC AMVP模式,当使用仿射AMVP模式对块进行编码时,视频编码器200可以信令通知到仿射AMVP运动矢量预测器列表的仿射运动矢量预测器索引以及用于每个控制点的运动矢量差。视频解码器300构造相同的仿射AMVP运动矢量预测器列表。视频解码器300接收仿射运动矢量预测器索引,并从与接收到的索引相关联的仿射AMVP运动矢量预测器列表中检索控制点运动矢量。视频解码器300将所接收的运动矢量差添加到从仿射AMVP运动矢量预测器列表中检索出的控制点运动矢量,以重构用于视频数据块的控制点运动矢量。然后,视频解码器300使用仿射运动补偿、使用重构的控制点运动矢量来解码该视频数据块。
本公开描述了用于构造仿射AMVP运动矢量预测器列表的技术。特别地,对于一些示例块,视频编码器200和视频解码器300可以构造仿射AMVP运动矢量预测器列表,使得该列表包括一个或多个继承的仿射运动矢量预测器、一个或多个构造的仿射运动矢量预测器和使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器。通过在仿射AMVP运动矢量预测器列表中包括多种类型的候选,视频编码器200和视频解码器300可以更好地确保更准确的候选可用于控制点运动矢量预测,从而提高比特率和/或改进图像质量。
在本公开的一个示例中,视频编码器200和视频解码器300可以被配置为使用以下步骤来构造仿射AMVP运动矢量预测器列表。
1.视频编码器200和视频解码器300插入从邻近候选块导出的一个或多个继承的仿射运动矢量预测器。
2.如果该列表中的现有预测器的数量小于预定义的最大数量,则视频编码器200和视频解码器300插入一个或多个构造的仿射运动矢量预测器。
3.如果在插入继承的和构造的仿射运动矢量预测器二者之后该列表中的现有预测器的数量仍小于预定义的最大数量,则视频编码器200和视频解码器300插入使得所有控制点运动矢量等于一个导出的运动矢量(例如,也称为指定运动矢量)的一个或多个仿射运动矢量预测器。
从以上技术可以看出,对于某些块,在可以从邻近块获得足够的(例如,高达预定义的最大数量)继承的仿射运动矢量预测器的情况下,视频编码器200和视频解码器300可以仅插入继承的仿射运动矢量预测器。对于其它示例块,视频编码器200和视频解码器可以仅插入继承的仿射运动矢量预测器和构造的仿射运动矢量预测器。然而,根据本公开的技术,在当前译码的块的邻近块具有小于预定义的最大数量的继承的和/或构造的仿射运动矢量预测器时,视频编码器200和视频解码器300可以进一步添加使得所有控制点运动矢量等于一个指定运动矢量的一个或多个仿射运动矢量预测器。以此方式,可以构造完整的仿射AMVP运动矢量预测器列表,而不管可用的继承的或构造的仿射运动矢量预测器的数量如何。
因此,在本公开的一个示例中,视频编码器200可以被配置为接收要使用仿射高级运动矢量预测(AMVP)模式进行编码的视频数据块。视频编码器200还可以被配置为构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器。在此示例中,仿射AMVP运动矢量预测器列表可以进一步至少包括一个或多个继承的仿射运动矢量预测器或者一个或多个构造的仿射运动矢量预测器。也就是说,在一些示例中,仿射AMVP运动矢量预测器列表可以包括一个继承的仿射运动矢量预测器或一个构造的仿射运动矢量预测器,连同使得所有控制点运动矢量等于指定运动矢量的一个仿射运动矢量预测器。当仿射AMVP运动矢量预测器列表中的候选的最大数量为2时,可能会得到这一示例。当然,在其它示例中,仿射AMVP运动矢量预测器列表可能大于2。在那些示例中,可能存在多个继承的仿射运动矢量预测器、构造的仿射运动矢量预测器,以及使得所有控制点运动矢量等于指定运动矢量的仿射运动矢量预测器。
将在下面更详细地描述用于确定该指定运动矢量的技术。视频编码器200可以进一步被配置为从仿射AMVP运动矢量预测器列表确定用于视频数据块的控制点运动矢量,并且使用所确定的控制点运动矢量对该视频数据块进行编码。
在一个示例中,如上所述,为了构造用于视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,视频编码器200被配置为将一个或多个继承的仿射运动矢量预测器插入仿射AMVP运动矢量预测器列表。视频编码器200还可以被配置为,如果一个或多个继承的仿射运动矢量预测器的数量小于仿射AMVP运动矢量预测器列表的预定义的最大数量,则将一个或多个构造的仿射运动矢量预测器插入仿射AMVP运动矢量预测器列表。视频编码器200可以进一步被配置为,如果一个或多个继承的仿射运动矢量预测器与一个或多个构造的仿射运动矢量预测器的数量小于仿射AMVP运动矢量预测器列表的预定义的最大数量,则将使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器插入到仿射AMVP运动矢量预测器列表中。
视频编码器200可以进一步被配置为确定仿射AMVP运动矢量预测器列表中的候选控制点运动矢量,对到仿射AMVP运动矢量预测器列表的索引进行编码,该仿射AMVP运动矢量预测器列表对应于确定的候选控制点运动矢量,确定用于该块的每个控制点运动矢量相对于确定的候选控制点运动矢量的的运动矢量差,并对该运动矢量差进行编码。
以一种互惠方式,视频解码器300可以被配置为接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块。视频解码器300可以进一步被配置为构造用于视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器。下面将更详细地描述用于确定该指定运动矢量的技术。视频解码器300可以进一步被配置为从该仿射AMVP运动矢量预测器列表确定用于视频数据块的控制点运动矢量,并使用所确定的控制点运动矢量对视频数据块进行解码。
在一个示例中,如上所述,为了构造用于视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,视频解码器300被配置为将一个或多个继承的仿射运动矢量预测器插入仿射AMVP运动矢量预测器列表。视频解码器300可以进一步被配置为,如果一个或多个继承的仿射运动矢量预测器的数量小于仿射AMVP运动矢量预测器列表的预定义的最大数量,则将一个或多个构造的仿射运动矢量预测器插入仿射AMVP运动矢量预测器列表。视频解码器300可以进一步被配置为,如果一个或多个继承的仿射运动矢量预测器和一个或多个构造的仿射运动矢量预测器的数量小于仿射AMVP运动矢量预测器列表的预定义的最大数量,则将使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器插入仿射AMVP运动矢量预测列表。
为了确定用于该块的控制点运动矢量,视频解码器300可以被配置为接收到仿射AMVP运动矢量预测器列表的索引,以及接收用于该块的用于每个控制点运动矢量的运动矢量差。也就是说,视频解码器300可以接收由到仿射AMVP运动矢量预测器列表的索引所指示的特定候选的两个(例如,用于4-参数仿射运动模型)或三个(例如,用于6-参数仿射运动模型)控制点运动矢量的每一个的运动矢量差。视频解码器300可以被配置为检索与该索引相关联的候选控制点运动矢量,并且将用于该块的用于每个控制点运动矢量的运动矢量差添加到候选控制点运动矢量以确定用于该块的控制点运动矢量。
视频编码器200和视频解码器300可以被配置为使用一个或多个不同的插入顺序来插入继承的仿射运动矢量预测器。在图11中示出了潜在的继承的仿射运动矢量预测器相对于当前块的位置。可能的位置包括相对位置A0、A1、A2、B0、B1、B2、B3、C0和C1。在下面的描述中,如果块满足具有仿射运动矢量候选的关联类型的标准,则该块“可用”。例如,如果候选块是用于继承的仿射运动矢量预测器的仿射译码块,则该候选块可用。如果该候选块是使用不同模式译码的,则该候选块不可用。同样,如果候选块是用于构造的仿射运动矢量预测器的帧间预测块,则该候选块可用。如果该候选块是使用不同模式译码的,则该候选块不可用。
在一个示例中,视频编码器200和视频解码器300可以被配置为按以下顺序将继承的仿射运动矢量预测器插入到仿射AMVP运动矢量预测器列表中:
-如果A1候选块是可用的,并且是使用仿射运动模型译码的,则将来自A1的继承的仿射运动矢量预测器插入到列表中并且将availableA1设置为等于真,否则将availableA1设置为等于假。
-如果availableA1为假并且A0候选块是可用的并且它是使用仿射运动模型译码的,则将来自A0的继承的仿射运动矢量预测器插入到列表中。
-如果B1候选块是可用的并且它是使用仿射运动模型译码的,则将来自B1的继承的仿射运动矢量预测器插入到列表中并且将availableB1设置为等于真,否则将availableB1设置为等于假。
-如果availableB1为假并且B0候选块是可用的并且它是使用仿射运动模型译码的,则将来自B0的继承的仿射运动矢量预测器插入到列表中并且将availableB0设置为等于真,否则将availableB0设置为等于假。
-如果availableB1为假并且availableB0为假,并且B2候选块是可用的并且它是使用仿射运动模型译码的,则将来自B2的继承的仿射运动矢量预测器插入到列表中。
在另一示例中,适用以下规则:
-如果A0候选块是可用的并且它是使用仿射运动模型译码的,则将来自A0的继承的仿射运动矢量预测器插入到列表中并且将availableA0设置为等于真,否则将availableA0设置为等于假。
-如果availableA0为假并且A1候选块是可用的并且它是使用仿射运动模型译码的,则将来自A1的继承仿射运动矢量预测器插入到列表中。
-如果B0候选块是可用的并且它是使用仿射运动模型译码的,则将来自B0的继承的仿射运动矢量预测器插入到列表中并且将availableB0设置为等于真,否则将availableB0设置为等于假。
-如果availableB0为假并且B1候选块是可用的并且它是使用仿射运动模型译码的,则将来自B1的继承的仿射运动矢量预测器插入到列表中并且将availableB1设置为等于真,否则将availableB1设置为等于假。
-如果availableB1为假并且availableB0为假,并且B2候选块是可用的并且它是使用仿射运动模型译码的,则将来自B2的继承的仿射运动矢量预测器插入到列表中。
在又一示例中,适用以下规则:
-如果A1候选块是可用的并且它是使用仿射运动模型译码的,则将来自A1的继承的仿射运动矢量预测器插入到列表中并且将availableA1设置为等于真,否则将availableA1设置为等于假。
-如果availableA1为假并且A0候选块是可用的并且它是使用仿射运动模型译码的,则将来自A0的继承的仿射运动矢量预测器插入到列表中。
-如果B1候选块是可用的并且它是使用仿射运动模型译码的,则将来自B1的继承的仿射运动矢量预测器插入到列表中并且将availableB1设置为等于真,否则将availableB1设置为等于假。
-如果availableB1为假并且B0候选块是可用的并且它是使用仿射运动模型译码的,则将来自B0的继承的仿射运动矢量预测器插入到列表中并且将availableB0设置为等于真,否则将availableB0设置为等于假。
-如果列表中现有预测器的数量小于预定义的最大数量,并且B2候选块是可用的并且它是使用仿射运动模型译码的,则将来自B2的继承的仿射运动矢量预测器插入到列表中。
在又一示例中,适用以下规则:
-如果A0候选块是可用的并且它是使用仿射运动模型译码的,则将来自A0的继承的仿射运动矢量预测器插入到列表中并且将availableA0设置为等于真,否则将availableA0设置为等于假。
-如果availableA0为假并且A1候选块是可用的,并且它是使用仿射运动模型译码的,则将来自A1的继承的仿射运动矢量预测器插入到列表中。
-如果B0候选块是可用的并且它是使用仿射运动模型译码的,则将来自B0的继承的仿射运动矢量预测器插入到列表中并且将availableB0设置为等于真,否则将availableB0设置为等于假。
-如果availableB0为假并且B1候选块是可用的并且它是使用仿射运动模型译码的,则将来自B1的继承的仿射运动矢量预测器插入到列表中并且将availableB1设置为等于真,否则将availableB1设置为等于假。
-如果列表中现有预测器的数量小于预定义的最大数量,并且B2候选块是可用的并且它是使用仿射运动模型译码的,则将来自B2的继承的仿射运动矢量预测器插入到列表中。
在又一示例中,适用以下规则:
-如果A0候选块是可用的并且它是使用仿射运动模型译码的,则将来自A0的继承的仿射运动矢量预测器插入到列表中。
-如果列表中现有预测器的数量小于预定义的最大数量,并且B0候选块是可用的并且它是使用仿射运动模型译码的,则将来自B0的继承的仿射运动矢量预测器插入到列表中。
-如果列表中现有预测器的数量小于预定义的最大数量,并且B1候选块是可用的并且它是使用仿射运动模型译码的,则将来自B1的继承的仿射运动矢量预测器插入到列表中。
-如果列表中现有预测器的数量小于预定义的最大数量,并且A1候选块是可用的,并且它是使用仿射运动模型译码的,则将来自A1的继承的仿射运动矢量预测器插入到列表中。
-如果列表中现有预测器的数量小于预定义的最大数量,并且B2候选块是可用的并且它是使用仿射运动模型译码的,则将来自B2的继承的仿射运动矢量预测器插入到列表中。
在一些示例中,视频编码器200和视频解码器300可以被配置为以灵活的译码器顺序对块进行译码。在灵活的译码器顺序的情况中,如图11中示出的,位于C0和C1处的块可以在当前块和在A0和A1处的块之前被译码。在这种情况中,上面描述的来自A0和A1的继承的仿射运动矢量预测器可以由来自C0和C1的继承的仿射运动矢量预测器替代。
视频编码器200和视频解码器300可以被配置为使用以下描述的一种或多种技术将一个或多个构造的仿射运动矢量预测器插入到仿射AMVP运动矢量预测器列表中。
对于6-参数仿射运动模型,构造的仿射运动矢量预测器包括左上控制点运动矢量、右上控制点运动矢量和左下控制点运动矢量。对于4-参数仿射运动模型,构造的仿射运动矢量预测器包括左上控制点运动矢量和右上控制点运动矢量。
在一个示例中,视频编码器200和视频解码器300可以将构造的仿射运动矢量预测器添加到仿射AMVP运动矢量预测器列表中,如下所示:
-从来自位置{B2,B3,A2}中的块的第一可用MV导出左上控制点MV。
-从来自位置{B0,B1}中的块的第一可用MV导出右上控制点MV。
-从来自位置{A0,A1}中的块的第一可用MV导出左下控制点MV。
在另一示例中,适用以下规则:
-从来自位置{B2,B3,A2}中的块的第一可用MV导出左上控制点MV。
-从来自位置{B1,B0}中的块的第一可用MV导出右上控制点MV。
-从来自位置{A1,A0}中的块的第一可用MV导出左下控制点MV。
在又一示例中,适用以下规则:
-从来自位置B2中的块的第一可用MV导出左上控制点MV。
-从来自位置{B1,B0}中的块的第一可用MV导出右上控制点MV。
-从来自位置{A1,A0}中的块的第一可用MV导出左下控制点MV。
在又一示例中,适用以下规则:
-从来自位置B2中的块的第一可用MV导出左上控制点MV。
-从来自位置{B0,B1}中的块的第一可用MV导出右上控制点MV。
-从来自位置{A0,A1}中的块的第一可用MV导出左下控制点MV。
在一些示例中,如果左下控制点MV(v2x,v2y)是不可用的并且当前仿射运动模型是6-参数仿射运动模型,则视频编码器200和视频解码器300可以被配置为如下使用左上控制点运动矢量(v0x,v0y)和右上控制点运动矢量(v1x,v1y)导出左下控制点运动:
v2x=v0x-(v1y-v0y)*curH/curW
v2y=v0y-(v1x-v0x)*curH/curW
在另一示例中,如果当前仿射运动模型是6-参数仿射运动模型,并且任何控制点运动矢量都是不可用的,则视频编码器200和视频解码器300可以被配置为将构造的仿射运动矢量预测器标记为不可用。
在一些示例中,如果右上控制点运动矢量(v1x,v1y)是不可用的,则视频编码器200和视频解码器300可以被配置为如下使用左上控制点运动矢量(v0x,v0y)和左下控制点运动矢量(v2x,v2y)导出右上控制点运动矢量:
v1x=v0x-(v2y-v0y)*curW/curH
v1y=v0y-(v2x-v0x)*curW/curH
另一示例中,如果左上控制点运动矢量或右上控制点运动矢量是不可用的,则视频编码器200和视频解码器300可以被配置为将用于6-参数仿射运动模型的构造的仿射运动矢量预测器标记为不可用。
如上所述,在一些示例中,视频编码器200和视频解码器300将使得所有控制点运动矢量等于一个指定运动矢量的仿射运动矢量预测器添加到仿射AMVP运动矢量预测器列表中。也就是说,取决于所使用的仿射运动模型,这些类型的仿射运动矢量预测器对于候选的两个或三个控制点运动矢量中的每一个具有相同的值。视频编码器200和视频解码器300可以被配置为从指定运动矢量候选列表动态地确定用于每个块的指定运动矢量。
在一个示例中,视频编码器200和视频解码器300可以被配置为从用于标准的平移运动矢量预测的AMVP候选列表(例如,HEVC AMVP候选列表)选择该指定运动矢量。
在另一示例中,视频编码器200和视频解码器300可以被配置为按照顺序从以下列表选择该指定运动矢量:
1.构造的仿射运动矢量预测器中的左下控制点运动矢量。
2.构造的仿射运动矢量预测器中的右上控制点运动矢量。
3.构造的仿射运动矢量预测器中的左上控制点运动矢量。
4.时域运动矢量预测器(例如,用于标准的平移运动矢量预测的时域运动矢量预测器(例如,HEVC AMVP候选列表))。
5.零运动矢量
在一些示例中,视频编码器200和视频解码器300可以被配置为构造仿射AMVP运动矢量预测器列表而无需任何修剪。也就是说,不从列表中移除重复的候选。在另一示例中,应用上述简化的修剪,其中,仅一个控制点运动矢量被比较。
图12是示出根据以上描述的技术的视频编码器200的示例操作的流程图。在一个示例中,视频编码器200可以被配置为接收要使用仿射高级运动矢量预测(AMVP)模式进行编码的视频数据块(1200),并且构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器(1202)。视频编码器200还可以被配置为从仿射AMVP运动矢量预测器列表确定用于该视频数据块的控制点运动矢量(1204),并且使用所确定的控制点运动矢量对该视频数据块进行编码(1206)。
图13是示出根据以上描述的技术的视频解码器300的示例操作的流程图。在一个示例中,视频解码器300可以被配置为接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块(1300),并且构造用于该视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,该仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器(1302)。视频解码器300可以进一步被配置为从仿射AMVP运动矢量预测器列表中确定用于该视频数据块的控制点运动矢量(1304),并且使用所确定的控制点运动矢量对该视频数据块进行解码(1306)。
在另一示例中,视频编码器200和视频解码器300可以被配置为首先检查两个邻近块以确定两个邻近块是否在同一PU中。如果两个邻近块在同一PU中,则跳过这两个邻近块中在检查顺序中为后者的块。例如,如果A1与A0在同一PU中,则跳过A1。同样,如果B1与B0在同一PU中,则跳过B1;并且如果B2与B0或A0在同一PU中,则跳过B2。此后,在将继承的仿射运动矢量预测器插入预测器列表时,视频编码器200和视频解码器300可以被配置为应用简化的修剪,如上所述,其中仅比较一个控制点MV。可以将简化的修剪应用于继承的仿射运动矢量预测器和/或其它仿射运动矢量预测器。
在又一示例中,将简化的修剪应用于继承的仿射运动矢量预测器,而不将修剪应用于其它仿射运动矢量预测器。
现在将讨论用于仿射合并模式的仿射运动矢量预测器列表构造的技术。在仿射合并模式中,如果适用,通过导出用于每个参考列表的仿射运动矢量预测器来获取继承的仿射合并候选。如果适用,通过修改用于每个参考列表的所选择的控制点运动矢量来获取修改后的继承的仿射合并候选。如果适用,通过导出用于每个参考列表的构造的仿射运动矢量预测器来获取构造的仿射合并候选。
如果邻近候选块是帧间预测译码的并且是使用仿射运动补偿译码的,则可以说该邻近候选块可用于继承的仿射合并候选导出。
在一种示例技术中,视频编码器200和视频解码器300可以被配置为如下构造仿射合并候选列表:
1.如果可用,按照A0、B0、B1、A1、B2的顺序添加从邻近候选块导出的继承的仿射合并候选。
2.按照以下控制点MV组合的顺序添加构造的合并仿射候选,其中,MV0是左上控制点处的控制点MV,MV1是在右上控制点处,MV2是在左下控制点处,而MV3是在右下控制点处。MV0是从{B2,B3,A2}中的第一可用MV导出的,MV1是从{B0,B1}中的第一可用的导出的,而MV2是从{A0,A1}中的第一可用的导出的。MV3是从时域合并候选导出的(例如,如在HEVC中)。
a.{MV0,MV1,MV2}
b.{MV0,MV1,MV3}
c.{MV0,MV2,MV3}
d.{MV1,MV2,MV3}
e.{MV0,MV1}
f.{MV1,MV2}
g.{MV0,MV3}
h.{MV0,MV2}
i.{MV1,MV3}
j.{MV2,MV3}
3.添加零MV候选,其中,每个控制点MV是零MV。
在另一示例中,视频编码器200和视频解码器300可以被配置为如下构造仿射合并候选:
1.如果可用,按照A0、B0、B1、A1、B2的顺序添加从邻近候选块导出的继承的仿射合并候选。
2.按照与继承的仿射合并候选相同的顺序添加修改后的继承的仿射合并候选。
3.按照以下控制点MV组合的顺序添加构造的仿射合并候选,其中,MV0是左上控制点处的控制点MV,MV1是在右上控制点处,MV2是在左下控制点处,而MV3是在右下控制点处。MV0是从{B2,B3,A2}中的第一可用MV导出的,MV1是从{B0,B1}的第一可用导出的,而MV2是从{A0,A1}的第一可用导出的。MV3是从时域合并候选导出的(例如,如在HEVC中)。
a.{MV0,MV1,MV2}
b.{MV0,MV1,MV3}
c.{MV0,MV2,MV3}
d.{MV1,MV2,MV3}
e.{MV0,MV1}
f.{MV1,MV2}
g.{MV0,MV3}
h.{MV0,MV2}
i.{MV1,MV3}
j.{MV2,MV3}
4.添加零MV候选,其中,每个控制点MV是零MV。
在又一示例中,视频编码器200和视频解码器300可以被配置为如下构造仿射合并候选列表:
1.如果可用,按照A0、B0、B1、A1、B2的顺序添加从邻近候选块导出的继承的仿射合并候选。
2.按照以下控制点MV组合的顺序添加构造的仿射合并候选,其中,MV0是左上控制点处的控制点MV,MV1是在右上控制点处,MV2是在左下控制点处,而MV3是在右下控制点处。MV0是从{B2,B3,A2}中的第一可用MV导出的,MV1是从{B0,B1}中的第一可用的导出的,而MV2是从{A0,A1}中的第一可用的导出的。MV3是从时域合并候选导出的(例如,如在HEVC中)。
a.{MV0,MV1,MV2}
b.{MV0,MV1}
c.{MV1,MV2}
d.{MV0,MV2}
3.添加零MV候选,其中,每个控制点MV是零MV。
在又一示例中,视频编码器200和视频解码器300可以被配置为如下构造仿射合并候选列表:
1.如果可用,按照A0、B0、B1、A1、B2的顺序添加从邻近候选块导出的继承的仿射合并候选。
2.按照以下控制点MV组合的顺序添加构造的仿射合并候选,其中,MV0是左上控制点处的控制点MV,MV1是在右上控制点处,MV2是在左下控制点处,而MV3是在右下控制点处。MV0是从{B2,B3,A2}中的第一可用MV导出的,MV1是从{B0,B1}中的第一可用的导出的,而MV2是从{A0,A1}中的第一可用的导出的。MV3是从时域合并候选导出的(例如,如在HEVC中)。
a.{MV0,MV1,MV3}
b.{MV0,MV2,MV3}
c.{MV1,MV2,MV3}
d.{MV0,MV3}
e.{MV1,MV3}
f.{MV2,MV3}
3.添加零MV候选,其中,每个控制点MV是零MV。
在又一示例中,视频编码器200和视频解码器300可以被配置为如下构造仿射合并候选列表:
1.如果可用,按照A0、B0、B1、A1、B2的顺序添加从邻近候选块导出的继承的仿射合并候选。
2.按照与继承的仿射合并候选相同的顺序添加修改后的继承的仿射合并候选。
3.按照以下控制点MV组合的顺序添加构造的仿射合并候选,其中,MV0是左上控制点处的控制点MV,MV1是在右上控制点处,MV2是在左下控制点处,而MV3是在右下控制点处。MV0是从{B2,B3,A2}中的第一可用MV导出的,MV1是从{B0,B1}的第一可用导出的,而MV2是从{A0,A1}的第一可用导出的。MV3是从时域合并候选导出的(例如,如在HEVC中)。
a.{MV0,MV1,MV3}
b.{MV0,MV2,MV3}
c.{MV1,MV2,MV3}
d.{MV0,MV3}
e.{MV1,MV3}
f.{MV2,MV3}
4.添加零MV候选,其中,每个控制点MV是零MV。
以上注意的是,如果使用了三个MV并且组合不是{MV0,MV1,MV2},则将候选转换为{MV0,MV1,MV2}的组合。例如,如果组合是{MV1,MV2,MV3},则导出仿射运动模型,并且给定仿射运动模型导出MV0。
在又一示例中,视频编码器200和视频解码器300可以被配置为从{B0,B1}中的第一可用的导出MV1,并且从{A0,A1}中的第一可用的导出MV2。但是,可以按照顺序从{B2,B3,A2}之一选择MV0。因此,构造的仿射合并候选的最大数量为三。
用于导出MV0的其它导出技术
视频编码器200和视频解码器300可以被配置为从继承的仿射运动矢量预测器导出控制点运动矢量MV0。例如,视频编码器200和视频解码器300可以被配置为从来自块B2、B3或A2的继承的仿射运动矢量预测器(MVP)导出MV0。
在一个示例中,视频编码器200和视频解码器300可以被配置为仅导出一个MV0。
在一些示例中,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B2、B3和A2的继承的仿射MVP,直到找到第一个可用的。如果找到继承的仿射MVP,视频编码器200和视频解码器300可以被配置为将左上控制点MV用作MV0。否则,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B2、B3和A2的标准的平移MVP,直到找到第一个可用的。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准平移MVP用作MV0。
在另一示例中,视频编码器200和视频解码器300可以被配置为检查用于块B2的继承的仿射MVP。如果找到继承的仿射MVP,则视频编码器200和视频解码器300可以被配置为将左上控制点MV用作MV0。否则,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B2、B3和A2的标准的平移MVP,直到找到第一个可用的。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准的平移MVP用作MV0。
在另一示例中,视频编码器200和视频解码器300可以被配置为导出多个控制点运动矢量MV0。
在一些示例中,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B2、B3和A2的继承的仿射MVP。如果找到继承的仿射MVP,则视频编码器200和视频解码器300可以被配置为将左上控制点NV用作MV0候选。然后,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B2、B3和A2的标准的平移MVP。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准的平移MVP用作MV0候选。可以预定义MV0候选的最大数量,例如2、3或其它整数。视频编码器200和视频解码器300可以被配置为应用修剪过程以移除重复。
在一些示例中,视频编码器200和视频解码器300可以被配置为检查用于块B2的继承的仿射MVP。如果找到继承的仿射MVP,则视频编码器200和视频解码器300可以被配置为将左上控制点MV用作MV0候选。然后,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B2、B3和A2的标准的平移MVP。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准的平移MVP用作MV0候选。可以预定义MV0候选的最大数量,例如2、3或其它整数。视频编码器200和视频解码器300可以被配置为应用修剪过程以移除重复。
可以切换B2、B 3和A2的检查顺序。
用于导出MV1的其它推导技术
在一些示例中,视频编码器200和视频解码器300可以被配置为通过继承的仿射运动矢量预测器来导出MV1。例如,视频编码器200和视频解码器300可以被配置为从来自块B0或B1的继承的仿射MVP导出MV1。
在一种方法中,视频编码器200和视频解码器300可被配置为仅导出一个MV1。
在一些示例中,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B0和B1的继承的仿射MVP,直到找到第一个可用的。如果找到继承的仿射MVP,视频编码器200和视频解码器300可以被配置为将左上控制点MV用作MV1。否则,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B0和B1的标准的平移MVP,直到找到第一个可用的。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准平移MVP用作为MV1。
在另一示例中,导出多个MV1。
在一些示例中,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B0和B1的继承的仿射MVP。如果找到继承的仿射MVP,则视频编码器200和视频解码器300可以被配置为将左上控制点MV用作为MV1的一个候选。然后,视频编码器200和视频解码器300可以被配置为按顺序检查用于块B0和B1的标准的平移MVP。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准的平移MVP用作为MV1的候选。可以预定义MV1的候选的最大数量,例如2、3或其它整数。视频编码器200和视频解码器300可以被配置为应用修剪过程以移除重复。
可以切换检查B0和B1的顺序。
用于导出MV2的其它推导技术
在一些示例中,视频编码器200和视频解码器300可以被配置为通过继承的仿射运动矢量预测器来导出MV2。例如,视频编码器200和视频解码器300可以被配置为从来自块A0或A1的继承的仿射MVP导出MV2。
在一个示例中,视频编码器200和视频解码器300可被配置为仅导出一个MV2。
在一些示例中,视频编码器200和视频解码器300可以被配置为按顺序检查用于块A0和A1的继承的仿射MVP,直到找到第一个可用的。如果找到继承的仿射MVP,视频编码器200和视频解码器300可以被配置为将左上控制点MV用作为MV2。否则,视频编码器200和视频解码器300可以被配置为按顺序检查用于块A0和A1的标准的平移MVP,直到找到第一个可用的。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准平移MVP用作为MV2。
在另一示例中,视频编码器200和视频解码器300可以被配置为导出多个MV2。
在一些示例中,视频编码器200和视频解码器300可以被配置为按顺序检查用于块A0和A1的继承的仿射MVP。如果找到继承的仿射MVP,则视频编码器200和视频解码器300可以被配置为将左上控制点MV用作为MV2的一个候选。然后,视频编码器200和视频解码器300可以被配置为按顺序检查用于块A0和A1的标准的平移MVP。如果找到标准的平移MVP,则视频编码器200和视频解码器300可以被配置为将该标准平移MVP用作为MV2的候选。可以预定义MV2的候选的最大数量,例如2、3或其它整数。视频编码器200和视频解码器300可以被配置为应用修剪过程以移除重复。
可以切换检查A0和A1的顺序。
用于导出MV3的其它推导技术
在灵活译码器顺序的情况下,视频编码器200和视频解码器300可以被配置为在当前块之前对位置C0或/和C1处的块进行译码。然后,与上面描述的类似,视频编码器200和视频解码器300可以被配置为从来自C0或/和C1的继承的仿射MVP,和/或从来自C0和/或C1的标准的平移MVP导出MV3。视频编码器200和视频解码器300可以被配置为通过时域运动矢量预测器(TMVP)导出MVE。
利用多个MV0候选构造的仿射MVP
在一个示例中,视频编码器200和视频解码器300可以被配置为使用多个MV0候选,但是仅使用一个MV1和一个MV2。然后,视频编码器200和视频解码器300可以被配置为基于多个MV0候选导出多个构造的仿射MVP,例如构造的仿射MVP因MV0而不同。
用于继承的仿射运动矢量预测器的其它插入技术
本文中所描述的插入方法能够应用于构造仿射合并候选列表。
用于构造的仿射运动矢量预测器的其它插入技术
能够应用构造的仿射MVP的其它插入顺序。
在一些示例中,适用以下规则。
a.检查{MV0,MV1,MV2},如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1,MV2}。
b.检查{MV0,MV1,MV3}
c.检查{MV0,MV2,MV3}
d.检查{MV1,MV2,MV3}
e.检查{MV0,MV1}
f.检查{MV0,MV2}
在另一示例中,适用以下规则。
a.检查{MV0,MV1,MV2},如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1,MV2}。
b.检查{MV0,MV1,MV3}
c.检查{MV0,MV2,MV3}
d.检查{MV1,MV2,MV3}
e.检查{MV0,MV1},如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1}。
在又一示例中,适用以下规则。
a.检查{MV0,MV1,MV2},如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1,MV2}。
b.如果MV2不可用,检查{MV0,MV1}。如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1}。
c.检查{MV0,MV1,MV3}
d.检查{MV0,MV2,MV3}
e.检查{MV1,MV2,MV3}
在又一示例中,适用以下规则。
a.检查{MV0,MV1,MV2},如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1,MV2}。
b.检查{MV0,MV1},如果多个MV0候选可用,则利用多个MV0候选检查多个{MV0,MV1}。
注意,在灵活译码顺序并且C0/C1是在A0/A1之前译码的情况下,切换上面描述的MV0和MV3。
将ATMVP候选插入仿射合并候选列表
当使用用于基于子PU的合并模式的单独的合并候选列表时,在来自A1的继承的仿射合并候选之后插入基于子PU的高级时域运动矢量预测(ATMVP)候选。在另一示例中,将ATMVP候选插入在合并候选列表的第一位置中,例如,在仿射合并候选之前。
在本公开的另一个示例中,描述了一种改进的构造的仿射运动预测器。在一些示例中,对于常规构造的仿射运动预测器,可以通过B2、B3或A3处的运动矢量来预测左上控制点处的运动矢量
Figure BDA0002945449430000551
可以通过B0或B1处的运动矢量来预测右上控制点处的运动矢量
Figure BDA0002945449430000552
并且可以通过A0或A1处的运动矢量来预测左下控制点处的运动矢量
Figure BDA0002945449430000553
根据本公开的技术,首先通过来自其直接邻近块(如果可用)的继承的仿射运动预测器来预测改进的构造的仿射候选
Figure BDA0002945449430000554
如果A3是仿射译码的,则由A3的仿射运动模型导出
Figure BDA0002945449430000555
即来自A3的继承的仿射运动预测器的
Figure BDA0002945449430000556
否则,如对于常规构造的仿射运动预测器所描述的那样导出
Figure BDA0002945449430000557
如果B0/B1是仿射译码的,则由B0/B1的仿射运动模型导出
Figure BDA0002945449430000558
即来自B0/B1的继承的仿射运动预测器的
Figure BDA0002945449430000561
否则,如对于常规构造的仿射运动预测器所描述的那样导出
Figure BDA0002945449430000562
如果A0/A1是仿射译码的,则由A0/A1的仿射运动模型导出
Figure BDA0002945449430000563
即来自A0/A1的继承的仿射运动预测器的
Figure BDA0002945449430000564
否则,如对于常规构造的仿射运动预测器所描述的那样导出
Figure BDA0002945449430000565
以这种方式,如果已经导出来自A0、A1、B0、B1、B2、B3、A3的继承的仿射运动预测器,则构造的仿射运动预测器的对应控制点MV可以与继承的仿射运动预测器一起被导出。这样,可以降低计算复杂度。
自适应仿射运动矢量差预测
视频编码器200和视频解码器300可以被配置为通过左上控制点的MVD预测右上控制点和左下控制点的运动矢量差(MVD)。视频编码器200和视频解码器300可以被配置为自适应地应用MVD预测。如果仿射MVP是继承的仿射MVP或者MVP的3个控制点MV是通过相同的平移MV预测的,则视频编码器200和视频解码器300可以被配置为应用MVD预测。否则,例如,仿射MVP是构造的仿射MVP,则视频编码器200和视频解码器300可以被配置为不应用MVD预测。
基于历史的仿射运动矢量预测
如在基于历史的运动矢量预测中一样,视频编码器200和视频解码器300可以被配置为从切片级维护的仿射MVP列表导出继承的仿射MVP。视频编码器200和视频解码器300可以被配置为在通过仿射运动预测对块进行译码时更新切片级仿射MVP列表。视频编码器200和视频解码器300可以被配置为将用于块的仿射运动参数插入仿射MVP列表。当列表中的候选的数量达到预定义的最大值时,MVP根据先进先出的规则被弹出(例如,移除)。当从列表获得仿射MVP时,检查顺序与插入顺序相反。基于历史的仿射MVP,例如来自切片级列表的仿射MVP可以被插入到构造的仿射MVP之后。注意,在将仿射运动参数插入列表中时,还存储当前块的位置和宽度与高度。
利用运动矢量差的仿射运动矢量预测器细化
视频编码器200和视频解码器300可以被配置为通过一个运动矢量差(MVD)来细化仿射MVP。视频编码器200和视频解码器300可以被配置为如在上述仿射合并模式中一样构造仿射MVP候选列表,除了不包括零MV候选。然后,视频编码器200和视频解码器300可以被配置为通过MVD细化通过合并索引选择的仿射MVP的指定控制点MV。
在一些示例中,指定控制点MV是左上控制点MV。在另一示例中,指定控制点MV是右上控制点MV。在又一示例中,指定控制点MV是左下控制点MV。
在又一示例中,指定控制点MV取决于所选择的仿射MVP。例如,如果所选择的仿射MVP是来自A0/A1的继承的仿射MVP,则用于细化的指定控制点MV是右上控制点MV;如果选择的仿射MVP是来自B0/B1的继承的仿射MVP,则用于细化的指定控制点MV是左下控制点MV;如果所选择的仿射MVP是来自B2/B3/A2的继承的仿射MVP,则用于细化的指定控制点MV为(宽度>高度?右上控制点MV:左下控制点MV);对于另一仿射MVP,例如,构造的仿射MVP或来自切片级列表的仿射MVP,用于细化的指定控制点MV被预定义为左上控制点MV。
如果仿射MVP是双向的,则视频编码器200和视频解码器300可以被配置为镜像两个方向的MVD,因此只有一个MVD被信令通知,并且这一个是通过按比例缩放信令通知的MVD来导出的。
在一些示例中,MVD的译码可以与标准MVD译码是相同的。
在另一示例中,运动矢量差的译码可以与美国临时专利申请No.62/697,860或JVET-K0115“CE4 Ultimate motion vector expression in JVET-J0024”中的相同。其中,MVD表示为预测方向信息、起始点、运动幅度和运动方向。起始点是所选择的仿射MVP,并且仿射MVP列表构造取决于预测方向信息,即,正向预测、反向预测或双向预测。
图14是示出用于对当前块进行编码的示例方法的流程图。当前块可以包括当前CU。尽管是关于视频编码器200(图1和图3)描述的,但应当理解的是,其它设备可以被配置为执行类似于图14的方法。
在此示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成用于当前块的预测块。然后,视频编码器200可以计算用于当前块的残差块(352)。为了计算残差块,视频编码器200可以计算原始的未经译码块与用于当前块的预测块之间的差。然后,视频编码器200可以变换和量化残差块的系数(354)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对系数进行熵编码(358)。例如,视频编码器200可以使用CAVLC或CABAC对系数进行编码。然后,视频编码器200可以输出用于块的系数的经熵译码数据(360)。
图15是示出用于对当前视频数据块进行解码的示例方法的流程图。当前块可以包括当前CU。尽管是关于视频解码器300(图1和图4)描述的,但是应当理解,其它设备可以被配置为执行类似于图15的方法。
视频解码器300可以接收当前块的经熵译码数据,诸如经熵译码的预测信息和与当前块相对应的残差块的系数的经熵译码数据(370)。视频解码器300可以对经熵译码数据进行解码以确定用于当前块的预测信息并再现残差块的系数(372)。视频解码器300可以预测当前块(374),例如,使用用于当前块的预测信息所指示的帧内或帧间预测模式,以计算用于当前块的预测块。然后,视频解码器300可以逆扫描所再现的系数(376),以创建经量化的变换系数的块。然后,视频解码器300可以对系数进行逆量化和逆变换以产生残差块(378)。视频解码器300可以通过组合预测块和残差块来最终解码当前块(380)。
应该认识到,根据示例,本文中描述的任何技术的某些动作或事件可以以不同的序列执行,可以被一起添加、合并或省去(例如,不是所有描述的动作或事件是技术实践所必须的)。此外,在某些示例中,动作或事件可以,例如通过多线程处理、中断处理或多个处理器并发地处理而不是顺序地执行。
在一个或多个示例中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或者通信介质,包括例如根据通信协议来促进将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁性存储设备、闪存或可以用于以指令或数据结构形式存储所需程序代码并且可以由计算机访问的任何其它介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(诸如红外、无线电和微波)从网站、服务器或其它远程源发送指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或诸如红外、无线电和微波之类的无线技术。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它暂时性介质,而是针对非暂时性有形存储介质。如本申请中使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常以磁性方式重现数据,而光盘用激光光学地重现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它等效集成的或分立逻辑电路。因此,如本申请中所使用的术语“处理器”可以是指任何前述结构或适合于实现本申请中描述的技术的任何其它结构。另外,在一些方面,本申请中描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或合并在组合编解码器中。同样,该技术可以在一个或多个电路或逻辑元件中完全实现。
本公开的技术可以在包括无线手机、集成电路(IC)或一组IC(例如,芯片组)的多种设备或装置中实现。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,包括与合适的软件和/或固件结合的如上所述的一个或多个处理器。
已经描述了各种示例。这些和其它示例在所附权利要求的范围内。

Claims (68)

1.一种对视频数据进行解码的方法,所述方法包括:
接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块;
构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量;以及
使用所确定的控制点运动矢量对所述视频数据块进行解码。
2.根据权利要求1所述的方法,还包括:
从指定运动矢量候选列表确定所述指定运动矢量。
3.根据权利要求2所述的方法,其中,确定所述指定运动矢量包括按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
4.根据权利要求1所述的方法,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
5.根据权利要求4所述的方法,其中,构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表包括:
如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;
如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;以及
如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表。
6.根据权利要求4所述的方法,其中,构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表包括:
在不执行修剪过程的情况下构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表。
7.根据权利要求4所述的方法,还包括:
从使用仿射运动预测编码的邻近块的控制点运动矢量导出所述一个或多个继承的仿射运动矢量预测器。
8.根据权利要求4所述的方法,还包括:
从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
9.根据权利要求4所述的方法,其中,所述视频数据块是使用6-参数仿射运动模型解码的,所述方法还包括:
只有在所述6-参数仿射运动模型的所有控制点运动矢量都可用的情况下,才从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
10.根据权利要求1所述的方法,其中,确定用于所述块的所述控制点运动矢量包括:
接收到所述仿射AMVP运动矢量预测器列表的索引;
接收用于所述块的每个所述控制点运动矢量的运动矢量差;
检索与所述索引相关联的所述候选控制点运动矢量;以及
将用于所述块的每个所述控制点运动矢量的所述运动矢量差添加到所述候选控制点运动矢量以确定用于所述块的所述控制点运动矢量。
11.根据权利要求1所述的方法,还包括:
输出用于显示的图片,所述图片包括经解码的视频数据块。
12.一种装置,被配置为对视频数据进行解码,所述装置包括:
存储器,被配置为存储使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块;以及
一个或多个处理器,与所述存储器通信,所述一个或多个处理器被配置为:
接收所述视频数据块;
构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量;以及
使用所确定的控制点运动矢量对所述视频数据块进行解码。
13.根据权利要求12所述的装置,其中,所述一个或多个处理器还被配置为:
从指定运动矢量候选列表确定所述指定运动矢量。
14.根据权利要求13所述的装置,其中,为了确定所述指定运动矢量,所述一个或多个处理器被配置为按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
15.根据权利要求12所述的装置,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
16.根据权利要求15所述的装置,其中,为了构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表,所述一个或多个处理器被配置为:
如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;
如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;以及
如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表。
17.根据权利要求15所述的装置,其中,为了构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表,所述一个或多个处理器被配置为:
在不执行修剪过程的情况下构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表。
18.根据权利要求15所述的装置,其中,所述一个或多个处理器还被配置为:
从使用仿射运动预测编码的邻近块的控制点运动矢量导出所述一个或多个继承的仿射运动矢量预测器。
19.根据权利要求15所述的装置,其中,所述一个或多个处理器还被配置为:
从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
20.根据权利要求15所述的装置,其中,所述视频数据块是使用6-参数仿射运动模型解码的,并且其中,所述一个或多个处理器还被配置为:
只有在所述6-参数仿射运动模型的所有控制点运动矢量都可用的情况下,才从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
21.根据权利要求12所述的装置,其中,为了确定用于所述块的所述控制点运动矢量,所述一个或多个处理器被配置为:
接收到所述仿射AMVP运动矢量预测器列表的索引;
接收用于所述块的每个所述控制点运动矢量的运动矢量差;
检索与所述索引相关联的所述候选控制点运动矢量;以及
将用于所述块的每个所述控制点运动矢量的所述运动矢量差添加到与所述候选控制点运动矢量以确定用于所述块的所述控制点运动矢量。
22.根据权利要求12所述的装置,还包括:
显示器,被配置为显示图片,所述图片包括经解码的视频数据块。
23.一种装置,被配置为对视频数据进行解码,所述装置包括:
用于接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块的部件;
用于构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
用于从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量的部件;以及
用于使用所确定的控制点运动矢量对所述视频数据块进行解码的部件。
24.根据权利要求23所述的装置,还包括:
用于从指定运动矢量候选列表确定所述指定运动矢量的部件。
25.根据权利要求24所述的装置,其中,所述用于确定所述指定运动矢量的部件包括用于按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量的部件:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
26.根据权利要求23所述的装置,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
27.根据权利要求26所述的装置,其中,所述用于构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表的部件包括:
用于如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表的部件;
用于如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表的部件;
用于如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表的部件。
28.根据权利要求26所述的装置,其中,所述用于构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件包括:
用于在不执行修剪过程的情况下构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件。
29.一种存储指令的非暂时性计算机可读存储介质,所述指令被执行时使一个或多个处理器:
接收使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块;
构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量;以及
使用所确定的控制点运动矢量对所述视频数据块进行解码。
30.根据权利要求29所述的非暂时性计算机可读存储介质,其中,所述指令还使所述一个或多个处理器:
从指定运动矢量候选列表确定所述指定运动矢量。
31.根据权利要求30所述的非暂时性计算机可读存储介质,其中,为了确定所述指定运动矢量,所述指令使所述一个或多个处理器按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
32.根据权利要求29所述的非暂时性计算机可读存储介质,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
33.根据权利要求32所述的非暂时性计算机可读存储介质,其中,为了构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表,所述指令使所述一个或多个处理器:
如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;
如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;以及
如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表。
34.根据权利要求32所述的非暂时性计算机可读存储介质,其中,为了构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述指令使所述一个或多个处理器:
在不执行修剪过程的情况下构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表。
35.一种对视频数据进行编码的方法,所述方法包括:
接收要使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块;
构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量;以及
使用所确定的控制点运动矢量对所述视频数据块进行编码。
36.根据权利要求35所述的方法,还包括:
从指定运动矢量候选列表确定所述指定运动矢量。
37.根据权利要求36所述的方法,其中,确定所述指定运动矢量包括按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
38.根据权利要求35所述的方法,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
39.根据权利要求38所述的方法,其中,构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表包括:
如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;
如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;以及
如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表。
40.根据权利要求38所述的方法,其中,构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表包括:
在不执行修剪过程的情况下构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表。
41.根据权利要求38所述的方法,还包括:
从使用仿射运动预测译码的邻近块的控制点运动矢量导出所述一个或多个继承的仿射运动矢量预测器。
42.根据权利要求38所述的方法,还包括:
从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
43.根据权利要求38所述的方法,其中,所述视频数据块是使用6-参数仿射运动模型编码的,所述方法还包括:
只有在所述6-参数仿射运动模型的所有控制点运动矢量都可用的情况下,才从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
44.根据权利要求35所述的方法,还包括:
确定所述仿射AMVP运动矢量预测器中的候选控制点运动矢量;
对与所确定的候选控制点运动矢量相对应的、到所述仿射AMVP运动矢量预测器列表的索引进行编码;
确定用于所述块的每个所述控制点运动矢量相对于所确定的候选控制点运动矢量的运动矢量差;以及
对所述运动矢量差进行编码。
45.根据权利要求35所述的方法,还包括:
捕捉包括所述视频数据块的图片。
46.一种装置,被配置为对视频数据进行编码,所述装置包括:
存储器,被配置为存储要使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块;以及
一个或多个处理器,与所述存储器通信,所述一个或多个处理器被配置为:
接收所述视频数据块;
构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量;以及
使用所确定的控制点运动矢量对所述视频数据块进行编码。
47.根据权利要求46所述的装置,其中,所述一个或多个处理器还被配置为:
从指定运动矢量候选列表确定所述指定运动矢量。
48.根据权利要求47所述的装置,其中,为了确定所述指定运动矢量,所述一个或多个处理器被配置为按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
49.根据权利要求46所述的装置,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
50.根据权利要求49所述的装置,其中,为了构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表,所述一个或多个处理器被配置为:
如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;
如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;以及
如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表。
51.根据权利要求49所述的装置,其中,为了构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述一个或多个处理器被配置为:
在不执行修剪过程的情况下构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表。
52.根据权利要求49所述的装置,其中,所述一个或多个处理器还被配置为:
从使用仿射运动预测译码的邻近块的控制点运动矢量导出所述一个或多个继承的仿射运动矢量预测器。
53.根据权利要求49所述的装置,其中,所述一个或多个处理器还被配置为:
从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
54.根据权利要求49所述的装置,其中,所述视频数据块是使用6-参数仿射运动模型编码的,并且其中,所述一个或多个处理器还被配置为:
只有在所述6-参数仿射运动模型的所有控制点运动矢量都可用的情况下,才从使用帧间预测译码的邻近块的运动矢量导出所述一个或多个构造的仿射运动矢量预测器。
55.根据权利要求46所述的装置,其中,所述一个或多个处理器还被配置为:
确定所述仿射AMVP运动矢量预测器中的候选控制点运动矢量;
对与所确定的候选控制点运动矢量相对应的、到所述仿射AMVP运动矢量预测器列表的索引进行编码;
确定用于所述块的每个所述控制点运动矢量相对于所确定的候选控制点运动矢量的运动矢量差;以及
对所述运动矢量差进行编码。
56.根据权利要求46所述的装置,还包括:
摄像机,被配置为捕捉包括所述视频数据块的图片。
57.一种装置,被配置为对视频数据进行编码,所述装置包括:
用于接收要使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块的部件;
用于构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
用于从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量的部件;以及
用于使用所确定的控制点运动矢量编码所述视频数据块的部件。
58.根据权利要求57所述的装置,还包括:
用于从指定运动矢量候选列表确定所述指定运动矢量的部件。
59.根据权利要求58所述的装置,其中,所述用于确定所述指定运动矢量的部件包括用于按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量的部件:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
60.根据权利要求57所述的装置,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
61.根据权利要求60所述的装置,其中,用于构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表的部件包括:
用于如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表的部件;
用于如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表的部件;以及
用于如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表的部件。
62.根据权利要求60所述的装置,其中,所述用于构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件包括:
用于在不执行修剪过程的情况下构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表的部件。
63.一种存储指令的非暂时性计算机可读存储介质,所述指令被执行时使一个或多个处理器:
接收要使用仿射高级运动矢量预测(AMVP)模式编码的视频数据块;
构造用于所述视频数据块的候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述仿射AMVP运动矢量预测器列表包括使得所有控制点运动矢量等于指定运动矢量的一个或多个仿射运动矢量预测器;
从所述仿射AMVP运动矢量预测器列表确定用于所述视频数据块的控制点运动矢量;以及
使用所确定的控制点运动矢量对所述视频数据块进行编码。
64.根据权利要求63所述的非暂时性计算机可读存储介质,其中,所述指令还使所述一个或多个处理器:
从指定运动矢量候选列表确定所述指定运动矢量。
65.根据权利要求64所述的非暂时性计算机可读存储介质,其中,为了确定所述指定运动矢量,所述指令使所述一个或多个处理器按照下面的顺序从指定运动矢量候选列表确定所述指定运动矢量:
1)构造的仿射运动矢量预测器中的左下控制点运动矢量,
2)构造的仿射运动矢量预测器中的右上控制点运动矢量,
3)构造的仿射运动矢量预测器中的左上控制点运动矢量,
4)时域运动矢量预测器,以及
5)零运动矢量。
66.根据权利要求63所述的非暂时性计算机可读存储介质,其中,所述仿射AMVP运动矢量预测器列表至少还包括一个或多个继承的仿射运动矢量预测器或一个或多个构造的仿射运动矢量预测器。
67.根据权利要求66所述的非暂时性计算机可读存储介质,其中,为了构造用于所述视频数据块的候选控制点运动矢量的所述仿射AMVP运动矢量预测器列表,所述指令使所述一个或多个处理器:
如果可用,将所述一个或多个继承的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;
如果所述一个或多个继承的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的预定义最大数量,如果可用,则将所述一个或多个构造的仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表;以及
如果所述一个或多个继承的仿射运动矢量预测器和所述一个或多个构造的仿射运动矢量预测器的数量小于所述仿射AMVP运动矢量预测器列表的所述预定义最大数量,则将使得所有控制点运动矢量等于所述指定运动矢量的所述一个或多个仿射运动矢量预测器插入所述仿射AMVP运动矢量预测器列表。
68.根据权利要求66所述的非暂时性计算机可读存储介质,其中,为了构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表,所述指令使所述一个或多个处理器:
在不执行修剪过程的情况下构造用于所述视频数据块的所述候选控制点运动矢量的仿射AMVP运动矢量预测器列表。
CN201980054838.XA 2018-08-28 2019-08-27 仿射运动预测 Pending CN112840646A (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862723919P 2018-08-28 2018-08-28
US62/723,919 2018-08-28
US201862728489P 2018-09-07 2018-09-07
US62/728,489 2018-09-07
US201862730814P 2018-09-13 2018-09-13
US62/730,814 2018-09-13
US16/550,910 2019-08-26
US16/550,910 US10944984B2 (en) 2018-08-28 2019-08-26 Affine motion prediction
PCT/US2019/048260 WO2020046876A1 (en) 2018-08-28 2019-08-27 Affine motion prediction

Publications (1)

Publication Number Publication Date
CN112840646A true CN112840646A (zh) 2021-05-25

Family

ID=69640520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980054838.XA Pending CN112840646A (zh) 2018-08-28 2019-08-27 仿射运动预测

Country Status (8)

Country Link
US (2) US10944984B2 (zh)
EP (1) EP3844952A1 (zh)
KR (1) KR20210046677A (zh)
CN (1) CN112840646A (zh)
BR (1) BR112021002967A2 (zh)
CL (1) CL2021000476A1 (zh)
SG (1) SG11202100487TA (zh)
WO (1) WO2020046876A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113630602A (zh) * 2021-06-29 2021-11-09 杭州未名信科科技有限公司 编码单元的仿射运动估计方法、装置、存储介质及终端
TWI831358B (zh) * 2022-05-04 2024-02-01 聯發科技股份有限公司 用於仿射預測或運動補償的共享預加載區域的方法和裝置

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331722B (zh) 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
WO2019144908A1 (en) * 2018-01-26 2019-08-01 Mediatek Inc. Method and apparatus of affine inter prediction for video coding system
CN116708815A (zh) * 2018-08-09 2023-09-05 Lg电子株式会社 编码设备、解码设备和数据发送设备
US10944984B2 (en) 2018-08-28 2021-03-09 Qualcomm Incorporated Affine motion prediction
US11310520B2 (en) * 2018-09-04 2022-04-19 Hfi Innovation Inc. Method and apparatus of motion-vector rounding unification for video coding system
TW202017377A (zh) 2018-09-08 2020-05-01 大陸商北京字節跳動網絡技術有限公司 視頻編碼和解碼中的仿射模式
US11140408B2 (en) * 2018-09-17 2021-10-05 Qualcomm Incorporated Affine motion prediction
CN110944192B (zh) * 2018-09-23 2023-08-11 北京字节跳动网络技术有限公司 运动候选列表的构建
CN110944181B (zh) 2018-09-23 2023-03-10 北京字节跳动网络技术有限公司 仿射模型的多个假设
US20210400298A1 (en) * 2018-09-28 2021-12-23 Lg Electronics Inc. Method and apparatus for processing video signal by using affine prediction
CN111083485A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 仿射模式的运动信息的利用
CN111093073B (zh) 2018-10-24 2024-04-19 北京字节跳动网络技术有限公司 用于子块运动矢量预测的基于搜索的运动候选推导
WO2020098810A1 (en) * 2018-11-17 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Merge with motion vector difference in video processing
CN111355961B (zh) * 2018-12-24 2023-11-03 华为技术有限公司 一种帧间预测的方法和装置
US11503278B2 (en) * 2018-12-28 2022-11-15 Jvckenwood Corporation Device for deriving affine merge candidate
US11102476B2 (en) * 2018-12-28 2021-08-24 Qualcomm Incorporated Subblock based affine motion model
WO2020156464A1 (en) * 2019-01-31 2020-08-06 Mediatek Inc. Method and apparatus of combined inter and intraprediction for video coding
US10979716B2 (en) * 2019-03-15 2021-04-13 Tencent America LLC Methods of accessing affine history-based motion vector predictor buffer
WO2020219970A1 (en) * 2019-04-24 2020-10-29 Op Solutions, Llc Signaling of global motion vector in picture header
US11146813B2 (en) 2019-05-23 2021-10-12 Tencent America LLC Method and apparatus for video coding
US11582475B2 (en) * 2019-09-24 2023-02-14 Qualcomm Incorporated History-based motion vector prediction
WO2023131034A1 (en) * 2022-01-05 2023-07-13 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
WO2017157259A1 (en) * 2016-03-15 2017-09-21 Mediatek Inc. Method and apparatus of video coding with affine motion compensation
US20180098063A1 (en) * 2016-10-05 2018-04-05 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
WO2018128379A1 (ko) * 2017-01-03 2018-07-12 엘지전자(주) 어파인 예측을 이용하여 비디오 신호를 처리하는 방법 및 장치
CN108432250A (zh) * 2016-01-07 2018-08-21 联发科技股份有限公司 用于视频编解码的仿射帧间预测的方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140192881A1 (en) * 2013-01-07 2014-07-10 Sony Corporation Video processing system with temporal prediction mechanism and method of operation thereof
WO2015015058A1 (en) * 2013-07-31 2015-02-05 Nokia Corporation Method and apparatus for video coding and decoding
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
US10681370B2 (en) 2016-12-29 2020-06-09 Qualcomm Incorporated Motion vector generation for affine motion model for video coding
US20190349598A1 (en) 2017-01-03 2019-11-14 Nokia Technologies Oy An Apparatus, a Method and a Computer Program for Video Coding and Decoding
US10873760B2 (en) 2017-04-07 2020-12-22 Futurewei Technologies, Inc. Motion vector (MV) constraints and transformation constraints in video coding
US10841794B2 (en) * 2017-09-18 2020-11-17 Futurewei Technologies, Inc. Adaptive motion vector resolution
US11019355B2 (en) * 2018-04-03 2021-05-25 Electronics And Telecommunications Research Institute Inter-prediction method and apparatus using reference frame generated based on deep learning
US11032563B2 (en) * 2018-07-17 2021-06-08 Tencent America LLC Method and apparatus for affine model prediction
US11140398B2 (en) * 2018-08-20 2021-10-05 Mediatek Inc. Methods and apparatus for generating affine candidates
US10944984B2 (en) 2018-08-28 2021-03-09 Qualcomm Incorporated Affine motion prediction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108432250A (zh) * 2016-01-07 2018-08-21 联发科技股份有限公司 用于视频编解码的仿射帧间预测的方法及装置
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
WO2017157259A1 (en) * 2016-03-15 2017-09-21 Mediatek Inc. Method and apparatus of video coding with affine motion compensation
US20180098063A1 (en) * 2016-10-05 2018-04-05 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
WO2018128379A1 (ko) * 2017-01-03 2018-07-12 엘지전자(주) 어파인 예측을 이용하여 비디오 신호를 처리하는 방법 및 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113630602A (zh) * 2021-06-29 2021-11-09 杭州未名信科科技有限公司 编码单元的仿射运动估计方法、装置、存储介质及终端
TWI831358B (zh) * 2022-05-04 2024-02-01 聯發科技股份有限公司 用於仿射預測或運動補償的共享預加載區域的方法和裝置

Also Published As

Publication number Publication date
US10944984B2 (en) 2021-03-09
US20200077113A1 (en) 2020-03-05
KR20210046677A (ko) 2021-04-28
US11425415B2 (en) 2022-08-23
US20210195230A1 (en) 2021-06-24
SG11202100487TA (en) 2021-03-30
EP3844952A1 (en) 2021-07-07
BR112021002967A2 (pt) 2021-05-11
CL2021000476A1 (es) 2021-08-27
WO2020046876A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
US11425415B2 (en) Affine motion prediction
US11212550B2 (en) History-based motion vector prediction for affine mode
CN113475081B (zh) 用于视频译码的三角形运动信息
CN112369031A (zh) 对于视频编译码的波前处理的基于多个历史的非毗邻mvp
CN113812148A (zh) 用于视频译码的参考图片重采样和帧间译码工具
CN113748679A (zh) 用于视频编解码的帧内块复制合并数据语法
CN114128259A (zh) 用于视频译码的合并模式译码
CN112740672A (zh) 具有自适应方向信息集合的最终运动矢量表达
JP2022538061A (ja) ビデオコーディングのための組み合わされたインターおよびイントラ予測モード
US10958928B2 (en) Decoder-side motion vector derivation for video coding
CN113424542A (zh) 用于视频编解码中带有运动矢量差的合并模式的信令
US20190320181A1 (en) Generation of motion vector predictors from multiple neighboring blocks in video coding
US11418793B2 (en) Adaptive affine motion vector coding
US11102476B2 (en) Subblock based affine motion model
CN112673636B (zh) 将运动向量取整以自适应运动向量差分辨率及提高视频译码中的运动向量存储精度
EP3922026A1 (en) Constrained affine motion inheritance for video coding
CN112534820A (zh) 信令通知子预测单元运动矢量预测器
CN112640451A (zh) 矢量预测器列表生成
JP2022533061A (ja) ビデオコーディングのための勾配ベースの予測改良
CN113545054A (zh) 视频编解码中子块变换的简化
CN115299056A (zh) 视频译码中的子块合并候选者的信令数量
CN116601952A (zh) 视频译码的多假设预测

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40051051

Country of ref document: HK