CN116708827A - 编码器、解码器及相应的帧间预测方法 - Google Patents

编码器、解码器及相应的帧间预测方法 Download PDF

Info

Publication number
CN116708827A
CN116708827A CN202310323811.4A CN202310323811A CN116708827A CN 116708827 A CN116708827 A CN 116708827A CN 202310323811 A CN202310323811 A CN 202310323811A CN 116708827 A CN116708827 A CN 116708827A
Authority
CN
China
Prior art keywords
search space
motion vector
video
matching cost
block
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
CN202310323811.4A
Other languages
English (en)
Inventor
塞米赫·艾森力克
高晗
阿南德·梅赫·科特拉
王彪
陈建乐
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116708827A publication Critical patent/CN116708827A/zh
Pending legal-status Critical Current

Links

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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/57Motion estimation characterised by a search window with variable size or shape
    • 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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

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

Abstract

一种帧间预测方法,包括:获取当前块的初始运动矢量;根据所述初始运动矢量确定搜索空间位置;按照检查顺序检查所述搜索空间位置的匹配代价以选择具有最小匹配代价的目标搜索空间位置;根据所述初始运动矢量和所述目标搜索空间位置确定所述当前块的修正运动矢量,其中,首先按照所述检查顺序检查中心搜索空间位置,所述初始运动矢量指向所述中心搜索空间位置。

Description

