一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频解码方法、视频编码方法、装置、设备和存储介质与流程

2022-02-24 10:43:42 来源:中国专利 TAG:


1.本技术涉及视频处理领域,特别涉及一种视频解码方法、视频编码方法、装置、计算机设备以及存储介质。


背景技术:

2.随着网络技术的发展,越来越多的用户通过各类终端观看视频。受限于网络带宽,终端获取的视频往往是经过压缩,也即是经过编码的视频,因此,终端在播放视频时,需要对视频进行解码。
3.相关技术中,终端对视频进行解码时,需对待解码块对应的位移矢量进行分类,基于分类后的位移矢量对待解码块解码。但是,一个位移矢量可能对应于多个类型,导致解码复杂度较高。


技术实现要素:

4.本技术实施例提供了一种视频解码方法、视频编码方法、装置、计算机设备以及存储介质,能够降低解码的复杂度。所述技术方案如下:
5.一方面,提供了一种视频解码方法,所述方法包括:
6.在视频解码过程中,对历史运动信息列表中已解码块的位移矢量进行分类;
7.在分类时,若所述已解码块满足多个类中任一个类的分类条件,则将所述已解码块的位移矢量加入所述任一个类,并停止对所述已解码块的位移矢量的分类。
8.在一种可能的实施方式中,所述方法还包括:
9.在分类时,若所述已解码块满足多个类中任一个类的分类条件,且所述任一个类中存在任一位移矢量,不将所述已解码块的位移矢量分入所述任一个类。
10.一方面,提供了一种视频编码方法,所述方法包括:
11.在视频编码过程中,对历史运动信息列表中已编码块的位移矢量进行分类;
12.在分类时,若所述已编码块满足多个类中任一个类的分类条件,则将所述已编码块的位移矢量加入所述任一个类,并停止对所述已编码块的位移矢量的分类。
13.在一种可能的实施方式中,所述方法还包括:
14.在分类时,若所述已编码块满足多个类中任一个类的分类条件,且所述任一个类中存在任一位移矢量,不将所述已编码块对应的位移矢量分入所述任一个类。
15.在一种可能的实施方式中,所述根据分类之后的位移矢量,生成候选位移矢量列表包括下述任一项:
16.响应于所述多个类中存在不包含任一个位移矢量的类,根据除所述类以外的所述多个类中其他类包含的位移矢量,生成所述候选位移矢量列表;
17.响应于所述多个类中存在不包含任一个位移矢量的类,将第一位移矢量加入所述类,根据所述多个类中的位移矢量,生成所述候选位移矢量列表;
18.响应于所述多个类中存在不包含任一个位移矢量的类,将与所述待编码块位置相
邻的已编码块的第二位移矢量加入所述候选位移矢量列表;
19.响应于所述多个类中存在不包含任一个位移矢量的类,将与所述待编码块位置不相邻的已编码块的第三位移矢量加入所述候选位移矢量列表;
20.响应于所述多个类中存在不包含任一个位移矢量的类,将所述历史运动信息列表中编码顺序与所述待编码块相邻的已编码块的的位移矢量加入所述候选位移矢量列表;
21.响应于所述多个类中存在不包含任一个位移矢量的类,将所述历史运动信息列表中目标位置的位移矢量加入所述候选位移矢量列表。
22.在一种可能的实施方式中,所述响应于所述多个类中存在不包含任一个位移矢量的类,将第一位移矢量加入所述候选位移矢量列表包括:
23.响应于所述多个类中存在不包含任一个位移矢量的类,根据多个第一位移矢量,生成第一位移矢量列表;
24.从所述第一位移矢量列表中确定与所述类对应的第一位移矢量,将所述与所述类对应的第一位移矢量加入所述候选位移矢量列表。
25.在一种可能的实施方式中,所述响应于所述多个类中存在不包含任一个位移矢量的类,将与待编码块位置相邻的已编码块的第二位移矢量加入所述候选位移矢量列表包括:
26.响应于所述多个类中存在不包含任一个位移矢量的类,根据与所述待编码块位置相邻的多个已编码块的第二位移矢量生成第二位移矢量列表;
27.从所述第二位移矢量列表中确定与所述类对应的第二位移矢量,将所述与所述类对应的第二位移矢量加入所述候选位移矢量列表。
28.在一种可能的实施方式中,所述将与待编码块位置相邻的已编码块的位移矢量加入所述候选位移矢量列表之前,所述方法还包括:
29.响应于与所述待编码块位置相邻的已编码块不对应于任一位移矢量,将第四位移矢量加入所述候选位移矢量列表。
30.在一种可能的实施方式中,从候选位移矢量列表中,确定与所述待编码块对应的目标位移矢量。
31.在一种可能的实施方式中,所述从所述候选位移矢量列表中,确定与所述待编码块对应的目标位移矢量包括:确定所述候选位移矢量列表中多个位移矢量的率失真参数;将所述率失真参数最小的位移矢量确定为与所述待编码块对应的目标位移矢量。
32.在一种可能的实施方式中,所述分类条件包括以下至少其中之一:
33.已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件。
34.一方面,提供了一种视频解码装置,所述装置包括:
35.第一分类模块,用于在视频解码过程中,对历史运动信息列表中已解码块的位移矢量进行分类;在分类时,若所述已解码块满足多个类中任一个类的分类条件,则将所述已解码块的位移矢量加入所述任一个类,并停止对所述已解码块的位移矢量的分类。
36.在一种可能的实施方式中,所述第一分类模块还用于在分类时,若所述已解码块满足多个类中任一个类的分类条件,且所述任一个类中存在任一位移矢量,不将所述已解码块的位移矢量分入所述任一个类。
37.在一种可能的实施方式中,所述第一分类模块还用于若所述已解码块满足多个类中任一个类的分类条件,将所述已解码块的位移矢量在所述历史运动信息列表中的索引加入所述任一个类。
38.在一种可能的实施方式中,所述装置还包括:
39.第一候选位移矢量列表生成模块,用于根据分类之后的位移矢量,生成候选位移矢量列表,一个待解码块对应于一个候选位移矢量列表。
40.在一种可能的实施方式中,所述第一候选位移矢量列表生成模块,用于执行下述任一项:
41.响应于所述多个类中存在不包含任一个位移矢量的类,根据除所述类以外的所述多个类中其他类包含的位移矢量,生成所述候选位移矢量列表;
42.响应于所述多个类中存在不包含任一个位移矢量的类,将第一位移矢量加入所述候选位移矢量列表;
43.响应于所述多个类中存在不包含任一个位移矢量的类,将与所述待解码块位置相邻的已解码块的第二位移矢量加入所述候选位移矢量列表;
44.响应于所述多个类中存在不包含任一个位移矢量的类,将与所述待解码块位置不相邻的已解码块的第三位移矢量加入所述候选位移矢量列表;
45.响应于所述多个类中存在不包含任一个位移矢量的类,将所述历史运动信息列表中解码顺序与所述待解码块相邻的已解码块的位移矢量加入所述候选位移矢量列表;
46.响应于所述多个类中存在不包含任一个位移矢量的类,将所述历史运动信息列表中目标位置的位移矢量加入所述候选位移矢量列表。
47.在一种可能的实施方式中,所述第一候选位移矢量列表生成模块,用于响应于所述多个类中存在不包含任一个位移矢量的类,根据多个第一位移矢量,生成第一位移矢量列表;从所述第一位移矢量列表中确定与所述类对应的第一位移矢量,将所述与所述类对应的第一位移矢量加入所述候选位移矢量列表。
48.在一种可能的实施方式中,所述第一候选位移矢量列表生成模块,用于响应于所述多个类中存在不包含任一个位移矢量的类,根据与所述待解码块位置相邻的多个已解码块的第二位移矢量生成第二位移矢量列表;从所述第二位移矢量列表中确定与所述类对应的第二位移矢量,将所述与所述类对应的第二位移矢量加入所述候选位移矢量列表。
49.在一种可能的实施方式中,所述第一候选位移矢量列表生成模块,还用于响应于与所述待解码块位置相邻的已解码块不对应于任一位移矢量,将第四位移矢量加入所述候选位移矢量列表。
50.在一种可能的实施方式中,所述装置还包括:
51.所述第一目标位移矢量确定模块,用于根据待解码块的索引,在所述候选位移矢量列表中确定与所述待解码块对应的目标位移矢量;
52.解码模块,用于根据所述目标位移矢量,对所述待解码块进行解码。
53.在一种可能的实施方式中,所述分类条件包括以下至少其中之一:
54.已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件。
55.一方面,提供了一种视频编码装置,所述装置包括:
56.第二分类模块,用于在视频编码过程中,对历史运动信息列表中已编码块的位移矢量进行分类;在分类时,若所述已编码块满足多个类中任一个类的分类条件,则将所述已编码块的位移矢量加入所述任一个类,并停止对所述已编码块的位移矢量的分类。
57.在一种可能的实施方式中,所述第二分类模块,还用于在分类时,若所述已编码块满足多个类中任一个类的分类条件,且所述任一个类中存在任一位移矢量,不将所述已编码块对应的位移矢量分入所述任一个类。
58.在一种可能的实施方式中,所述第二分类模块,用于若所述已编码块满足多个类中任一个类的分类条件,将所述已编码块的位移矢量在所述历史运动信息列表中的索引加入所述任一个类。
59.在一种可能的实施方式中,所述装置还包括:
60.第二候选位移矢量列表生成模块,用于根据分类之后的位移矢量,生成候选位移矢量列表,一个候选位移矢量列表对应于一个待编码块;
61.第二目标位移矢量确定模块,用于从所述候选位移矢量列表中,确定与所述待编码块对应的目标位移矢量;
62.编码模块,用于根据所述目标位移矢量,对所述待编码块进行编码,并根据所述目标位移矢量在所述候选位移矢量列表中的次序,生成所述待编码块的索引。
63.在一种可能的实施方式中,所述第二候选位移矢量列表生成模块,用于执行下述任一项:
64.响应于所述多个类中存在不包含任一个位移矢量的类,根据除所述类以外的所述多个类中其他类包含的位移矢量,生成所述候选位移矢量列表;
65.响应于所述多个类中存在不包含任一个位移矢量的类,将第一位移矢量加入所述候选位移矢量列表;
66.响应于所述多个类中存在不包含任一个位移矢量的类,将与所述待编码块位置相邻的已编码块的第二位移矢量加入所述候选位移矢量列表;
67.响应于所述多个类中存在不包含任一个位移矢量的类,将与所述待编码块位置不相邻的已编码块的第三位移矢量加入所述候选位移矢量列表;
68.响应于所述多个类中存在不包含任一个位移矢量的类,将所述历史运动信息列表中编码顺序与所述待编码块相邻的已编码块位移矢量加入所述候选位移矢量列表;
69.响应于所述多个类中存在不包含任一个位移矢量的类,将所述历史运动信息列表中目标位置的位移矢量加入所述候选位移矢量列表。
70.在一种可能的实施方式中,所述第二候选位移矢量列表生成模块,用于响应于所述多个类中存在不包含任一个位移矢量的类,根据多个第一位移矢量,生成第一位移矢量列表;从所述第一位移矢量列表中确定与所述类对应的第一位移矢量,将所述与所述类对应的第一位移矢量加入所述候选位移矢量列表。
71.在一种可能的实施方式中,所述第二候选位移矢量列表生成模块,用于响应于所述多个类中存在不包含任一个位移矢量的类,根据与所述待编码块位置相邻的多个已编码块的第二位移矢量生成第二位移矢量列表;从所述第二位移矢量列表中确定与所述类对应的第二位移矢量,将所述与所述类对应的第二位移矢量加入所述候选位移矢量列表。
72.在一种可能的实施方式中,所述第二候选位移矢量列表生成模块,还用于响应于
与所述待编码块位置相邻的已编码块不对应于任一位移矢量,将第四位移矢量加入所述候选位移矢量列表。
73.在一种可能的实施方式中,所述第二目标位移矢量确定模块,用于确定所述候选位移矢量列表中多个位移矢量的率失真参数;将所述率失真参数最小的位移矢量确定为与所述待编码块对应的目标位移矢量。
74.在一种可能的实施方式中,所述分类条件包括以下至少其中之一:
75.已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件。
76.一方面,提供了一种计算机设备,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述程序代码由所述一个或多个处理器加载并执行以实现所述视频解码方法或所述视频编码方法。
77.一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现所述视频解码方法或所述视频编码方法。
78.一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机程序代码,处理器执行该计算机程序代码,使得该计算机设备执行上述所述视频解码方法或上述视频编码方法。
79.通过本技术实施例提供的技术方案,在解码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,解码端不会继续对该位移矢量进行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频解码的复杂度,提高了视频解码的效率。
附图说明
80.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
81.图1是本技术实施例提供的一种运动矢量示意图;
82.图2是本技术实施例提供的一种块矢量示意图;
83.图3是本技术实施例提供的一种串矢量示意图;
84.图4是本技术实施例提供的一种视频解码方法的实施环境示意图;
85.图5是本技术实施例提供的一种视频解码方法的流程图;
86.图6是本技术实施例提供的一种视频编码方法的流程图;
87.图7是本技术实施例提供的一种视频解码方法的流程图;
88.图8是本技术实施例提供的一种待解码块和已解码块相对位置示意图;
89.图9是本技术实施例提供的一种待解码块和已解码块相对位置示意图;
90.图10是本技术实施例提供的一种视频编码方法的流程图;
91.图11是本技术实施例提供的一种视频解码装置的结构示意图;
92.图12是本技术实施例提供的一种视频编码装置的结构示意图;
93.图13是本技术实施例提供的一种终端的结构示意图;
94.图14是本技术实施例提供的一种服务器的结构示意图。
具体实施方式
95.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
96.本技术中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
97.本技术中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个待编码块是指两个或两个以上的待编码块。
98.首先,对本技术中涉及的名词进行如下介绍:
99.运动补偿:运动补偿是视频编码常用的一类预测方法,运动补偿基于视频内容在时域或空域的冗余特性,根据已编码块导出待编码块的位移矢量的预测值,在编码过程中能够采用已编码块的像素值来代替待编码块的像素值,并记录待编码块的位移矢量,就能够实现对待编码块的编码。
100.运动补偿分为:帧间预测、帧内块复制预测以及帧内串复制预测等,在编码过程中,可能单独或组合使用这些预测方法。
101.对于帧间预测来说,位移矢量被称为位移矢量(motion vector,mv)或者位移矢量。帧间预测利用视频内容在时间域的相关性,使用邻近已编码块的像素来预测待编码块的像素,以达到有效去除视频时域冗余的目的。参见图1,101为待编码帧,102为参考帧,编码块1011为待编码块,编码块1021是编码块1011的参考块。编码块1022与编码块1011在图像中的坐标相同,编码块1021的坐标为(xr,yr),编码块1022坐标为(x,y)。编码块1021与编码块1022之间的位移,也即是运动矢量,即:mv=(x
r-x,y
r-y)。
102.对于帧内块复制预测(intra block copy,ibc)来说,位移矢量被称为块矢量(block vector,bv)。帧内块复制利用视频内容在空间的相关性,使用当前图像上已编码块的像素预测待编码块的像素,能够有效节省编码像素所需的比特。如图3所示,在ibc中当前编码块与其参考块之间的位移,称为块矢量(block vector,简称bv)。h.266/vvc采用了类似于帧间预测bv预测技术进一步节省编码bv所需的比特。参见图2,201为当前帧,2011为待编码块,2012为已编码块,2013为已编码区域,2014为待编码区域,2015为块矢量。
103.对于帧内串复制来说(intra string copy,isc),位移矢量被称为串矢量(string vector,sv)。按照某种扫描顺序(光栅扫描、往返扫描和zig-zag扫描等),将一个编码块分成一系列像素串或未匹配像素。类似于ibc,每个待编码串在当前图像已编码区域中寻找相同形状的已编码串,导出当前串的预测值,能够有效节省比特。参见图3,区域301为已编码区域,白色的28个像素为待编码串302,灰色的35个像素为待编码的串303,黑色的1个像素表示未匹配像素304,305为与待编码串302对应的已编码串,306为与待编码串303对应的已编码串,307为待编码串302与已编码串305之间的串矢量,308为待编码串303与已编码串
306之间的串矢量。
104.在本技术提供的视频编码方法以及视频解码方法能够用于多种视频编码标准的上下文中,比如应用在多功能视频编码标准(versatile video coding,vvc/h.266)中,也能够应用在第三代数字视频编解码技术标准(audio video coding standard 3,avs3)中,本技术实施例对此不做限定。
105.图4是本技术实施例提供的一种视频编码方法的实施环境示意图,参见图4,该实施环境中可以包括第一终端410、第二终端420和服务器440。
106.可选地,第一终端410能够通过无线网络或有线网络与第二终端420相连,第一终端和第二终端为智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。第一终端410上安装和运行有支持视频编码的应用程序,第一终端410也可以被称为编码端。第二终端420上安装和运行有支持视频解码的应用程序,第二终端420页可以被称为解码端。第一终端410对视频进行编码之后,能够将编码后视频发送给第二终端420,第二终端能够对编码后的视频进行解码。
107.在一种可能的实施方式中,第一终端410和第二终端420均为既能够进行编码也能够进行解码的终端,本技术实施例对此不做限定。
108.可选地,第一终端410和第二终端420能够通过无线网络或有线网络与服务器440相连。第一终端410能够将视频进行编码之后,发送给服务器440,由服务器440将编码后的视频下发给第二终端420,第二终端能够对编码后的视频进行解码。
109.可选地,服务器440是独立的物理服务器,或者是多个物理服务器构成的服务器集群或者分布式系统,或者是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
110.当然,服务器440也能够直接对视频进行编码,将编码后的视频下发至第一终端410或者第二终端420,本技术实施例对此不作限定。
111.为了对本技术提供的视频编码方法以及视频解码方法进行更加清楚的描述,首先对本技术提供的视频编码方法以及视频解码方法的应用场景进行介绍。
112.在一种可能的实施方式中,本技术提供的技术方案能够应用在本地视频的场景中,视频作者通过编码端对视频进行编码,将编码后的视频发送给解码端,解码端能够对编码后的视频进行解码,供使用解码端的用户观看该视频,其中,视频作者在编码端对视频进行编码之后,能够通过网络连接将编码后的视频发送给解码端,也能够通过存储介质,比如只读光盘(compact disc read-only memory,cd-rom)、高密度数字视频光盘(digital video disc,dvd)以及存储棒将编码后的视频传送给解码端,本技术实施例对此不作限定。
113.在一种可能的实施方式中,本技术提供的技术方案能够应用于在线视频播放的过程中。视频作者通过编码端对视频进行编码之后,能够通过编码端将编码后的视频上传至服务器,服务器能够将编码后的视频发送给解码端,解码端能够对编码后的视频进行解码,供使用解码端的用户观看该视频。
114.在一种可能的实施方式中,本技术提供的技术方案能够应用于视频通话的场景中,比如应用于在线会议的场景中。以在线会议为两个用户之间的会议为例,两个用户分别使用既能够进行视频编码,也能够进行视频解码的终端进行在线会议,其中,一个终端能够
采集视频画面,对采集到的视频画面进行编码,将编码后的视频画面发送给服务器,由服务器将编码后的视频画面传送给另一个终端,另一个终端能够对编码后的视频画面进行解码,另一个终端的用户能够看到该视频画面。当然,另一个终端也能够采集视频画面,并对视频画面进行编码之后发送给服务器,由服务器进行转送,这样能够实现两个用户之间的在线会议。当然,基于上述描述,也能够扩展为多个用户之间的在线会议,本技术实施例对此不做限定。
115.在一种可能的实施方式中,本技术提供的技术方案能够应用于直播场景中。主播通过编码端采集视频画面,由编码端对采集到的视频画面进行编码,将编码后的视频画面传送给服务器,由服务器将编码后的视频画面发送给观众使用的解码端,或者由服务器将编码后的视频画面进行解码,按照不同码率对视频画面进行编码之后再发送给观众使用的解码端,本技术实施例对此不作限定。
116.需要注意的是,在下述对本技术提供的技术方案进行说明的过程中,是以终端作为执行主体为例进行的。在其他可能的实施方式中,也可以由服务器作为执行主体来执行本技术提供的技术方案,本技术实施例对于执行主体的类型不做限定。
117.图5是本技术实施例提供的一种视频解码方法的流程图,参见图5,方法包括:
118.501、在视频解码过程中,解码端对历史运动信息列表中已解码块的位移矢量进行分类,在分类时,若已解码块满足多个类中任一个类的分类条件,则将已解码块的位移矢量加入该类。
119.其中,历史运动信息列表也可以称为基于历史的运动矢量预测列表(history based motion vector prediction,hmvp),历史运动信息列表中不仅存储有已解码块的位移矢量,还存储有用于对位移矢量进行分类的辅助信息,辅助信息包括已解码块的尺寸信息、位置信息以及已解码块的位移矢量的重复使用次数。
120.502、解码端停止对已解码块的位移矢量的分类。
121.通过本技术实施例提供的技术方案,在解码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,解码端不会继续对该位移矢量进行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频解码的复杂度,提高了视频解码的效率。
122.图6是本技术实施例提供的一种视频解码方法的流程图,参见图6,方法包括:
123.601、在视频编码过程中,编码端对历史运动信息列表中已编码块的位移矢量进行分类,在分类时,若已编码块满足多个类中任一个类的分类条件,则将已编码块的位移矢量加入该类。
124.602、编码端停止对已编码块的位移矢量的分类。
125.通过本技术实施例提供的技术方案,在编码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,编码端不会继续对该位移矢量进行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频编码的复杂度,提高了视频编码的效率。
126.上述步骤501-502以及步骤601-602是本技术提供的技术方案的简要说明,下面将
结合一些例子对本技术提供的技术方案进行详细说明。由于本技术提供的视频解码方法和视频编码方法属于同一发明构思,在下述说明的过程中,首先对视频解码方法进行说明。在说明过程中,为了便于理解,是以待解码块的数量为一个为例进行说明的,在解码过程中,能够对多个待解码块进行解码,对多个待解码块进行解码的方法与对一个待解码块进行解码的过程同理。
127.图7是本技术实施例提供的一种视频解码方法的流程图,参见图7,方法包括:
128.701、在视频解码过程中,解码端对历史运动信息列表中已解码块的位移矢量进行分类,在分类时,若已解码块满足多个类中任一个类的分类条件,则将已解码块的位移矢量加入该类。
129.其中,历史运动信息列表为一个长度有限的列表,当历史运动信息列表被填满,同时有新的位移矢量要加入历史运动信息列表时,最早进入历史运动信息列表的位移矢量将会被移除,为新的位移矢量留出空间,这种存储方式称为先入先出(first input first output,fifo)。其中,历史运动信息列表的长度与视频解码标准相关,比如为6、8或者12,当然,随着视频解码标准的更新,历史运动信息列表的长度也会随之更新,本技术实施例对此不作限定。
130.还有,历史运动信息列表中存储的位移矢量对应于不同的序号,可选地,历史运动信息列表的长度为3,那么该历史运动信息列表中存储的位移矢量分别对应于序号0、1和2,在后续对位移矢量进行分类的过程中,解码端能够按照正序,也即是0
→1→
2的顺序对位移矢量进行分类,也能够按照逆序,也即是2
→1→
0的顺序对位移矢量进行分类,本技术实施例对此不做限定。
131.在一种可能的实施方式中,解码端能够根据历史运动信息列表中存储的已解码块的辅助信息,对已解码块的位移矢量进行分类。在分类时,解码端能够将已解码块的辅助信息与多个类的分类条件进行对比,响应于已解码块的辅助信息满足多个类中的任一个类的分类条件,解码端将该已解码块的位移矢量加入该类。
132.另外,将该已解码块的位移矢量加入该类之前,解码端还能够确定历史运动信息列表中是否存在与该解码块的位移矢量相同的位移矢量。响应于历史运动信息列表中存在与该解码块的位移矢量相同的位移矢量,比如将与该解码块的位移矢量相同的位移矢量记作a,那么终端将位移矢量a从历史运动信息列表中移除,将该解码块的位移矢量加入历史运动信息列表,同时将该解码块的位移矢量的使用次数 1。
133.下面分别以分类条件为已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件为例,对解码端基于辅助信息对已解码块的位移矢量进行分类的方法进行说明。
134.首先,基于上述分类条件,设置7个类,7个类的分类条件分别为:
135.类0:已解码块的面积大于或等于64像素;
136.类1:bv的使用次数大于或等于2;
137.类2:已解码块左上角的坐标位于待解码块左上角坐标的左方;
138.类3:已解码块左上角的坐标位于待解码块左上角坐标的上方;
139.类4:已解码块左上角的坐标位于待解码块左上角坐标的左上方;
140.类5:已解码块左上角的坐标位于待解码块左上角坐标的右上方;
141.类6:已解码块左上角的坐标位于待解码块左上角坐标的左下方。
142.其中,每个类的序号为解码端基于辅助信息进行对已解码块的位移矢量进行分类时的匹配顺序,也即是在分类过程中,解码端首先将已解码块的辅助信息与类0的分类条件进行比较。若已解码块的辅助信息不满足类0的分类条件,那么解码端将已解码块的辅助信息与类1的分类条件进行比较,依次类推。
143.需要说明的是,上述类0-类6对应的分类条件仅仅是为了举例而提供的,随着视频解码标准的更新,类的数量以及类对应的分类条件能够随之更新。
144.另外,每个类都对应于一个用于存储位移矢量的列表,响应于确定一个已解码块的位移矢量属于任一个类,解码端能够将该已解码块的位移矢量添加入与该类对应的列表中。解码端向与类对应的列表中填充位移矢量时,同时也能够对列表中的位移矢量进行编号,解码端将最新进入列表中的位移矢量的序号确定为1。举例来说,列表中仅存在一个位移矢量a,位移矢量a在列表中的序号为1,当解码端向该列表中填充位移矢量b时,解码端能够将位移矢量b的序号设置为1,将位移矢量a的序号变更为2。每个类对应的列表中,序号为1的位移矢量为该类对应的候选位移矢量,候选位移矢量也即是在后续生成候选位移矢量列表时采用的位移矢量。
145.当然,每个类对应的用于存储位移矢量的列表也能够仅仅存储最新被加入的位移矢量,也即每个类对应的用于存储位移矢量的列表中,仅记录最新满足分类条件的位移矢量。举例来说,若列表中存在一个满足分类条件的位移矢量c,当有新的满足分类条件的位移矢量d进入该列表时,解码端能够将位移矢量c从该列表中删除,只存储位移矢量d。
146.在设置类以及类对应的分类条件之后,解码端能够根据已解码块的辅助信息对已解码块的位移矢量进行分类,下面将结合几个例子进行说明:
147.以类0为例,当已解码块a的位移矢量和辅助信息进入历史运动信息列表后,解码端从历史运动信息列表中的确定已解码块a的尺寸信息,比如为4
×
4,也即是已解码块a的面积为16像素,由于16像素小于64像素,解码端确定已解码块a不满足类0的分类条件,已解码块a无法分入类0。当已解码块b的位移矢量和辅助进行进入历史运动信息列表后,解码端能够从历史运动信息列表中确定已解码块b的尺寸信息,比如8
×
8,也即是已解码块b的面积为64像素,解码端确定已解码块b满足类0的分类条件,将已解码块b的位移矢量加入类0对应的列表中,并在类0对应的列表中将已解码块b的位移矢量的序号设置为1。
148.以类1为例,当已解码块c的位移矢量和辅助信息进入历史运动信息列表后,解码端从历史运动信息列表中的确定已解码块c的位移矢量的使用次数,比如为1,解码端能够确定已解码块c不满足类1的分类条件,已解码块c无法分入类1。当已解码块d的位移矢量进入历史运动信息列表后,解码端从历史运动信息列表中的确定已解码块d的位移矢量的使用次数,比如为3,解码端能够确定已解码块d满足类1的分类条件,将已解码块d加入类1对应的类表中,并在类1对应的列表中将已解码块d的位移矢量的序号设置为1。
149.以类2为例,当已解码块e的位移矢量和辅助信息进入历史运动信息列表后,解码端从历史运动信息列表中的确定已解码块e左上角的坐标,比如(1,2),若待解码块左上角的坐标为(0,2),参见图8,由于已解码块e左上角的坐标位于待解码块左上角坐标的右侧,解码端确定已解码块e不满足类2的分类条件,已解码块e无法分入类2。当已解码块f的位移矢量进入历史运动信息列表后,解码端从历史运动信息列表中的确定已解码块f左上角的
坐标,比如(3,2),若待解码块左上角的坐标为(2,2),参见图8,由于已解码块f左上角的坐标位于待解码块左上角坐标的左侧,解码端确定已解码块f满足类2的分类条件,将已解码块f加入类2对应的类表中,并在类2对应的列表中将已解码块f的位移矢量的序号设置为1。
150.需要说明的是,类3-类6的分类方法与类2属于同一发明构思,在此不再赘述。
151.在一种可能的实施方式中,在分类时,若已解码块满足多个类中任一个类的分类条件,且该类中存在任一位移矢量,解码端能够不将已解码块对应的位移矢量分入该类。
152.在这种实施方式下,解码端能够保证每个类下最多只有一个位移矢量,这样能够减少类对应的列表所占用的存储空间,同时无需在后续生成候选位移矢量列表前进行查重,提高了视频解码的效率。
153.举例来说,当已解码块当已解码块g的位移矢量和辅助信息进入历史运动信息列表后,解码端能够根据已解码块g的辅助信息对已解码块g进行分类。若已解码块g辅助信息满足上述类3的分类条件,解码端查询类3对应的列表。若类3对应的列表中不存在任一位移矢量,解码端将已解码块g的位移矢量加入类3对应的列表。若类3对应的列表中存在任一位移矢量,解码端将已解码块g的辅助信息与类4的分类条件进行比较,依次类推,保证一个类中最多存在一个位移矢量。
154.在一种可能的实施方式中,若已解码块满足多个类中任一个类的分类条件,解码端将已解码块的位移矢量在历史运动信息列表中的索引加入任一个类。
155.可选地,索引为一个位移矢量在历史运动信息列表中的顺序,当然也可以为其他能够在历史运动信息列表中唯一的查找到该位移矢量的索引,本技术实施例对此不做限定。
156.在这种实现实施方式下,解码端将索引而不是位移矢量加入类中,这样能够减少类对应的列表占用的存储空间。
157.702、解码端停止对已解码块的位移矢量的分类。
158.通过步骤701和702,对于任一个已解码块的位移矢量来说,解码端能够在将其分入任一个类之后,停止对其继续进行分类,从而保证一个位移矢量仅被分入一个类,避免了在后续导出候选矢量列表时的查重操作,降低了解码复杂度,提高了解码效率。
159.703、解码端根据分类之后的位移矢量,生成候选位移矢量列表,一个候选位移矢量列表对应于一个待解码块。
160.在一种可能的实施方式中,解码端根据分类之后的位移矢量,生成候选位移矢量列表能够通过下述任一种方式实现:
161.方式1、响应于多个类中存在不包含任一个位移矢量的类,解码端能够根据除该类以外的多个类中其他类包含的位移矢量,生成候选位移矢量列表。
162.举例来说,解码端能够按照多个类的序号的大小,依次从每个类对应的列表中获取位移矢量,比如存在6个类,解码端能够依次从6个类对应的列表中获取一个位移矢量,将获取到的位移矢量加入候选位移矢量列表。响应于多个类中任一个类对应的列表中未存储有任一个位移矢量,解码端能够跳过该类,也即是在候选位移矢量列表中该类对应的位置为空。
163.方式2、响应于多个类中存在不包含任一个位移矢量的类,解码端能够将第一位移矢量加入候选位移矢量列表。
164.可选地,第一位移矢量为技术人员设计的位移矢量,比如为零矢量(0,0),或者为与尺寸相关的矢量,比如(-w,0)以及(0,-h),其中w和h分别为最小解码单元的宽和高,或者待解码块的宽和高,或者为预设的宽和高,本技术实施例对此不做限定。
165.在方式2的基础上,响应于多个类中存在不包含任一个位移矢量的类,解码端能够根据多个第一位移矢量,生成第一位移矢量列表,解码端能够从第一位移矢量列表中确定与该类对应的第一位移矢量,将与该类对应的第一位移矢量加入候选位移矢量列表。
166.举例来说,解码端能够创建一个由(0,0)、(-w,0)、(-2*w,0)、(0,-h)、(0,-2*h)、(-w,-h)、(-w,-2*h)、(-2*w,-h)以及(-2*w,-2*h)九个第一位移矢量构成的第一位移矢量列表,解码端能够对该第一位移矢量列表中每个第一位移矢量进行编号,比如按照从左至右的顺序进行编号,或者按照从右至左的顺序进行编号。若解码端按照从左至右的顺序进行编号,那么(0,0)、(-w,0)、(-2*w,0)、(0,-h)、(0,-2*h)、(-w,-h)、(-w,-2*h)、(-2*w,-h)以及(-2*w,-2*h)九个第一位移矢量分别对应于序号0-序号8。若解码端按照从右至左的顺序进行编号,那么(0,0)、(-w,0)、(-2*w,0)、(0,-h)、(0,-2*h)、(-w,-h)、(-w,-2*h)、(-2*w,-h)以及(-2*w,-2*h)九个第一位移矢量分别对应于序号8-序号0,本技术实施例对于解码端编号的方式不做限定。响应于多个类中存在不包含任一个位移矢量的类,该类的序号比如为4,解码端能够从第一位移矢量列表中将序号为4的第一位移矢量加入候选位移矢量列表,作为与序号为4的类对应的位移矢量。
167.当然,解码端除了能够按照上述举例中的方式向候选位移矢量列表中加入位移矢量之外,也能够按照其他可能的方式从第一位移矢量列表中确定第一位移矢量,并将该第一位移矢量加入候选位移矢量列表。比如,解码端能够随机从第一位移矢量列表中确定第一位移矢量,并将该第一位移矢量加入候选位移矢量列表。
168.方式3、响应于多个类中存在不包含任一个位移矢量的类,解码端能够将与待解码块位置相邻的已解码块的第二位移矢量加入候选位移矢量列表。
169.举例来说,参见图9,901为待解码块,已解码块902-906为与待解码块位置相邻的已解码块。响应于多个类中存在不包含任一个位移矢量的类,比如类3,解码端能够将已解码块902-906中任一个已解码块的第二位移矢量加入候选位移矢量列表,比如将已解码块905的第二位移矢量加入候选位移矢量列表,作为类3对应的位移矢量。
170.当然,图9示出的与待解码块位置相邻的已解码块仅仅是为了便于理解而设置的,随着解码标准的更新,与待解码块位置相邻的已解码块的数量和位置均可以随之更新,本技术实施例对此不作限定。
171.在一种可能的实施方式中,响应于与待解码块位置相邻的已解码块不对应于任一位移矢量,解码端能够将第四位移矢量加入候选位移矢量列表。
172.举例来说,若与待解码块位置相邻的已解码块不包含运动矢量,例如已解码块为非ibc/isc解码块,或者为isc解码块中的孤立点等,解码端能够向候选位移矢量列表中加入第四位移矢量,第四位移矢量也即是预设的位移矢量,可选的,预设矢量包括上述方式1或方式2中第一位移矢量,当然也能够包括零矢量(0,0),其中,第一位移矢量的确定方法参见之前的描述,在此不再赘述。
173.在方式3的基础上,响应于多个类中存在不包含任一个位移矢量的类,解码端能够根据与待解码块位置相邻的多个已解码块的第二位移矢量生成第二位移矢量列表。解码端
能够从第二位移矢量列表中确定与类对应的第二位移矢量,将与类对应的第二位移矢量加入候选位移矢量列表。
174.举例来说,解码端能够根据如图9所示的已解码块902-906的第二位移矢量,生成第二位移矢量列表。解码端能够按照从左至右或者从右至左的顺序对第二位移矢量列表中的第二位移矢量进行编号。响应于多个类中存在不包含任一个位移矢量的类,比如类2,解码端能够从第二位移矢量列表中获取序号为2的第二位移矢量,并将序号为2的第二位移矢量加入候选位移矢量列表。
175.另外,解码端也能够采用其他方式从第二位移矢量列表中获取第二位移矢量,比如,解码端能够将最先加入第二位移矢量列表的第二位移矢量加入候选位移矢量列表,解码端也能够将最后加入第二位移矢量列表的第二位移矢量加入候选位移矢量列表,本技术实施例对此不做限定。
176.还有,在解码端生成第二位移矢量列表时,能够对与待解码块位置相邻的多个已解码块的第二位移矢量进行查重,响应于多个已解码块的第二位移矢量中包括相同的第二位移矢量,解码端能够将相同的第二位移矢量删除,基于不相同的第二位移矢量生成第二位移矢量列表。
177.除此之外,响应于解码端未在第二位移矢量列表中查询到与该类对应的第二位移矢量,那么解码端能够向候选位移矢量列表中添加预设的位移矢量,可选地,预设矢量包括上述方式1或方式2中第一位移矢量,当然也能够包括零矢量(0,0),其中,第一位移矢量的确定方法参见之前的描述,在此不再赘述。
178.方式4、响应于多个类中存在不包含任一个位移矢量的类,解码端能够将与待解码块位置不相邻的已解码块的第三位移矢量加入候选位移矢量列表。
179.举例来说,解码端能够分别获取左上角坐标为(x-8,y h/2)、(x 2/2,y-8)以及(x-8,y-8)的已解码块中任一个已解码块的第三位移矢量,将该第三位移矢量加入候选位移矢量列表,作为与不包含任一个位移矢量的类对应的位移矢量,其中,x和y分别为待解码块左上角的横坐标和纵坐标,h为待解码块的高。
180.当然,上述与待解码块位置不相邻的已解码块的坐标仅仅是为了便于理解而设置的,在其他能够的实施方式中,也能够由技术人员根据实际情况进行设置,本技术实施例对此不做限定。
181.在方式4的基础上,响应于多个类中存在不包含任一个位移矢量的类,解码端能够根据与待解码块位置不相邻的多个已解码块的第三位移矢量生成第三位移矢量列表。解码端能够从第三位移矢量列表中确定与该类对应的第三位移矢量,将与该类对应的第三位移矢量加入候选位移矢量列表。
182.举例来说,解码端能够根据与待解码块不相邻的多个已解码块的第三位移矢量,生成第三位移矢量列表。解码端能够按照从左至右或者从右至左的顺序对第三位移矢量列表中的第三位移矢量进行编号。响应于多个类中存在不包含任一个位移矢量的类,比如类2,解码端能够从第三位移矢量列表中获取序号为2的第三位移矢量,并将序号为2的第三位移矢量加入候选位移矢量列表。
183.另外,解码端也能够采用其他方式从第三位移矢量列表中获取第三位移矢量,比如,解码端能够将最先加入第三位移矢量列表的第三位移矢量加入候选位移矢量列表,解
码端也能够将最后加入第三位移矢量列表的第三位移矢量加入候选位移矢量列表,本技术实施例对此不做限定。
184.还有,在解码端生成第三位移矢量列表时,能够对与待解码块位置不相邻的多个已解码块的第三位移矢量进行查重,响应于多个已解码块的第三位移矢量中包括相同的第三位移矢量,解码端能够将相同的第三位移矢量删除,基于不相同的第三位移矢量生成第三位移矢量列表。
185.除此之外,响应于解码端未在第三位移矢量列表中查询到与该类对应的第三位移矢量,那么解码端能够向候选位移矢量列表中添加预设的位移矢量,可选地,预设矢量包括上述方式1或方式2中第一位移矢量,当然也能够包括零矢量(0,0),其中,第一位移矢量的确定方法参见之前的描述,在此不再赘述。
186.方式5、响应于多个类中存在不包含任一个位移矢量的类,解码端能够将历史运动信息列表中解码顺序与待解码块相邻的已解码块的位移矢量加入候选位移矢量列表。
187.在一种可能的实施方式中,响应于多个类中存在不包含任一个位移矢量的类,解码端能够将在待解码块之前,上一个解码变成的已解码块的位移矢量键入候选位移矢量列表,也即是将解码时间距离待解码块最近的已解码块的位移矢量进入候选位移矢量列表。
188.举例来说,解码端能够从历史运动信息列表中获取最后加入历史运动信息列表的位移矢量,将该位移矢量加入候选位移矢量列表。
189.方式6、响应于多个类中存在不包含任一个位移矢量的类,解码端能够将历史运动信息列表中目标位置的位移矢量加入候选位移矢量列表。
190.可选的,目标位置的位移矢量为历史运动信息列表中,序号与类的序号相同的位移矢量。
191.在这种方式下,根据解码端为历史运动信息列表中的位移矢量的解码方式的不同,可能在同一个历史运动信息列表中确定出两个不同的位移矢量。比如,历史运动信息列表中存储有6个位移矢量(-1,-2)、(-2,-3)、(-1,-3)、(-2,-4)、(-1,-1)以及(0,-1),其中(-1,-2)为最先加入历史运动信息列表的位移矢量,(0,-1)为最后加入历史运动信息列表的位移矢量。若该类的序号为3,且解码端按照从左至右的顺序对历史运动信息列表中的位移矢量进行排序,那么解码端能够将位移矢量(-1,-3)加入候选位移矢量列表。若解码端按照从右至左的顺序对历史运动信息列表中的位移矢量进行排序,那么解码端能够将位移矢量(-1,-1)加入候选位移矢量列表。
192.另外,若历史运动信息列表中目标位置不存在与该类对应的位移矢量,那么解码端能够向候选位移矢量列表中添加预设的位移矢量,可选地,预设矢量包括上述方式1或方式2中第一位移矢量,当然也能够包括零矢量(0,0),其中,第一位移矢量的确定方法参见之前的描述,在此不再赘述。
193.举例来说,若历史运动信息列表的长度为6,而存在7个类,响应于类7中不存在任一位移矢量,由历史运动信息列表的长度小于类7的序号,因此解码端无法在运动信息列表中查询到与类7对应的位移矢量,解码端能够向候选位移矢量列表中添加预设的位移矢量。
194.需要说明的是,上述方式1-方式6能够单独使用,也能够同时使用,本技术实施例对此不做限定。
195.704、解码端根据待解码块的索引,在候选位移矢量列表中确定与待解码块对应的
目标位移矢量。
196.以待解码块的索引为待解码块对应的目标位移矢量在候选位移矢量列表中的顺序标识为例,解码端能够在解码过程中,根据顺序标识,从候选位移矢量列表中获取目标位移矢量。
197.705、解码端根据目标位移矢量,对待解码块进行解码。
198.通过本技术实施例提供的技术方案,在解码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,解码端不会继续对该位移矢量进行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频解码的复杂度,提高了视频解码的效率。
199.需要说明的是,本技术提供的视频编码方法与视频解码方法属于同一发明构思,对于同一个图像帧中的同一个图像块来说,在视频编码过程中被称为待编码块或已编码块,在视频解码过程中被称为待解码块或已解码块。
200.图10是本技术实施例提供的一种视频编码方法的流程图,参见图10,方法包括:
201.1001、在视频编码过程中,编码端对历史运动信息列表中已编码块的位移矢量进行分类,在分类时,若已编码块满足多个类中任一个类的分类条件,则将已编码块的位移矢量加入该类。
202.可选地,分类条件包括以下至少其中之一:
203.已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件。
204.步骤1001与上述步骤701属于同一发明构思,实现方法参见上述步骤701的描述,在此不再赘述。
205.在一种可能的实施方式中,在分类时,若已编码块满足多个类中任一个类的分类条件,且任一个类中存在任一位移矢量,编码端不将已编码块的位移矢量分入该类。
206.在一种可能的实施方式中,若已编码块满足多个类中任一个类的分类条件,编码端将已编码块的位移矢量在历史运动信息列表中的索引加入该类。
207.1002、编码端停止对已编码块的位移矢量的分类。
208.步骤1002与上述步骤702属于同一发明构思,实现方法参见上述步骤702的描述,在此不再赘述。
209.1003、编码端根据分类之后的位移矢量,生成候选位移矢量列表,一个待编码块对应于一个候选位移矢量列表。
210.步骤1003与上述步骤703属于同一发明构思,实现方法参见上述步骤703的描述,在此不再赘述。
211.在一种可能的实施方式中,编码端根据分类之后的位移矢量,生成候选位移矢量列表能够通过下述任一种方式实现:
212.方式1、响应于多个类中存在不包含任一个位移矢量的类,编码端根据除类以外的多个类中其他类包含的位移矢量,生成候选位移矢量列表。
213.方式2、响应于多个类中存在不包含任一个位移矢量的类,编码端将第一位移矢量加入候选位移矢量列表。
214.在一种可能的实施方式中,响应于多个类中存在不包含任一个位移矢量的类,编码端能够根据多个第一位移矢量生成第一位移矢量列表,编码端从第一位移矢量列表中确定与类对应的第一位移矢量,将与类对应的第一位移矢量加入候选位移矢量列表。
215.方式3、响应于多个类中存在不包含任一个位移矢量的类,编码端将与待编码块位置相邻的已编码块的第二位移矢量加入候选位移矢量列表。
216.在一种可能的实施方式中,响应于与待编码块位置相邻的已编码块不对应于任一位移矢量,编码端将第四位移矢量加入候选位移矢量列表。
217.在一种可能的实施方式中,响应于多个类中存在不包含任一个位移矢量的类,编码端根据与待编码块位置相邻的多个已编码块的第二位移矢量生成第二位移矢量列表。编码端从第二位移矢量列表中确定与类对应的第二位移矢量,将与类对应的第二位移矢量加入候选位移矢量列表。
218.方式4、响应于多个类中存在不包含任一个位移矢量的类,编码端将与待编码块位置不相邻的已编码块的第三位移矢量加入候选位移矢量列表。
219.方式5、响应于多个类中存在不包含任一个位移矢量的类,编码端将编码时间与待编码块相邻的已编码块的位移矢量加入候选位移矢量列表。
220.方式6、响应于多个类中存在不包含任一个位移矢量的类,编码端将历史运动信息列表中目标位置的位移矢量加入候选位移矢量列表。
221.1004、编码端从候选位移矢量列表中,确定与待编码块对应的目标位移矢量。
222.可选地,目标位移矢量为率失真参数符合目标条件的位移矢量。
223.在一种可能的实施方式中,编码端确定候选位移矢量列表中多个位移矢量的率失真参数,将率失真参数最小的位移矢量确定为与待编码块对应的目标位移矢量。
224.举例来说,若视频编码的码率为1000kbps,编码端能够确定在码率为1000kbps下,候选位移矢量列表中的位移矢量分别对应的率失真参数。采用同样的视频编码方法得到的视频码率和图像失真率之间的关系参见公式(1)。编码端基于公式(1)生成拉格朗日代价函数(2),编码端通过拉格朗日代价函数(2)来确定多种划分模式对应的率失真参数,从而确定率失真参数最小的目标位移矢量。
[0225][0226]
其中,r为码率,d为图像失真率,α为系数,δ2为待编码单元中多个像素点的方差。
[0227]
min{j=d λr}
ꢀꢀꢀ
(2)
[0228]
其中,min{}为取最小值,λ为系数,j为率失真参数。
[0229]
1005、编码端根据目标位移矢量,对待编码块进行编码,并在编码信息中添加目标位移矢量的索引。
[0230]
可选的,目标位移矢量的索引为目标位移矢量在候选位移矢量列表中的顺序标识,比如候选位移矢量列表中存在6个位移矢量,目标位移矢量在候选位移矢量列表中的顺序为2,那么编码端能够将2作为目标位移矢量的索引,在后续的解码过程中,解码端能够通过索引2直接从候选位移矢量列表中获取目标位移矢量。
[0231]
通过本技术实施例提供的技术方案,在编码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,编码端不会继续对该位移矢量进
行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频编码的复杂度,提高了视频编码的效率。
[0232]
图11是本技术实施例提供的一种视频解码装置结构示意图,参见图11,装置包括:第一分类模块1101、第一候选位移矢量列表生成模块1102、第一目标位移矢量确定模块1103以及解码模块1104。
[0233]
第一分类模块1101,用于在视频解码过程中,对历史运动信息列表中已解码块的位移矢量进行分类。在分类时,若已解码块满足多个类中任一个类的分类条件,则将已解码块的位移矢量加入任一个类,并停止对已解码块的位移矢量的分类。
[0234]
在一种可能的实施方式中,第一分类模块1101还用于在分类时,若已解码块满足多个类中任一个类的分类条件,且任一个类中存在任一位移矢量,不将已解码块的位移矢量分入任一个类。
[0235]
在一种可能的实施方式中,第一分类模块1101还用于若已解码块满足多个类中任一个类的分类条件,将已解码块的位移矢量在历史运动信息列表中的索引加入任一个类。
[0236]
在一种可能的实施方式中,装置还包括:
[0237]
第一候选位移矢量列表生成模块1102,用于根据分类之后的位移矢量,生成候选位移矢量列表,一个待解码块对应于一个候选位移矢量列表。
[0238]
在一种可能的实施方式中,第一候选位移矢量列表生成模块1102,用于执行下述任一项:
[0239]
响应于多个类中存在不包含任一个位移矢量的类,根据除类以外的多个类中其他类包含的位移矢量,生成候选位移矢量列表。
[0240]
响应于多个类中存在不包含任一个位移矢量的类,将第一位移矢量加入候选位移矢量列表。
[0241]
响应于多个类中存在不包含任一个位移矢量的类,将与待解码块位置相邻的已解码块的第二位移矢量加入候选位移矢量列表。
[0242]
响应于多个类中存在不包含任一个位移矢量的类,将与待解码块位置不相邻的已解码块的第三位移矢量加入候选位移矢量列表。
[0243]
响应于多个类中存在不包含任一个位移矢量的类,将历史运动信息列表中解码顺序与待解码块相邻的已解码块的位移矢量加入候选位移矢量列表。
[0244]
响应于多个类中存在不包含任一个位移矢量的类,将历史运动信息列表中目标位置的位移矢量加入候选位移矢量列表。
[0245]
在一种可能的实施方式中,第一候选位移矢量列表生成模块1102,用于响应于多个类中存在不包含任一个位移矢量的类,根据多个第一位移矢量生成第一位移矢量列表,从第一位移矢量列表中确定与类对应的第一位移矢量,将与类对应的第一位移矢量加入候选位移矢量列表。
[0246]
在一种可能的实施方式中,第一候选位移矢量列表生成模块1102,用于响应于多个类中存在不包含任一个位移矢量的类,根据与待解码块位置相邻的多个已解码块的第二位移矢量生成第二位移矢量列表。从第二位移矢量列表中确定与类对应的第二位移矢量,将与类对应的第二位移矢量加入候选位移矢量列表。
[0247]
在一种可能的实施方式中,第一候选位移矢量列表生成模块1102,还用于响应于与待解码块位置相邻的已解码块不对应于任一位移矢量,将第四位移矢量加入候选位移矢量列表。
[0248]
在一种可能的实施方式中,装置还包括:
[0249]
第一目标位移矢量确定模块1103,用于根据待解码块的索引,在候选位移矢量列表中确定与待解码块对应的目标位移矢量。
[0250]
解码模块1104,用于根据目标位移矢量,对待解码块进行解码。
[0251]
在一种可能的实施方式中,分类条件包括以下至少其中之一:
[0252]
已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件。
[0253]
通过本技术实施例提供的技术方案,在解码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,解码端不会继续对该位移矢量进行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频解码的复杂度,提高了视频解码的效率。
[0254]
图12是本技术实施例提供的一种视频编码装置结构示意图,参见图12,装置包括:第二分类模块1201、第二候选位移矢量列表生成模块1202、第二目标位移矢量确定模块1203以及编码模块1204。
[0255]
第二分类模块1201,用于在视频编码过程中,对历史运动信息列表中已编码块的位移矢量进行分类。在分类时,若已编码块满足多个类中任一个类的分类条件,则将已编码块的位移矢量加入任一个类,并停止对已编码块的位移矢量的分类。
[0256]
在一种可能的实施方式中,第二分类模块1201,还用于在分类时,若已编码块满足多个类中任一个类的分类条件,且任一个类中存在任一位移矢量,不将已编码块对应的位移矢量分入任一个类。
[0257]
在一种可能的实施方式中,第二分类模块1201,用于若已编码块满足多个类中任一个类的分类条件,将已编码块的位移矢量在历史运动信息列表中的索引加入任一个类。
[0258]
在一种可能的实施方式中,装置还包括:
[0259]
第二候选位移矢量列表生成模块1202,用于根据分类之后的位移矢量,生成候选位移矢量列表,一个候选位移矢量列表对应于一个待编码块。
[0260]
第二目标位移矢量确定模块1203,用于从候选位移矢量列表中,确定与待编码块对应的目标位移矢量。
[0261]
编码模块1204,用于根据目标位移矢量,对待编码块进行编码,并根据目标位移矢量在候选位移矢量列表中的次序,生成待编码块的索引。
[0262]
在一种可能的实施方式中,第二候选位移矢量列表生成模块1202,用于执行下述任一项:
[0263]
响应于多个类中存在不包含任一个位移矢量的类,根据除类以外的多个类中其他类包含的位移矢量,生成候选位移矢量列表。
[0264]
响应于多个类中存在不包含任一个位移矢量的类,将第一位移矢量加入候选位移矢量列表。
[0265]
响应于多个类中存在不包含任一个位移矢量的类,将与待编码块位置相邻的已编码块的第二位移矢量加入候选位移矢量列表。
[0266]
响应于多个类中存在不包含任一个位移矢量的类,将与待编码块位置不相邻的已编码块的第三位移矢量加入候选位移矢量列表。
[0267]
响应于多个类中存在不包含任一个位移矢量的类,将历史运动信息列表中编码顺序与待编码块相邻的已编码块位移矢量加入候选位移矢量列表。
[0268]
响应于多个类中存在不包含任一个位移矢量的类,将历史运动信息列表中编码顺序与待编码块相邻的已编码块的位移矢量加入候选位移矢量列表。
[0269]
在一种可能的实施方式中,第二候选位移矢量列表生成模块1202,用于响应于多个类中存在不包含任一个位移矢量的类,根据多个第一位移矢量生成第一位移矢量列表,从第一位移矢量列表中确定与类对应的第一位移矢量,将与类对应的第一位移矢量加入候选位移矢量列表。
[0270]
在一种可能的实施方式中,第二候选位移矢量列表生成模块1202,用于响应于多个类中存在不包含任一个位移矢量的类,根据与待编码块位置相邻的多个已编码块的第二位移矢量生成第二位移矢量列表。从第二位移矢量列表中确定与类对应的第二位移矢量,将与类对应的第二位移矢量加入候选位移矢量列表。
[0271]
在一种可能的实施方式中,第二候选位移矢量列表生成模块1202,还用于响应于与待编码块位置相邻的已编码块不对应于任一位移矢量,将第四位移矢量加入候选位移矢量列表。
[0272]
在一种可能的实施方式中,第二目标位移矢量确定模块1203,用于确定候选位移矢量列表中多个位移矢量的率失真参数。将率失真参数最小的位移矢量确定为与待编码块对应的目标位移矢量。
[0273]
在一种可能的实施方式中,分类条件包括以下至少其中之一:
[0274]
已解码块的尺寸大于或等于尺寸阈值、已解码块的位移矢量的使用次数大于次数阈值以及已解码块与待解码块之间的空间位置关系符合位置条件。
[0275]
通过本技术实施例提供的技术方案,在编码端对历史运动信息列表中的位移矢量进行分类的过程中,一旦一个位移矢量被分入了一个类,编码端不会继续对该位移矢量进行分类,而是会终止对该位移矢量的分类。相较于相关技术中对历史运动信息列表中的位移矢量进行分类的过程,能够避免一个位移矢量被分入多个类的情况,从而在构建候选位移矢量列表时无需进行查重操作,降低了视频编码的复杂度,提高了视频编码的效率。
[0276]
本技术实施例提供了一种计算机设备,用于执行上述方法,该计算机设备可以实现为终端或者服务器,终端包括编码端和解码端,下面先对终端的结构进行介绍:
[0277]
图13是本技术实施例提供的一种终端的结构示意图。该终端1300可以是:智能手机、平板电脑、笔记本电脑或台式电脑。终端1300还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
[0278]
通常,终端1300包括有:一个或多个处理器1301和一个或多个存储器1302。
[0279]
处理器1301可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1301可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程
逻辑阵列)中的至少一种硬件形式来实现。处理器1301也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1301可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1301还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0280]
存储器1302可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1302还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1302中的非暂态的计算机可读存储介质用于存储至少一个程序代码,该至少一个程序代码用于被处理器1301所执行以实现本技术中方法实施例提供的视频解码方法或视频编码方法。
[0281]
在一些实施例中,终端1300还可选包括有:外围设备接口1303和至少一个外围设备。处理器1301、存储器1302和外围设备接口1303之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1303相连。具体地,外围设备包括:射频电路1304、显示屏1305、摄像头组件1306、音频电路1307、定位组件1308和电源1309中的至少一种。
[0282]
外围设备接口1303可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1301和存储器1302。在一些实施例中,处理器1301、存储器1302和外围设备接口1303被集成在同一芯片或电路板上;在一些其他实施例中,处理器1301、存储器1302和外围设备接口1303中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
[0283]
射频电路1304用于接收和发射rf(radio frequency,射频)信号,也称电磁信号。射频电路1304通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1304将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1304包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。
[0284]
显示屏1305用于显示ui(user interface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1305是触摸显示屏时,显示屏1305还具有采集在显示屏1305的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1301进行处理。此时,显示屏1305还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。
[0285]
摄像头组件1306用于采集图像或视频。可选地,摄像头组件1306包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。
[0286]
音频电路1307可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1301进行处理,或者输入至射频电路1304以实现语音通信。
[0287]
定位组件1308用于定位终端1300的当前地理位置,以实现导航或lbs(location based service,基于位置的服务)。
[0288]
电源1309用于为终端1300中的各个组件进行供电。电源1309可以是交流电、直流电、一次性电池或可充电电池。
[0289]
在一些实施例中,终端1300还包括有一个或多个传感器1310。该一个或多个传感器1310包括但不限于:加速度传感器1311、陀螺仪传感器1312、压力传感器1313、指纹传感器1314、光学传感器1315以及接近传感器1316。
[0290]
加速度传感器1311可以检测以终端1300建立的坐标系的三个坐标轴上的加速度大小。
[0291]
陀螺仪传感器1312可以检测终端1300的机体方向及转动角度,陀螺仪传感器1312可以与加速度传感器1311协同采集用户对终端1300的3d动作。
[0292]
压力传感器1313可以设置在终端1300的侧边框和/或显示屏1305的下层。当压力传感器1313设置在终端1300的侧边框时,可以检测用户对终端1300的握持信号,由处理器1301根据压力传感器1313采集的握持信号进行左右手识别或快捷操作。当压力传感器1313设置在显示屏1305的下层时,由处理器1301根据用户对显示屏1305的压力操作,实现对ui界面上的可操作性控件进行控制。
[0293]
指纹传感器1314用于采集用户的指纹,由处理器1301根据指纹传感器1314采集到的指纹识别用户的身份,或者,由指纹传感器1314根据采集到的指纹识别用户的身份。
[0294]
光学传感器1315用于采集环境光强度。在一个实施例中,处理器1301可以根据光学传感器1315采集的环境光强度,控制显示屏1305的显示亮度。
[0295]
接近传感器1316用于采集用户与终端1300的正面之间的距离。
[0296]
本领域技术人员可以理解,图13中示出的结构并不构成对终端1300的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0297]
上述计算机设备还可以实现为服务器,下面对服务器的结构进行介绍:
[0298]
图14是本技术实施例提供的一种服务器的结构示意图,该服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(central processing units,cpu)1401和一个或多个的存储器1402,其中,所述一个或多个存储器1402中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器1401加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器1400还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器1400还可以包括其他用于实现设备功能的部件,在此不做赘述。
[0299]
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的视频解码方法或视频编码方法。例如,该计算机可读存储介质可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
[0300]
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机程序代码,该计算机程序代码存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机程序代码,处理器执行该计算机程序代码,使得该计算机设备执行上述视频解码方法或上述视频编码方法。
[0301]
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件
来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0302]
上述仅为本技术的可选实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献