光流修正的提前终止的金沙现金网平台

文档序号:26622396 发布日期:2021-09-11 06:01
光流修正的提前终止的金沙现金网平台
光流修正的提前终止
1.相关申请案交叉申请
2.本专利申请要求于2019年2月22日提交、申请号为in201931007114的印度临时专利申请的优先权。上述专利申请的全部内容通过引用的方式并入本文中。
技术领域
3.本发明涉及图像处理领域,尤其涉及光流修正。


背景技术:

4.视频译码(视频编码和解码)广泛用于数字视频应用,例如广播数字tv、通过互联网和移动网络传输视频、实时会话应用(如视频聊天)、视频会议、dvd和蓝光光盘、视频内容采集和编辑系统,以及安全应用的摄像机。
5.即使在视频较短的情况下也需要对大量的视频数据进行描述,当数据要在带宽容量受限的通信网络中发送或以其它方式发送时,这样可能会造成困难。因此,视频数据通常要先压缩然后在现代电信网络中发送。由于内存资源可能有限,当在存储设备中存储视频时,视频的大小也可能成为问题。视频压缩设备通常在信源侧使用软件和/或硬件,以在发送或存储之前对视频数据进行译码,从而减少用来表示数字视频图像所需的数据量。然后,压缩数据在目的侧由用于对视频数据进行解码的视频解压缩设备接收。在有限的网络资源以及对更高视频质量的需求不断增长的情况下,需要改进压缩和解压缩技术,这些改进的技术在几乎不影响图像质量的情况下能够提高压缩比。
6.近年来,通过双向预测光流修正改进了帧间预测译码。该技术可以提高待译码图像的当前块的帧间预测的准确度。但是,双向预测光流修正在计算负载方面相对昂贵。因此,必须权衡帧间预测的准确度和计算负载。本发明解决了这一问题。


技术实现要素:

7.本技术实施例提供根据独立权利要求请求保护的主题实现编码和解码的装置和方法。
8.上述和其它目的通过独立权利要求请求保护的主题实现。其它实现方式从从属权利要求、说明书和附图中是显而易见的。
9.本发明提供了一种在解码设备或编码设备中实现的视频译码方法,该方法包括:
10.获取当前块(例如,编码块、预测块或子块)的初始运动矢量;
11.根据初始运动矢量获取当前块中的样本值的第一预测(用于帧间双向预测的两个预测值);
12.根据第一预测计算第一匹配成本(例如,由某种相似度(或不相似度)度量构成或包括某种相似度(或不相似度)度量;见下文的详细描述);
13.根据至少一个预设条件,确定是否应执行光流修正过程,至少一个预设条件包括计算出的第一匹配成本是否等于或大于阈值的条件;
14.当确定应执行光流修正过程时,执行光流修正过程,以获得当前块中的样本值的最终帧间预测。
15.因此,根据本发明,光流修正,特别是双向光流修正,是在有条件的基础上执行的。仅在需要适当改进整个帧间预测过程的准确度的某些情况下才执行相对高成本的光流修正。如果确定光流修正不能提高与执行光流修正所需的相对高的计算负载相匹配的帧间预测准确度,则可以停止光流修正。因此,解码时间可以大大减少。初始运动矢量可以在码流中指示。或者,可以为初始运动矢量提供运动矢量预测和运动矢量差值分量。
16.例如,至少一个预设条件包括允许通过解码端运动矢量修正来预测当前块的条件。可以首先检查至少一个预设条件中包括的该特定条件,以避免不必要的计算。
17.根据特定实施例,当确定满足至少一个预设条件中的所有条件时,确定应执行光流修正过程。原则上,至少一个预设条件可以包括一个或多个附加的条件。例如,至少一个预设条件可以包括对特定标志进行设置(例如设置为1)以便执行光学修正过程的条件。根据特定实施例,如果条件没有全部满足,则跳过光流修正,以便减少计算需求。
18.可以根据第一插值滤波器获取当前块中的样本值的第一预测,以便获取一定的子像素准确度。特别地,第一插值滤波器可以是相对简单的双线性插值滤波器,其可以进行快速滤波处理。
19.在解码设备或编码设备中实现的本发明的视频译码方法可以包括与光流修正不同的一些运动矢量修正。因此,该方法可以包括:根据初始运动矢量和第一匹配成本获取修正运动矢量;当确定应执行光流修正过程时,根据修正运动矢量获取当前块中的样本值的第二预测;根据第二预测(表示已经修正的预测)执行光流修正。可以通过使用修正运动矢量来提高帧间预测过程的整体准确度。
20.需要说明的是,已经为运动矢量修正计算了第一预测以及第一匹配成本。因此,不需要额外的计算来决定光流修正过程的提前终止/停止,但是可以重用运动矢量修正过程涉及的之前计算的结果。
21.在本发明方法的上述实施例中的每一个中,根据初始运动矢量获取当前块中的样本值的第一预测可以包括:根据初始运动矢量获取多个候选对,以及根据候选对中的至少一个候选对获取当前块中的样本值的第一预测。根据第一预测计算第一匹配成本可以包括:根据第一预测确定候选对中的每个候选对的匹配成本,以及将确定的匹配成本中的最小匹配成本确定为第一匹配成本。
22.在运动矢量修正过程中,可以获得用于修正运动矢量的多个候选对,候选对包括一对初始运动矢量。例如,修正运动矢量的候选对包括一对初始运动矢量(mv0,mv1)和以下对:(mv0+(0,1),mv1+(0,

1))、(mv0+(1,0),mv1+(

1,0))、(mv0+(0,

1),mv1+(0,1))、(mv0+(

1,0),mv1+(1,0)),其中,(1,

1)表示在水平(或x)方向上位移为1,在垂直(或y)方向上位移为