编码器、解码器及相应的帧间预测方法
本申请要求2019年1月13日提交的第62/791,869号美国临时专利申请和2019年2月28日提交的第62/812,190号美国临时专利申请的优先权,其全部内容通过引用的方式并入本文中。
技术领域
本申请实施例大体上涉及图像处理领域,更具体地,涉及帧间预测。
背景技术
视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字TV、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、DVD和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。
即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的地侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
发明内容
提供了一种用于构建运动矢量修正的搜索空间方案,本申请对中示出了用于检查搜索空间中的搜索空间位置的匹配代价的几种检查顺序。
本申请实施例提供根据独立权利要求的用于编码和解码的装置和方法。
本申请第一方面提供了一种帧间预测方法,包括:获取当前块的初始运动矢量;根据所述初始运动矢量确定搜索空间位置;按照检查顺序检查所述搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置;根据所述初始运动矢量和所述目标搜索空间位置确定所述当前块的修正运动矢量,其中,按照所述检查顺序首先检查中心搜索空间位置,所述初始运动矢量指向所述中心搜索空间位置。
在一种可行的实现方式中,所述搜索空间位置包括所述中心搜索空间位置和相邻搜索空间位置,其中,根据所述初始运动矢量确定搜索空间位置包括:根据所述初始运动矢量确定所述中心搜索空间位置;根据一个或多个预设偏移和所述中心搜索空间位置确定所述相邻搜索空间位置。
在一种可行的实现方式中,搜索空间由所述搜索空间位置组成,所述搜索空间的模式为5×5搜索空间位置的正方形。
在一种可行的实现方式中,按照所述检查顺序检查所述搜索空间位置的匹配代价以选择具有最小匹配代价的目标搜索空间位置包括:按照所述检查顺序依次检查所述搜索空间位置中的每一个搜索空间位置的匹配代价;从所述搜索空间位置中选择具有所述最小匹配代价的搜索空间位置,作为所述目标搜索空间位置。
在一种可行的实现方式中,按照所述检查顺序依次检查所述搜索空间位置中的每一个搜索空间位置的匹配代价包括:将所述搜索空间位置中的一个搜索空间位置的匹配代价与模板最小匹配代价(temp minimal matching cost)进行比较;
当所述搜索空间位置中的一个搜索空间位置的匹配代价小于所述模板最小匹配代价时,将所述搜索空间位置中的一个搜索空间位置的匹配代价设置为所述模板最小匹配代价;
在所述搜索空间位置中的最后一个搜索空间位置被检查之后,将所述模板最小匹配代价设置为所述最小匹配代价。
在一种可行的实现方式中,所述中心搜索空间位置设置为坐标系的(0,0),水平向右设置为水平正方向,垂直向下设置为垂直正方向。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(–2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)、(2,1)、(2,0)、(2,–1)、(2,–2)、(1,–2)、(0,–2)、(–1,–2)、(–2,–2)、(–2,–1)。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–1)、(–2,1)、(–2,2)、(–1,2)、(1,2)、(2,2)、(2,1)、(2,–1)、(2,–2)、(1,–2)、(–1,–2)、(–2,–2)。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–2)、(–2,2)、(2,2)、(2,–2)、(–2,–1)、(–2,1)、(–1,2)、(1,2)、(2,1)、(2,–1)、(1,–2)、(–1,–2)。
本申请第二方面提供了一种帧间预测装置,包括:获取模块,用于获取当前块的初始运动矢量;设置模块,用于根据所述初始运动矢量确定搜索空间位置;计算模块,用于按照检查顺序检查所述搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置;预测模块,用于根据所述初始运动矢量和所述目标搜索空间位置确定所述当前块的修正运动矢量,其中,按照所述检查顺序首先检查中心搜索空间位置,所述初始运动矢量指向所述中心搜索空间位置。
在一种可行的实现方式中,所述搜索空间位置包括所述中心搜索空间位置和相邻搜索空间位置,其中所述设置模块用于:根据所述初始运动矢量确定所述中心搜索空间位置;根据一个或多个预设偏移和所述中心搜索空间位置确定所述相邻搜索空间位置。
在一种可行的实现方式中,搜索空间由所述搜索空间位置组成,所述搜索空间的模式为5×5搜索空间位置的正方形。
在一种可行的实现方式中,所述计算模块用于:按照所述检查顺序依次检查所述搜索空间位置中的每一个搜索空间位置的匹配代价;从所述搜索空间位置中选择具有所述最小匹配代价的搜索空间位置,作为所述目标搜索空间位置。
在一种可行的实现方式中,所述计算模块用于:将所述搜索空间位置中的一个搜索空间位置的匹配代价与模板最小匹配代价进行比较;当所述搜索空间位置中的一个搜索空间位置的匹配代价小于所述模板最小匹配代价时,将所述搜索空间位置中的一个搜索空间位置的匹配代价设置为所述模板最小匹配代价;
在检查所述搜索空间位置中的最后一个搜索空间位置之后,将所述模板最小匹配代价设置为所述最小匹配代价。
在一种可行的实现方式中,所述中心搜索空间位置设置为坐标系的(0,0),水平向右设置为水平正方向,垂直向下设置为垂直正方向。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(–2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)、(2,1)、(2,0)、(2,–1)、(2,–2)、(1,–2)、(0,–2)、(–1,–2)、(–2,–2)、(–2,–1)。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–1)、(–2,1)、(–2,2)、(–1,2)、(1,2)、(2,2)、(2,1)、(2,–1)、(2,–2)、(1,–2)、(–1,–2)、(–2,–2)。
在一种可行的实现方式中,所述检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–2)、(–2,2)、(2,2)、(2,–2)、(–2,–1)、(–2,1)、(–1,2)、(1,2)、(2,1)、(2,–1)、(1,–2)、(–1,–2)。
本申请第三方面提供了一种用于确定运动矢量的方法,所述运动矢量用于视频图像(或帧)中的当前块的帧间预测,所述方法包括:获取初始运动矢量;根据所述初始运动矢量获取至少两组点(例如,一组点可以仅包括一个点);根据所述至少两组点和代价函数,获得所述当前块的运动矢量。
在一种可行的实现方式中,所述至少两组点包括正方形内的所有点,所述正方形以所述初始运动矢量对应的点为中心。
在一种可行的实现方式中,所述至少两组点包括正方形内的所有点,所述正方形的角点由坐标(–2,–2)、(2,2)、(–2,2)、(2,–2)确定。
在一种可行的实现方式中,所述至少两组点中的第一组点包括中心点,所述初始运动矢量指向所述中心点。
在一种可行的实现方式中,所述至少两组点中的第二组点包括所述中心点的左、上、右和下四个相邻点,所述初始运动矢量指向所述中心点。
在一种可行的实现方式中,所述至少两组点中的第三组点包括四个点,所述四个点距离所述中心点1个像素样本并且不包括在所述第二组中。
在一种可行的实现方式中,所述至少两组点中的第四组点包括至少在一个坐标轴上距离所述中心点2个像素样本的点。
在一种可行的实现方式中,在用代价函数处理所述至少两组点时,对所述至少两组点进行排序处理。
在一种可行的实现方式中,所述至少两组点中的第四组点包括在一个坐标轴上距离所述中心点2个像素样本并且在另一个坐标轴上距离所述中心点0个像素样本的点。
在一种可行的实现方式中,所述至少两组点中的第五组点包括至少在一个坐标轴上距离所述中心点2个像素样本并且不包括在所述第四组点中的点。
在一种可行的实现方式中,所述至少两组点中的第五组点包括在–x坐标轴和–y坐标轴上均距离中心点2个像素样本的点。
在一种可行的实现方式中,所述至少两组点中的第六组点包括至少在一个坐标轴上距离所述中心点2个像素样本并且不包括在所述第四组点或所述第五组点中的点。
在一种可行的实现方式中,所述至少两组点中的第四组点包括仅在一个坐标轴上距离所述中心点2个像素样本并且在另一个坐标轴上距离所述中心点0个像素样本的点。
在一种可行的实现方式中,当所述至少两组点中的一组点包括至少两个点时,按照预定义的规则对该组点进行排序。
在一种可行的实现方式中,当所述至少两组点中的一组点包括至少两个点时,选择该组点中最左边的点作为该组点中的第一点。
在一种可行的实现方式中,当所述至少两组点中的一组点包括至少两个点时,并且当有多个点是该组点的最左边的点时,选择该组最左边且在垂直方向(–y方向)上具有更接近0的坐标位移的点,作为该组点中的第一点。
在一种可行的实现方式中,当所述至少两组点中的一组点包括至少两个点时,并且当有多个点是该组点中的最左边的点时,如果所述点在–y方向上的位移相同,则选择顶部方向的最左边的点,作为该点组的第一点。
在一种可行的实现方式中,当所述至少两组点中的一组点包括至少两个点时,在确定该组点中的第一点之后,基于中心点周围的点的顺时针或逆时针扫描对同一组中的剩余点进行排序。
在一种可行的实现方式中,所述初始运动矢量对应于使用所述码流中指示的索引推导的运动矢量。
在一种可行的实现方式中,不将初始运动矢量和获得的运动矢量译码到码流中。
本申请的第四方面提供了一种包括程序代码的计算机程序产品,当计算机或处理器执行所述程序代码时,用于执行根据第一方面或第三方面的方法。
本申请第五方面提供了一种解码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,其耦合到所述处理器,并存储由所述处理器执行的程序,其中,当所述处理器执行所述程序时,使所述解码器执行根据第一方面或第三方面中的方法。
本申请第六方面提供了一种编码器,包括:一个或多个处理器;非瞬时性计算机可读存储介质,其耦合到所述处理器,并存储由所述处理器执行的程序,其中,当所述处理器执行所述程序时,使所述编码器执行根据第一方面或第三方面的方法。
本申请的第七方面提供一种携带程序代码的非瞬时性计算机可读介质,当计算机设备执行所述程序代码时,使所述计算机设备执行第一方面或第三方面的方法。
上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。
在所附独立权利要求中概述了特定实施例,在从属权利要求中概述了其它实施例。
附图及以下说明中将详细描述一个或多个实施例。其它特征、目标和优点在说明书、附图以及权利要求中显而易见。
附图说明
下面结合附图对本申请实施例进行详细描述。
图1A为用于实现本申请实施例的视频译码系统的示例的框图。
图1B为用于实现本申请实施例的视频译码系统的另一示例的框图。
图2为用于实现本申请实施例的视频编码器的示例的框图。
图3为用于实现本申请实施例的视频解码器的示例结构的框图。
图4为编码装置或解码装置的一个示例的框图。
图5为编码装置或解码装置的另一个示例的框图。
图6为预测方法的另一示例的框图。
图7为检查顺序的图示。
图8为检查顺序的另一图示。
图9为检查顺序的另一图示。
图10为检查顺序的另一图示。
图11为检查顺序的另一图示。
图12为检查顺序的另一图示。
图13为检查顺序的另一图示。
图14为检查顺序的另一图示。
图15为用于实现本申请实施例的预测装置的示例的框图。
图16为编码装置或解码装置的一个示例的框图。
图17为实现内容分发服务的内容供应系统3100的示例性结构的框图。
图18为终端设备的一个示例的结构的框图。
下文中,除非明确地另外指定,否则相同的附图标记指代相同或至少功能等同的特征。
具体实施方式
在以下描述中,参考构成本申请的一部分的附图,这些附图通过说明的方式示出本申请的实施例的特定方面或可以使用本发明的实施例的具体方面。应理解,本申请的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本申请的范围由所附权利要求限定。
例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述了一个或多个特定的方法步骤,则对应的设备可以包括一个或多个单元,例如用于执行所描述的一个或多个方法步骤的功能单元(例如,执行一个或多个步骤的一个单元;或者多个单元,每个单元执行多个步骤中的一个或多个),即使一个或多个单元在附图中未明确描述或示出时也是如此。此外,例如,如果根据一个或多个单元(例如功能单元)来描述特定装置,则对应的方法可以包括用于执行一个或多个单元的功能的一个步骤(例如执行一个或多个单元的功能的一个步骤,或多个步骤,每个步骤执行多个单元中的一个或多个单元的功能),即使一个或多个步骤在附图中未明确描述或示出时也是如此。此外,需要说明的是,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
视频译码通常是指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”可以代替术语“图像(picture或image)”。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源端执行,并且通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以获得更高效的存储和/或传输)。视频解码在目的地端执行,并且通常包括相对于编码器的逆处理以重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码器(编码和解码,CODEC)。
在无损视频译码的情况下,可以对原始视频图像进行重建,即,重建的视频图像与原始视频图像具有相同的质量(假设在存储或传输期间没有传输损失或其它数据损失)。在有损视频译码的情况下,通过量化等方式进行进一步压缩,以减少表示视频图像所需的数据量,在解码器侧无法完全重建视频图像,即,重建的视频图像的质量比原始视频图像的质量低或差。
若干视频译码标准属于“有损混合视频编解码”组(即,将样本域中的空间和时域预测与2D变换译码相结合,以在变换域中进行量化)。视频序列的每个图像通常划分为一组不重叠的块,并且通常在块级别上进行译码。换句话说,在编码器侧,通常在块(视频块)级别上对视频进行处理(即,编码),例如,通过使用空间(帧内图像)预测和/或时域(帧间图像)预测来生成预测块,从当前块(当前处理/待处理块)中减去预测块以获得残差块,变换残差块并在变换域中量化残差块以减少待发送(压缩)的数据量,而在解码器侧,相对于编码器的逆处理用于编码块或压缩块,以重建当前块用于表示。此外,编码器按照解码器处理循环来处理,使得两者生成相同的预测(例如,帧内和帧间预测)和/或重建,用于进行处理,即,对后续块进行译码。
在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3进行描述。
图1A为示例性译码系统10的示意性框图,例如可以使用本申请的技术的视频译码系统10(或简称为译码系统10)。视频译码系统10的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)表示可以用于根据本申请中描述的各种示例执行技术的设备的示例。
如图1A所示,译码系统10包括源设备12,源设备12用于向目的地设备14等提供编码图像数据21,以对编码数据13进行解码。
源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(预处理单元)18(例如图像预处理器18)和通信接口或通信单元22。
图像源16可以包括或可以是:任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,VR)图像),和/或其任何组合(例如增强现实(augmented reality,AR)图像)的任何类型的设备。图像源可以为存储上述图像中的任何图像的任何类型的存储器(memory/storage)。
为了与预处理器18和由预处理单元18执行的处理进行区分,图像或图像数据17也可以称为原始图像或原始图像数据17。
预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修剪(trimming)、颜色格式转换(例如从RGB到YCbCr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选的组件。
视频编码器20用于接收预处理的图像数据19并提供编码图像数据21(例如,下文根据图2进一步详细描述)。
源设备12中的通信接口22可以用于:接收编码图像数据21并通过通信信道13向目的地设备14等另一设备或任何其它设备发送编码图像数据21(或任何其它处理后的版本),以用于存储或直接重建。
目的地设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理器32(或后处理单元32)和显示设备34。
目的地设备14的通信接口28用于例如直接从源设备12,或从任何其它源(例如存储设备,例如编码图像数据存储设备)接收编码图像数据21或(或任何其它处理后的版本),并将编码图像数据21提供给解码器30。
通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如直接有线或无线连接),或者通过任何类型的网络(例如有线网络、无线网络、有线网络和无线网络的任何组合、任何类型的私网和公网、任何类型的私网和公网的组合),发送或接收编码图像数据21或编码数据13。
例如,通信接口22可以用于将编码图像数据21封装为报文等合适的格式,和/或使用任何类型的传输编码或处理来处理编码图像数据,以便在通信链路或通信网络上进行传输。
通信接口28与通信接口22对应,例如,可以用于接收所发送数据,并使用任何类型的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得编码图像数据21。
通信接口22和通信接口28均可配置为如图1A中从源设备12指向目的地设备14的通信信道13的箭头所指示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息,建立连接,确认并交换与通信链路和/或数据传输(例如编码图像数据传输)相关的任何其它信息等。
解码器30用于接收编码图像数据21并提供解码图像数据31或解码图像31(例如,下文根据图3或图5进一步详细描述)。
目的地设备14的后处理器32用于对解码图像数据31(也称为重建图像数据),例如解码图像31,进行后处理,以获得后处理图像数据33,例如后处理图像33。由后处理单元32执行的后处理可以包括颜色格式转换(例如从YCbCr到RGB)、颜色校正、修剪或重新采样或任何其它处理,以例如准备解码图像数据31,用于通过显示设备34等进行显示。
目的地设备14的显示设备34用于接收后处理图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light emitting diode,OLED)显示器、等离子显示器、投影仪、微LED显示器,硅上液晶(liquid crystal on silicon,LCOS)、数字光处理器(digital light processor,DLP)或任何类型的其它显示器。
尽管图1A将源设备12和目的地设备14描绘为的设备,但是设备的实施例也可以包括这两种设备或这两种设备的功能,即包括源设备12或对应的功能与目的地设备14或对应的功能。在此类实施例中,源设备12或对应的功能与目的地设备14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。
根据以上描述,对于本领域技术人员来说显而易见的是,图1A中所示的源设备12和/或目的地设备14的不同单元或功能的存在和(精确)功能划分可以根据实际设备和应用而变化。
编码器20(例如视频编码器20)或解码器30(例如视频解码器30)或两者都可通过如图1B所示的处理电路如一个或多个微处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、离散逻辑、硬件、视频译码专用处理器或其任何组合来实现。编码器20可以通过处理电路46实现,以实现结合图2的编码器20和/或本文描述的任何其它编码器系统或子系统所讨论的各种模块。解码器30可以通过处理电路46实现,以实现结合图3的解码器30所讨论的各种模块和/或本文所描述的任何其它解码器系统或子系统。处理电路可以用于执行本文所描述的各种操作。如图5所示,如果这些技术部分地在软件中实现,则设备可以将软件指令存储在合适的非瞬时性计算机可读存储介质中,并且可以通过一个或多个处理器在硬件中执行这些指令,以执行本发明的技术。视频编码器20和视频解码器30中的任何一个可以作为组合编解码器(encoder/decoder,CODEC)的一部分集成在单个设备中,如图1B所示。
源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收器设备、广播发送器设备等,并且可以使用或不使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
在一些情况下,图1A所示的视频译码系统10仅是示例,本申请的技术可以应用于视频译码设置(例如,视频编码或视频解码),不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据可以从本地存储器检索、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器检索和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器检索和解码数据的设备执行。
为便于描述,例如,参考由ITU-T视频译码专家组(video coding experts group,VCEG)和ISO/IEC运动图像专家组(motion picture experts group,MPEG)的视频译码联合工作组(joint collaboration team on video coding,JCT-VC)开发的高效视频译码(high-efficiency video coding,HEVC)、通用视频译码(versatile video coding,VVC)参考软件、下一代视频译码标准描述本申请实施例。本领域普通技术人员应理解本申请的实施例不局限于HEVC或VVC。
编码器和编码方法
图2为用于实现本申请的技术的示例性视频编码器20的示意性框图。在图2的示例中,视频编码器20包括输入端201(或输入接口201)、残差计算单元204、变换处理单元206、量化单元208、反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、模式选择单元260、熵编码单元270和输出端272(或输出接口272)。模式选择单元260可以包括帧间预测单元244、帧内预测单元254和划分单元262。帧间预测单元244可以包括运动估计单元和运动补偿单元(图中未示出)。根据混合视频编解码器,图2所示的视频编码器20也可以称为混合视频编码器或视频编码器。
残差计算单元204、变换处理单元206、量化单元208和模式选择单元260组成编码器20的前向信号路径;反量化单元210、逆变换处理单元212、重建单元214、缓冲器216、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元244和帧内预测单元254组成视频编码器20的反向信号路径,其中,视频编码器20的反向信号路径对应于解码器(参见图3的解码器30)的信号路径。反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器230、帧间预测单元244和帧内预测单元254还组成视频编码器20的“内置解码器”。
图像和图像划分(图像和块)
编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是预处理图像19(或预处理图像数据19)。为简单起见,以下描述中称为图像17。图像块17还可以称为当前图像或待译码图像(特别是在视频译码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。
(数字)图像是或可以看作具有强度值的二维样本阵列或矩阵。阵列中的样本也可以称为像素(pixel/pel)(像元的简称)。阵列或图像的水平和垂直方向(或轴线)上的样本的数量定义图像的大小和/或分辨率。通常使用三个颜色分量来表示颜色,即,可以通过三个样本阵列来表示图像或图像可以包括三个样本阵列。在RBG格式或色彩空间中,图像包括对应的红、绿、蓝样本阵列。但是,在视频译码中,每个像素通常以亮度和色度格式或颜色空间表示,例如YCbCr,其包括Y表示的亮度分量(有时也用L代替)以及Cb和Cr表示的两个色度分量。亮度分量Y表示亮度或灰度强度(例如在灰度级图像中),而两个色度分量Cb和Cr表示色度或颜色信息分量。因此,YCbCr格式的图像包括亮度样本值的亮度样本阵列(Y)和色度值的两个色度样本阵列(Cb和Cr)。RGB格式的图像可以转换或变换为YCbCr格式,反之亦然,该过程也称为颜色变换或转换。如果图像是单色的,则该图像可以只包括亮度样本阵列。因此,图像可以为例如单色格式的亮度样本阵列或4:2:0、4:2:2和4:4:4彩色格式的亮度样本阵列和两个对应的色度样本阵列。
在视频编码器20的实施例中,视频编码器20可以包括图像划分单元(图2中未示出),用于将图像17划分为多个(通常是不重叠的)图像块203。这些块也可以称为根块或宏块(H.264/AVC标准)或称为编码树块(coding tree block,CTB)或编码树单元(codingtree unit,CTU)(H.265/HEVC和VVC标准)。图像划分单元可以用于对视频序列中的所有图像和定义块大小的对应的栅格使用相同的块大小,或者改变图像或子集或图像组之间的块大小,并将每个图像图像划分为对应的块。
在其它实施例中,视频编码器可以用于直接接收图像17的块203,例如,组成图像17的一个、若干个或所有块。图像块203也可以称为当前图像块或待译码图像块。
尽管图像块203的尺寸小于图像17,但是与图像17一样,块203也是或也可以被认为是具有强度值(样本值)的样本的二维阵列或矩阵。换句话说,块203例如可以包括一个样本阵列(例如,在黑白图像17的情况下,亮度阵列)、三个样本阵列(例如,在彩色图像17的情况下,一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的样本的数量定义了块203的大小。因此,块可以为M×N(M列×N行)的样本阵列,或M×N的变换系数阵列等。
在图2所示的视频编码器20的实施例中,视频编码器20可以用于对图像17逐块地进行编码,例如对每个块203执行编码和预测。
在图2所示的视频编码器20的实施例中,视频编码器20还可以用于采用条带(slice)(也称为视频条带)对图像进行划分和/或编码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行划分或编码,每个条带可以包括一个或多个块(如CTU)或一个或多个块组(例如H.265/HEVC和VVC标准中的分块(tile)或VVC标准中的砖(brick))。
在图2所示的视频编码器20的实施例中,视频编码器20还可以用于使用条带/分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行划分和/或编码,其中,可以使用一个或多个条带/分块组(通常是不重叠的)对图像进行编码或可以将图像划分为一个或多个条带/分块组,并且每个条带/分块组可以包括一个或多个块(例如CTU)或一个或多个分块,其中每个分块可以是矩形并且可以包括一个或多个块(例如CTU),例如全部或部分块。
残差计算
残差计算单元204可以用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205(也称为残差205),例如,逐样本(逐像素)从图像块203的样本值中减去预测块265的样本值,以获得样本域中的残差块205。
变换
变换处理单元206可以用于对残差块205的样本值进行变换,例如离散余弦变换(discrete cosine transform,DCT)或离散正弦变换(discrete sine transform,DST),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。
变换处理单元206可以用于应用DCT/DST的整数近似,例如针对H.265/HEVC指定的变换。与正交DCT变换相比,此类整数近似通常通过某个因子进行缩放。使用其它缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些限制来选择缩放因子,例如缩放因子为移位运算的2的幂、变换系数的位深度、精度和实施代价之间的权衡等。例如,通过逆变换处理单元212指定用于逆变换的特定缩放因子(以及在视频解码器30中通过逆变换处理单元312等为相应的逆变换指定缩放因子),在编码器20中可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。
在视频编码器20的实施例中,例如,视频编码器20(对应地,变换处理单元206)可以用于直接输出或通过熵编码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。
量化
量化单元208可以用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
量化过程可以减小与部分或全部变换系数207相关的位深。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中n大于m,可以通过调整量化参数(quantization parameter,QP)修改量化程度。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantization parameter,QP)来指示。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的相应解量化或反解量化操作可以包括乘以量化步长。根据一些标准(例如HEVC),实施例中可以使用量化参数来确定量化步长大小。通常,可以通过包括除法的方程的定点近似、根据量化参数计算量化步长大小。可以将其它缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一种示例性实现方式中,可以组合逆变换和解量化中的缩放。或者,可以使用自定义量化表,并且例如在码流中将该自定义量化表从编码器发送到解码器。量化为有损操作,损耗随量化步长大小的增加而增加。
在视频编码器20的实施例中,视频编码器20(对应地,量化单元208)可以用于,例如,直接输出或经熵编码单元270进行编码后输出量化参数(quantization parameter,QP),使得视频解码器30可以接收并使用量化参数进行解码。
反量化
反量化单元210用于对量化系数执行量化单元208所执行的量化的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,所以解量化系数211通常与变换系数不完全相同。
逆变换
逆变换处理单元212用于执行变换处理单元206所执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,DCT)或逆离散正弦变换(discrete sinetransform,DST),以获得样本域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
重建
重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)与预测块265相加,例如,将重建残差块213的样本值和预测块265的样本值逐样本进行相加,以获得样本域中的重建块215。
滤波
环路滤波器单元220(或简称为“环路滤波器”220)用于对重建块215进行滤波,以得到滤波块221,或通常用于对重建样本进行滤波,以得到滤波样本值。例如,环路滤波单元用于平滑像素的突变或提高视频质量。环路滤波器单元220可以包括一个或多个环路滤波器,例如去块效应滤波器、采样自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptive loop filter,ALF)、噪声抑制滤波器(noise suppression filter,NSF)或其任何组合。例如,环路滤波器单元220可以包括去块效应滤波器、SAO滤波器和ALF滤波器滤波过程的顺序可以是去块效应滤波、SAO滤波和ALF滤波。在另一示例中,增加一种称为亮度映射色度缩放(luma mapping with chromascaling,LMCS)(即自适应环内整形器)的过程。该过程在去块效应滤波之前执行。在另一示例中,去块效应滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、ATMVP子块边缘、子块变换(sub-block transform,SBT)边缘和帧内子部分(intra sub-partition,ISP)边缘。尽管在图2中环路滤波器单元220示出为环内滤波器,但在其它配置中,环路滤波器单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。
在视频编码器20的实施例中,视频编码器20(对应地,环路滤波器单元220)可以用于直接输出或通过熵编码单元270进行编码后输出环路滤波参数(例如SAO滤波参数、ALF滤波参数或LMCS参数),使得解码器30可以接收并使用相同或不同的环路滤波参数进行解码。
解码图像缓冲器
解码图像缓冲器(decoded picture buffer,DPB)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。DPB 230可以由各种存储器设备中的任一种形成,例如动态随机存取存储器(dynamic random accessmemory,DRAM)(包括同步DRAM(synchronous DRAM,SDRAM))、磁阻RAM(magneto resistiveRAM,MRAM)、电阻RAM(resistive RAM,RRAM)或其它类型的存储器设备。解码图像缓冲器(decoded picture buffer,DPB)230可用于存储一个或多个滤波块221。解码图像缓冲器230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),以例如用于帧间预测。解码图像缓冲器230还可以用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建样本,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建样本。
模式选择(划分和预测)
模式选择单元260包括划分单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲器230或其它缓冲器(例如,行缓冲器,图中未示出)接收或获得原始图像数据如原始块203(当前图像17的当前块203),以及重建图像数据如同一(当前)图像和/或一个或多个之前解码的图像的经滤波和/或未经滤波的重建样本或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以获得预测块265或预测值265。
模式选择单元260可以用于为当前块预测模式(包括不划分模式)和预测模式(例如帧内或帧间预测模式)确定或选择划分模式,并生成对应的预测块265,该预测块用于残差块205的计算以及重建块215的重建。
在模式选择单元260的实施例中,模式选择单元260可以用于选择划分和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。划分和预测模式提供最佳匹配,即最小残差(最小残差更有利于压缩,以便传输或存储),或提供最小指示开销(最小的指示开销更有利于压缩,以便传输或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可用于根据率失真优化(rate distortion optimization,RDO)确定划分和预测模式,即选择提供最小率失真的预测模式。本文中“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。
换句话说,划分单元262可以用于例如,通过迭代地使用四叉树划分(quad-tree-partitioning,QT)、二叉树划分(binary partitioning,BT)或三叉树划分(triple-tree-partitioning,TT)或其任何组合,将视频序列的图像划分为一系列编码树单元(codingtree units,CTU),并将CTU 203进一步划分为较小的块部分或子块(它们再次形成块),并且划分单元262可以用于例如对块部分或子块中的每一个进行预测,其中模式选择包括选择划分的块203的树结构以及应用于每个块部分或子块的预测模式。
下文详细描述由视频编码器20执行的划分(例如,由划分单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
划分模块
划分单元262可以用于将视频序列中的图像划分为编码树单元(coding treeunit,CTU)序列,划分单元262可以将编码树单元(coding tree unit,CTU)203划分(或划分)为更小的部分,例如较小的正方形或矩形块。对于具有三个样本阵列的图像,CTU由一个N×N的亮度样本块和两个对应的色度样本块组成。在开发中的通用视频译码(versatilevideo coding,VVC)中,CTU中的亮度块的最大允许大小指定为128×128,但是将来可以指定为不同于128×128的值,例如256×256。可以将图像的CTU聚类/分组为条带(slice)/分块组(tile group)、分块(tile)或砖(brick)。分块覆盖图像的矩形区域,可以将分块划分为一个或多个砖。砖由分块中的多个CTU行组成。没有划分为多个砖的分块可以称为砖。但是,砖是分块的真子集,不称为分块。VVC支持两种分块组模式,即光栅扫描条带/分块组模式和矩形条带模式。在光栅扫描分块组模式中,条带/分块组包括图像的分块光栅扫描中的分块的序列。在矩形条带模式中,条带包括图像的多个砖,这些砖共同构成图像的矩形区域。矩形条带内的砖是按照条带的砖光栅扫描顺序排列的。这些较小的块(也可以称为子块)可以进一步划分为更小的部分。这也称为树划分或分层树划分,其中,在根树层级0(层级0、深度0)等的根块可以递归地划分为两个或多个下一较低树层级的块,例如树层级1(层级1、深度1)的节点,这些块又可以划分为两个或多个下一较低层级的块,例如树层级2(层级2、深度2)等,直到由于满足结束标准(例如达到最大树深度或最小块大小)而结束划分。未进一步划分的块也称为树的叶块或叶节点。划分为两个部分的树称为二叉树(binary-tree,BT),划分为三个部分的树称为三叉树(ternary-tree,TT),划分为四个部分的树称为四叉树(quad-tree,QT)。
例如,编码树单元(coding tree unit,CTU)可以是或包括:亮度样本的CTB、具有三个样本阵列的图像的色度样本的两个对应的CTB、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的CTB。相应地,编码树块(codingtree block,CTB)可以是N×N的样本块,其中N可以设为某个值以将分量划分为CTB,这是一种划分。编码单元(coding unit,CU)可以是或包括:亮度样本的编码块、具有三个样本阵列的图像的色度样本的两个对应的编码块、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的编码块。相应地,编码块(coding block,CB)可以是M×N的样本块,其中M和N可以设为某些值以将CTB划分为编码块,这是一种划分。
在实施例中,例如,根据HEVC,可以通过表示为编码树的四叉树结构将编码树单元(coding tree unit,CTU)划分为CU。在叶CU级别上决定是通过帧间(时域)预测或通过帧内(空间)预测对图像区域进行译码。每个叶CU可以根据PU划分类型进一步划分为一个、两个或四个PU。在一个PU内,进行相同的预测过程,并且以PU为单位将相关信息发送到解码器。在通过进行预测过程而获得残差块后,根据PU划分类型,可以根据与用于CU的编码树类似的其它四叉树结构将叶CU划分为变换单元(transform unit,TU)。
例如,在实施例中,根据当前正在开发的最新视频译码标准(称为通用视频译码(versatile video coding,VVC)),使用嵌套多类型树(例如二叉树和三叉树)的组合四叉树来划分例如用于划分编码树单元的分段结构。在编码树单元内的编码树结构中,CU可以是正方形或矩形。例如,首先通过四叉树划分编码树单元(coding tree unit,CTU)。然后,可以通过多类型树结构进一步划分四叉树叶节点。多类型树结构中,有四种划分类型:垂直二叉树划分(SPLIT_BT_VER)、水平二叉树划分(SPLIT_BT_HOR)、垂直三叉树划分(SPLIT_TT_VER)和水平三叉树划分(SPLIT_TT_HOR)。多类型树叶节点称为编码单元(coding unit,CU),该分段用于预测和变换处理,无需进一步划分,只有CU对于最大变换长度太大时才需要进一步划分。这意味着,在大多数情况下,CU、PU和TU在具有嵌套多类型树编码块结构的四叉树中具有相同的块大小。当最大支持变换长度小于CU的颜色分量的宽度或高度时,就会发生异常。VVC在具有嵌套多类型树译码数的四叉树中制定了一种划分信息的唯一指示机制。在该指示机制中,编码树单元(coding tree unit,CTU)作为四叉树的根,并且首先通过四叉树结构划分。然后,通过多类型树结构对每个四叉树叶节点(当太大而需要划分时)进行进一步划分。在多类型树结构中,指示第一标志(mtt_split_cu_flag)以表示是否对节点进行进一步划分;当需要对节点进行进一步划分时,指示第二标志(mtt_split_cu_vertical_flag)以表示划分方向,然后指示第三标志(mtt_split_cu_binary_flag)以表示该划分是二叉树划分或三叉树划分。根据mtt_split_cu_vertical_flag和mtt_split_cu_binary_flag的值,解码器可以根据某预定义的规则或某一表格推导用于CU的多类型树划分模式(MttSplitMode)。需要说明的是,对于某种设计,例如VVC硬件解码器中的64×64亮度块和32×32色度块流水线设计,当亮度编码块的宽度或高度大于64时,都禁止TT划分,如图6所示。当色度编码块的宽度或高度大于32时,也禁止TT划分。流水线设计将图像划分为虚拟流水线数据单元(virtual pipeline data unit,VPDU),这些虚拟流水线数据单元定义为图像中的非重叠单元。在硬件解码器中,连续的VPDU由多个流水线阶段同时处理。在大多数流水线阶段,VPDU大小与缓冲器大小大致成正比,因此保持VPDU大小较小是很重要的。在大多数硬件解码器中,VPDU大小可以设置为最大变换块(transform block,TB)大小。但是,在VVC中,三叉树(ternary tree,TT)和(binary tree,BT)划分会导致VPDU大小变大。
另外,需要说明的是,当树节点块的一部分超出图像底边界或右边界时,强制对树节点块进行划分,直到每个译码CU的所有样本都位于图像边界内。
例如,根据块大小,帧内子划分(intra sub-partition,ISP)工具可以将亮度帧内预测块垂直或水平地划分为2或4个子部分。
在一个示例中,视频编码器20的模式选择单元260可以用于执行本文划分技术的任何组合。
如上所述,视频编码器20用于从一组(例如,预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。
帧内预测
该组帧内预测模式可以包括35种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或HEVC中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如DC(或均值)模式和平面模式等非定向模式,或VVC中定义的定向模式等。例如,若干传统的角度帧内预测模式被自适应地替换为如VVC中定义的用于非正方形块的广角帧内预测模式。又例如,为了避免DC预测的除法运算,仅使用更长的边来计算非正方形块的平均值。而且,平面模式的帧内预测结果还可以通过位置决定的帧内预测组合(positiondependent intra prediction combination,PDPC)方法进行修改。
帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建样本来生成帧内预测块265。
帧内预测单元254(或通常为模式选择单元260)还用于以语法元素266的形式向熵编码单元270输出帧内预测参数(或通常为指示块的选定帧内预测模式的信息),以将该帧内预测参数包括到编码图像数据21中,从而视频解码器30可以,例如,接收并使用该预测参数进行解码。
帧间预测
该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在DBP 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像还是仅参考图像的一部分(例如,当前块的区域周围的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否应用像素插值,例如半像素、四分之一像素和/或1/16像素插值,或不应用像素插值。
除了上述预测模式之外,还可以应用跳过模式、直接模式和/或其它帧间预测模式。
例如,扩展融合预测,这种模式下的融合候选列表由以下五种候选类型按顺序组成:空间相邻CU的空间MVP、并置CU的时域MVP、FIFO表的基于历史的MVP、成对的平均MVP和零MV。可以使用基于双向匹配的解码侧运动矢量修正(decoder side motion vectorrefinement,DMVR)来增加融合模式下的MV的精度。具有MVD的融合模式(merge mode withMVD,MMVD)即为具有运动矢量差的融合模式。在发送跳过标志和融合标志之后立即指示MMVD标志,用于表示是否对CU使用MMVD模式。可以使用CU级自适应运动矢量分辨率(adaptive motion vector resolution,AMVR)方案。AMVR方案支持对CU的MVD以不同的精度进行译码。根据当前CU的预测模式,自适应地选择当前CU的MVD。当CU以融合模式进行译码时,可以将组合的帧间/帧内预测(combined inter/intra prediction,CIIP)模式应用于当前CU。对帧间预测信号和帧内预测信号进行加权平均,以得到CIIP预测。仿射运动补偿预测中,通过两个控制点(4-参数)或三个控制点(6-参数)运动矢量的运动信息来描述块的仿射运动场。基于子块的时域运动矢量预测(subblock-based temporal motion vectorprediction,SbTMVP)与HEVC中的时域运动矢量预测(temporal motion vectorprediction,TMVP)类似,但预测的是当前CU中的子CU的运动矢量。双向光流(bi-directional optical flow,BDOF),以前称为BIO,是一种更简单的版本,其需要的计算更少,特别是在乘法次数和乘法器大小方面。在三角形划分模式中,以对角线划分和反对角线划分两种划分方式将CU均匀划分为两个三角形部分。此外,双向预测模式在简单平均的基础上进行了扩展,以允许对两个预测信号进行加权平均。
帧间预测单元244可以包括运动估计(motion estimation,ME)单元和运动补偿(motion compensation,MC)单元(两者均未在图2中示出)。运动估计单元可以用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像231的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像231,或者,换句话说,当前图像和之前解码的图像231可以是构成视频序列的图像序列的一部分或可以构成该序列。
例如,编码器20可以用于从多个其它图像的相同或不同图像的多个参考块中选择参考块并提供参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移),作为运动估计单元的帧间预测参数。这个偏移也称为运动矢量(motion vector,MV)。
运动补偿单元用于获取(例如,接收)帧间预测参数,并根据或通过帧间预测参数进行帧间预测,以获得帧间预测块265。运动补偿单元所执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量提取或生成预测块(可能执行插值以提高子像素精度)。插值滤波可以通过已知像素样本生成其它像素样本,从而潜在地增加可以用于译码图像块的候选预测块的数量。在接收到当前图像块的PU的运动矢量时,运动补偿单元可以定位运动矢量在一个参考图像列表中指向的预测块。
运动补偿单元还可以生成与块和视频条带相关的语法元素,该语法元素由视频解码器30用来解码视频条带的图像块。除了或作为条带和相应语法元素的替代,可以生成或使用分块组和/或分块以及相应语法元素。
熵译码
例如,熵编码单元270用于将熵编码算法或方案(例如,可变长度译码(variablelength coding,VLC)方案、上下文自适应VLC方案(context adaptive VLC,CALVC)、算术译码方案、二值化算法、上下文自适应二进制算术译码(context adaptive binaryarithmetic coding,CABAC)、基于语法的上下文自适应二进制算术译码(syntax-basedcontext-adaptive binary arithmetic coding,SBAC)、概率区间划分熵(probabilityinterval partitioning entropy,PIPE)译码或其它熵编码方法或技术)或旁路(无压缩)方案应用于量化系数209、帧间预测参数、帧内预测参数、环路滤波参数和/或其它语法元素,以获得可以通过输出单元272以编码码流21等形式输出的编码图像数据21,使得视频解码器30可以接收并使用这些参数进行解码。可以将编码码流21发送到视频解码器30,或者将其存储在存储器汇总,以便随后由视频解码器30发送或检索。
视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。
解码器及解码方法
图3为用于实现本申请的技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如,编码码流21),以获得解码图像331。编码图像数据或码流包括用于对编码图像数据进行解码的信息,例如,表示编码视频条带的图像块的数据(和/或分块组或分块)以及相关的语法元素。
在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲器(decoded picturebuffer,DBP)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可以执行与图2中关于视频编码器100描述的编码通道大体上互逆的解码通道。
如关于编码器20所解释的,反量化单元210、逆变换处理单元212、重建单元214、环路滤波器220、解码图像缓冲器(decoded picture buffer,DPB)230、帧间预测单元344和帧内预测单元354还组成视频编码器20的“内置解码器”。因此,反量化单元310可以与反量化单元110具有相同的功能,逆变换处理单元312可以与逆变换处理单元212具有相同的功能,重建单元314可以与重建单元214具有相同的功能,环路滤波器320可以与环路滤波器220具有相同的功能,解码图像缓冲器330可以与解码图像缓冲器230具有相同的功能。因此,对视频编码器20的相应单元和功能的解释相应地适用于视频解码器30的相应单元和功能。
熵解码
熵解码单元304用于解析码流21(或通常称为编码图像数据21),并对编码图像数据21进行熵解码,以获得量化系数309和/或解码译码参数(图3中未示出)等,例如帧间预测参数(如参考图像索引和运动矢量)、帧内预测参数(如帧内预测模式或索引)、变换参数、量化参数、环路滤波参数和/或其它语法元素等中的任一者或全部。熵解码单元304可以用于进行对应于编码器20的熵编码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以在视频条带级和/或视频块级接收语法元素。除了或作为条带和相应语法元素的替代,可以接收和/或使用分块组和/或分块以及相应语法元素。
反量化
反量化单元310可以用于从编码图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantization parameter,QP)(或通常为与反量化相关的信息)和量化系数,并基于量化参数对解码量化系数309进行反量化,以获得解量化系数311,解量化系数311也可以称为变换系数311。反量化过程可以包括:使用视频编码器20确定的视频条带(或分块或分块组)中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。
逆变换
逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得样本域中的重建残差块213。重建残差块213也可以称为变换块213。变换可以是逆变换,例如,逆DCT、逆DST、逆整数变换或概念上类似的逆变换过程。逆变换处理单元312还可以用于从编码图像数据21接收变换参数或相应的信息(例如,通过解析和/或解码,例如,通过熵解码单元304),以确定要应用于解量化系数311的变换。
重建
重建单元314(例如,加法器或求和器314)可以用于将重建残差块313添加到预测块365,以获得样本域中的重建块315,例如,通过将重建残差块313的样本值添加到预测块365的样本值。
滤波
环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以平滑像素的突变或提高视频质量。环路滤波单元320可以包括一个或多个环路滤波器,例如去块效应滤波器、采样自适应偏移(sample-adaptive offset,SAO)滤波器或一个或多个其它滤波器,例如自适应环路滤波器(adaptive loop filter,ALF)、噪声抑制滤波器(noise suppression filter,NSF)或其任何组合。例如,环路滤波器单元220可以包括去块效应滤波器、SAO滤波器和ALF滤波器滤波过程的顺序可以是去块效应滤波、SAO滤波和ALF滤波。在另一示例中,增加一种称为亮度映射与色度缩放(luma mappingwith chroma scaling,LMCS)(即自适应环内整形器)的过程。该过程在去块效应滤波之前执行。在另一示例中,去块效应滤波过程也可以应用于内部子块边缘,例如仿射子块边缘、ATMVP子块边缘、子块变换(sub-block transform,SBT)边缘和帧内子部分(intra sub-partition,ISP)边缘。尽管在图3中环路滤波单元320示出为环内滤波器,但在其它配置中,环路滤波单元320可以实现为后环路滤波器。
解码图像缓冲器
之后,将一个图像的解码视频块321存储在解码图像缓冲器330中。解码图像331作为参考图像存储在解码图像缓冲器330中,用于后续对其它图像进行运动补偿和/或后续相应输出以进行显示。
解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。
预测
帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从编码图像数据21接收到的划分和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定划分(split/partitioning)模式并执行预测。模式应用单元360可以用于根据重建图像、重建块或相应的样本(已滤波的或未滤波的)按块进行预测(帧内预测或帧间预测),以获得预测块365。
当视频条带译码为帧内译码(I)条带时,模式应用单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频图像译码为帧间译码(即,B或P)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据DPB 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用I、P或B分块组和/或分块对视频进行译码。
模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,B条带,P条带或GPB条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用I、P或B分块组和/或分块对视频进行译码。
在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用条带(slice)(也称为视频条带)对图像进行划分和/或解码,其中,图像可以使用一个或多个条带(通常是不重叠的条带)进行划分或解码,每个条带可以包括一个或多个块(如CTU)或一个或多个块组(例如H.265/HEVC和VVC标准中的分块(tile)或VVC标准中的砖(brick))。
在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用条带/分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行划分和/或解码,其中,可以使用一个或多个条带/分块组(通常是不重叠的)对图像进行解码或可以将图像划分为一个或多个条带/分块组,并且每个条带/分块组可以包括一个或多个块(例如CTU)或一个或多个分块,其中每个分块可以是矩形并且可以包括一个或多个块(例如CTU),例如全部或部分块。
视频解码器30的其它变型可以用于解码编码图像数据21。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器30可以将反量化单元310和逆变换处理单元312组合成单个单元。
应理解,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波等之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行修正(clip)或移位(shift)等操作。
需要说明的是,可以对当前块的推导运动矢量(包括但不局限于仿射模式下的控制点运动矢量、仿射、平面、ATMVP模式下的子块运动矢量、时域运动矢量等)进行进一步操作。例如,根据运动矢量的表示位将该运动矢量的值限制在预定义范围。如果运动矢量的表示位为bitDepth,则运动矢量的取值范围为–2^(bitDepth–1)至2^(bitDepth–1)–1,其中“^”符号表示幂次方。例如,如果bitDepth设置为16,则该取值范围为–32768至32767;如果bitDepth设置为18,则该取值范围为–131072至131071。例如,对推导出的运动矢量(例如一个8×8块中的四个4×4子块的MV)的值进行限制,使得四个4×4子块MV的整数部分之间的最大差值不超过N个像素,例如不超过1个像素。这里提供了两种根据bitDepth限制运动矢量的方法。
图4为本发明的一个实施例提供的视频译码设备400的示意图。如本文所述,视频译码设备400适合于实现所公开的实施例。在一个实施例中,视频译码设备400可以是解码器(例如,图1A中的视频解码器30)或编码器(例如,图1A中的视频编码器20)。
视频译码设备400包括:用于接收数据的入端口410(或输入端口410)和接收单元(Rx)420;用于处理数据的处理器、逻辑单元或中央处理器(central processing unit,CPU)430;用于发送数据的发送器单元(Tx)440和出端口450(或输出端口450);以及用于存储数据的存储器460。视频译码设备400还可以包括耦合到入端口410、接收器单元420、发送器单元440和出端口450的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件,以用于光或电信号的出或入。
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个CPU芯片、核(例如,多核处理器)、FPGA、ASIC和DSP。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,包括译码模块470大大提高了视频译码设备400的功能,并影响视频译码设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、三元内容寻址存储器(ternary content-addressable memory,TCAM)和/或静态随机存取存储器(staticrandom-access memory,SRAM)。
图5为一个示例性实施例提供的装置500的简化框图,该装置500可以用作图1中的源设备12和目的地设备14中的一者或两者。
装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度和效率。
装置500中的存储器504在一种实现方式中可以是只读存储器(read onlymemory,ROM)设备或随机存取存储器(random access memory,RAM)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至N,其还包括执行本文所描述的方法的视频译码应用程序。
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。
尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储器514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。
目前的混合视频编解码器采用预测译码。将视频序列图像细分为像素块,然后对这些块进行译码。不是逐像素对块进行译码,而是使用块的空间或时域接近的之前编码的像素对整个块进行预测。编码器仅进一步处理块与其预测之间的差异。进一步处理通常包括将块像素变换为变换域中的系数。然后,系数可以进一步压缩(例如,通过量化)和进一步压实(例如,通过熵译码)以形成码流。码流还可以包括使解码器能够解码编码视频的任何指示信息。例如,指示可以包括关于编码器设置的设置,例如输入图像的大小、帧速率、量化步长表示、应用于图像块的预测等。
块与其预测之间的差异称为块的残差。更具体地,块的每个像素具有残差,残差是该像素的强度等级与其预测的强度等级之间的差值。像素的强度等级称为像素值。块的所有像素的残差统称为块的残差。换句话说,块具有残差,残差是包括块的所有像素的残差的集合或矩阵。
时域预测利用视频的图像(也称为帧)之间的时域相关性。时域预测也称为帧间预测,因为它是利用(帧间)不同视频帧之间的相关性进行预测。因此,待解码的块(也称为当前块)从一个或多个之前解码的图像(称为参考图像)预测。一个或多个参考图像按照视频序列的显示顺序不一定是当前块所在的当前图像之前的图像。编码器可以以不同于显示顺序的译码顺序对图像进行编码。作为当前块的预测,可以确定参考图像中的并置块(称为预测值)。并置块可以位于参考图像中与当前图像中的当前块处于同一位置。这种预测对于静止的图像区域(即没有从一个图像移动到另一个图像的图像区域)是准确的。
在编码器中,通常使用运动估计来获得考虑运动的预测值,即运动补偿预测值。当前块由位于参考图像中运动矢量表示的位置的块预测。运动矢量从并置块的位置指向当前块的位置(反之亦然,取决于符号约定)。为了使解码器能够确定与编码器相同的当前块的预测,可以在码流中指示运动矢量。为了进一步减少为每个块指示运动矢量引起的指示开销,可以估计运动矢量本身。运动矢量估计可以基于作为当前块在空间域和/或时间域上的相邻块的运动矢量来执行。
当前块的预测可以使用一个参考图像或通过加权从两个或更多个参考图像获得的预测来计算。参考图像可以是相邻图像,即在显示顺序中紧接当前图像之前或紧接当前图像之后的图像,因为相邻图像最有可能与当前图像相似。参考图像也可以是在显示顺序中在当前图像之前或之后并且在码流中在当前图像之前(解码顺序)的任何图像。这例如在视频内容中有遮挡和/或非线性移动的情况下具有优势。可以在码流中指示参考图像。
帧间预测的一种特殊模式是双向预测,其中使用两个参考图像生成当前块的预测。特别地,将分别在两个参考图像中确定的两个预测组合成当前块的预测信号。双向预测可以比单向预测(即,仅使用单个参考图像的预测)更精确地预测当前块。更精确的预测使当前块的像素与预测之间的差异更小(即残差更小),这可以更高效地编码,即需要的译码比特更少。
为了提供更精确的运动估计,可以例如通过在像素之间插值样本来提高参考图像的分辨率。分数像素插值可以通过最接近像素的加权平均来执行。例如,在半像素分辨率的情况下,可以使用双线性插值。其它分数像素可以计算为最接近像素的平均值,例如,该平均值通过相应的最接近像素与被预测像素之间的距离的倒数来加权。
例如,可以通过计算当前块与参考图像中候选运动矢量指向的相应预测块之间的相似度来估计运动矢量。为了降低复杂度,可以通过将候选运动矢量限制在一定的搜索空间内来减少候选运动矢量的数量。例如,搜索空间可以由围绕参考图像中与当前图像中当前块的位置对应的位置的像素的数量和/或位置来定义。或者,候选运动矢量可以由相邻块的运动矢量组成的候选运动矢量列表定义。
运动矢量通常至少部分地在编码侧确定,并在译码码流内指示到解码器。还可以在解码器中推导运动矢量。在这种情况下,当前块在解码器中不可用,并且不能用于计算当前块与候选运动矢量在参考图像中指向的任何块之间的相似度。因此,可以使用模板代替当前块,模板可以由之前解码块的像素构建。例如,可以使用与当前块相邻的之前解码的像素。这种运动估计提供了减少指示的优点:在编码器和解码器中以相同的方式推导运动矢量,因此不需要指示。另一方面,这种运动估计的精度可能较低。
为了权衡精度与指示开销,运动矢量估计可以分为两个步骤:运动矢量推导和运动矢量修正。例如,运动矢量推导可以包括从候选列表中选择运动矢量。例如,通过在搜索空间内搜索,可以进一步修正选择的运动矢量。搜索空间中的搜索基于计算每个候选运动矢量的代价函数,即针对候选运动矢量指向的块的每个候选位置。
文件JVET-D0029:基于双向模板匹配的解码侧运动矢量修正,X.Chen、J.An、J.Zheng(该文件可在http://phenix.it-sudparis.eu/jvet/site上找到)示出了运动矢量修正,其中,找到整数像素分辨率的第一运动矢量,并通过在第一运动矢量周围的搜索空间中以半像素分辨率进行搜索来进一步修正。这里,像素分辨率(例如,整数或半整数)描述搜索空间的分辨率,即被搜索点相对于输入到进程的非修正运动矢量的位移。因此,修正阶段的搜索坐标不一定与图像平面上的实际像素坐标重合。
可以在解码器中执行运动矢量修正,而无需编码器的协助。编码器中的解码器环路可以使用相同的修正以获得相应的参考图像。修正可以通过确定模板、确定搜索空间以及在搜索空间中找到与模板最匹配的参考图像部分的位置来执行。最佳匹配部分位置确定最佳运动矢量,最佳运动矢量然后用于获得当前块(即正在重建的当前块)的预测值。
在一个实施例中,如图6所示,帧间预测方法包括:
S601:获取当前块的初始运动矢量。
获取初始运动矢量MV0,其可以被视为精确运动矢量的第一估计值或近似值。例如,可以从候选运动矢量列表中选择MV0,该列表可以包括与当前块相邻的至少一个块的运动矢量。或者,MV0可以在编码侧通过块匹配获得,并在码流内指示给解码侧。相应地,在解码侧,可以从码流中获取初始运动矢量MV0。例如,从码流中提取候选列表的索引,并且将由该索引标识的候选运动矢量作为初始运动矢量MV0。
或者,直接从码流中提取MV0的坐标。需要说明的是,本申请并不局限于获得初始运动矢量MV0的任何特定方式。例如,可以在编码器和解码器中以相同的方式通过模板匹配确定MV0。或者,运动矢量可以预测为当前块的相邻块在空间域或时间域中的运动矢量的函数。
初始运动矢量MV0是最终运动矢量MV0”的初始估计值,该最终运动矢量MV0”用于当前块的帧间预测。它构成修正过程的输入,在修正过程结束时输出最终的运动矢量MV0”。
S602:根据初始运动矢量确定搜索空间位置。
假设搜索空间位置包括中心搜索空间位置和相邻搜索空间位置,其中,初始运动矢量指向中心搜索空间位置。在一种可行的实现方式中,步骤S602包括:根据初始运动矢量确定中心搜索空间位置;根据一个或多个预设偏移和中心搜索空间位置确定相邻搜索空间位置。
在一种可行的实现方式中,搜索空间由搜索空间位置组成,搜索空间的模式为5×5搜索空间位置的正方形。
例如,根据初始运动矢量MV0构建搜索空间,并且一个或多个候选运动矢量与初始运动矢量相关。然后根据匹配代价从初始运动矢量MV0和一个或多个候选运动矢量中选择运动矢量MV0”(对应于搜索空间位置的坐标)。(S603)需要说明的是,对于搜索空间的部分候选运动矢量(可以是对于本申请不同实施例中的每个阶段确定的各个部分搜索空间的所有候选运动矢量),代价可以作为搜索空间构建的一部分并在搜索空间构建期间计算。
在一种可行的实现方式中,当前块的候选运动矢量从当前图像中当前块的左上像素指向参考图像中候选预测块的相应左上像素。因此,候选预测块的左上像素表示参考图像中的搜索空间。块的左上角像素作为块的位置。需要说明的是,块的任何其它像素可以作为块的位置,其中,应理解,相同的位置约定适用于所有块。例如,运动矢量可以等效地定义为从当前块的中心像素运行到相应候选块的中心像素。
需要说明的是,包括初始运动矢量在内的每个候选运动矢量都指向参考图像中的像素,即搜索空间位置。初始运动矢量指向的像素与其它候选运动矢量指向的像素之间的坐标位置关系可以由初始运动矢量与其它候选运动矢量之间的一个或多个运动矢量偏移来表示。
一个或多个运动矢量偏移可以是预先确定的。这意味着中心搜索空间位置与相邻搜索空间位置之间的位置关系可以是预先确定的。
S603:按照检查顺序检查搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置。
在一种可行的实现方式中,按照检查顺序,依次检查搜索空间位置中的每一个搜索空间位置的匹配代价;从搜索空间位置中选择具有最小匹配代价的搜索空间位置,作为目标搜索空间位置。
匹配代价可以通过代价函数来衡量,例如,代价函数可以是模板与参考图像区域之间的绝对差值之和,参考图像区域对应于候选运动矢量指向的位置中的模板。计算所有候选运动矢量的绝对差值(absolute difference,SAD)之和后,选择SAD最小的候选运动矢量。需要说明的是,SAD只是一个示例。代价函数可以是SAD(sum of absolutedifferences,绝对差值和)、MRSAD(mean removed sum of absolute differences,去均值绝对差值之和)、SSE(Sum of squared errors,误差平方和)或用于表示相似性的任何其它代价函数。通过比较搜索空间位置的匹配代价,选择最佳运动矢量。
在一种可行的实现方式中,将搜索空间位置中的一个搜索空间位置的匹配代价与模板最小匹配代价(temp minimal matching cost)进行比较;当搜索空间位置中的一个搜索空间位置的匹配代价小于模板最小匹配代价时,将搜索空间位置中的一个搜索空间位置的匹配代价设置为模板最小匹配代价;
在检查搜索空间位置中的最后一个搜索空间位置之后,将模板最小匹配代价设置为最小匹配代价。
在一个实施例中,如图7所示,搜索空间可以是正方形模式。例如,初始运动矢量指向的像素被认为是坐标系的(0,0)。在坐标系中,将水平向右视为水平正方向,将垂直向下视为垂直正方向。
搜索空间可以包括25个搜索空间位置。坐标为(–2,–2)、(2,2)、(–2,2)和(2,–2)的像素是正方形的角。
将25个搜索空间位置分为一个或多个组,以定义检查顺序。需要说明的是,根据不同的实施例,将搜索空间位置分为一个或多个组的步骤可能不是必须的,这只是为了清楚描述一种检查顺序的设计而确定的。
在第一种具体实施例中,将25个搜索空间位置分为两组:
第一组:(0,0);
第二组:所有其它搜索空间位置。
如图8所示,每个搜索空间位置的编号表示每个搜索空间位置按照检查顺序的排列,编号小的位置比编号大的位置先检查。先检查标记为“1”的位置(0,0),然后按照水平检查顺序(从左到右,逐行)检查第二组中的其它搜索空间位置。因此,检查顺序为(0,0)、(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。需要说明的是,还可以按照其它检查顺序检查第二组中的搜索空间位置,如垂直检查顺序(从上到下、逐列)、之字形检查顺序等。
在当前实施例中,先检查搜索空间的中心位置,再按照预设的检查顺序检查其它搜索空间位置。也可以基于非正方形图案搜索空间实现。例如,可以是具有21个搜索空间位置的十字形图案,对应于图9所示的检查顺序。又例如,可以是具有17个搜索空间位置的联合旗图案,对应于图10所示的检查顺序。
在第二具体实施例中,第二组可以进一步分为更多的组,例如,将25个搜索空间位置分为四组:
第一组:(0,0);
第二组:(–1,0)、(0,1)、(1,0)、(0,–1)(垂直或水平方向中心位置的相邻位置);
第三组:(–1,–1)、(–1,1)、(1,1)、(1,–1)(位置距离中心位置1个像素样本,且不包括在第二组中);
第四组:所有其它搜索空间位置。
依次检查第一组、第二组、第三组和第四组。需要说明的是,同一组内的检查顺序不作限定,例如,对于第二组,检查顺序可以为(–1,0)、(0,1)、(1,0)、(0,–1)或(–1,0)、(1,0)、(0,1)、(0,–1)。还需要说明的是,还可以按照不同的检查顺序(如顺时针或逆时针)和不同的起始检查点(如搜索空间的左上像素或第四组中的其它位置)检查第四组中的搜索空间位置。作为图7的一个示例,检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(–2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)、(2,1)、(2,0)、(2,–1)、(2,–2)、(1,–2)、(0,–2)、(–1,–2)、(–2,–2)、(–2,–1)。
也可以基于其它图案搜索空间实现。例如,可以是具有13个搜索空间位置的菱形图案,对应于图11所示的检查顺序。
在第三具体实施例中,第四组可以进一步分为更多的组,例如,将25个搜索空间位置分为五组:
第一组:(0,0);
第二组:(–1,0)、(0,1)、(1,0)、(0,–1)(垂直或水平方向中心位置的相邻位置);
第三组:(–1,–1)、(–1,1)、(1,1)、(1,–1)(位置距离中心位置1个像素样本,且不包括在第二组中);
第四组:(–2,0)、(0,2)、(2,0)、(0,–2)(位置在垂直/水平方向上距离中心位置2个像素样本,且在另一个水平/垂直方向上距离中心位置0个像素样本);
第五组:所有其它搜索空间位置。
如图12所示,例如,检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–1)、(–2,1)、(–2,2)、(–1,2)、(1,2)、(2,2)、(2,1)、(2,–1)、(2,–2)、(1,–2)、(–1,–2)、(–2,–2)。
在第四具体实施例中,第五组可以进一步分为更多的组,例如,将25个搜索空间位置分为六组:
第一组:(0,0);
第二组:(–1,0)、(0,1)、(1,0)、(0,–1)(垂直或水平方向中心位置的相邻位置);
第三组:(–1,–1)、(–1,1)、(1,1)、(1,–1)(位置距离中心位置1个像素样本,且不包括在第二组中);
第四组:(–2,0)、(0,2)、(2,0)、(0,–2)(位置在垂直/水平方向上距离中心位置2个像素样本,且在另一个水平/垂直方向上距离中心位置0个像素样本);
第五组:(–2,–2)、(–2,2)、(2,2)、(2,–2)(位置在垂直和水平方向上距离中心位置2个像素样本);
第六组:所有其它搜索空间位置。
如图13所示,例如,检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–2)、(–2,2)、(2,2)、(2,–2)、(–2,–1)、(–2,1)、(–1,2)、(1,2)、(2,1)、(2,–1)、(1,–2)、(–1,–2)。
在第五具体实施例中,不划分25个搜索空间位置。按照预设的检查顺序(例如水平检查顺序)检查。如图14所示,例如,检查顺序为(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(0,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。
S604:根据初始运动矢量和目标搜索空间位置,确定当前块的修正运动矢量。
修正运动矢量MV0”为指向目标搜索空间位置的运动矢量。首先可以推导目标搜索空间位置与中心搜索空间位置之间的偏移,然后通过将初始运动矢量和偏移相加,也可以推导出修正运动矢量MV0”。
图15示出了本申请的帧间预测装置1500。
帧间预测装置1500包括:获取模块1501,用于获取当前块的初始运动矢量;设置模块1502,用于根据初始运动矢量确定搜索空间位置;计算模块1503,用于按照检查顺序检查搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置;预测模块1504,用于根据初始运动矢量和目标搜索空间位置确定当前块的修正运动矢量,其中,按照检查顺序首先检查中心搜索空间位置,初始运动矢量指向中心搜索空间位置。
在一种可行的实现方式中,搜索空间位置包括中心搜索空间位置和相邻搜索空间位置,其中设置模块1502用于:根据初始运动矢量确定中心搜索空间位置;根据一个或多个预设偏移和中心搜索空间位置确定相邻搜索空间位置。
在一种可行的实现方式中,搜索空间由搜索空间位置组成,搜索空间的图案为5×5搜索空间位置正方形。
在一种可行的实现方式中,计算模块1503用于:按照检查顺序,依次检查搜索空间位置中的每一个搜索空间位置的匹配代价;从搜索空间位置中选择具有最小匹配代价的搜索空间位置,作为目标搜索空间位置。
在一种可行的实现方式中,计算模块1503用于:将搜索空间位置中的一个搜索空间位置的匹配代价与模板最小匹配代价进行比较;当搜索空间位置中的一个搜索空间位置的匹配代价小于模板最小匹配代价时,将搜索空间位置中的一个搜索空间位置的匹配代价设置为模板最小匹配代价;在检查搜索空间位置中的最后一个搜索空间位置之后,将模板最小匹配代价设置为最小匹配代价。
在一种可行的实现方式中,中心搜索空间位置设置为坐标系的(0,0),水平向右设置为水平正方向,垂直向下设置为垂直正方向。
在一种可行的实现方式中,检查顺序为(0,0)、(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。
在一种可行的实现方式中,检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(–2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)、(2,1)、(2,0)、(2,–1)、(2,–2)、(1,–2)、(0,–2)、(–1,–2)、(–2,–2)、(–2,–1)。
在一种可行的实现方式中,检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–1)、(–2,1)、(–2,2)、(–1,2)、(1,2)、(2,2)、(2,1)、(2,–1)、(2,–2)、(1,–2)、(–1,–2)、(–2,–2)。
在一种可行的实现方式中,检查顺序为(0,0)、(–1,0)、(0,1)、(1,0)、(0,–1)、(–1,–1)、(–1,1)、(1,1)、(1,–1)、(–2,0)、(0,2)、(2,0)、(0,–2)、(–2,–2)、(–2,2)、(2,2)、(2,–2)、(–2,–1)、(–2,1)、(–1,2)、(1,2)、(2,1)、(2,–1)、(1,–2)、(–1,–2)。
图16为本申请的帧间预测装置1600,装置1600可以是解码器或编码器。装置1600包括:一个或多个处理器1601;非瞬时性计算机可读存储介质1602,其耦合到处理器,并存储由处理器执行的程序,其中,当处理器执行程序时,使解码器执行图6的方法。
在另一实施例中,提供了一种包括程序代码的计算机程序产品,当计算机或处理器执行程序代码时,用于执行图6所示的方法。
在另一实施例中,提供了一种携带程序代码的非瞬时性计算机可读介质,当计算机设备执行程序代码时,使计算机设备执行图6的方法。
下文对上述实施例中所示的编码方法和解码方法的应用以及使用这些方法的系统进行说明。
图17为用于实现内容分发服务的内容供应系统3100的框图。该内容供应系统3100包括捕获设备3102、终端设备3106,并且可选地包括显示器3126。捕获设备3102与终端设备3106通过通信链路3104进行通信。该通信链路可以包括上述通信信道13。通信链路3104包括但不局限于WIFI、以太网、电缆、无线(3G/4G/5G)、USB或者其任何组合等。
捕获设备3102生成数据,并且可以通过如上述实施例所示的编码方法对数据进行编码。或者,捕获设备3102可以将数据分发给流服务器(图中未示出),服务器对数据进行编码并将编码数据发送给终端设备3106。捕获设备3102包括但不局限于摄像机、智能手机或平板电脑、计算机或笔记本电脑、视频会议系统、PDA、车载设备,或它们的任何组合等。例如,捕获设备3102可以包括如上所述的源设备12。当数据包括视频时,捕获设备3102中包括的视频编码器20实际上可以执行视频编码处理。当数据包括音频(即,语音)时,捕获设备3102中包括的音频编码器实际上可以执行音频编码处理。对于一些实际场景,捕获设备3102通过将编码视频和音频数据复用在一起来进行分发。对于其它实用场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。捕获设备3102将编码音频数据和编码视频数据分别分发给终端设备3106。
在内容提供系统3100中,终端设备310接收并再现编码数据。终端设备3106可以是具有数据接收和恢复能力的设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、机顶盒(set top box,STB)3116、视频会议系统3118、视频监控系统3120、个人数字助理(personal digital assistant,PDA)3122、车载设备3124或其任何组合,或者能够解码上述编码数据的设备。例如,终端设备3106可以包括如上所述的目的地设备14。当编码数据包括视频时,终端设备中包括的视频解码器30优先进行视频解码。当编码数据包括音频时,终端设备中包括的音频解码器优先进行音频解码处理。
对于带有显示器的终端设备,例如智能手机或平板电脑3108、计算机或笔记本电脑3110、网络录像机(network video recorder,NVR)/数字录像机(digital videorecorder,DVR)3112、TV 3114、个人数字助理(personal digital assistant,PDA)3122或车载设备3124,终端设备可以将解码数据馈送到该终端设备的显示器。对于没有显示器的终端设备(例如STB 3116、视频会议系统3118或视频监控系统3120),连接外部显示器3126以接收并显示解码数据。
该系统中的每个设备在进行编码或解码时,可以使用如上述实施例中所示的图像编码设备或图像解码设备。
图18为终端设备3106的一个示例的结构的图。在终端设备3106从捕获设备3102接收流之后,协议处理单元(protocol proceeding unit)3202分析流的传输协议。协议包括但不局限于实时流协议(real time streaming protocol,RTSP)、超文本传输协议(hypertext transfer protocol,HTTP)、HTTP直播协议(HTTP live streaming protocol,HLS)、MPEG-DASH、实时传输协议(real-time transport protocol,RTP)、实时消息协议(realtime messaging protocol,RTMP)或其任何组合等。
协议处理单元3202对流进行处理后,生成流文件。将文件输出到解复用单元3204。解复用单元3204可以将复用数据分为编码音频数据和编码视频数据。如上所述,对于一些实际场景,例如在视频会议系统中,不复用编码音频数据和编码视频数据。在这种情况下,将编码数据发送到视频解码器3206和音频解码器3208,无需经过解复用单元3204。
通过解复用处理,生成视频基本流(elementary stream,ES)、音频ES和可选的字幕。视频解码器3206包括如上述实施例中所说明的视频解码器30,通过如上述实施例中所示的解码方法对视频ES进行解码以生成视频帧,并将该数据馈送到同步单元3212。音频解码器3208,解码音频ES以生成音频帧,并将该数据馈送到同步单元3212。或者,在将视频帧馈送到同步单元3212之前,可以将该视频帧存储在缓冲器(图18中未示出)中。类似地,在将音频帧馈送到同步单元3212之前,可以将该音频帧存储在缓冲器中。
同步单元3212同步视频帧和音频帧,并将视频/音频提供给视频/音频显示器3214。例如,同步单元3212同步视频和音频信息的呈现。可以使用关于译码音频和视频数据的表示的时间戳和关于数据流本身的传递的时间戳在语法中对信息进行译码。
如果流中包括字幕,则字幕解码器3210解码字幕,并使字幕与视频帧和音频帧同步,并将视频/音频/字幕提供给视频/音频/字幕显示器3216。
本申请并不局限于上述系统,上述实施例中的图像编码设备或图像解码设备都可以结合到其它系统,例如汽车系统。
数学运算符
本申请中使用的数学运算符与C编程语言中使用的数学运算符类似。但是,这里准确定义了整除运算和算术移位运算的结果,并且还定义了其它运算,如幂运算和实值除法运算。编号和计数规范通常约定从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
算术运算符
以下算术运算符定义如下:
逻辑运算符
以下逻辑运算符定义如下:
x&&y x和y的布尔逻辑“与”操作
x||y x和y的布尔逻辑“或”操作
! 布尔逻辑“非”
x?y:z 如果x为真或不等于0,则等于y的值;否则,等于z的值。
关系运算符
以下关系运算符定义如下:
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。
按位运算符
以下按位运算符的定义如下:
&按位“与”。对整数参数进行运算时,对整数值的二的补码表示进行运算。
当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
|按位“或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。
当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
^按位“异或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。
当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
x>>y将x的二的补码整数表示算法右移y个二进制数字。该函数仅针对y的非负整数值定义。右移的结果是移到最高有效位(most significant bit,MSB)的位的值等于移位操作前的x的MSB。
x<<y将x的二的补码整数表示算法左移y个二进制数字。该函数仅针对y的非负整数值定义。左移的结果是移到最低有效位(least significant bit,LSB)的位的值等于0。
赋值运算符
以下算术运算符定义如下:
= 赋值运算符
++ 递增,即,x++等价于x=x+1;当用于数组索引时,等于递增操作之前变量的值。
––递减,即,x––等价于x=x–1;当用于数组索引时,等于递减操作之前变量的值。
+=按指定数量递增,即,x+=3等价于x=x+3,x+=(–3)等价于x=x+(–3)。
–=按指定数量递减,即,x–=3等价于x=x–3,x–=(–3)等价于x=x–(–3)。
范围表示法
以下表示法用于指定值的范围:
x=y..z x取从y到z的整数值(包括y和z),其中x、y和z是整数,并且z大于y。
数学函数
数学函数定义如下:
Asin(x)三角反正弦函数,对参数x运算,x在–1.0至1.0的范围内(包括端值),输出值在–π÷2至π÷2的范围内(包括端值),单位为弧度。
Atan(x)三角反正切函数,对参数x运算,输出值在–π÷2至π÷2的范围内(包括端值),单位为弧度。
Ceil(x)表示大于或等于x的最小整数值。
Clip1Y(x)=Clip3(0,(1<<BitDepthY)–1,x)
Clip1C(x)=Clip3(0,(1<<BitDepthC)–1,x)
Cos(x)三角余弦函数,对参数x运算,单位为弧度。
Floor(x)表示小于或等于x的最大整数值。
Ln(x)x的自然对数(以e为底的对数,其中e是自然对数底数常数2.718281828……)。
Log2(x)以2为底x的对数。
Log10(x)以10为底x的对数。
Round(x)=Sign(x)*Floor(Abs(x)+0.5)
Sin(x)三角正弦函数,对参数x运算,单位为弧度。
Swap(x,y)=(y,x)
Tan(x)三角正切函数,对参数x运算,单位为弧度。
运算优先级顺序
当没有使用括号来显式的表示优先顺序时,使用如下规则:
–高优先级的运算在低优先级的运算之前进行。
–相同优先级的运算从左到右依次进行。
下表从最高到最低的顺序说明运算的优先级,在表中的位置越高,优先级也越高。
如果在C编程语言中也使用这些运算符,则本文中采用的优先级顺序与C编程语言中采用的优先级顺序相同。
表:运算优先级从最高(表格顶部)到最低(表格底部)进行排序
逻辑运算的文字描述
文本中,逻辑运算中的语句以数学形式描述如下:
if(condition 0)
statement 0
else if(condition 1)
statement 1
...
else/*informative remark on remaining condition*/
statement n
可以通过如下方式进行描述:
……如下/……以下为准:
–如果条件0,则语句0
–否则,如果条件1,则语句1
-……
–否则(关于剩余条件的提示性说明),则语句n
文本中的每个“如果……否则,如果……否则,……”语句由“……如下”或“……以下为准”(后面紧跟着“如果……”)引入。最后一个条件“如果……否则,如果……否则,……”总有一个“否则,……”。插入的“如果……否则,如果……否则,……”语句可以通过匹配“……如下”或“……以下为准”,以“否则,……”结尾来识别。
文本中,逻辑运算中的语句以数学形式描述如下:
if(condition 0a&&condition 0b)
statement 0
else if(condition 1a||condition 1b)
statement 1
...
else
statement n
可以通过如下方式进行描述:
……如下/……以下为准:
–如果以下所有条件都为真(true),则语句0:
–条件0a
–条件0b
–否则,如果以下一个或多个条件为真,则语句1:
–条件1a
–条件1b
–……
–否则,语句n
文本中,逻辑运算中的语句以数学形式描述如下:
if(condition 0)
statement 0
if(condition 1)
statement 1
可以通过如下方式进行描述:
如果条件0,则语句0
如果条件1,则语句1
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以存储在计算机可读介质上或作为一个或多个指令或代码通过通信介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应数据存储介质等有形介质,或包括便于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是任何可用介质,可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,此类计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,DSL)或无线技术(例如红外、无线电、微波等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,CD)、激光光盘、光盘、数字通用光盘(digital versatile disc,DVD)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digitalsignal processor,DSP)、通用微处理器、专用集成电路(application-specificintegrated circuit,ASIC)、现场可编程逻辑阵列(field programmable logic array,FPGA)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,IC)或一组IC(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。

Claims (17)

1.一种帧间预测方法,其特征在于,包括:
获取当前块的初始运动矢量;
根据所述初始运动矢量确定搜索空间位置,根据所述初始运动矢量通过插值生成子像素精度预测块;
按照检查顺序检查所述搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置;
根据所述初始运动矢量和所述目标搜索空间位置,确定所述当前块的修正运动矢量,其中,按照所述检查顺序首先检查中心搜索空间位置,所述初始运动矢量指向所述中心搜索空间位置。
2.根据权利要求1所述的方法,其特征在于,所述搜索空间位置包括所述中心搜索空间位置和相邻搜索空间位置,其中,根据所述初始运动矢量确定搜索空间位置包括:
根据所述初始运动矢量确定所述中心搜索空间位置;
根据一个或多个预设偏移和所述中心搜索空间位置确定所述相邻搜索空间位置。
3.根据权利要求2所述的方法,其特征在于,搜索空间由所述搜索空间位置组成,所述搜索空间的模式为5×5搜索空间位置的正方形。
4.根据权利要求1所述的方法,其特征在于,按照所述检查顺序检查所述搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置包括:
按照所述检查顺序,依次检查所述搜索空间位置中的每一个搜索空间位置的匹配代价;
从所述搜索空间位置中选择具有所述最小匹配代价的搜索空间位置,作为所述目标搜索空间位置。
5.根据权利要求4所述的方法,其特征在于,按照所述检查顺序,依次检查所述搜索空间位置中的每一个搜索空间位置的匹配代价包括:
将所述搜索空间位置中的一个搜索空间位置的匹配代价与模板最小匹配代价(tempminimal matching cost)进行比较;
当所述搜索空间位置中的一个搜索空间位置的匹配代价小于所述模板最小匹配代价时,将所述搜索空间位置中的一个搜索空间位置的匹配代价设置为所述模板最小匹配代价;
在所述搜索空间位置中的最后一个搜索空间位置被检查之后,将所述模板最小匹配代价设置为所述最小匹配代价。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述中心搜索空间位置设置为坐标系的(0,0),水平向右设置为水平正方向,垂直向下设置为垂直正方向。
7.根据权利要求6所述的方法,其特征在于,所述检查顺序为(0,0)、(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。
8.一种帧间预测装置,其特征在于,包括:
获取模块,用于获取当前块的初始运动矢量,根据所述初始运动矢量通过插值生成子像素精度预测块;
设置模块,用于根据所述初始运动矢量确定搜索空间位置;
计算模块,用于按照检查顺序检查所述搜索空间位置的匹配代价,以选择具有最小匹配代价的目标搜索空间位置;
预测模块,用于根据所述初始运动矢量和所述目标搜索空间位置确定所述当前块的修正运动矢量,其中,按照所述检查顺序首先检查中心搜索空间位置,所述初始运动矢量指向所述中心搜索空间位置。
9.根据权利要求8所述的装置,其特征在于,所述搜索空间位置包括所述中心搜索空间位置和相邻搜索空间位置,其中所述设置模块用于:
根据所述初始运动矢量确定所述中心搜索空间位置;
根据一个或多个预设偏移和所述中心搜索空间位置确定所述相邻搜索空间位置。
10.根据权利要求9所述的装置,其特征在于,搜索空间由所述搜索空间位置组成,所述搜索空间的模式为5×5搜索空间位置的正方形。
11.根据权利要求8所述的装置,其特征在于,所述计算模块用于:
按照所述检查顺序,依次检查所述搜索空间位置中的每一个搜索空间位置的匹配代价;
从所述搜索空间位置中选择具有所述最小匹配代价的搜索空间位置,作为所述目标搜索空间位置。
12.根据权利要求11所述的装置,其特征在于,所述计算模块用于:
将所述搜索空间位置中的一个搜索空间位置的匹配代价与模板最小匹配代价进行比较;
当所述搜索空间位置中的一个搜索空间位置的匹配代价小于所述模板最小匹配代价时,将所述搜索空间位置中的一个搜索空间位置的匹配代价设置为所述模板最小匹配代价;
在检查所述搜索空间位置中的最后一个搜索空间位置之后,将所述模板最小匹配代价设置为所述最小匹配代价。
13.根据权利要求9至12中任一项所述的装置,其特征在于,所述中心搜索空间位置设置为坐标系的(0,0),水平向右设置为水平正方向,垂直向下设置为垂直正方向。
14.根据权利要求13所述的装置,其特征在于,所述检查顺序为(0,0)、(–2,–2)、(–1,–2)、(0,–2)、(1,–2)、(2,–2)、(–2,–1)、(–1,–1)、(0,–1)、(1,–1)、(2,–1)、(–2,0)、(–1,0)、(1,0)、(2,0)、(–2,1)、(–1,1)、(0,1)、(1,1)、(2,1)、(–2,2)、(–1,2)、(0,2)、(1,2)、(2,2)。
15.一种计算机程序产品,其特征在于,包括程序代码,用于执行根据权利要求1至7中任一项所述的方法。
16.一种解码器,其特征在于,包括:
一个或多个处理器;
非瞬时性计算机可读存储介质,耦合到所述处理器并存储由所述处理器执行的程序,其中当所述处理器执行所述程序时,使所述解码器执行根据权利要求1至7中任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有由一个或多个处理器执行的如权利要求1至7中的任一项所述方法得到的视频码流。
CN202310323811.4A 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法 Pending CN116708827A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962812190P 2019-02-28 2019-02-28
US62/812,190 2019-02-28
PCT/CN2019/126977 WO2020173196A1 (en) 2019-02-28 2019-12-20 An encoder, a decoder and corresponding methods for inter prediction
CN201980056011.2A CN112868233B (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201980056011.2A Division CN112868233B (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法

Publications (1)

Publication Number Publication Date
CN116708827A true CN116708827A (zh) 2023-09-05

Family

ID=72239055

Family Applications (6)

Application Number Title Priority Date Filing Date
CN202310320952.0A Pending CN116347103A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN201980056011.2A Active CN112868233B (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310296628.XA Pending CN116208777A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310356063.XA Pending CN116980621A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310326012.2A Pending CN116805970A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310323811.4A Pending CN116708827A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法

Family Applications Before (5)

Application Number Title Priority Date Filing Date
CN202310320952.0A Pending CN116347103A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN201980056011.2A Active CN112868233B (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310296628.XA Pending CN116208777A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310356063.XA Pending CN116980621A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法
CN202310326012.2A Pending CN116805970A (zh) 2019-02-28 2019-12-20 编码器、解码器及相应的帧间预测方法

Country Status (8)

Country Link
US (3) US11336916B2 (zh)
EP (1) EP3903494A4 (zh)
JP (2) JP7350857B2 (zh)
KR (1) KR102606880B1 (zh)
CN (6) CN116347103A (zh)
BR (1) BR112021009833A2 (zh)
MX (1) MX2021008788A (zh)
WO (1) WO2020173196A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7350857B2 (ja) * 2019-02-28 2023-09-26 ホアウェイ・テクノロジーズ・カンパニー・リミテッド インター予測のためのエンコーダ、デコーダ、および対応する方法
US20240137540A1 (en) * 2022-10-18 2024-04-25 Tencent America LLC Template matching refinement for affine motion

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100994771B1 (ko) * 2003-12-29 2010-11-16 삼성전자주식회사 블록정합에 의한 움직임 벡터 탐색방법 및 탐색장치
JP4139342B2 (ja) * 2004-03-10 2008-08-27 日本電信電話株式会社 動きベクトル検出方法、動きベクトル検出装置、動きベクトル検出プログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN1787642A (zh) * 2005-12-19 2006-06-14 宁波大学 一种基于h.264的图像单元块的帧间快速搜索方法
US8675736B2 (en) * 2009-05-14 2014-03-18 Qualcomm Incorporated Motion vector processing
JP5560009B2 (ja) * 2009-09-07 2014-07-23 株式会社日立国際電気 動画像符号化装置
US8340188B2 (en) * 2010-01-08 2012-12-25 Research In Motion Limited Method and device for motion vector estimation in video transcoding using union of search areas
US8358698B2 (en) * 2010-01-08 2013-01-22 Research In Motion Limited Method and device for motion vector estimation in video transcoding using full-resolution residuals
CN101815218B (zh) * 2010-04-02 2012-02-08 北京工业大学 基于宏块特征的快速运动估计视频编码方法
KR101373814B1 (ko) * 2010-07-31 2014-03-18 엠앤케이홀딩스 주식회사 예측 블록 생성 장치
US9998750B2 (en) * 2013-03-15 2018-06-12 Cisco Technology, Inc. Systems and methods for guided conversion of video from a first to a second compression format
EP3180918A1 (en) 2014-08-12 2017-06-21 Intel Corporation System and method of motion estimation for video coding
US10958927B2 (en) 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
CN105282557B (zh) * 2015-09-28 2018-05-18 天津大学 一种预测运动矢量的h.264快速运动估计方法
US10284875B2 (en) * 2016-08-08 2019-05-07 Qualcomm Incorporated Systems and methods for determining feature point motion
CN109997363B (zh) * 2016-11-28 2023-12-05 英迪股份有限公司 图像编码/解码方法和装置以及存储有比特流的记录介质
CN108134939B (zh) * 2016-12-01 2020-08-07 北京金山云网络技术有限公司 一种运动估计方法及装置
CN108419082B (zh) * 2017-02-10 2020-09-11 北京金山云网络技术有限公司 一种运动估计方法及装置
CN110447227A (zh) 2017-03-10 2019-11-12 索尼公司 图像处理装置和方法
US10595035B2 (en) * 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US20190007699A1 (en) * 2017-06-28 2019-01-03 Futurewei Technologies, Inc. Decoder Side Motion Vector Derivation in Video Coding
WO2019001737A1 (en) * 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. RESEARCH AREA FOR MOVEMENT VECTOR ENHANCEMENT
CN109218733B (zh) * 2017-06-30 2022-03-29 华为技术有限公司 一种确定预测运动矢量预测的方法以及相关设备
JP2021530144A (ja) * 2018-07-02 2021-11-04 華為技術有限公司Huawei Technologies Co.,Ltd. デコーダ側動きベクトル洗練のための誤差面ベースのサブピクセル精度の洗練方法
US10701384B2 (en) * 2018-08-01 2020-06-30 Tencent America LLC Method and apparatus for improvement on decoder side motion derivation and refinement
JP7350857B2 (ja) * 2019-02-28 2023-09-26 ホアウェイ・テクノロジーズ・カンパニー・リミテッド インター予測のためのエンコーダ、デコーダ、および対応する方法

Also Published As

Publication number Publication date
KR102606880B1 (ko) 2023-11-24
US20220303573A1 (en) 2022-09-22
CN112868233B (zh) 2023-03-21
CN116208777A (zh) 2023-06-02
US20240031598A1 (en) 2024-01-25
CN116347103A (zh) 2023-06-27
JP7350857B2 (ja) 2023-09-26
CN116805970A (zh) 2023-09-26
JP2022521561A (ja) 2022-04-11
WO2020173196A1 (en) 2020-09-03
CN112868233A (zh) 2021-05-28
CN116980621A (zh) 2023-10-31
US11336916B2 (en) 2022-05-17
US11736719B2 (en) 2023-08-22
KR20210072093A (ko) 2021-06-16
JP2023126221A (ja) 2023-09-07
EP3903494A4 (en) 2022-06-22
EP3903494A1 (en) 2021-11-03
MX2021008788A (es) 2021-08-24
US20210274216A1 (en) 2021-09-02
BR112021009833A2 (pt) 2021-08-17

Similar Documents

Publication Publication Date Title
CN114845102B (zh) 光流修正的提前终止
CN114450958B (zh) 用于减小增强插值滤波器的内存带宽的仿射运动模型限制
CN113597761A (zh) 帧内预测方法和装置
CN116389766A (zh) 合并模式的编码器、解码器及对应方法
US20240031598A1 (en) Encoder, a decoder and corresponding methods for inter-prediction
CN114009041A (zh) 双向预测光流计算和双向预测校正中用于块级边界样本梯度计算的整数网格参考样本位置的计算方法
CN114830665B (zh) 仿射运动模型限制
CN115349257B (zh) 基于dct的内插滤波器的使用
CN113348665B (zh) 编码器、解码器及色度帧内模式推导的对应方法
CN113170118B (zh) 视频译码中进行色度帧内预测的方法及装置
CN114424554B (zh) 色度qp偏移表指示和推导的方法和装置
CN114556923A (zh) 编码器、解码器和使用插值滤波的对应方法
CN116647700A (zh) 编码器、解码器及对应的使用帧内模式译码进行帧内预测的方法
CN115118978B (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