1的矢量。对于对中的每一个对,可以确定对应于对的匹配成本,并且上述第一匹配成本可以确定为针对修正运动矢量的候选对确定的匹配成本中的最小一个匹配成本。根据特定示例,可以是对应于初始运动矢量对(mv0,mv1)或(mv0’=mv0+(0,1),mv1’=mv1+(0,

1))的匹配成本,其中,修正运动矢量为mv0’和mv1’。
23.采用这种第一匹配成本可以有利于总体译码。
24.可以根据第二插值滤波器获取上述当前块中的样本值的第二预测。该第二插值滤
波器可以是6抽头或8抽头插值滤波器,其相对昂贵,但子像素准确度高。
25.根据第二匹配成本可以获得上述修正运动矢量,以控制修正运动矢量对于帧间预测的适用性。当第二匹配成本的值大于或等于另一个阈值时,可以确定应执行光流修正过程。否则,可以确定不值得执行任何光流修正过程。
26.根据另一个实施例,仅当确定不应执行光流修正过程时,才通过第二预测的加权和获取最终帧间预测。第二预测的加权和提供了一定的准确度,在认为不适合执行相对昂贵的光流修正过程的情况下,这种准确度就足够了。
27.通常,该阈值或另一个阈值可以是根据第一预测的位深度计算的值。此外,可以根据用于根据第一预测计算第一匹配成本的多个预测样本获取阈值。此外,可以根据当前块的尺寸(宽度和高度取决于像素数量)获取阈值。例如,阈值可以为thr=ncbw
×
ncbh
×
k,其中,k为大于0的值,ncbw和ncbh为当前块的宽和高。例如,k=2。
28.此外,上述第二匹配成本可以是使用在运动矢量修正期间评估的匹配成本和最小匹配成本位置附近的匹配成本的形状的预定义模型获得的推导成本(derived cost)。此上下文中的预定义模型可以是线性组合模型。
29.使用最小匹配成本位置附近的匹配成本的形状的预定义模型可以提高帧间预测过程的准确度。
30.根据所有上述实施例的方法还可以包括生成帧间预测块的步骤,帧间预测块包括当前块中的样本值的最终帧间预测。
31.此外,提供了一种编码器或解码器,其包括处理电路,用于执行根据上述实施例中的任一个实施例的方法。此外,提供了一种计算机程序产品,其包括程序代码,用于执行根据上述实施例中的任一个实施例的方法。
32.可以在解码器或编码器中实现视频译码方法的所有上述变型。因此,提供一种解码器或编码器,包括:
33.一个或多个处理器和非瞬时性计算机可读存储介质,该非瞬时性计算机可读存储介质耦合到处理器并存储由处理器执行的程序,其中,当处理器执行程序时,使解码器执行根据上述实施例中的任一个实施例的方法。
34.可以在用于图像编码器和/或图像解码器中的设备中实现视频译码方法的所有上述变型,以便满足上述需求。因此,提供了一种用于图像编码器和/或图像解码器的设备,该设备包括:初始运动矢量单元,用于获取当前块(例如,编码块、预测块或子块)的初始运动矢量;第一预测单元,用于根据初始运动矢量获取当前块中的样本值的第一预测;第一匹配成本计算单元,用于根据第一预测计算第一匹配成本(相似度或不相似度度量);光流修正过程确定单元,用于根据至少一个预设条件,确定是否应执行光流修正过程,至少一个预设条件包括计算出的第一匹配成本是否等于或大于阈值的条件;光流修正过程执行单元,用于当确定应执行光流修正过程时,执行光流修正过程,以获得当前块中的样本值的最终帧间预测。
35.如上所述,该设备及其下述变型提供与上述方法相同的优点。
36.至少一个预设条件可以包括允许通过解码端运动矢量修正来预测当前块的条件。
37.光流修正过程确定单元可以用于当确定满足至少一个预设条件中的所有条件时,确定应执行光流修正过程。
38.该设备可以包括第一插值滤波器(例如,双线性插值滤波器),第一预测单元可以用于通过第一插值滤波器获取当前块中的样本值的第一预测。
39.设备还可以包括:修正运动矢量单元,用于根据初始运动矢量和第一匹配成本获取修正运动矢量;
40.第二预测单元,用于根据修正运动矢量获取当前块中的样本值的第二预测;
41.光流修正过程执行单元可以用于当光流修正过程确定单元确定应执行光流修正过程时,根据第二预测执行光流修正。
42.在该设备的上述实施例中,第一预测单元可以用于通过根据初始运动矢量获取多个候选对,以及通过根据候选对中的至少一个候选对获取当前块中的样本值的第一预测,根据初始运动矢量获取当前块中的样本值的第一预测。此外,第一匹配成本计算单元可以用于通过根据第一预测确定候选对中的每个候选对的匹配成本,以及通过将确定的匹配成本中的最小匹配成本确定为第一匹配成本,根据第一预测计算第一匹配成本。
43.根据一个实施例,设备还可以包括第二插值滤波器(例如,相对昂贵的子像素准确度较高的6抽头插值滤波器或8抽头插值滤波器),第二预测单元可以用于通过第二插值滤波器获取当前块中的样本值的第二预测。
44.根据另一个实施例,该设备还包括第二匹配成本计算单元,用于计算第二匹配成本,其中,修正运动矢量单元用于根据第二匹配成本获取修正运动矢量。此时,光流修正过程确定单元可以用于当第二匹配成本的值大于或等于另一个阈值时,确定应执行光流修正过程。
45.该设备还可以包括加权和预测单元,用于仅当光流修正过程确定单元确定不应执行光流修正时,通过第二预测的加权和获取最终帧间预测。
46.此外,该设备可以包括阈值计算单元,用于根据第一预测的位深度计算阈值或另一个阈值。此外,该设备还可以包括阈值计算单元,阈值计算单元用于根据多个预测样本计算阈值,多个预测样本用于由第一匹配成本计算单元根据第一预测计算第一匹配成本。此外,该设备还可以包括阈值计算单元,用于根据当前块的尺寸计算阈值。例如,阈值可以为thr=ncbw
×
ncbh
×
k,其中,k为大于0的值,ncbw和ncbh为当前块的宽和高。例如,k=2。
47.根据特定实施例,第二匹配成本计算单元用于将第二匹配成本计算为:使用在由修正运动矢量单元执行的运动矢量修正期间评估的匹配成本和最小匹配成本位置附近的匹配成本的形状的预定义模型(例如,线性组合模型)获得的推导成本。
48.根据上述实施例中的任一个实施例的设备还可以包括帧间预测块生成单元,用于生成帧间预测块,帧间预测块包括当前块中的样本值的最终帧间预测。
49.附图及以下说明中将详细描述一个或多个实施例。其它特征、目标和优点在说明书、附图以及权利要求中显而易见。
附图说明
50.下面结合附图对本发明实施例进行详细描述。
51.图1a为用于实现本发明实施例的视频译码系统的示例的框图。
52.图1b为用于实现本发明实施例的视频译码系统的另一个示例的框图。
53.图2为用于实现本发明实施例的视频编码器的示例的框图。
54.图3为用于实现本发明实施例的视频解码器的示例结构的框图。
55.图4为编码装置或解码装置的一个示例的框图。
56.图5为编码装置或解码装置的另一个示例的框图。
57.图6为光学修正过程的一个实施例的流程图。
58.图7为光学修正过程的另一个实施例的流程图。
59.图8为光学修正过程的另一个实施例的流程图。
60.图9为光学修正过程的另一个实施例的流程图。
61.图10为根据本发明实施例的在解码设备或编码设备中实现的视频译码方法的流程图。
62.图11为用于根据本发明实施例的图像编码器和/或图像解码器中的设备。
63.下文中,除非另外明确说明,否则相同的附图标记指代相同或至少功能等同的特征。
具体实施方式
64.在以下描述中,参考构成本发明的一部分的附图,这些附图通过说明的方式示出本发明的实施例的特定方面或可以使用本发明的实施例的具体方面。应理解,本发明的实施例可以用于其它方面,并且包括在附图中未描绘的结构上或逻辑上的变化。因此,以下详细描述不作为限制意义,并且本发明的范围由所附权利要求限定。
65.例如,应理解,参考所描述的方法公开的内容对于用于执行该方法的对应的设备或系统也可以成立,反之亦然。例如,如果描述了一个或多个特定的方法步骤,则对应的设备可以包括一个或多个单元,例如用于执行所描述的一个或多个方法步骤的功能单元(例如,执行一个或多个步骤的一个单元;或者多个单元,每个单元执行多个步骤中的一个或多个),即使一个或多个单元在附图中未明确描述或示出时也是如此。此外,例如,如果根据一个或多个单元(例如功能单元)来描述特定装置,则对应的方法可以包括用于执行一个或多个单元的功能的一个步骤(例如执行一个或多个单元的功能的一个步骤,或多个步骤,每个步骤执行多个单元中的一个或多个单元的功能),即使一个或多个步骤在附图中未明确描述或示出时也是如此。此外,应理解,除非特别指出,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
66.视频译码通常是指对构成视频或视频序列的图像序列进行处理。在视频译码领域中,术语“帧(frame)”可以代替术语“图像(picture或image)”。视频译码(或通常称为译码)包括视频编码和视频解码两部分。视频编码在源端执行,并且通常包括处理(例如,通过压缩)原始视频图像,以减少表示视频图像所需的数据量(以进行更高效的存储和/或传输)。视频解码在目的端执行,并且通常包括相对于编码器的逆处理以重建视频图像。实施例涉及的视频图像(或通常称为图像)的“译码”应理解为视频图像或各自视频序列的“编码”或“解码”。编码部分和解码部分的组合也称为编解码器(编码和解码,codec)。
67.在无损视频译码的情况下,可以对原始视频图像进行重建,即,重建的视频图像与原始视频图像具有相同的质量(假设在存储或传输期间没有传输损失或其它数据损失)。在有损视频译码的情况下,通过量化等方式进行进一步压缩,以减少表示视频图像所需的数据量,在解码器侧无法完全重建视频图像,即,重建的视频图像的质量比原始视频图像的质
量低或差。
68.若干视频译码标准属于“有损混合视频编解码”组(即,将样本域中的空间和时间预测与2d变换译码相结合,以在变换域中进行量化)。视频序列的每个图像通常分割为一组不重叠的块,并且通常在块级别上进行译码。换句话说,在编码器侧,通常在块(视频块)级别上对视频进行处理(即,编码),例如,通过使用空间(帧内图像)预测和/或时间(帧间图像)预测来生成预测块,从当前块(当前处理/待处理块)中减去预测块以获得残差块,变换残差块并在变换域中量化残差块以减少待发送(压缩)的数据量,而在解码器侧,相对于编码器的逆处理用于编码或压缩块,以重建当前块用于表示。此外,编码器按照解码器处理循环来处理,使得两者生成相同的预测(例如,帧内和帧间预测)和/或重建,用于进行处理,即,对后续块进行译码。
69.在以下视频译码系统10的实施例中,视频编码器20和视频解码器30根据图1至图3进行描述。
70.图1a为示例性译码系统10的示意性框图,例如可以使用本技术的技术的视频译码系统10(或简称为译码系统10)。视频译码系统10的视频编码器20(或简称为编码器20)和视频解码器30(或简称为解码器30)表示可以用于根据本技术中描述的各种示例执行技术的设备的示例。
71.如图1a所示,译码系统10包括源设备12,源设备12用于向目的地设备14等提供编码图像数据21,以对编码数据13进行解码。
72.源设备12包括编码器20,并且可以另外(即可选地)包括图像源16、预处理器(预处理单元)18(例如图像预处理器18)和通信接口或通信单元22。
73.图像源16可以包括或可以是:任何类型的图像捕获设备,例如用于捕获真实世界图像的摄像机;和/或任何类型的图像生成设备,例如用于生成计算机动画图像的计算机图形处理器;或用于获取和/或提供真实世界图像、计算机动画图像(例如屏幕内容、虚拟现实(virtual reality,vr)图像),和/或其任何组合(例如增强现实(augmented reality,ar)图像)的任何类型的设备。图像源可以为存储上述图像中的任何图像的任何类型的存储器或存储装置。
74.为了与预处理单元18和由预处理单元18执行的处理进行区分,图像或图像数据17也可以称为原始图像或原始图像数据17。
75.预处理器18用于接收(原始)图像数据17,并对图像数据17进行预处理,以获得预处理图像19或预处理图像数据19。预处理器18执行的预处理可以包括修剪(trimming)、颜色格式转换(例如从rgb到ycbcr)、颜色校正或去噪等。可以理解的是,预处理单元18可以是可选的组件。
76.视频编码器20用于接收预处理的图像数据19并提供编码图像数据21(例如,下文根据图2进一步详细描述)。
77.源设备12中的通信接口22可以用于:接收编码图像数据21并通过通信信道13向目的地设备14等另一设备或任何其它设备发送编码图像数据21(或任何其它处理后的版本),以用于存储或直接重建。
78.目的地设备14包括解码器30(例如视频解码器30),并且可以另外(即可选地)包括通信接口或通信单元28、后处理单元32(或后处理单元32)和显示设备34。
79.目的地设备14的通信接口28用于例如直接从源设备12,或从任何其它源(例如存储设备,例如编码图像数据存储设备)接收编码图像数据21或(或任何其它处理后的版本),并将编码图像数据21提供给解码器30。
80.通信接口22和通信接口28可以用于通过源设备12与目的地设备14之间的直接通信链路(例如直接有线或无线连接),或者通过任何类型的网络(例如有线网络、无线网络、有线网络和无线网络的任何组合、任何类型的私网和公网、任何类型的私网和公网的组合),发送或接收编码图像数据21或编码数据13。
81.例如,通信接口22可以用于将编码图像数据21封装为报文等合适的格式,和/或使用任何类型的传输编码或处理来处理编码图像数据,以便在通信链路或通信网络上进行传输。
82.通信接口28与通信接口22对应,例如,可以用于接收所发送数据,并使用任何类型的对应传输解码或处理和/或解封装过程对传输数据进行处理,以获得编码图像数据21。
83.通信接口22和通信接口28均可配置为如图1a中从源设备12指向目的地设备14的通信信道13的箭头所指示的单向通信接口,或配置为双向通信接口,并且可用于发送和接收消息,建立连接,确认并交换与通信链路和/或数据传输(例如编码图像数据传输)相关的任何其它信息等。
84.解码器30用于接收编码图像数据21并提供解码图像数据31或解码图像31(例如,下文根据图3或图5进一步详细描述)。
85.目的地设备14的后处理器32用于对解码图像数据31(也称为重建图像数据),例如解码图像31,进行后处理,以获得后处理图像数据33,例如后处理图像33。由后处理单元32执行的后处理可以包括颜色格式转换(例如从ycbcr到rgb)、颜色校正、修剪或重新采样或任何其它处理,以例如准备解码图像数据31,用于通过显示设备34等进行显示。
86.目的地设备14的显示设备34用于接收后处理图像数据33,以例如向用户或观看者显示图像。显示设备34可以是或包括用于呈现重建图像的任何类型的显示器,例如集成的或外部的显示器或监控器。例如,显示器可以包括液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light emitting diode,oled)显示器、等离子显示器、投影仪、微led显示器,硅上液晶(liquid crystal on silicon,lcos)、数字光处理器(digital light processor,dlp)或任何类型的其它显示器。
87.尽管图1a将源设备12和目的地设备14描绘为的设备,但是设备的实施例也可以包括这两种设备或这两种设备的功能,即包括源设备12或对应的功能与目的地设备14或对应的功能。在此类实施例中,源设备12或对应的功能与目的地设备14或对应的功能可以通过相同的硬件和/或软件、通过单独的硬件和/或软件或其任何组合来实现。
88.根据以上描述,对于本领域技术人员来说显而易见的是,图1a中所示的源设备12和/或目的地设备14的不同单元或功能的存在和(精确)功能划分可以根据实际设备和应用而变化。
89.编码器20(例如视频编码器20)和/或解码器30(例如视频解码器30)可以通过如图1b所示的处理电路如一个或多个微处理器、数字信号处理器(digital signal processor,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所示。
90.源设备12和目的地设备14可以包括多种设备中的任一种,包括任何类型的手持设备或固定设备,例如,笔记本电脑或膝上型电脑、手机、智能手机、平板或平板电脑、摄像机、台式计算机、机顶盒、电视机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备(如内容业务服务器或内容分发服务器)、广播接收器设备、广播发送器设备等,并且可以使用或不使用任何类型的操作系统。在一些情况下,源设备12和目的地设备14可以用于无线通信。因此,源设备12和目的地设备14可以是无线通信设备。
91.在一些情况下,图1a所示的视频译码系统10仅是示例,本技术的技术可以应用于视频译码设置(例如,视频编码或视频解码),不一定包括编码设备与解码设备之间的任何数据通信。在其它示例中,数据可以从本地存储器检索、通过网络流式传输等。视频编码设备可以对数据进行编码并将数据存储到存储器,和/或视频解码设备可以从存储器检索和解码数据。在一些示例中,编码和解码由不彼此通信但简单地将数据编码到存储器和/或从存储器检索和解码数据的设备执行。
92.为便于描述,例如,参考由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。
93.编码器和编码方法
94.图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也可以称为混合视频编码器或视频编码器。
95.残差计算单元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的“内置解码器”。
96.图像和图像分割(图像和块)
97.编码器20可以用于通过输入端201等接收图像17(或图像数据17),例如,形成视频或视频序列的图像序列中的图像。接收到的图像或图像数据还可以是预处理图像19(或预处理图像数据19)。为简单起见,以下描述中称为图像17。图像块17还可以称为当前图像或待译码图像(特别是在视频译码中,将当前图像与其它图像区分开来,其它图像例如是同一视频序列(即,也包括当前图像的视频序列)中之前编码和/或解码的图像)。
98.(数字)图像是或可以看作具有强度值的二维样本阵列或矩阵。阵列中的样本也可以称为像素(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彩色格式的亮度样本阵列和两个对应的色度样本阵列。
99.在视频编码器20的实施例中,视频编码器20可以包括图像分割单元(图2中未示出),用于将图像17分割为多个(通常是不重叠的)图像块203。这些块也可以称为根块或宏块(h.264/avc标准)或称为编码树块(coding tree block,ctb)或编码树单元(coding tree unit,ctu)(h.265/hevc和vvc标准)。图像分割单元可以用于对视频序列中的所有图像和定义块尺寸的对应的网格使用相同的块尺寸,或者改变图像或子集或图像组之间的块尺寸,并将每个图像分割为对应的块。
100.在其它实施例中,视频编码器可以用于直接接收图像17的块203,例如,组成图像17的一个、若干个或所有块。图像块203也可以称为当前图像块或待译码图像块。
101.尽管图像块203的尺寸小于图像17,但是与图像17一样,块203也是或也可以被认为是具有强度值(样本值)的样本的二维阵列或矩阵。换句话说,块203例如可以包括一个样本阵列(例如,在单色图像17的情况下,亮度阵列)、三个样本阵列(例如,在彩色图像17的情况下,一个亮度阵列和两个色度阵列)或任何其它数量和/或类型的阵列,这取决于应用的颜色格式。块203在水平和垂直方向(或轴线)上的多个样本定义块203的尺寸。相应地,某图像块可以为m
×
n(m列
×
n行)个样本阵列,或m
×
n个变换系数阵列等。
102.在图2所示的视频编码器20的实施例中,视频编码器20可以用于对图像17逐块地进行编码,例如对每个块203执行编码和预测。
103.在图2所示的视频编码器20的实施例中,视频编码器20还可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或编码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或编码,每个条带可以包括一个或多个块(如ctu)。
104.在图2所示的视频编码器20的实施例中,视频编码器20还可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或编码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行编码或可以将图像分割为一个或多个分块组,并且每个分块组可以包括一个或多个块(例如ctu)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如ctu),例如全部或部分块。
105.残差计算
106.残差计算单元204可以用于根据图像块203和预测块265(后面会详细描述预测块265)计算残差块205(也称为残差205),例如,逐样本(逐像素)从图像块203的样本值中减去预测块265的样本值,以获得样本域中的残差块205。
107.变换
108.变换处理单元206可以用于对残差块205的样本值进行变换,例如离散余弦变换(discrete cosine transform,dct)或离散正弦变换(discrete sine transform,dst),以获得变换域中的变换系数207。变换系数207也可以称为变换残差系数,并且表示变换域中的残差块205。
109.变换处理单元206可以用于应用dct/dst的整数近似,例如针对h.265/hevc指定的变换。与正交dct变换相比,此类整数近似通常通过某个因子进行缩放。使用附加的缩放因子作为变换过程的一部分,以维持经过前向变换和反向变换处理的残差块的范数。通常根据某些限制来选择缩放因子,例如缩放因子为移位运算的2的幂、变换系数的位深度、准确度和实现成本之间的权衡等。例如,通过逆变换处理单元212指定用于逆变换的特定缩放因子(以及在视频解码器30中通过逆变换处理单元312等为相应的逆变换指定缩放因子),在编码器20中可以相应地通过变换处理单元206等指定用于正向变换的对应的缩放因子。
110.在视频编码器20的实施例中,例如,视频编码器20(对应地,变换处理单元206)可以用于直接输出或通过熵编码单元270进行编码或压缩后输出一种或多种变换类型的变换参数,使得视频解码器30可以接收并使用变换参数进行解码。
111.量化
112.量化单元208可以用于对变换系数207进行量化(例如进行标量量化或矢量量化),以获得量化系数209。量化系数209也可以称为量化变换系数209或量化残差系数209。
113.量化过程可以减小与部分或全部变换系数207相关的位深度。例如,可以在量化期间将n位变换系数向下舍入到m位变换系数,其中,n大于m,可以通过调整量化参数(quantization parameter,qp)修改量化程度。例如,对于标量量化,可以进行不同的缩放来实现更精细或更粗略的量化。量化步长大小越小,量化越精细;量化步长大小越大,量化越粗略。合适的量化步长大小可以通过量化参数(quantization parameter,qp)来指示。例如,量化参数可以是适用于预定义的一组合适的量化步长大小的索引。例如,小的量化参数可以对应精细的量化(小量化步长大小),而大的量化参数可以对应粗略的量化(大量化步长大小),反之亦然。量化操作可以包括除以量化步长,而反量化单元210等执行的相应解量化和/或反解量化操作可以包括乘以量化步长。根据一些标准(例如hevc),实施例中可以使用量化参数来确定量化步长大小。通常,可以通过包括除法的方程的定点近似、根据量化参数计算量化步长大小。可以将附加的缩放因子引入量化和解量化,用于恢复残差块的范数,因为量化步长大小和量化参数的方程的定点近似中使用缩放,所以可以修改该范数。在一
种示例性实现方式中,可以合并逆变换和解量化中的缩放。或者,可以使用自定义量化表,并且例如在码流中将该自定义量化表从编码器发送到解码器。量化为有损操作,损耗随量化步长大小的增加而增加。
114.在视频编码器20的实施例中,视频编码器20(对应地,量化单元208)可以用于,例如,直接输出或经熵编码单元270进行编码后输出量化参数(quantization parameter,qp),使得视频解码器30可以接收并使用量化参数进行解码。
115.反量化
116.反量化单元210用于对量化系数执行量化单元208所执行的量化的反量化,以获得解量化系数211,例如,根据或使用与量化单元208相同的量化步长执行与量化单元208所执行的量化方案的反量化方案。解量化系数211也可以称为解量化残差系数211,其对应于变换系数207,但是由于量化造成损耗,所以解量化系数211通常与变换系数不完全相同。
117.逆变换
118.逆变换处理单元212用于执行变换处理单元206所执行的变换的逆变换,例如,逆离散余弦变换(discrete cosine transform,dct)或逆离散正弦变换(discrete sine transform,dst),以获得样本域中的重建残差块213(或对应的解量化系数213)。重建残差块213也可以称为变换块213。
119.重建
120.重建单元214(例如,加法器或求和器214)用于将变换块213(即重建残差块213)与预测块265相加,例如,将重建残差块213的样本值和预测块265的样本值逐样本进行相加,以获得样本域中的重建块215。
121.滤波
122.环路滤波单元220(或简称为“环路滤波器”220)用于对重建块215进行滤波,以获得滤波块221,或通常用于对重建样本进行滤波,以获得滤波样本。例如,环路滤波单元用于平滑像素的突变或提高视频质量。环路滤波单元220可以包括一个或多个环路滤波器,例如去块效应滤波器、采样自适应偏移(sample

adaptive offset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任何组合。尽管在图2中环路滤波单元220示出为环内滤波器,但在其它配置中,环路滤波单元220可以实现为后环路滤波器。滤波块221也可以称为滤波重建块221。
123.例如,视频编码器20(相应地,环路滤波单元220)的实施例可以用于直接输出或通过熵编码单元270编码后输出环路滤波器参数(例如采样自适应偏移信息),使得解码器30可以接收并应用相同或不同的环路滤波参数进行解码。
124.解码图像缓冲器
125.解码图像缓冲器(decoded picture buffer,dpb)230可以是存储参考图像或通常存储参考图像数据的存储器,以在视频编码器20对视频数据进行编码时使用。dpb 230可以由各种存储器设备中的任一种构成,例如动态随机存取存储器(dynamic random access memory,dram)(包括同步dram(synchronous dram,sdram))、磁阻ram(magneto resistive ram,mram)、电阻ram(resistive ram,rram)或其它类型的存储器设备。解码图像缓冲器(decoded picture buffer,dpb)230可用于存储一个或多个滤波块221。解码图像缓冲器
230还可以用于存储相同的当前图像或不同图像(例如之前重建的图像)的其它之前滤波的块(例如之前重建的和滤波的块221),并且可以提供完整的之前重建的(即解码的)图像(以及对应的参考块和样本)和/或部分重建的当前图像(以及对应的参考块和样本),以例如用于帧间预测。解码图像缓冲器230还可以用于存储一个或多个未经滤波的重建块215,或通常存储未经滤波的重建样本,例如,未经环路滤波单元220滤波的重建块215,或未进行任何其它处理的重建块或重建样本。
126.模式选择(分割和预测)
127.模式选择单元260包括分割单元262、帧间预测单元244和帧内预测单元254,并且用于从解码图像缓冲器230或其它缓冲器(例如,列缓冲器,图中未示出)接收或获取原始图像数据如原始块203(当前图像17的当前块203),以及重建图像数据如同一(当前)图像和/或一个或多个之前解码的图像的经滤波和/或未经滤波的重建样本或重建块。重建图像数据用作帧间预测或帧内预测等预测所需的参考图像数据,以获得预测块265或预测值265。
128.模式选择单元260可以用于为当前块预测模式(包括不分割模式)和预测模式(例如帧内或帧间预测模式)确定或选择分割模式,并生成对应的预测块265,该预测块用于残差块205的计算以及重建块215的重建。
129.在模式选择单元260的实施例中,模式选择单元260可以用于选择分割和预测模式(例如,从模式选择单元260支持或可用的模式中选择)。分割和预测模式提供最佳匹配,即最小残差(最小残差更有利于压缩,以便传输或存储),或提供最小指示开销(最小的指示开销更有利于压缩,以便传输或存储),或者同时考虑以上两者或在以上两者中取得平衡。模式选择单元260可用于根据率失真优化(rate distortion optimization,rdo)确定分割和预测模式,即选择提供最小率失真的预测模式。本文中“最佳”、“最小”、“最优”等术语不一定指总体上“最佳”、“最小”、“最优”等,也可以指满足终止或选择标准的情况,例如,某个值超过或低于阈值或其它限制,可能导致“次优选择”,但会降低复杂度和处理时间。
130.换句话说,分割单元262可以用于例如,通过迭代地使用四叉树分割(quad

tree

partitioning,qt)、二叉树分割(binary partitioning,bt)或三叉树分割(triple

tree

partitioning,tt)或其任何组合,将块203分割为较小的块部分或子块(它们再次形成块),以及用于例如对块部分或子块中的每一个执行预测,其中,模式选择包括选择分割的块203的树结构以及应用于每个块部分或子块的预测模式。
131.下文详细描述由视频编码器20执行的分割(例如,由分割单元260执行)处理和预测处理(例如,由帧间预测单元244和帧内预测单元254执行)。
132.分割模块
133.分割单元262可以将当前块203分割(或划分)成较小的部分,例如较小的正方形或矩形块。这些较小的块(也可以称为子块)可以进一步分割为更小的部分。这也称为树分割或分层树分割,其中,在根树层级0(层级0、深度0)等的根块可以递归地分割为两个或多个下一较低树层级的块,例如树层级1(层级1、深度1)的节点,这些块又可以分割为两个或多个下一较低层级的块,例如树层级2(层级2、深度2)等,直到由于满足结束标准(例如达到最大树深度或最小块尺寸)而结束分割。未进一步分割的块也称为树的叶块或叶节点。分成两个部分的树称为二叉树(binary

tree,bt),分成三个部分的树称为三叉树(ternary

tree,tt),分成四个部分的树称为四叉树(quad

tree,qt))。
134.如上所述,本文中使用的术语“块”可以是图像的一部分,特别是正方形或矩形部分。例如,结合hevc和vvc,块可以是或对应于编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)、预测单元(prediction unit,pu)和变换单元(transform unit,tu)和/或对应于相应的块,例如,编码树块(coding tree block,ctb)、编码块(coding block,cb)、变换块(transform block,tb)或预测块(prediction block,pb)。
135.例如,编码树单元(coding tree unit,ctu)可以是或包括:亮度样本的ctb、具有三个样本阵列的图像的色度样本的两个对应的ctb、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的ctb。相应地,编码树块(coding tree block,ctb)可以是n
×
n的样本块,其中,n可以设为某个值以将分量划分为ctb,这是一种分割。编码单元(coding unit,cu)可以是或包括:亮度样本的编码块、具有三个样本阵列的图像的色度样本的两个对应的编码块、单色图像或使用三个单独的颜色平面和用于对样本进行译码的语法结构译码的图像的样本的编码块。相应地,编码块(coding block,cb)可以是m
×
n的样本块,其中,m和n可以设为某些值以将ctb划分为编码块,这是一种分割。
136.在实施例中,例如,根据hevc,可以通过表示为编码树的四叉树结构将编码树单元(coding tree unit,ctu)划分为cu。在cu级别上决定是通过帧间(时间)预测或通过帧内(空间)预测对图像区域进行译码。每个cu还可以根据pu划分类型划分为1个、2个或4个pu。在一个pu内,进行相同的预测过程,并且以pu为单位将相关信息发送到解码器。在通过进行预测过程而获取残差块后,根据pu划分类型,可以根据与用于cu的编码树类似的其它四叉树结构将cu分割为变换单元(transform unit,tu)。
137.在实施例中,例如,根据当前正在开发的最新视频译码标准(称为通用视频译码(versatile video coding,vvc),使用组合四叉树和二叉树(quad

tree and binary tree,qtbt)分割对编码块进行分割。在qtbt块结构中,cu可以是正方形或矩形。例如,首先通过四叉树结构分割编码树单元(coding tree unit,ctu)。进一步通过二叉树或三叉树结构对四叉树叶节点进行分割。分割树叶节点称为编码单元(coding unit,cu),该分段用于预测和变换处理,无需进一步分割。即,cu、pu和tu在qtbt编码块结构中具有相同的块尺寸。同时,三叉树分割等多重分割可以与qtbt块结构结合使用。
138.在一个示例中,视频编码器20的模式选择单元260可以用于执行本文分割技术的任何组合。
139.如上所述,视频编码器20用于从一组(例如,预定的)预测模式中确定或选择最佳或最优预测模式。该组预测模式可以包括例如帧内预测模式和/或帧间预测模式。
140.帧内预测
141.该组帧内预测模式可以包括35种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或hevc中定义的定向模式等,或者可以包括67种不同的帧内预测模式,例如dc(或均值)模式和平面模式等非定向模式,或vvc中定义的定向模式等。
142.帧内预测单元254用于根据帧内预测模式集合中的帧内预测模式使用同一当前图像的相邻块的重建样本来生成帧内预测块265。
143.帧内预测单元254(或通常为模式选择单元260)还用于以语法元素266的形式向熵编码单元270输出帧内预测参数(或通常为指示块的选定帧内预测模式的信息),以将该帧内预测参数包括到编码图像数据21中,从而视频解码器30可以,例如,接收并使用该预测参
数进行解码。
144.帧间预测
145.该组(或可能的)帧间预测模式取决于可用的参考图像(即,例如存储在dbp 230中的之前至少部分解码的图像)和其它帧间预测参数,例如是整个参考图像还是仅参考图像的一部分(例如,围绕当前块的区域的搜索窗口区域)用于搜索最佳匹配的参考块,和/或例如是否应用像素插值,例如半像素和/或四分之一像素插值,或不应用像素插值。
146.除了上述预测模式之外,还可以应用跳过模式和/或直接模式。
147.帧间预测单元244可以包括运动估计(motion estimation,me)单元和运动补偿(motion compensation,mc)单元(两者均未在图2中示出)。运动估计单元可以用于接收或获取图像块203(当前图像17的当前图像块203)和解码图像231,或者至少一个或多个之前重建的块(例如一个或多个其它/不同的之前解码的图像231的重建块),以用于运动估计。例如,视频序列可以包括当前图像和之前解码的图像231,或者,换句话说,当前图像和之前解码的图像231可以是构成视频序列的图像序列的一部分或可以构成该序列。
148.例如,编码器20可以用于从多个其它图像的相同或不同图像的多个参考块中选择参考块并提供参考图像(或参考图像索引)和/或参考块的位置(x坐标、y坐标)与当前块的位置之间的偏移(空间偏移),作为运动估计单元的帧间预测参数。这个偏移也称为运动矢量(motion vector,mv)。
149.运动补偿单元用于获取(例如,接收)帧间预测参数,并根据或通过帧间预测参数进行帧间预测,以获得帧间预测块265。运动补偿单元所执行的运动补偿可以包括根据通过运动估计确定的运动/块矢量提取或生成预测块(可能执行插值以提高子像素精度)。插值滤波可以通过已知样本生成附加的样本,从而潜在地增加可以用于译码图像块的候选预测块的数量。在接收到当前图像块的pu的运动矢量时,运动补偿单元可以定位运动矢量在一个参考图像列表中指向的预测块。
150.运动补偿单元还可以生成与块和视频条带相关的语法元素,该语法元素由视频解码器30用来解码视频条带的图像块。除了或作为条带和相应语法元素的替代,可以生成或使用分块组和/或分块以及相应语法元素。
151.熵译码
152.例如,熵编码单元270用于将熵编码算法或方案(例如,可变长度译码(variable length coding,vlc)方案、上下文自适应vlc方案(context adaptive vlc,calvc)、算术译码方案、二值化算法、上下文自适应二进制算术译码(context adaptive binary arithmetic coding,cabac)、基于语法的上下文自适应二进制算术译码(syntax

based context

adaptive binary arithmetic coding,sbac)、概率区间分割熵(probability interval partitioning entropy,pipe)译码或其它熵编码方法或技术)或旁路(无压缩)方案应用于量化系数209、帧间预测参数、帧内预测参数、环路滤波参数和/或其它语法元素,以获得可以通过输出单元272以编码码流21等形式输出的编码图像数据21,使得视频解码器30可以接收并使用这些参数进行解码。可以将编码码流21发送到视频解码器30,或者将其存储在存储器汇总,以便随后由视频解码器30发送或检索。
153.视频编码器20的其它结构变化可以用于编码视频流。例如,对于某些块或帧,基于非变换的编码器20可以在没有变换处理单元206的情况下直接量化残差信号。在另一种实
现方式中,编码器20可以将量化单元208和反量化单元210组合成单个单元。
154.解码器及解码方法
155.图3为用于实现本技术的技术的视频解码器30的示例。视频解码器30用于接收例如由编码器20编码的编码图像数据21(例如,编码码流21),以获得解码图像331。编码图像数据或码流包括用于对编码图像数据进行解码的信息,例如,表示编码视频条带的图像块的数据(和/或分块组或分块)以及相关的语法元素。
156.在图3的示例中,解码器30包括熵解码单元304、反量化单元310、逆变换处理单元312、重建单元314(例如求和器314)、环路滤波器320、解码图像缓冲器(decoded picture buffer,dbp)330、模式应用单元360、帧间预测单元344和帧内预测单元354。帧间预测单元344可以是或包括运动补偿单元。在一些示例中,视频解码器30可以执行与图2中结合视频编码器100描述的编码通道大体上互逆的解码通道。
157.如编码器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的相应单元和功能。
158.熵解码
159.熵解码单元304用于解析码流21(或通常称为编码图像数据21),并对编码图像数据21进行熵解码,以获得量化系数309和/或解码译码参数(图3中未示出)等,例如帧间预测参数(如参考图像索引和运动矢量)、帧内预测参数(如帧内预测模式或索引)、变换参数、量化参数、环路滤波参数和/或其它语法元素等中的任一者或全部。熵解码单元304可以用于进行对应于编码器20的熵编码单元270所描述的编码方案的解码算法或方案。熵解码单元304还可以用于向模式应用单元360提供帧间预测参数、帧内预测参数和/或其它语法元素,并向解码器30的其它单元提供其它参数。视频解码器30可以在视频条带级和/或视频块级接收语法元素。除了或作为条带和相应语法元素的替代,可以接收和/或使用分块组和/或分块以及相应语法元素。
160.反量化
161.反量化单元310可以用于从编码图像数据21(例如,通过熵解码单元304等解析和/或解码)接收量化参数(quantization parameter,qp)(或通常为与反量化相关的信息)和量化系数,并根据量化参数对解码量化系数309进行反量化,以获得解量化系数311,解量化系数311也可以称为变换系数311。反量化过程可以包括:使用视频编码器20确定的视频条带(或分块或分块组)中的每个视频块的量化参数,以确定应应用的量化程度以及反量化程度。
162.逆变换
163.逆变换处理单元312可以用于接收解量化系数311(也称为变换系数311),并对解量化系数311进行变换,以获得样本域中的重建残差块213。重建残差块213也可以称为变换块313。变换可以是逆变换,例如,逆dct、逆dst、逆整数变换或概念上类似的逆变换过程。逆
变换处理单元312还可以用于从编码图像数据21接收变换参数或相应的信息(例如,通过解析和/或解码,例如,通过熵解码单元304),以确定要应用于解量化系数311的变换。
164.重建
165.重建单元314(例如,加法器或求和器314)可以用于将重建残差块313添加到预测块365,以获得样本域中的重建块315,例如,通过将重建残差块313的样本值加上预测块365的样本值。
166.滤波
167.环路滤波单元320(在译码环路中或译码环路之后)用于对重建块315进行滤波,以获得滤波块321,以平滑像素的突变或提高视频质量。环路滤波单元320可以包括一个或多个环路滤波器,例如去块效应滤波器、采样自适应偏移(sample

adaptive offset,sao)滤波器或一个或多个其它滤波器,例如双边滤波器、自适应环路滤波器(adaptive loop filter,alf)、锐化滤波器、平滑滤波器、协作滤波器或其任和组合。尽管在图3中环路滤波单元320示出为环内滤波器,但在其它配置中,环路滤波单元320可以实现为后环路滤波器。
168.解码图像缓冲器
169.之后,将一个图像的解码视频块321存储在解码图像缓冲器330中。解码图像331作为参考图像存储在解码图像缓冲器330中,用于后续对其它图像进行运动补偿和/或后续相应输出以进行显示。
170.解码器30用于例如通过输出端312输出解码图像311,以呈现给用户或由用户观看。
171.预测
172.帧间预测单元344的功能可以与帧间预测单元244(特别是运动补偿单元)相同;帧内预测单元354的功能可以与帧间预测单元254相同,并根据从编码图像数据21接收到的分割和/或预测参数或相应信息(例如,通过熵解码单元304等解析和/或解码)决定划分或分割模式并执行预测。模式应用单元360可以用于根据重建图像、重建块或相应的样本(已滤波的或未滤波的)按块进行预测(帧内预测或帧间预测),以获得预测块365。
173.当视频条带译码为帧内译码(i)条带时,模式应用单元360的帧内预测单元354用于:根据所指示的帧内预测模式和来自当前图像的之前解码的块的数据来为当前视频条带的图像块生成预测块365。当视频图像译码为帧间译码(即,b或p)条带时,模式应用单元360的帧间预测单元344(例如,运动补偿单元)用于根据从熵解码单元304接收的运动矢量和其它语法元素生成当前视频条带的视频块的预测块365。对于帧间预测,预测块可以从一个参考图像列表中的一个参考图像中生成。视频解码器30可以根据dpb 330中存储的参考图像通过默认构建技术构建参考帧列表,列表0和列表1。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用i、p或b分块组和/或分块对视频进行译码。
174.模式应用单元360用于通过解析运动矢量或相关信息和其它语法元素确定当前视频条带的视频块的预测信息,并使用预测信息来生成正在解码的当前视频块的预测块。例如,模式应用单元360使用接收到的一些语法元素来确定用于对视频条带的视频块进行译码的预测模式(例如,帧内或帧间预测)、帧间预测条带类型(例如,b条带,p条带或gpb条带)、条带的参考图像列表中的一个或多个的构建信息、条带的每个帧间编码视频块的运动
矢量、条带的每个帧间译码视频块的帧间预测状态,以及其它信息,以对当前视频条带中的视频块进行解码。除了应用于使用条带(例如视频条带)的实施例外,相同或相似的过程可以应用于使用分块组(例如视频分块组)和/或分块(例如视频分块)的实施例,例如可以使用i、p或b分块组和/或分块对视频进行译码。
175.在图3所示的视频解码器30的实施例中,视频解码器30可以用于采用条带(slice)(也称为视频条带)对图像进行分割和/或解码,其中,图像可以采用一个或多个条带(通常是不重叠的条带)进行分割或解码,每个条带可以包括一个或多个块(如ctu)。
176.在图3所示的视频解码器30的实施例中,视频解码器30可以用于使用分块组(也称为视频分块组)和/或分块(也称为视频分块)对图像进行分割和/或解码,其中,可以使用一个或多个分块组(通常是不重叠的)对图像进行解码或可以将图像分割为一个或多个分块组,并且每个分块组可以包括一个或多个块(例如ctu)或一个或多个分块,其中,每个分块可以是矩形并且可以包括一个或多个块(例如ctu),例如全部或部分块。
177.视频解码器30的其它变型可以用于对编码图像数据21进行解码。例如,解码器30可以在没有环路滤波单元320的情况下生成输出视频流。例如,对于某些块或帧,基于非变换的解码器30可以在没有逆变换处理单元312的情况下直接量化残差信号。在另一种实现方式中,视频解码器30可以将反量化单元310和逆变换处理单元312组合成单个单元。
178.应理解,在编码器20和解码器30中,可以针对当前环节的处理结果进行进一步处理,然后输出到下一环节。例如,在插值滤波、运动矢量推导或环路滤波等之后,可以对插值滤波、运动矢量推导或环路滤波的处理结果进一步进行修正(clip)或移位(shift)等操作。
179.需要说明的是,可以对当前块的推导运动矢量(包括但不限于仿射模式下的控制点运动矢量、仿射、平面、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限制运动矢量的方法。
180.方法一:通过流操作移除溢出msb(most significant bit,最高有效位)。
181.ux=(mvx+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
182.mvx=(ux>=2
bitdepth
–1)?(ux
–2bitdepth
):ux
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
183.uy=(mvy+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
184.mvy=(uy>=2
bitdepth
–1)?(uy
–2bitdepth
):uy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
185.其中,mvx为图像块或子块的运动矢量的水平分量,mvy为图像块或子块的运动矢量的垂直分量,ux和uy表示中间值;
186.例如,如果mvx的值为

32769,则应用公式(1)和(2)后,所得到的值为32767。在计算机系统中,十进制数以二的补码的形式存储。

32769的二的补码为1,0111,1111,1111,1111(17位),然后丢弃msb,因此所得到的二的补码为0111,1111,1111,1111(十进制数为32767),与公式(1)和(2)的输出相同。
187.ux=(mvpx+mvdx+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
188.mvx=(ux>=2
bitdepth
–1)?(ux
–2bitdepth
):ux
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
189.uy=(mvpy+mvdy+2
bitdepth
)%2
bitdepth
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(7)
190.mvy=(uy>=2
bitdepth
–1)?(uy
–2bitdepth
):uy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8)
191.如公式(5)至(8)所示,在求mvp与mvd之和期间,可以应用这些运算。
192.方法二:通过修正移除溢出msb。
193.vx=clip3(
–2bitdepth
–1,2
bitdepth
–1–
1,vx)
194.vy=clip3(
–2bitdepth
–1,2
bitdepth
–1–
1,vy)
195.其中,vx为图像块或子块的运动矢量的水平分量,vy为图像块或子块的运动矢量的垂直分量;x、y和z分别对应mv修正过程的三个输入值,函数clip3的定义如下:
[0196][0197]
图4为根据本发明实施例的视频译码设备400的示意图。如本文所述,视频译码设备400适合于实现所公开的实施例。在一个实施例中,视频译码设备400可以是解码器(例如,图1a中的视频解码器30)或编码器(例如,图1a中的视频编码器20)。
[0198]
视频译码设备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)组件,以用于光或电信号的出或入。
[0199]
处理器430通过硬件和软件实现。处理器430可以实现为一个或多个cpu芯片、核(例如,多核处理器)、fpga、asic和dsp。处理器430与入端口410、接收单元420、发送器单元440、出端口450和存储器460通信。处理器430包括译码模块470。译码模块470实现上述公开的实施例。例如,译码模块470实现、处理、准备或提供各种译码操作。因此,包括译码模块470大大提高了视频译码设备400的功能,并影响视频译码设备400到不同状态的转换。或者,译码模块470实现为存储在存储器460中并由处理器430执行的指令。
[0200]
存储器460可以包括一个或多个磁盘、磁带机和固态硬盘,并且可以用作溢出数据存储设备,以在选择此类程序用于执行时存储程序,以及存储在程序执行期间读取的指令和数据。例如,存储器460可以是易失性和/或非易失性的,并且可以是只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、三元内容寻址存储器(ternary content

addressable memory,tcam)和/或静态随机存取存储器(static random

access memory,sram)。
[0201]
图5为根据示例性实施例的装置500的简化框图,该装置500可以用作图1中的源设备12和目的地设备14中的一者或两者。
[0202]
装置500中的处理器502可以是中央处理器。或者,处理器502可以是能够操纵或处理现在存在或以后开发的信息的任何其它类型的设备或多个设备。尽管所公开的实现方式可以通过单个处理器(例如处理器502)实施,但是可以通过一个以上的处理器来提高速度
和效率。
[0203]
装置500中的存储器504在一种实现方式中可以是只读存储器(read only memory,rom)设备或随机存取存储器(random access memory,ram)设备。可以使用任何其它合适类型的存储设备作为存储器504。存储器504可以包括由处理器502通过总线512访问的代码和数据506。存储器504还可以包括操作系统508和应用程序510,应用程序510包括使处理器502执行本文描述的方法的至少一个程序。例如,应用程序510可以包括应用程序1至n,其还包括执行本文所描述的方法的视频译码应用程序。
[0204]
装置500还可以包括一个或多个输出设备,例如显示器518。在一个示例中,显示器518可以是触摸敏感显示器,触摸敏感显示器将显示器与可操作以感测触摸输入的触摸敏感元件相结合。显示器518可以通过总线512耦合到处理器502。
[0205]
尽管在这里描述为单个总线,但装置500的总线512可以由多个总线组成。此外,辅助存储器514可以直接耦合到装置500的其它组件,或者可以通过网络访问,并且可以包括单个集成单元(例如存储卡)或多个单元(例如多个存储卡)。因此,可以以多种配置实现装置500。
[0206]
运动矢量修正(mvr)
[0207]
运动矢量通常至少部分地在编码端确定,并在译码码流中指示到解码器。但是,也可以在解码器中(以及编码器中)从码流中表示的初始运动矢量开始修正运动矢量。在这种情况下,例如,可以使用初始运动矢量指向的已经解码的像素片(patch)之间的相似度来提高初始运动矢量的准确度。这种运动修正的优点是可以减少指示开销:在编码器和解码器中以相同的方式提高初始运动的准确度,因此不需要用于修正的附加的指示。
[0208]
需要说明的是,修正前的初始运动矢量可以不是能够进行最佳预测的最佳运动矢量。由于初始运动矢量在码流中指示,因此无法以非常高的准确度表示初始运动矢量(这将增加比特率),因此需要使用运动矢量修正过程对初始运动矢量进行处理。例如,初始运动矢量可以是在预测当前块的相邻块时使用的运动矢量。在这种情况下,只需在码流中进行指示,以表示当前块使用的相邻块的运动矢量。这种预测机制可以明显减少表示初始运动矢量需要的比特数。但是,因为通常预期两个相邻块的运动矢量不相同,所以初始运动矢量的准确度会较低。
[0209]
进一步修正在编码端推导的并在码流中提供(指示)的运动矢量可以在不增加指示开销的情况下进一步提高运动矢量的准确度。在没有编码器协助的情况下,可以在解码器中执行运动矢量修正。解码器回路中的编码器可以采用相同的修正来获取如解码器中可用的相应的修正运动矢量。通过确定重建样本的模板、确定围绕当前块的初始运动信息的搜索空间,以及在搜索空间中找到最佳匹配该模板的参考图像部分,来执行对当前图像中正在重建的当前块的修正。最佳匹配部分确定当前块的修正运动矢量,该修正运动矢量然后用于获取当前块(即正在重建的当前块)的帧间预测样本。
[0210]
运动矢量修正是图2中的帧间预测单元(244)和图3中的帧间预测单元344的一部分。
[0211]
运动矢量修正可以按照如下步骤进行:
[0212]
通常,可以根据码流中的表示确定初始运动矢量。例如,可以在码流中指示索引,该索引表示候选运动矢量列表中的位置。在另一个示例中,可以在码流中指示运动矢量预
测值索引和运动矢量差值。根据码流中的表示确定的运动矢量定义为初始运动矢量。在双向预测的情况下,当前块的帧间预测是根据预测样本块的加权组合获得的,预测样本块是根据两个运动矢量确定,将列表l0中第一参考图像的初始运动矢量表示为mv0,将列表l1中第二参考图像的初始运动矢量表示为mv1。
[0213]
利用初始运动矢量,确定修正候选运动矢量(motion vector,mv)对。需要确定至少两个修正候选对。通常,根据初始运动矢量对(mv0,mv1)确定修正候选运动矢量对。此外,通过将mv0和mv1加上小的运动矢量差来确定候选mv对。例如,候选mv对可以包括以下内容:
[0214]
·
(mv0,mv1)
[0215]
·
(mv0+(0,1),mv1+(0,

1))
[0216]
·
(mv0+(1,0),mv1+(

1,0))
[0217]
·
(mv0+(0,

1),mv1+(0,1))
[0218]
·
(mv0+(

1,0),mv1+(1,0))
[0219]
·
……
[0220]
其中,(1,

1)表示在水平(或x)方向上位移为1,且在垂直(或y)方向上位移为

1的矢量。
[0221]
需要说明的是,上述候选对列表仅为示例性说明,本发明并不限于具体的候选列表。
[0222]
修正候选运动矢量(motion vector,mv)对形成运动矢量修正过程的搜索空间。
[0223]
在当前块的双向预测中,将使用列表l0的相应第一运动矢量和列表l1的第二运动矢量获得的两个预测块组合为单个预测信号,这比单向预测能更好地适配原始信号,从而残留信息更少并且压缩更高效。
[0224]
在运动矢量修正中,根据每个修正候选mv对的相似度度量,对使用候选mv对的相应第一运动矢量和第二运动矢量获得的两个预测块进行比较。通常选择相似度最高的候选mv对作为修正运动矢量。列表l0中第一参考图像的修正运动矢量和列表l1中第二参考图像的修正运动矢量分别表示为mv0’和mv1’。换句话说,获取对应于候选运动矢量对的列表l0运动矢量和列表l1运动矢量的预测,然后根据相似度度量进行比较。选择关联相似度最高的候选运动矢量对作为修正mv对。
[0225]
通常,修正过程的输出是修正mv。修正mv可以与初始mv相同,也可以与初始mv不同,这取决于哪个候选mv对达到最高相似度。由初始mv构成的候选mv对也属于mv对候选。换句话说,如果达到最高相似度的最高候选mv对是由初始mv构成的,则修正mv与初始mv相同。
[0226]
另一种方法是选择最小化不相似度度量的位置,而不是选择最大化相似度度量的位置。不相似度比较度量可以是sad(绝对差之和)、mrsad(去均值绝对差之和)、sse(误差平方和)等。两个预测块之间的sad可以通过候选mv对(cmv0,cmv1)获取,sad可以如下计算:
[0227][0228]
其中,ncbh和ncbw为预测块的高度和宽度,函数abs(a)表示参数a的绝对值,predsamplesl0和predsamplesl1是根据候选mv对获得的预测块样本,该候选mv对表示为(cmv0,cmv1)。
[0229]
或者,可以通过仅评估预测块中的样本子集来获取不相似度比较度量,以便减少计算次数。下面是一个示例,其中,样本行可选择地包括在sad计算中(每隔一行进行评估)。
[0230][0231]
jvet(itu

t sg 16wp 3和iso/iec jtc 1/sc 29/wg 11)的文档jvet

m1001

v3“《通用视频译码(草案4)》中说明了运动矢量修正的一个示例,可在http://phenix.it

sudparis.eu/jvet/”下公开查阅。文档中的“8.4.3解码端运动矢量修正过程”这一章节举例说明了运动矢量修正。
[0232]
在一些实施例中,为了降低用于修正的内部存储器要求,可以对亮度样本块独立地执行运动矢量修正过程,该亮度样本块是通过将亮度样本中超过某个预定宽度或预定高度的译码样本块分割为小于或等于亮度中预定宽度和预定高度的样本子块而获得的。分割的编码块内每个子块的修正mv对可以不同。然后,使用子块的修正mv对为每个子块执行亮度和色度的帧间预测。
[0233]
初始mv对的每个mv可以具有分数像素精度。换句话说,mv表示当前样本块与重采样参考区域之间的位移,并且该位移可以指向重建参考样本的整数网格在水平和垂直方向上的分数位置。通常,对重建参考整数样本网格值执行2维插值以获得分数样本偏移位置处的样本值。使用候选mv对从重建参考图像中获取预测样本的过程可以通过以下方法中的一种来执行:
[0234]
·
将初始mv对的小数部分取整到最接近的整数位置,并获取重建参考图像的整数网格值。
[0235]
·
执行2抽头(例如双线性)可分离双线性插值,以获得由初始mv对表示的分数像素准确度下的预测样本值。
[0236]
·
执行更高抽头(例如8抽头或6抽头)可分离插值,以获得由初始mv对表示的分数像素准确度下的预测样本值。
[0237]
虽然候选mv对可以相对于初始mv对具有任意子像素偏移,但是在一些实施例中,为了简化搜索,候选mv对被选择为相对于初始mv对具有整数像素距离。在这种情况下,可以通过对围绕初始mv对的样本块执行预测来获取跨越所有候选mv对的预测样本,以覆盖围绕初始mv对的所有修正位置。
[0238]
在一些实施例中,一旦评估了与初始mv对距离整数距离的所有候选mv对处的不相似度成本值,就添加距离最佳成本值位置子像素距离偏移处的附加的候选mv对。使用上述方法之一获取这些位置中的每一个的预测样本,并评估和比较不相似度成本以获得最低不相似度位置。在某些其它实施例中,为了避免对于围绕最佳成本整数距离位置的每个子像素距离位置的这种计算成本高昂的预测过程,记住评估的整数距离成本值,并且参数误差面拟合在最佳整数距离位置附近。然后分析计算该误差面的最小值,并用作具有最小不相似度的位置。在这种情况下,不相似度成本值是通过计算的整数距离成本值推导的。
[0239]
可以根据给定译码样本块的某些译码属性,对译码样本块应用运动矢量修正。此
类译码属性的一些示例可以是:
[0240]
·
从当前图像到用于样本的编码块的双向预测的两个参考图像的图像数量距离(当以均匀帧速率采样时)相等,并且落在当前图像的相对侧。
[0241]
·
使用初始mv对获得的两个预测块之间的初始不相似度小于预定的每样本阈值。
[0242]
双向预测光流修正(bpof)
[0243]
双向预测光流修正是提高块的双向预测准确度的过程,除了为双向预测指示外,无需在码流中另外显式指示。它是图2中的帧间预测单元(244)和图3中的344的一部分。
[0244]
在双向预测中,根据两个运动矢量获取两个帧间预测,然后使用加权平均法对这两个帧间预测进行组合。组合预测中抵消了两个参考片(reference patch)的量化噪声,因此可以使剩余能量减少,从而获得比单向预测高的译码效率。双向预测中的加权组合可以通过以下方程进行:
[0245]
双向预测=预测1
×
w1+预测2
×
w2+k。
[0246]
其中,w1和w2是加权因子,可以在码流中指示或者可以在编码端或解码端预定义。k是加性因子,也可以在码流中指示,或者在编码端或解码端预定义。例如,可以使用以下公式获取双向预测:
[0247]
双向预测=(预测1+预测2)/2,
[0248]
其中,w1和w2设置为1/2,k设置为0。
[0249]
光流修正的目的是提高双向预测的准确度。光流是图像物体在两个连续帧之间的表观运动模式,光流是由物体或摄像机的运动引起的。光流修正过程通过使用光流方程(求解光流方程)提高了双向预测的准确度。
[0250]
在一个示例中,像素i(x,y,t)位于第一帧(x和y对应空间坐标,t对应时间维度)。像素表示的对象在dt时间之后的下一帧中移动了距离(dx,dy)。由于这些像素是相同的,并且强度不变,所以光流方程由以下方程给出:
[0251]
i(x,y,t)=i(x+dx,y+dy,t+dt)
[0252]
i(x,y,t)表示在(x,y,t)坐标处像素的强度(样本值)。
[0253]
在另一个示例中,忽略泰勒级数展开中的小位移和高阶项,光流方程也可以写成:
[0254][0255]
其中,和是位置(x,y)的水平和垂直空间样本梯度,是位置(x,y)除对时间的偏导数。
[0256]
光流修正利用上述原理来提高双向预测的质量。
[0257]
光流修正的实现通常包括以下步骤:
[0258]
1.计算样本梯度;
[0259]
2.计算第一预测和第二预测的差值;
[0260]
3.计算像素或像素组的位移,该位移最小化使用光流方程获得的两个参考片之间的误差δ,
[0261]
[0262]
其中,i
(0)
对应于第一预测的样本值,i
(1)
是第二预测的样本值,和是

x和

y方向的梯度。其中,τ1和τ0表示到获取第一预测和第二预测的参考图像的距离。运动矢量(v
x
,v
y
)是通过最小化过程获得的。一些方法将误差平方和最小化,而一些方法将绝对误差和最小化。
[0263]
4.使用如下光流方程:
[0264][0265]
其中,pred
bio
表示修改后的预测,该修改后的预测是光流修正过程的输出。
[0266]
样本梯度可以通过以下公式获取:
[0267]
·
[0268]
·
[0269]
在一些实施例中,估计一组像素的位移,以简化每个像素的位移估计。在一些示例中,为了计算4
×
4亮度样本块的改进的双向预测,使用以4
×
4样本块为中心的8
×
8亮度样本块的样本值来估计位移。
[0270]
光流修正过程的输入是两个参考图像的预测样本,光流修正的输出是根据光流方程计算的组合预测(predbio)。
[0271]
在jvet

m1001文件《通用视频译码(草案4)》的8.4.7.4“双向光流预测过程”一节中解释了光流修正的一个示例。
[0272]
因为术语光流修正、双向预测光流修正和双向光流修正在本质上是等效的,因此在本发明中可互换地使用。
[0273]
在一个示例中,连续使用运动矢量修正和光流修正,如下所示:
[0274]
步骤0,获取初始运动矢量,如图8中的1010所示。
[0275]
步骤1,应用运动矢量修正(1020),并且获取修正运动矢量(1030)。
[0276]
步骤2,根据修正运动矢量获取预测(1040)。获得的预测分别为i
(0)
和i
(1)
,它们是光流修正过程的输入。
[0277]
步骤3,使用光流修正过程进行预测,以获得修改后的预测。根据光流方程获取修改后的预测,用pred
bio
表示。
[0278]
但是,光流修正过程是计算密集的。使用光流修正会增加解码时间。
[0279]
在本发明的一个实施例中,公开了一种决定是否使用光流修正的方法,可以根据在运动矢量修正过程中执行的计算来决定。
[0280]
更具体地,使用在运动矢量修正过程中执行的计算的结果来确定是否使用光流修正。
[0281]
本发明的目的是根据特定条件跳过光流修正的应用,从而(通过跳过必要的计算)减少平均解码时间。
[0282]
根据第一示例性实施例,通过以下步骤获取当前编码块的预测:
[0283]
步骤0:根据码流中的指示信息获取初始运动矢量。
[0284]
步骤1:根据初始运动矢量和m抽头插值滤波器获取第一预测。
[0285]
步骤2:根据第一预测获取匹配成本。
[0286]
步骤3:根据初始运动矢量和匹配成本获取修正运动矢量。
[0287]
步骤4:根据修正运动矢量和k抽头插值滤波器获取第二预测。
[0288]
步骤5:根据匹配成本确定是否执行光流修正过程。在一个示例中,将匹配成本与阈值进行比较,当匹配成本的值大于或等于阈值时,执行光流修正过程。也可以在步骤3或步骤4之前执行步骤5。
[0289]
步骤6:当确定需要执行光流修正过程时,使用光流修正,以第二预测为输入,以修改后的第二预测为输出。如果确定不使用光流修正,则不对第二预测使用光流修正。换句话说,当确定需要执行光流修正过程时,根据第二预测和根据光流修正过程获取当前编码块的最终预测。否则,根据第二预测获取当前编码块的最终预测,无需使用光流修正过程。
[0290]
具体步骤如下:
[0291]
在步骤0中,获取两个初始运动矢量作为输入。可以根据码流中的指示信息确定初始运动矢量。例如,可以在码流中指示索引,该索引表示候选运动矢量列表中的位置。在另一个示例中,可以在码流中指示运动矢量预测值索引和运动矢量差值。根据码流中的指示信息确定的运动矢量定义为初始运动矢量。
[0292]
在另一个示例中,可以从码流中获取参考图像指示,根据参考图像指示获取初始运动矢量。参考图像指示用于确定初始运动矢量指向的参考图像。
[0293]
步骤1、步骤2和步骤3对应于上述示例中解释的运动矢量修正过程。根据运动矢量修正对初始运动矢量进行修正。在一个示例中,匹配成本是运动矢量修正中使用的相似度度量。
[0294]
根据步骤1,获取对应于初始运动矢量的第一预测。在一个示例中,运动矢量修正过程中的候选运动矢量至少为两对,其中一对通常是由初始运动矢量(mv0,mv1)构成的对。换句话说,候选运动矢量集通常包括一对以上,其中,其中一对通常为(mv0,mv1)。通过将运动矢量加上小微扰(如上述示例中解释的),根据(mv0,mv1)确定另一对候选运动矢量。
[0295]
在步骤1中,根据m抽头插值滤波器获取对应于每对候选运动矢量的第一预测。例如,可以通过在参考图像(已经在编码器中编码或已经解码器中解码的图像)中定位矩形块来获取对应于mv0的一个预测,其中,mv0指向该块。随后,插值滤波器有利地应用于mv0指向的块内的样本。为了提供更精确的运动估计,可以通过在像素之间插值样本来提高参考图像的分辨率。可以通过最接近的像素的加权平均来执行分数像素插值。这里,m抽头滤波器典型地可以是2、4、6或8抽头滤波器(不限于这些选项),这意味着滤波器具有m个乘法系数。类似地,通过将矩形块定位在相同或不同的参考图像中,可以获得mv1的预测。矩形的尺寸与当前编码块的尺寸成正比。
[0296]
在步骤2中,根据第一预测确定与每对候选运动矢量相关的匹配成本。
[0297]
根据步骤2,获取对应于修正候选运动矢量(motion vector,mv)对中的一对的至少一个匹配成本(例如,相似度度量)。两个预测块的相似度越高,匹配成本越小。
[0298]
所述匹配成本用于步骤3中的初始运动矢量的修正。根据所述匹配成本选择修正运动矢量。
[0299]
在步骤4中,根据修正运动矢量和k抽头插值滤波器获取第二预测。在两个修正运动矢量(mv0’和mv1’)的情况下,即双向预测的情况下,获取两个第二预测。
[0300]
通过使用第二插值滤波器(k抽头滤波器)获取第二预测,第二插值滤波器可以与
第一插值滤波器(m抽头滤波器)相同或不同。类似于第一预测,通过使用第二插值滤波器并根据参考图像中由mv0’和mv1’指向的块,获取第二预测。
[0301]
在步骤5中,所述匹配成本用于根据以下内容确定是否执行光流修正过程:
[0302]
当匹配成本的值小于预定义阈值时,不应用光流修正。当匹配成本的值大于或等于阈值时,执行光流修正过程。如果执行光流修正过程,则对最终预测的样本进行修改。
[0303]
在步骤6中,根据步骤5的输出,如果匹配成本大于或等于所述阈值,则对第二预测应用光流修正过程,根据mv0’和mv1’(修正运动矢量)获取第二预测。当前编码块的最终预测是通过对第二预测执行光流修正过程获得的,mv0’和mv1’指向第二预测。如果匹配成本小于所述阈值,则根据mv0’和mv1’指向的第二预测获取最终预测,而不应用光流修正,即不执行步骤6。
[0304]
在一种实现方式中,步骤2中的匹配成本是对应于初始运动矢量对(其为修正候选运动矢量(motion vector,mv)对中的一对)的匹配成本。匹配成本可以对应于mv0、mv1对。
[0305]
在另一种实现方式中,步骤2中的所述匹配成本是等于修正候选运动矢量(motion vector,mv)对中最小匹配成本的匹配成本。换句话说,获取对应于每个修正候选运动矢量对的匹配成本,所述匹配成本等于其中最小的匹配成本。在一个示例中,所述匹配成本是对应于修正运动矢量对mv0’和mv1’的匹配成本(之所以选择该修正运动矢量对(mv0’,mv1’)是因为它具有最小的匹配代价)。
[0306]
例如,可以通过以下方式构造mv对。
[0307]
通过将mv0和mv1加上小的运动矢量差来确定候选mv对。例如,候选mv对可以包括以下内容:
[0308]
(mv0,mv1)
[0309]
(mv0+(0,1),mv1+(0,

1))
[0310]
(mv0+(1,0),mv1+(

1,0))
[0311]
在本技术中,mv0和mv1为初始运动矢量,mv0’和mv1’为修正运动矢量。
[0312]
根据另一种实现方式,当跳过光流修正过程时,根据以下公式获取最终预测:
[0313]
双向预测=预测1
×
w1+预测2
×
w2+k。
[0314]
其中,w1和w2是加权因子,w1和w2可以在码流中指示或者w1和w2可以在编码端或解码端预定义。k是加性因子,也可以在码流中指示,或者在编码端或解码端预定义。
[0315]
例如,可以使用以下公式获取双向预测:
[0316]
双向预测=(预测1+预测2)/2,
[0317]
其中,w1和w2设置为1/2,k设置为0。预测1和预测2为通过k抽头插值滤波获得的第二预测,预测1对应第一修正mv(mv0’),预测2对应第二修正mv(mv1’)。
[0318]
上述方程对两个预测进行加权组合,得到块的最终预测。
[0319]
阈值可以是预定义的值,阈值可以由预测块的尺寸决定。例如,阈值可以为thr=ncbw
×
ncbh
×
k,其中,k为大于0的值,ncbw和ncbh为预测块的宽和高。
[0320]
第一实施例进一步通过图6的流程图举例说明。
[0321]
在一种实现方式中,m抽头滤波器是2抽头滤波器(例如双线性滤波器),其中,抽头中的一个等于0。在该实现方式中,m抽头滤波器采用两个乘数系数,一个系数的值始终等于0。哪个系数的值等于0是根据分数样本点确定的,即运动矢量指向分数样本点。在这种情况
下,根据运动矢量的分数分量,第一乘法器系数的值或第二乘数系数的值可以为0。
[0322]
这样的滤波器(有两个抽头,其中一个为0)可以按照下表进行举例说明:
[0323][0324]
根据初始运动矢量或修正运动矢量的分量可以获得分数样本位置(p)。例如,如果运动矢量的

x分量由mv0x给出,则分数样本位置可以通过p=mv0x%16获取,其中,“%”是取模运算。通常,p=mv0x%k,其中,k表示两个样本位置之间的分数样本位置的数量。上面列举的插值滤波器也可以称为1抽头滤波器,因为每次只有一个滤波器抽头为非零。
[0325]
在一种实现方式中,k的值等于8。在其它示例中,m的值小于8。
[0326]
在一种实现方式中,m的值和k的值均等于8。
[0327]
在710中,获取初始运动矢量,该初始运动矢量是运动矢量修正单元的输入。运动矢量修正单元围绕初始运动矢量构建搜索空间(740)。在一个示例中,搜索空间由候选运动矢量对、对应于第一参考图像的对的第一运动矢量和对应于第二参考图像的对的第二运动矢量组成。在步骤710中,通过应用m抽头插值滤波器获取对应于每个候选运动矢量对的第一预测。作为运动矢量修正的一部分,计算对应于搜索空间中的运动矢量对中的一个的匹配成本(720)。所述匹配成本作为两个过程的一部分使用,第一过程是运动矢量修正(740),其中,所述匹配成本用于决定选择哪一个运动矢量对作为修正运动矢量对(750)。第二过程是是否应用光流修正(770)的决策。在获取修正运动矢量之后,通过步骤(760)获取当前块的第二预测。如果匹配成本大于或等于阈值,则应用光流修正,并且步骤(760)中的预测通过步骤(770)进行修改以获得修改后的预测(780)。修改后的预测通常在样本值上与步骤
(760)中的第二预测不同。
[0328]
在一个示例中,多次执行运动矢量修正过程以进一步修正运动矢量。在本示例中,首先通过运动矢量修正过程对初始运动矢量进行修正,以获得第一修正运动矢量。之后,再执行一次运动矢量修正,此时将第一修正运动矢量视为第二运动矢量修正的初始运动矢量。
[0329]
根据第二示例性实施例,应用以下步骤以获得当前编码块的预测:
[0330]
步骤0:根据码流中的指示信息获取初始运动矢量。
[0331]
步骤1:根据初始运动矢量和m抽头插值滤波器获取第一预测。
[0332]
步骤2:根据第一预测获取n个匹配成本。
[0333]
步骤3:根据初始运动矢量和n个匹配成本,根据第一函数,获取修正运动矢量。
[0334]
步骤4:根据修正运动矢量和k抽头插值滤波器获取第二预测。
[0335]
步骤5:根据n个匹配成本确定是否执行光流修正过程。根据n个匹配成本和第二函数获得推导成本。在一个示例中,将推导成本与阈值进行比较,当推导成本的值大于或等于阈值时,执行光流修正过程。也可以在步骤3或步骤4之前执行步骤5。
[0336]
步骤6:当确定需要执行光流修正过程时,应用光流修正对当前编码块的预测的至少一个样本进行修改。
[0337]
当确定需要执行光流修正过程时,使用光流修正,以第二预测为输入,以修改后的第二预测为输出。如果确定不使用光流修正,则不对第二预测使用光流修正。换句话说,当确定需要执行光流修正过程时,根据第二预测和根据光流修正过程获取当前编码块的最终预测。否则,根据第二预测获取当前编码块的最终预测,无需使用光流修正过程。
[0338]
具体步骤如下:
[0339]
在步骤0中,获取两个初始运动矢量作为输入。可以根据码流中的指示信息确定初始运动矢量。例如,可以在码流中指示索引,该索引表示候选运动矢量列表中的位置。在另一个示例中,可以在码流中指示运动矢量预测值索引和运动矢量差值。根据码流中的指示信息确定的运动矢量定义为初始运动矢量。
[0340]
在另一个示例中,可以从码流中获取参考图像指示,根据参考图像指示获取初始运动矢量。参考图像指示用于确定初始运动矢量指向的参考图像。
[0341]
步骤1、步骤2和步骤3对应于上述示例中解释的运动矢量修正过程。根据运动矢量修正对初始运动矢量进行修正。在一个示例中,匹配成本是运动矢量修正中使用的相似度度量。
[0342]
根据步骤1,获取对应于初始运动矢量的第一预测。在一个示例中,运动矢量修正过程中的候选运动矢量至少为两对,其中一对通常是由初始运动矢量(mv0,mv1)构成的对。通过将运动矢量加上小微扰(如上述示例中解释的),根据(mv0,mv1)确定另一对候选运动矢量。
[0343]
在步骤1中,根据m抽头插值滤波器获取对应于每对候选运动矢量的第一预测。
[0344]
在步骤2中,根据第一预测确定与n对候选运动矢量相关联的n个匹配成本。
[0345]
根据步骤2,获取对应于n个修正候选运动矢量(motion vector,mv)对的n个匹配成本(相似度度量)。两个预测块的相似度越高,匹配成本越小。
[0346]
所述n个匹配成本用于步骤3中的初始运动矢量的修正。
[0347]
根据第一函数和n个匹配成本确定修正运动矢量。
[0348]
在一个示例中,可以根据以下函数获取修正运动矢量:
[0349]

如果(sad[3]+sad[5])等于(sad[4]<<1),则将dmvoffset[0]设置为等于0,
[0350]

否则,以下情况适用:
[0351]
dmvoffset[0]=((sad[3]

sad[5])<<3)/(sad[3]+sad[5]

(sad[4]<<1))
[0352]

如果(sad[1]+ad[7])等于(sad[4]<<1),则将dmvoffset[1]设置为等于0,
[0353]

否则,以下情况适用:
[0354]
dmvoffset[1]=((sad[1]

sad[7])<<3)/(sad[1]+sad[7]

(sad[4]<<1))
[0355]
其中,dmvoffset[0]和dmvoffset[1]表示初始运动矢量与修正运动矢量之间的差值。在一个示例中,dmvoffset[0]和dmvoffset[1]表示修正运动矢量与初始运动矢量之差的

x和

y分量。sad[0]至sad[7]为n个匹配成本,对应n个候选运动矢量对。将初始运动矢量加上dmvoffset,获取修正运动矢量。
[0356]
可以存在其它函数,用于根据n个匹配成本确定修正运动矢量。本发明的第一函数不限于上述方程。
[0357]
在步骤4中,根据修正运动矢量和k抽头插值滤波器获取第二预测。在两个修正运动矢量(mv0’和mv1’)的情况下,即双向预测的情况下,获取两个第二预测。
[0358]
通过使用第二插值滤波器(k抽头滤波器)获取第二预测,第二插值滤波器可以与第一插值滤波器(m抽头滤波器)相同或不同。类似于第一预测,通过使用第二插值滤波器并根据参考图像中由mv0’和mv1’指向的块,获取第二预测。
[0359]
在步骤5中,根据第二函数和所述n个匹配成本获取推导成本。推导成本用于确定是否执行光流修正过程。当所述推导成本的值小于预定义阈值时,跳过光流修正过程。当推导成本的值大于或等于阈值时,执行光流修正过程。如果执行光流修正过程,则对最终预测的样本进行修改。
[0360]
在步骤6中,根据步骤5的输出,如果推导成本大于所述阈值,则对第二预测应用光流修正过程,根据mv0’和mv1’(修正运动矢量)获取第二预测。当前编码块的最终预测是通过对第二预测执行光流修正过程获得的,mv0’和mv1’指向第二预测。如果匹配成本小于所述阈值,则根据mv0’和mv1’指向的第二预测获取最终预测,而不应用光流修正,即不执行步骤6。
[0361]
根据另一种实现方式,当跳过光流修正过程时,根据以下公式获取最终预测:
[0362]
双向预测=预测1
×
w1+预测2
×
w2+k。
[0363]
其中,w1和w2是加权因子,w1和w2可以在码流中指示或者可以在编码端或解码端预定义。k是加性因子,也可以在码流中指示,或者在编码端或解码端预定义。例如,可以使用以下公式获取双向预测:
[0364]
双向预测=(预测1+预测2)/2,
[0365]
其中,w1和w2设置为1/2,k设置为0。预测1和预测2为通过k抽头插值滤波获得的第二预测,预测1对应第一修正mv(mv0’),预测2对应第二修正mv(mv1’)。
[0366]
上述方程对两个预测进行加权组合,得到块的最终预测。
[0367]
阈值可以是预定义的值,阈值由预测块的尺寸决定。例如,阈值可以为thr=ncbw
×
ncbh
×
k,其中,k为大于0的值,ncbw和ncbh为预测块的宽和高。
[0368]
第二实施例进一步通过图7的流程图举例说明。
[0369]
在一种实现方式中,m抽头滤波器是2抽头滤波器(例如双线性滤波器),其中,抽头中的一个等于0。在该实现方式中,m抽头滤波器采用两个乘数系数,一个系数的值始终等于0。等于0的系数根据运动矢量指向的分数样本点确定。在这种情况下,根据运动矢量的分数分量,第一乘法器系数的值或第二乘数系数的值可以为0。
[0370]
这样的滤波器(有两个抽头,其中一个为0)可以按照下表进行举例说明:
[0371][0372]
根据初始运动矢量或修正运动矢量的分量可以获得分数样本位置(p)。例如,如果运动矢量的

x分量由mv0x给出,则分数样本位置可以通过p=mv0x%16获取,其中,“%”是取模运算。通常,p=mv0x%k,其中,k表示两个样本位置之间的分数样本位置的数量。上面列举的插值滤波器也可以称为1抽头滤波器,因为每次只有一个滤波器抽头为非零。
[0373]
双线性插值滤波器的另一个示例可以如下,在这种情况下,滤波器系数均为非零:
[0374]
[0375][0376]
在一种实现方式中,k的值等于8。在其它示例中,m的值小于8。
[0377]
在一种实现方式中,m的值和k的值均等于8。
[0378]
在一种实现方式中,第二函数可以为根据dmvoffset对n个匹配成本进行线性组合的函数,其中,dmvoffset已在步骤3中获取。x和y的线性组合是ax+by形式的任何表达式,其中,a和b是常数。在一个示例中,常数a和b可以根据dmvoffset确定。下面给出第二个函数的示例。
[0379]
在一种实现方式中,第二函数可以为:
[0380]
·
sad[1]*a+sad[2]*b+sad[3]*c+sad[4]*d,其中,a、b、c、d大于或等于0。在一个示例中,a、b、c和d可以是介于0与1之间的数,并且它们的和为1(即a+b+c+d=1)。在另一个示例中,a、b、c和d可以是大于或等于0的数,并且它们的和等于预定义的固定数p,p可以等于1、2、4、8、16等。
[0381]
·
a、b、c和d可以是预定义的固定数。
[0382]
·
a、b、c和d可以根据dmvoffset[0]和dmvoffset[1]推导。在一个示例中,a=dmvoffset[0],b=p1

dmvoffset[0],c=dmvoffset[1],d=p2

dmvoffset[1]。其中,p1和p2可以等于1、4、8、16等。
[0383]
·
以上方程为举例。该方程表示4个匹配成本的线性组合,以获得推导成本。在该方程中,使用dmvoffset,dmvoffset可以在步骤3中获取。dmvoffset表示修正运动矢量与初始运动矢量的差值。在一种具体实现方式中,dmvoffset定义为mv0与mv0’之间的差值。更具体地,dmvoffset[0]可以是mv0和mv0’的

x分量之间的差值,而dmvoffset[1]可以是mv0和
mv0’的

y分量之间的差值。
[0384]
在另一种实现方式中,第二函数可以为:
[0385]
·
sad[1]*a+sad[2]*b+sad[3]*c,其中,a、b、c大于或等于0。在一个示例中,a、b和c可以是介于0与1之间的数,并且它们的和为1(即a+b+c=1)。在另一个示例中,a、b和c可以是大于或等于0的数,并且它们的和等于预定义的固定数p,p可以等于1、2、4、8、16等。
[0386]
·
a、b、c为预定义的固定数。
[0387]
·
a、b和c可以根据dmvoffset[0]和dmvoffset[1]推导。在一个示例中,a=p

dmvoffset[0]

dmvoffset[1],b=dmvoffset[0],c=dmvoffset[1]。其中,p可以等于1、4、8、16等。
[0388]
·
以上方程为举例。该方程表示3个匹配成本的线性组合,以获得推导成本。在该方程中,使用dmvoffset,dmvoffset可以在步骤3中获取。dmvoffset表示修正运动矢量与初始运动矢量的差值。在一个示例中,dmvoffset定义为mv0与mv0’之间的差值。更具体地,dmvoffset[0]可以是mv0和mv0’的

x分量之间的差值,而dmvoffset[1]可以是mv0和mv0’的

y分量之间的差值。
[0389]
在另一种实现方式中,获取推导成本的第二函数可以为:
[0390]
·
在修正mv对和与修正mv对处于整数距离的候选mv对上使用5个评估的不相似成本值(如sad值),拟合参数误差面函数:
[0391]
e(x,y)=a
×
(x

x0)2+b
×
(y

y0)2+c
[0392]
其中,(x0,y0)对应于两个参考片之间的不相似度最小化的位置,c是(x0,y0)处的成本值,a和b是模型系数。如果5个成本值可用,则这5个未知数可以精确地求解。换句话说,e(x,y)的方程假设匹配成本的形状作为最小匹配成本位置附近的空间位置的函数是抛物线形状的。
[0393]
在一个实施例中,使用位于修正mv对的左、上、右和下的一个整数像素距离的候选mv对。在这种情况下,给定在(0,0)、(

1,0)、(0,

1)、(1,0)和(0,1)的(x,y)位置处的e(x,y)的评估值和e(x,y)的参数方程,5个未知数a、b、c、x0、y0可以求解如下:
[0394]
a=(e(

1,0)+e(1,0)
–2×
e(0,0))/2
[0395]
b=(e(0,

1)+e(0,1)
–2×
e(0,0))/2
[0396]
x0=(e(

1,0)

e(1,0))/(2
×
(e(

1,0)+e(1,0)
–2×
e(0,0)))
[0397]
y0=(e(0,

1)

e(0,1))/(2
×
(e(0,

1)+e(0,1)
–2×
e(0,0)))
[0398][0399]
另一个方面,如果5个以上位置的成本值可用,则可以使用最小二乘法或类似方法求解5个未知数。然后,获得的c的值为推导成本。
[0400]
在一种实现方式中,第二函数可以如下:
[0401]
[0402]
其中,k是大于0的标量,sad[0]至sad[4]是n个匹配成本。
[0403]
在一个示例中,多次执行运动矢量修正过程以进一步修正运动矢量。在本示例中,首先通过运动矢量修正过程对初始运动矢量进行修正,以获得第一修正运动矢量。之后,再执行一次运动矢量修正,此时将第一修正运动矢量视为第二运动矢量修正的初始运动矢量。
[0404]
在925中,获取初始运动矢量,该初始运动矢量是运动矢量修正单元的输入。运动矢量修正单元围绕初始运动矢量构建搜索空间(930)。在一个示例中,搜索空间由候选运动矢量对、对应于第一参考图像的对的第一运动矢量和对应于第二参考图像的对的第二运动矢量组成。在步骤910中,通过应用m抽头插值滤波器获取对应于每个候选运动矢量对的第一预测。作为运动矢量修正的一部分,计算对应于搜索空间中的n个运动矢量对的匹配成本(915)。所述n个匹配成本作为两个过程的一部分使用,第一过程是运动矢量修正(930),其中,匹配成本用于根据以n个匹配成本作为输入的函数计算修正运动矢量对(935)。第二过程是是否应用光流修正(950)的决策,其中,通过步骤945做出决策。在获取修正运动矢量之后,通过步骤(940)获取当前块的第二预测。如果匹配成本大于阈值,则应用光流修正,并且步骤(940)中的预测通过步骤(950)进行修改以获得修改后的预测(955至960)。修改后的预测通常在样本值上与步骤(940)中的第二预测不同。如果匹配成本小于阈值,则不应用光流修正,并将第二预测设置为输出(当前块的最终预测)。
[0405]
根据本发明的第三示例性实施例,为了获取当前编码块的预测,应用以下步骤:
[0406]
步骤0:根据码流中的指示信息获取初始运动矢量对。
[0407]
步骤1:根据初始mv对和m抽头插值滤波器获取第一预测样本集。
[0408]
步骤2:使用第一预测样本集获取对应于初始mv对的第一匹配成本。
[0409]
步骤3:确定当前编码块是否有资格执行运动矢量修正。
[0410]
步骤4:如果在步骤3中确定当前编码块有资格执行mvr,则,
[0411]
步骤4a:根据初始mv对和匹配成本,通过运动矢量修正过程获取修正mv对和对应于修正mv对的匹配成本。
[0412]
步骤4b:根据修正mv对和k抽头插值滤波器获取第二预测样本集。
[0413]
步骤4c:根据第二匹配成本确定是否执行光流修正过程。在一个示例中,将匹配成本与阈值进行比较,当匹配成本的值大于或等于阈值时,执行光流修正过程。
[0414]
步骤5:否则,(如果在步骤3中确定当前编码块没有资格执行mvr),
[0415]
步骤5a:根据初始mv对和k抽头插值滤波器获取第二预测样本集。
[0416]
步骤5b:根据第一匹配成本确定是否执行光流修正过程。在一个示例中,将匹配成本与阈值进行比较,当匹配成本的值大于或等于阈值时,执行光流修正过程。
[0417]
步骤6:当确定需要执行光流修正过程时(在步骤4c或步骤5b中),使用光流修正,以第二预测为输入,以修改后的第二预测为输出。如果确定不使用光流修正,则不对第二预测使用光流修正。换句话说,当确定需要执行光流修正过程时,根据第二预测和根据光流修正过程获取当前编码块的最终预测。否则,根据第二预测获取当前编码块的最终预测,无需使用光流修正过程。
[0418]
本实施例在图9的流程图中进一步说明。框1110:接收参考l0和l1中用于预测的当前编码块的初始mv对。框1110对应于步骤1,其中,使用初始mv对和图像l0和l1的重建参考
样本获取第一预测样本集。框1120对应于步骤2,其中,在对应于初始mv对的第一预测样本块集之间评估第一匹配成本(或不相似度度量,例如sad)(如背景技术mvr部分所描述)。框1130对应于步骤3,其中,检查对当前编码块执行mvr的资格条件。框1140对应于步骤4a,其中,如果发现当前编码块有资格执行mvr,则通过执行mvr(如背景技术mvr部分所描述)获取修正mv对,并获取对应于修正mv对的第二匹配成本(或不相似度量)。框1150对应于步骤4b,其中,使用k抽头插值滤波器(在水平和垂直方向上)使用修正mv对获取第二预测样本集。框1160对应于步骤4c,其中,检查第二匹配成本是否小于预定阈值,小于预定阈值时跳过基于双向预测光流的修正和双向预测。框1180对应于步骤5a,其中,当前编码块跳过mvr,并使用k抽头插值滤波器使用初始mv对获取第二预测样本集。框1185对应于步骤5b,其中,检查第一匹配成本是否小于预定阈值,小于预定阈值时跳过bpof。框1170和1195对应于步骤6的一部分,其中,如果步骤4c或步骤5b中的检查指示第二匹配成本或第一匹配成本分别小于预定阈值(小于预定阈值时跳过bpof),则对第二预测样本集执行双向预测加权平均,不执行bpof。框1175对应于步骤6的一部分,其中,如果步骤4c或步骤5b中的检查指示第二匹配成本或第一匹配成本不小于预定阈值(小于预定阈值时跳过bpof),则获取估计光流,并使用第二预测样本集、第二预测值样本集的梯度和估计光流获取最终双向预测。
[0419]
需要说明的是,利用运动矢量修正过程所要求的在当前编码单元内的样本子块上计算的第一匹配成本或第二匹配成本来确定基于双向预测光流的修正过程的提前终止,跳过或执行bpof的决策可以在编码单元内从一个mvr子块到另一个mvr子块之间变化。根据步骤4c或步骤5中执行的确定,应对子块内的所有bpof应用单元(例如像素级或4
×
4样本块级)执行或跳过bpof。
[0420]
在某些实施例中,可以通过获取对应于mvr子块中的每个bpof应用单元的部分匹配成本,对子块中的每个bpof应用单元执行附加的提前终止。
[0421]
预定阈值通常被选择为每样本阈值,每样本阈值取决于第一预测或第一预测样本集的位深度。例如,如果使用双线性(2抽头)插值获得的第一预测样本值被限制为位深度b,每样本阈值计算为k
×2(b

10)
,匹配成本的样本数计算为n,则与当前子块的匹配成本进行比较的预定阈值应为k
×
n
×2(10

b)
。k的样本值为2(对于位深度为10),n为8
×
16=128,b为8。由于给定候选mv对的匹配成本可以用抽取的第一预测样本集计算,因此应相应地使用n的值。例如,如果使用8
×
16的预测样本块的交替的行,则n应计算为8
×
8=64。
[0422]
根据本发明的实施例,提供了一种提前终止方法,以便有条件地跳过光流修正过程,光流修正过程的执行被认为是计算密集型的。因此,减少了平均解码时间。
[0423]
此外,根据由另一个过程(在运动矢量修正过程中计算匹配成本)计算的参数,确定有条件地跳过光流应用的条件。由于使用了已经计算的值,因此不需要执行附加的计算。
[0424]
特别地,提供了一种在如图10所示的解码设备或编码设备中实现的视频译码方法。该方法包括以下步骤,可以按照给定顺序执行。获取当前块的初始运动矢量(1210)。当前块可以是当前编码块。根据初始运动矢量获取当前块中的样本值的第一预测(1220)。根据第一预测计算匹配成本(1230)。
[0425]
在获取第一匹配成本之后,根据至少一个预设条件确定是否应执行光流修正过程(1240),至少一个预设条件包括计算的匹配成本(例如,就相似度度量而言)是否等于或大于预定义阈值的条件。当确定应执行光流修正过程时,执行用于获取当前块中样本值的最
终帧间预测的光流修正过程(1250)。当确定不应执行光流修正过程时,可以通过跳过光流修正过程来节省计算成本。
[0426]
该方法可以在上面参考图1a至图5描述的装置中实现。
[0427]
特别地,该方法可以在解码端运动矢量修正过程的上下文中实现。这一过程的输入为:
[0428]
亮度位置(xsb,ysb),表示当前译码子块的左上样本相对于当前图像的左上亮度样本;
[0429]
变量sbwidth,表示亮度样本中当前译码子块的宽度;
[0430]
变量sbheight,表示亮度样本中当前译码子块的高度;
[0431]
1/16分数采样准确度的亮度运动矢量mvl0和mvl1;
[0432]
所选择的亮度参考图像样本阵列refpicl0
l
和refpicl1
l

[0433]
该过程的输出为:增量亮度运动矢量dmvl0和dmvl,以及变量dmvrsad,其表示第一预测的绝对差值的最小和(参见上述sad计算)。
[0434]
其中,增量亮度运动矢量dmvl0可以通过dmvl0[0]+=16*intoffx和dmvl0[1]+=16*intoffy推导,其中,intoffx和intoffy分别为x方向和y方向的整数样本偏移。此外,增量亮度运动矢量dmvl可以计算为:dmvl1[0]=

dmvl0[0]且dmvl1[1]=

dmvl0[1]。
[0435]
通过分数样本双线性插值推导第一预测亮度样本值。在帧间预测块的解码过程中,可以应用或不应用双向光流样本预测过程。如果不应用双向光流样本预测过程,则对根据修正运动矢量获得的修正第二预测应用加权样本预测过程。如果应用双向光流样本预测过程,它将接收根据修正运动矢量获得的第二预测作为输入,并输出最终预测。
[0436]
标志可以用于指示是否可以应用双向光流样本预测过程。例如,可以认为标志为真是执行双向光流样本预测过程的必要条件。但是,该必要条件可以不是执行双向光流样本预测过程的充分条件。充分条件可以为:标志为真且上述匹配成本等于或大于预定义阈值。例如,可以根据变量dmvrsad确定匹配成本,该变量表示第一预测的绝对差值的最小和。
[0437]
另一方面,如果标志为假,则可以认为是不执行光流样本预测过程而是执行加权样本预测过程的充分条件。
[0438]
此外,提供了一种设备1300,用于图11中所示的图像编码器和/或图像解码器。根据该示例性实施例,设备1300包括初始运动矢量单元1310,用于获取当前块的初始运动矢量。此外,设备1300包括预测单元1320,用于根据初始运动矢量获取当前块中的样本值的第一预测。此外,设备1300包括匹配成本计算单元1330,用于根据第一预测计算匹配成本。
[0439]
设备1300包括光流修正过程确定单元1340,用于根据至少一个预设条件,确定是否应执行光流修正过程,至少一个预设条件包括计算出的匹配成本是否等于或大于阈值的条件。此外,设备1300包括光流修正过程执行单元1350,用于当确定应执行光流修正过程时,执行光流修正过程,以获得当前块中的样本值的最终帧间预测。
[0440]
数学运算符
[0441]
本技术中使用的数学运算符与c编程语言中使用的数学运算符类似。但是,这里准确定义了整除运算和算术移位运算的结果,并且还定义了附加的运算,如幂运算和实值除法运算。编号和计数规范通常约定从0开始,例如,“第一个”相当于第0个,“第二个”相当于第1个,等等。
[0442]
算术运算符
[0443]
以下算术运算符定义如下:
[0444][0445]
逻辑运算符
[0446]
以下逻辑运算符定义如下:
[0447]
x&&yx和y的布尔逻辑“与”操作
[0448]
x||yx和y的布尔逻辑“或”操作
[0449]
!布尔逻辑“非”[0450]
x?y:z如果x为真或不等于0,则等于y的值;否则,等于z的值。
[0451]
关系运算符
[0452]
以下关系运算符定义如下:
[0453]
>大于
[0454]
>=大于或等于
[0455]
<小于
[0456]
<=小于或等于
[0457]
==等于
[0458]
!=不等于
[0459]
当关系运算符用于一个已赋值为“na”(不适用)的语法元素或变量时,则将值“na”视为该语法元素或变量的唯一值。值“na”不等于任何其它值。
[0460]
按位运算符
[0461]
以下按位运算符的定义如下:
[0462]
&按位“与”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0463]
|按位“或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来
扩展较短的参数。
[0464]
^按位“异或”。对整数参数进行运算时,对整数值的二的补码表示进行运算。当对二进制参数进行运算时,如果它包括的位比另一个参数少,则通过添加等于0的更多有效位来扩展较短的参数。
[0465]
x>>y将x的二的补码整数表示算法右移y个二进制数字。该函数仅针对y的非负整数值定义。由于右移而移到最高有效位(mostsignificantbit,msb)的位的值等于移位操作前的x的msb。
[0466]
x<<y将x的二的补码整数表示算法左移y个二进制数字。该函数仅针对y的非负整数值定义。左移的结果是移到最低有效位(leastsignificantbit,lsb)的位的值等于0。
[0467]
赋值运算符
[0468]
以下算术运算符定义如下:
[0469]
=赋值运算符
[0470]
++递增,即,x++等价于x=x+1;当用于数组索引时,等于递增操作之前变量的值。
[0471]
––
递减,即,x
––
等价于x=x

1;当用于数组索引时,等于递减操作之前变量的值。
[0472]
+=按指定数量递增,即,x+=3等价于x=x+3,x+=(

3)等价于x=x+(

3)。
[0473]

=按指定数量递减,即,x

=3等价于x=x

3,x

=(

3)等价于x=x

(

3)。
[0474]
范围表示法以下表示法用于指定值的范围:
[0475]
x=y..zx取从y到z的整数值(包括y和z),其中,x、y和z是整数,并且z大于y。
[0476]
数学函数
[0477]
数学函数定义如下:
[0478][0479]
asin(x)三角反正弦函数,对参数x进行运算,x在

1.0至1.0的范围内(包括端值),输出值在

π
÷
2至π
÷
2的范围内(包括端值),单位为弧度。
[0480]
atan(x)三角反正切函数,对参数x运算,输出值在

π
÷
2至π
÷
2的范围内(包括端值),单位为弧度。
[0481][0482]
ceil(x)表示大于或等于x的最小整数值。
[0483]
clip1
y
(x)=clip3(0,(1<<bitdepth
y
)

1,x)
[0484]
clip1
c
(x)=clip3(0,(1<<bitdepth
c
)

1,x)
[0485][0486]
cos(x)三角余弦函数,对参数x运算,单位为弧度。
[0487]
floor(x)表示小于或等于x的最大整数值。
[0488][0489]
ln(x)x的自然对数(以e为底的对数,其中,e是自然对数底数常数2.718281828
……
)。
[0490]
log2(x)以2为底x的对数。
[0491]
log10(x)以10为底x的对数。
[0492][0493][0494]
round(x)=sign(x)*floor(abs(x)+0.5)
[0495][0496]
sin(x)三角正弦函数,对参数x进行运算,单位为弧度。
[0497][0498]
swap(x,y)=(y,x)
[0499]
tan(x)三角正切函数,对参数x进行运算,单位为弧度。
[0500]
运算优先级顺序
[0501]
当没有使用括号来显式的表示优先顺序时,则遵循如下规则:
[0502]

高优先级的运算在低优先级的运算之前进行。
[0503]

相同优先级的运算从左到右依次进行。
[0504]
下表从最高到最低的顺序说明运算的优先级,在表中的位置越高,优先级也越高。
[0505]
如果在c编程语言中也使用这些运算符,则本文中采用的优先级顺序与c编程语言中采用的优先级顺序相同。
[0506]
表:运算优先级从最高(表格顶部)到最低(表格底部)进行排序
[0507]
[0508][0509]
逻辑运算的文字描述
[0510]
文本中,逻辑运算中的语句以数学形式描述如下:
[0511][0512]
可以通过如下方式进行描述:
[0513]
……
如下/
……
以下为准:
[0514]

如果条件0,则语句0
[0515]

否则,如果条件1,则语句1
[0516]
‑……
[0517]

否则(剩余条件的提示性说明),则语句n
[0518]
每个“如果
……
否则,如果
……
否则,
……“
如果
……”
后面紧跟着
“……
如下”或
“……
以下为准”用来介绍文本中的语句"。最后一个条件“如果
……”
,否则,如果
……
否则,
……
总有一个“否则,
……”
。插入的“如果
……
否则,如果
……
否则,
……”
语句可以通过匹配
“……
如下”或
“……
以下为准”,以“否则,
……”
结尾来识别。
[0519]
文本中,逻辑运算中的语句以数学形式描述如下:
[0520][0521]
[0522]
可以通过如下方式进行描述:
[0523]
……
如下/
……
以下为准:
[0524]

如果以下所有条件都为真,则语句0:
[0525]

条件0a
[0526]

条件0b
[0527]

否则,如果以下一个或多个条件为真,则语句1:
[0528]

条件1a
[0529]

条件1b
‑……
[0530]

否则,语句n
[0531]
文本中,逻辑运算中的语句以数学形式描述如下:
[0532][0533]
可以通过如下方式进行描述:
[0534]
如果条件0,则语句0
[0535]
如果条件1,则语句1
[0536]
尽管本发明的实施例已经主要根据视频译码进行描述,但需要说明的是,译码系统10、编码器20和解码器30(以及相应地系统10)的实施例以及本文描述的其它实施例也可以用于静止图像处理或译码,即独立于视频译码中的任何前面或连续的图像的处理或译码。通常,在图像处理译码限于单个图像17的情况下,可以只有帧间预测单元244(编码器)和344(解码器)不可用。视频编码器20和视频解码器30的所有其它功能(也称为工具或技术)可以同样用于静止图像处理,例如残差计算204/304,变换206,量化208,反量化210/310,(逆)变换212/312,分割262/362,帧内预测254/354和/或环路滤波220、320,熵译码270和熵解码304。
[0537]
编码器20和解码器30等的实施例,以及本文描述的与编码器20和解码器30等有关的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以存储在计算机可读介质上或作为一个或多个指令或代码通过通信介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,对应数据存储介质等有形介质,或包括便于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质的通信介质。在这种方式中,计算机可读介质通常可以对应(1)非瞬时性的有形计算机可读存储介质或(2)通信介质,例如信号或载波。数据存储介质可以是任何可用介质,可由一个或多个计算机或一个或多个处理器访问以检索用于实现本发明所描述的技术的指令、代码和/或数据结构。计算机程序产品可以包括计算机可读介质。
[0538]
作为示例而非限制,此类计算机可读存储介质可以包括ram、rom、eeprom、cd

rom或其它光盘存储器、磁盘存储器或其它磁性存储设备、闪存,或可以用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其它介质。此外,任何连接都可以称为计算机可读介质。例如,如果指令是从网站、服务器或其它远程源通过同轴电缆、光纤电缆、双绞线、数字用户线(digital subscriber line,dsl)或无线技术(例如红外、无线电、微波
等)发送的,则介质的定义包括同轴电缆、光纤电缆、双绞线、dsl或无线技术(例如红外、无线电和微波等)。但是,应理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它瞬时介质,而是指非瞬时有形存储介质。本文使用的磁盘和光盘包括压缩光盘(compact disc,cd)、激光光盘、光盘、数字通用光盘(digital versatile disc,dvd)、软盘和蓝光光盘,盘通常磁性地再现数据,而光盘则用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
[0539]
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(digital signal processor,dsp)、通用微处理器、专用集成电路(application

specific integrated circuit,asic)、现场可编程逻辑阵列(field programmable logic array,fpga)或其它等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何上述结构或任何适合于实现本文所描述的技术的任何其它结构。另外,在一些方面中,本文所描述的功能可以在用于编码和解码的专用硬件和/或软件模块中提供,或者结合在组合编解码器中。另外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0540]
本发明的技术可以在多种设备或装置中实现,包括无线手持电话、集成电路(integrated circuit,ic)或一组ic(例如芯片组)。本发明描述各种组件、模块或单元以强调用于执行所公开技术的设备的功能方面,但这些组件、模块或单元不一定要求通过不同的硬件单元实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。
再多了解一些
当前第1页 1 2
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1