解码方法、编码方法、装置、设备及机器可读存储介质与流程

文档序号:27692243发布日期:2021-12-01 03:45阅读:69来源:国知局
解码方法、编码方法、装置、设备及机器可读存储介质与流程

1.本技术涉及视频编解码技术,尤其涉及一种解码方法、编码方法、装置、设备及机器可读存储介质。


背景技术:

2.完整的视频编码一般包括预测、变换、量化、熵编码、滤波等操作。预测可以分为帧内预测和帧间预测,帧内预测是利用周围已编码单元作为参考对当前未编码单元进行预测,有效去除空域上的冗余。帧间预测是使用邻近已编码图像对当前图像进行预测,有效去除时域上的冗余。
3.通用视频编码(versatile video coding,简称vvc)标准里采纳的可选时域运动矢量预测(alternative temporal motion vector prediction,简称atmvp)技术是利用时域子块的运动信息,为当前编码单元内的每个子块提供不同的运动信息。


技术实现要素:

4.有鉴于此,本技术提供一种解码方法、编码方法、装置、设备及机器可读存储介质。
5.具体地,本技术是通过如下技术方案实现的:
6.根据本技术实施例的第一方面,提供一种解码方法,包括:
7.获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值;
8.当所述增强时域运动矢量预测模式标志位的取值为第一数值时:
9.根据所述当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息;
10.根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表;
11.根据所述增强时域运动矢量预测模式索引值,在所述增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定所述增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;
12.根据所述目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,所述目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息。
13.在一些实施例中,所述获取当前编码单元的增强时域运动矢量预测模式标志位的取值,包括:
14.当所述当前编码单元满足第一解析条件时,从码流中解析所述增强时域运动矢量预测模式标志位的取值;
15.否则,确定所述增强时域运动矢量预测模式标志位的取值为第二数值;
16.所述增强时域运动矢量预测模式标志位的取值为第一数值,表明所述当前编码单
元启用增强时域运动矢量预测模式,所述增强时域运动矢量预测模式标志位的取值为第二数值表明所述当前编码单元不启用增强时域运动矢量预测模式。
17.在一些实施例中,所述当前编码单元满足第一解析条件包括以下之一或多个:
18.所述当前编码单元的预测模式为跳过模式或直接模式;
19.所述当前编码单元的尺寸满足预设尺寸限制;
20.序列级高层语法允许所述当前编码单元启用增强时域运动矢量预测技术;
21.所述当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
22.在一些实施例中,所述当前编码单元满足第一解析条件包括:
23.所述当前编码单元的预测模式为跳过模式或直接模式;
24.所述当前编码单元的尺寸满足尺寸限制:当前编码单元的宽度和高度均大于或等于n0;
25.序列级高层语法允许所述当前编码单元启用增强时域运动矢量预测技术;
26.所述当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
27.在一些实施例中,所述增强时域运动矢量预测模式标志位采用基于上下文的二进制算术编码,并采用一个上下文模型。
28.在一些实施例中,所述获取当前编码单元的增强时域运动矢量预测模式索引值,包括:
29.当所述当前编码单元满足第二解析条件时,从码流中解析所述增强时域运动矢量预测模式索引值。
30.在一些实施例中,所述当前编码单元满足第二解析条件,包括以下之一或多个:
31.所述当前编码单元的预测模式为跳过模式或直接模式;
32.所述当前编码单元启用增强时域运动矢量预测模式。
33.在一些实施例中,所述增强时域运动矢量预测模式索引值的反二值化方式采用最大值为4的截断一元码,最多使用4个二元符号串,每个二元符号采用单独的上下文模型,一共4个上下文模型。
34.在一些实施例中,所述根据当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息,包括:
35.根据当前图像帧类型确定匹配编码单元所在的时域参考图像;
36.根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在所述时域参考图像中的坐标信息;
37.其中,若所述当前图像帧类型为p图像,则所述时域参考图像是参考图像队列0中参考帧索引值为0的参考图像;若当前图像是b图像,则所述时域参考图像是参考图像队列1中参考帧索引值为0的参考图像。
38.在一些实施例中,所述根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在所述时域参考图像中的坐标信息,包括:
39.根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单
元的坐标信息。
40.在一些实施例中,所述根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息,包括:
41.根据当前最大编码单元在图像中的左上角横坐标、最大编码单元的大小、当前编码单元的宽度、当前图像的宽度、当前编码单元在图像中的左上角横坐标,确定所述初始匹配编码单元的横坐标;
42.根据当前最大编码单元在图像中的左上角纵坐标、最大编码单元的大小、当前编码单元的高度、当前图像的高度、当前编码单元在图像中的左上角纵坐标来,确定所述初始匹配编码单元的纵坐标。
43.在一些实施例中,所述根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表,包括:
44.根据所述初始匹配编码单元的坐标信息,确定至少一个增强时域运动矢量预测模式号;
45.根据所述至少一个增强时域运动矢量预测模式号,构建增强时域候选列表。
46.在一些实施例中,匹配编码单元的坐标信息为匹配编码单元在时域参考图像中的的左上角坐标;
47.所述根据所述至少一个增强时域运动矢量预测模式号,构建增强时域候选列表,包括:
48.将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
49.若my+8小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值,且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
50.若mx+8小于或等于x_ctb_pos+lcu_size

cu_width和horizontal_size

cu_width中的较小值,且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
51.若my

8大于或等于y_ctb_pos,且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
52.若mx

8大于或等于x_ctb_pos,且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1;
53.其中,(mx,my)所述初始匹配编码单元的坐标信息,(x_ctb_pos,y_ctb_pos)为当前最大编码单元在图像中的左上角坐标,lcu_size为最大编码单元的大小,cu_width和cu_height分别为当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度;
54.a1为所述初始匹配编码单元的左上角4*4块、b1为a1正左侧的4*4块,c1为a1正上方的4*4块;a2为所述初始匹配编码单元的右上角4*4块、b2为a2正右侧的4*4块,c2为a2正上方的4*4块;a3为所述初始匹配编码单元的左下角4*4块、b3为a3正左侧的4*4块,c3为a3正下方的4*4块;a4为所述初始匹配编码单元的右下角4*4块、b4为a4正右侧的4*4块,c4为a4正下方的4*4块。
55.在一些实施例中,所述根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表,还包括:
56.当所述增强时域候选列表长度小于5时,循环执行如下操作,直至增强时域候选列表长度等于5:
57.将与当前增强时域候选列表中最后一个增强时域运动矢量预测模式号相同的增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1。
58.在一些实施例中,所述根据所述增强时域运动矢量预测模式索引值,在所述增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定所述增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息,包括:
59.若增强时域运动矢量预测模式号为0,则px等于mx,py等于my;
60.若增强时域运动矢量预测模式号为1,则px等于mx,py等于my+n;
61.若增强时域运动矢量预测模式号为2,则px等于mx+n,py等于my;
62.若增强时域运动矢量预测模式号为3,则px等于mx,py等于my

n;
63.若增强时域运动矢量预测模式号为4,则px等于mx

n,py等于my;
64.其中,(mx,my)所述初始匹配编码单元的左上角坐标,(px,py)为所述目标匹配编码单元的左上角坐标。
65.在一些实施例中,所述根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括:
66.对于目标匹配编码单元中的任一子块:
67.在当前图像帧类型是p图像的情况下:
68.若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予所述当前编码单元对应位置的子块。
69.在一些实施例中,所述根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括
70.对于目标匹配编码单元中的任一子块:
71.在当前图像帧类型是b图像的情况下:
72.若该子块的前向运动信息和后向运动信息可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前编码单元对应位置的子块;
73.若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
74.若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置
的子块。
75.在一些实施例中,所述根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括
76.对于目标匹配编码单元中的任一子块:
77.在当前图像帧类型是p图像的情况下:
78.若将子块的前向运动信息不可用,则当当前编码单元的第一周围块的前向运动信息可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息不可用时,将零运动信息赋予当前编码单元对应位置的子块;
79.在当前图像帧类型是b图像的情况下:
80.若将子块的前向运动信息和后向运动信息均不可用,则当当前编码单元的第一周围块的前向运动信息和后向运动信息均可用时,将第一周围块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息可用,但后向运动信息不可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的后向运动信息可用,但前向运动信息不可用时,将第一周围块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前编码单元对应位置的子块;
81.其中,所述第一周围块包括所述当前编码单元任一已解码的相邻块。
82.在一些实施例中,所述根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息之后,还包括:
83.根据所述当前编码单元内每个子块的运动信息,对所述当前编码单元内对应子块进行运动补偿。
84.在一些实施例中,所述根据所述当前编码单元内每个子块的运动信息,对所述当前编码单元内对应子块进行运动补偿,包括:
85.对于当前编码单元的任一子块,对该子块的运动信息不进行解码端运动矢量调整技术;
86.若该子块满足双向光流条件,根据该子块的运动信息对该子块进行运动补偿,并使用双向光流技术对补偿后的像素值叠加光流偏移值,得到该子块的预测样本矩阵;
87.否则,根据该子块的运动信息对该子块进行运动补偿,得到该子块的预测样本矩阵;
88.其中,当前编码单元的预测样本由各子块的预测样本组成。
89.根据本技术实施例的第二方面,提供一种编码方法,包括:
90.根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息;
91.根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表;
92.按顺序遍历增强时域候选列表中的每个增强时域运动矢量预测模式号,确定每个增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;
93.根据所述目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,所述目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息;
94.根据所述当前编码单元内的每个子块的运动信息,对当前编码单元内的对应子块进行运动补偿;
95.计算增强时域运动矢量预测模式对应的率失真代价值,并将该率失真代价值与其他预测模式的率失真代价值进行比较,选择最小的率失真代价值所对应的预测模式,并将对应的增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值写入码流,传送给解码端设备。
96.根据本技术实施例的第三方面,提供一种解码装置,包括:
97.获取单元,用于获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值;
98.第一确定单元,用于当所述增强时域运动矢量预测模式标志位的取值为第一数值时,根据所述当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息;
99.构建单元,用于根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表;
100.第二确定单元,用于根据所述增强时域运动矢量预测模式索引值,在所述增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定所述增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;
101.第三确定单元,用于根据所述目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,所述目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息。
102.根据本技术实施例的第四方面,提供一种编码装置,包括:
103.第一确定单元,用于根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息;
104.构建单元,用于根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表;
105.第二确定单元,用于按顺序遍历增强型时域候选列表中的每一种增强时域候选模式,确定每个模式对应的目标匹配编码单元的坐标信息;
106.第三确定单元,用于根据所述目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,所述目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息;
107.运动补偿单元,用于根据所述当前编码单元内的每个子块的运动信息,对当前编码单元内的对应子块进行运动补偿;
108.编码单元,用于计算增强时域运动矢量预测模式对应的率失真代价值,并将该率失真代价值与其他预测模式的率失真代价值进行比较,选择最小的率失真代价值所对应的预测模式,并将对应的增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索
引值写入码流,传送给解码端设备。
109.根据本技术实施例的第五方面,提供一种解码端设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现第一方面的解码方法。
110.根据本技术实施例的第六方面,提供一种编码端设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器用于执行机器可执行指令,以实现第二方面的编码方法。
111.本技术实施例的解码方法,通过获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值;当该增强时域运动矢量预测模式标志位的取值为第一数值时,根据当前编码单元的坐标信息,确定当前编码单元的初始匹配编码单元的坐标信息,并根据初始匹配编码单元的坐标信息,构建增强时域候选列表;根据增强时域运动矢量预测模式索引值,在增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;根据目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,该目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息,提高了编解码性能。
附图说明
112.图1是本技术一示例性实施例示出的一种编解码方法的示意图;
113.图2是本技术一示例性实施例示出的一种clip操作的示意图;
114.图3是本技术一示例性实施例示出的一种解码方法的流程示意图;
115.图4是本技术一示例性实施例示出的对匹配编码单元进行偏移时的参考块的示意图;
116.图5是本技术一示例性实施例示出的当前编码单元的第一周围块的示意图;
117.图6是本技术一示例性实施例示出的又一种解码方法的流程示意图;
118.图7是本技术一示例性实施例示出的一种解码装置的结构示意图;
119.图8是本技术一示例性实施例示出的又一种解码装置的结构示意图;
120.图9是本技术一示例性实施例示出的一种解码端设备的硬件结构示意图;
121.图10是本技术一示例性实施例示出的一种编码装置的结构示意图;
122.图11是本技术一示例性实施例示出的一种编码端设备的硬件结构示意图。
具体实施方式
123.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
124.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
125.为了使本领域技术人员更好地理解本技术实施例提供的技术方案,下面先对本技术实施例涉及的部分技术术语以及现有视频编解码的主要流程进行简单说明。
126.为了使本领域技术人员更好地理解本技术实施例提供的技术方案,下面先对本技术实施例涉及的部分技术术语进行简单说明。
127.技术术语:
128.1、预测像素(prediction signal):指从已经编解码的像素中导出的像素值,通过原始像素与预测像素之差获得残差,进而进行残差变换量化以及系数编码。
129.示例性的,帧间的预测像素指的是当前图像块从参考帧(重建像素帧)导出的像素值,由于像素位置离散,需要通过插值运算来获取最终的预测像素。预测像素与原始像素越接近,两者相减得到的残差能量越小,编码压缩性能越高。
130.2、运动矢量(motion vector,简称mv):在帧间编码中,用mv表示当前编码单元与其参考图像中的最佳匹配编码单元之间的相对位移。每个划分的块(可以称为子块)都有相应的运动矢量需要传送到解码端。若对每个子块的mv进行独立编码和传输,特别是划分成小尺寸的子块,需要消耗相当多的比特。为了降低用于编码mv的比特数,视频编码中会利用相邻图像块之间的空间相关性,根据相邻已编码块的mv对当前待编码块的mv进行预测,然后对预测差进行编码。这样可以有效地降低表示mv的比特数。基于此,在对当前图像块的mv编码过程中,一般首先使用相邻已编码块的mv预测当前图像块的mv,然后对mv的预测值(motion vector prediction,简称mvp)与运动矢量的真正估值之间的差值,即运动矢量残差(motionvector difference,简称mvd)进行编码,从而有效降低mv的编码比特数。
131.3、运动信息(motion information):由于mv表示当前编码单元与某个参考图像中的最佳匹配编码单元之间的相对位移,为了准确获取指向图像块的信息,除了mv信息,还需要通过参考图像的索引信息来表示使用了哪个参考图像。视频编码技术中,对于当前图像,通常会基于一定的原则,建立一个参考图像列表,参考图像索引信息则表示当前图像块采用了参考图像列表中的第几个参考图像。此外,很多编码技术还支持多个参考图像列表,因此还需要一个索引值表示使用了哪一个参考图像列表,该索引值可以称为参考方向。视频编码中,mv、参考帧索引、参考方向等与运动相关的编码信息统称为运动信息,例如,运动信息为:用于帧间预测的五元组,由预测参考模式、l0运动矢量、l1运动矢量、l0参考索引l1参考索引构成。
132.4、率失真原则(rate

distortion optimized,简称rdo):评价编码效率的指标包括:码率和峰值信噪比(peak signal to noise ratio,简称psnr)。码率越小,则压缩率越大;psnr越大,重建图像质量越好。在模式选择的时候,判别公式实质上也就是对二者的综合评价。
133.模式对应的代价:j(mode)=d+λ*r。其中,d表示失真(distortion),通常使用sse(差值均方和)指标来衡量,sse是指重建块与源图像块的差值均方和;λ是拉格朗日乘子;r就是该模式下图像块编码所需的实际比特数,包括编码模式信息、运动信息、残差等所需的比特总和。
134.在模式选择时,若使用rdo原则去对编码模式做比较决策,通常可以保证编码性能最佳。
135.5、双向光流(bi

directional optical flow,简称bio):bio技术是利用前向和后
向参考帧中像素值的梯度信息来对当前编码单元叠加光流补偿值。
136.示例性的,bio的技术细节可以如下:
137.5.1、计算梯度和s1、s2、s3、s5和s6:
[0138][0139][0140][0141][0142][0143]
其中,ψ
x
(i,j)、ψ
y
(i,j)和θ(i,j)的计算如下所示:
[0144][0145][0146]
θ(i,j)=i
(1)
(i,j)

i
(0)
(i,j)
[0147]
其中,i0(x,y)和i
(1)
(x,y)为前向运动补偿值和后向运动补偿值及其扩展值。其扩展方式可以是从块边界的运动补偿值拷贝,也可以是从参考像素位置获取。ψ
x
(i,j)和ψ
y
(i,j)为像素点在前向参考帧和后向参考帧的水平和垂直分量的变化率。θ(i,j)表示前向运动补偿只及其扩展值与后向运动补偿值及其扩展值的像素差值。
[0148]
5.2、然后计算改善运动矢量v
x
和v
y
[0149]
v
x
=(s1+r)>m?clip3(

th
bio
,th
bio
,(s3<<5)/(s1+r)):0
[0150]
v
y
=(s5+r)>m?clip3(

th
bio
,th
bio
,((s6<<6)

v
x
s2)/((s5+r)<<1)):0
[0151]
其中,<<为左移运算符,“x>y?z:a”表明当“x>y”成立时,取值为z,当“x>y”不成立时,取值为a;m和th
bio
均为阈值,r为正则项,避免除0操作。s1、s2、s3、s5和s6为像素的梯度和,clip3表示的是将里面的值保证在

th
bio
和th
bio
之间。
[0152]
5.3、根据改善运动矢量获取光流偏移值b。
[0153][0154]
其中,(x,y)为当前编码单元内部每个像素的坐标,i0(x,y)和i
(1)
(x,y)为前向运动补偿值和后向运动补偿值及其扩展值。
[0155]
5.4、最后根据光流偏移值计算当前编码单元的每个像素的预测值pred
bio
(x,y):
[0156]
pred
bio
(x,y)=(i
(0)
(x,y)+i
(1)
(x,y)+b+1)>>1
[0157]
其中,i0(x,y)和i
(1)
(x,y)为前向运动补偿值和后向运动补偿值。
[0158]
6、解码端运动矢量改良(decoder

side motion vector refinement,简称dmvr):解码端运动矢量调整技术dmvr应用于直接模式或者跳过模式。
[0159]
示例性的,dmvr技术细节如下:
[0160]
6.1、利用初始的mv获取预测块和搜索区域内所需的参考像素;
[0161]
6.2、获取最优整像素位置;
[0162]
示例性的,将当前编码单元的亮度图像块划分为不重叠且位置相邻的子块,所有子块的初始mv均为mv0和mv1。对于每个子块,以初始mv0和mv1所对应的位置为中心,开始寻找附近一定范围内模板匹配失真最小的位置,模板匹配失真的计算方式为计算前向搜索区域中以中心位置开始的子块宽度乘以子块高度的块,和后向搜索区域中以中心位置开始的子块宽度乘以子块高度的块之间的sad(sum of absolute differences,差的绝对值的和)值。
[0163]
6.3、获取最优亚像素位置;
[0164]
示例性的,亚像素位置的确认使用整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,估计整数位置最优位置附近的二次失真平面,计算得到失真平面中失真最小的位置作为亚像素位置。其计算公式如下所示:
[0165]
水平亚像素位置=(sad_left

sad_right)*n/((sad_right+sad_left

2*sad_mid)*2)
[0166]
垂直亚像素位置=(sad_btm

sad_top)*n/((sad_top+sad_btm

2*sad_mid)*2)
[0167]
其中,sad_mid、sad_left、sad_right、sad_top和sad_btm分别是整数位置最优位置、其左侧、其右侧、其上方、其下方共五处的模板匹配失真值,n是精度。
[0168]
6.4、根据最优mv,计算得到最终预测块。
[0169]
下面再对现有视频编解码的主要流程进行简单说明。
[0170]
请参考图1中的(a),以视频编码为例,视频编码一般包括预测、变换、量化、熵编码等过程,进一步地,编码过程还可以按照图1中的(b)的框架来实现。
[0171]
其中,预测可以分为帧内预测和帧间预测,帧内预测是利用周围已编码块作为参考对当前未编码块进行预测,有效去除空域上的冗余。帧间预测是使用邻近已编码图像对当前图像进行预测,有效去除时域上的冗余。
[0172]
变换是指将图像从空间域转换至变换域,利用变换系数对图像加以表示。绝大多数图像都含有较多平坦区域和缓慢变化的区域,适当的变换可以使图像由在空间域的分散分布转换为在变换域的相对集中分布,去除信号之间的频域相关性,配合量化过程,可以有效压缩码流。
[0173]
熵编码是一种无损编码方式,可以把一系列元素符号转变为一个用来传输或存储的二进制码流,输入的符号可能包括量化后的变换系数、运动矢量信息、预测模式信息,变换量化相关语法等。熵编码可以有效地去除视频元素符号的冗余。
[0174]
上述是以编码为例进行介绍,视频解码与视频编码的过程是相对的,即视频解码通常包括熵解码、预测、反量化、反变换、滤波等过程,各个过程的实现原理与熵编码相同或相似。
[0175]
下面再对atmvp技术的实现进行简单说明。
[0176]
现有atmvp技术的实现主要包括以下流程:
[0177]
1)、确定时域运动矢量预测(temporal motion vector prediction,简称tmvp):判断当前编码单元的a0位置的运动信息是否满足如下条件:
[0178]
a)a0位置存在,且与当前编码单元处于同一个片(slice)和单元(tile);
[0179]
b)a0位置的预测模式为帧间模式;
[0180]
c)a0位置的参考帧索引与当前帧的co

located帧的参考帧索引一致(先判断l0方向,再判断l1方向)。
[0181]
其中,a0位置即(xcb

1,ycb+cbheight

1)的位置;(xcb,ycb)为当前单元的左上角的坐标,cbheight为当前编码单元的高度。
[0182]
2)、计算中心参考块的位置:步骤1)中获取到的tmvp的精度为1/16,需要右移4位转化为整像素。同时,需要将参考块的位置修剪(clip)到当前lcu(largest coding unit,最大编码单元)在参考帧中的同位lcu的范围内,即当参考块的位置未处于当前lcu在参考帧中的同位lcu的范围内时,将参考块水平平移或/和垂直平移到刚好处于当前lcu在参考帧中的同位lcu的范围内,其示意图如图2所示。
[0183]
中心参考块的位置的计算方式如下所示:
[0184]
xcolcb=clip3(xctb,min(picwidth

1,xctb+(1<<ctblog2size)+3),xcolctrcb+(tempmv[0]>>4))
[0185]
ycolcb=clip3(yctb,min(picheight

1,yctb+(1<<ctblog2size)

1),ycolctrcb+(tempmv[1]>>4))
[0186]
其中,(xcolcb,ycolcb)为中心参考块的左上角的坐标,(xctb,yctb)为当前lcu在参考帧中的同位lcu的左上角的坐标,picwidth和picheight分别为当前帧的宽和高,ctblog2size为以2为底,对当前lcu的尺寸取对数,(xcolctrcb,ycolctrcb)为当前编码单元的中心位置的坐标,tempmv[0]和tempmv[1]分别为a0位置的水平运动矢量和垂直运动矢量。
[0187]
3)、判断中心参考块的预测模式,若预测模式为非帧间预测模式,则ctrpredflagl0和ctrpredflagl1均为0;否则,即预测模式为帧间预测模式,转至步骤4)。
[0188]
4)、调整参考位置:因为子块大小为8*8,运动信息是以8*8为单位。因此,需要将中心参考块的左上角的坐标调整到8倍坐标位置。调整公式如下所示:
[0189]
xcolcb=((xcolcb>>3)<<3)
[0190]
ycolcb=((ycolcb>>3)<<3)
[0191]
5)、获取调整后的中心参考块的运动信息:若调整后的中心参考块的预测模式为帧内预测或者帧内块复制(intra block copy,简称ibc)模式,则flaglxcol=0;否则,分别判断调整后的中心参考块的l0和l1方向的运动信息是否存在,若存在,则flaglxcol=1,获取调整后的中心参考块的l0和l1方向的运动信息。
[0192]
示例性的,lx=l0或lx=l1,当调整后的中心参考块的预测模式为帧内预测或帧内块复制模式时,flagl0col=0,且flagl1col=0。
[0193]
当调整后的中心参考块的预测模式不是帧内预测,也不是帧内块复制模式时,则当调整后的中心参考块的l0方向的运动信息存在时,flagl0col=1,当调整后的中心参考
块的l0方向的运动信息不存在时,flagl0col=0;当调整后的中心参考块的l1方向的运动信息存在时,flagl1col=1,当调整后的中心参考块的l1方向的运动信息不存在时,flagl1col=0。
[0194]
当flaglxcol=1时,若当前帧的长期参考帧和co

located帧的长期参考帧不相等,则确定调整后的中心参考块的运动信息不可用,ctrpredflaglx=0;否则,将该调整后的中心参考块的运动信息伸缩(scale)到指向listx(x=0或1)的第一帧,作为当前中心参考块位置的运动信息,ctrpredflaglx=1。
[0195]
6)、当ctrpredflaglx=1时,计算每个子块的运动信息:遍历匹配编码单元内的每个子块,对于任一子块,将该子块clip到匹配编码单元所在lcu的范围内,若clip后的子块的运动信息可用,则将该clip后的子块的运动信息伸缩到指向listx的第一帧,并将伸缩后的运动信息赋予当前编码单元对应位置的子块;若clip后的子块的运动信息不可用,则使用调整后的中心参考块的中心位置的运动信息伸缩到指向listx的第一帧,并将伸缩后的运动信息赋予当前编码单元对应位置的子块。
[0196]
示例性的,可以通过当前编码单元的相邻块的运动信息,在co

located(共同位置)帧中找到与当前编码单元的相邻编码单元所对应的编码单元,然后将与当前编码单元在co

located帧中对应位置的编码单元内部的每个子块的运动信息提供给当前编码单元内的每个子块使用。
[0197]
在co

located帧中寻找与当前编码单元对应位置的编码单元是需要依赖于当前编码单元的周围编码单元的运动信息的,若周围编码单元的运动信息不准,则会导致寻找的对应位置的编码单元的运动信息也不可靠,从而影响编解码性能。
[0198]
为了提高匹配编码单元的运行信息的可靠性,优化编解码性能,本技术实施例利用当前编码单元在co

located帧中同位编码单元的运动信息来确定匹配编码单元,并且将找到的匹配编码单元进行上下左右等一系列的偏移,产生多个时域候选模式,一定程度上避免了由于周围编码单元的运动信息不准而导致的寻找匹配编码单元不准的问题。
[0199]
本技术实施例的主要实现流程可以包括以下6个部分:
[0200]
第一部分(可以记为a)、根据当前编码单元的编码/解码条件,编码/解析增强时域运动矢量预测(enhanced temporal motion vector prediction,简称etmvp)模式标志位和增强时域运动矢量预测模式索引值;
[0201]
第二部分(可以记为b)、根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息;
[0202]
第三部分(可以记为c)、根据初始匹配编码单元的坐标信息,构建增强时域候选列表;
[0203]
第四部分(可以记为d)、根据增强时域运动矢量预测模式索引值,在增强时域候选模式列表中获取对应的增强时域运动矢量预测模式,并确定该增强时域运动矢量预测模式对应的目标匹配编码单元的坐标信息。
[0204]
第五部分(可以记为e)、根据目标匹配编码单元的坐标信息获得当前编码单元内每个子块的运动信息;
[0205]
第六部分(可以记为f)、根据当前编码单元内的每个子块的运动信息,对当前编码单元内对应子块进行运动补偿。
[0206]
示例性的,上述六个部分的先后顺序可以调整。
[0207]
为了使本技术实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术实施例中技术方案作进一步详细的说明。
[0208]
请参见图3,为本技术实施例提供的一种解码方法的流程示意图,其中,该解码方法可以应用于解码端设备,如图3所示,该解码方法可以包括以下步骤:
[0209]
步骤s300、获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值。
[0210]
本技术实施例中,当前编码单元可以为待处理图像中的任一个编码单元。在实施中,可以将待处理图像划分为不同的编码单元,然后可以按一定顺序依次对每个编码单元进行处理。其中,每个编码单元的大小和形状可以根据预设的划分规则进行设置。
[0211]
示例性的,对当前编码单元进行解码时,可以获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值。
[0212]
示例性的,当前编码单元的增强时域运动矢量预测模式标志位的取值可以从码流中解析得到,或者,在当前编码单元满足一定条件的情况下推导得到。
[0213]
示例性的,当前编码单元的增强时域运动矢量预测模式索引值可以从码流中解析得到,或者,在当前编码单元满足一定条件的情况下推导得到。
[0214]
当获取到的当前编码单元的增强时域运动矢量预测模式标志位的取值为第一数值时,执行步骤s310~步骤s340。
[0215]
示例性的,增强时域运动矢量预测模式标志位的取值可以包括用于表明启用增强时域运动矢量预测模式的值(本文中称为第一数值,如1)。
[0216]
步骤s310、根据当前编码单元的坐标信息,确定当前编码单元的初始匹配编码单元的坐标信息。
[0217]
本技术实施例中,当获取到的当前编码单元的增强时域运动矢量预测模式标志位的取值为第一数值时,可以确定当前编码单元启用增强时域运动矢量预测模式,此时,可以进行初始匹配编码单元坐标信息的确定。
[0218]
示例性的,可以根据当前编码单元的坐标信息,确定当前编码单元的初始匹配编码单元的坐标信息。
[0219]
示例性的,该初始匹配编码单元的坐标信息可以为该初始匹配编码单元在对应的参考图像中的坐标信息,如左上角坐标。
[0220]
步骤s320、根据初始匹配编码单元的坐标信息,构建增强时域候选列表。
[0221]
本技术实施例中,当确定了当前编码单元的初始匹配编码单元的坐标信息时,可以根据该初始匹配编码单元的坐标信息,构建增强时域候选列表。
[0222]
示例性的,该增强时域候选列表包括至少一个增强时域运动矢量预测模式号。
[0223]
示例性的,不同增强时域运动矢量预测模式号对应的匹配编码单元的坐标信息可以不同。
[0224]
步骤s330、根据获取到的增强时域运动矢量预测模式索引值,在增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定该增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息。
[0225]
本技术实施例中,可以根据步骤s300中获取到的当前编码单元的增强时域运动矢
量预测模式索引值,在增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定该增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息。
[0226]
示例性的,目标匹配编码单元可以包括初始匹配编码单元,或,通过对初始匹配编码单元进行上/下/左/右偏移得到的匹配编码单元。
[0227]
示例性的,目标匹配编码单元的坐标信息可以与初始匹配编码单元的坐标信息一致,或,在初始匹配编码单元的坐标信息的基础上,根据预设偏移量进行调整得到。
[0228]
步骤s340、根据目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,该目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息。
[0229]
本技术实施例中,当确定了目标匹配编码单元的坐标信息时,可以根据该目标匹配编码单元的坐标信息,确定目标匹配编码单元的运动信息。
[0230]
示例性的,目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息。
[0231]
示例性的,可以根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息。
[0232]
例如,根据目标匹配编码单元内第h行第l列的子块的运动信息,确定当前编码单元内第h行第1列的子块的运动信息。
[0233]
在一些实施例中,步骤s300中,获取当前编码单元的获取增强时域运动矢量预测模式标志位的取值,可以包括:
[0234]
当当前编码单元满足第一解析条件时,从码流中解析增强时域运动矢量预测模式标志位的取值;
[0235]
否则,确定增强时域运动矢量预测模式标志位的取值为第二数值,该增强时域运动矢量预测模式标志位的取值为第二数值表明当前编码单元不启用增强时域运动矢量预测模式。
[0236]
示例性的,考虑到增强时域运动矢量预测模式的使用通常需要满足一定的条件,在不满足该条件的情况下,可能并不适用增强时域运动矢量预测模式,在该情况下,增强时域运动矢量预测模式标志位的取值不需要从码流中解析,而是可以推导得出。
[0237]
示例性的,可以根据当前编码单元是否满足指定条件(本文中称为第一解析条件),确定从码流中解析当前编码单元的增强时域运动矢量预测模式标志位的取值,或,推导得出当前编码单元的增强时域运动矢量预测模式标志位的取值。
[0238]
示例性的,当当前编码单元满足第一解析条件时,从码流中解析当前编码单元的增强时域运动矢量预测模式标志位的取值;当当前编码单元不满足第一解析条件时,可以不需要从码流中解析当前编码单元的增强时域运动矢量预测模式标志位的取值,而是可以确定当前编码单元不启用增强时域运动矢量预测模式,当前编码单元的增强时域运动矢量预测模式标志位的取值为用于表明当前编码单元不启用增强时域运动矢量预测模式的值(本文中称为第二数值)。
[0239]
在一个示例中,上述当前编码单元满足第一解析条件,可以包括以下之一或多个:
[0240]
当前编码单元的预测模式为跳过模式或直接模式;
[0241]
当前编码单元的尺寸满足预设尺寸限制;
[0242]
序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术;
[0243]
当前编码单元满足角度加权预测使用条件或满足高级运动矢量表达使用条件。
[0244]
示例性的,考虑到增强时域运动矢量预测模式的使用对编码单元的预测模式以及尺寸等具有一定的要求,可以依据编码单元的预测模式和/或尺寸等是否满足要求来确定编码单元是否适用。
[0245]
此外,考虑到当高层语法不允许当前编码单元启用增强时域运动矢量预测技术时,可以确定当前编码单元不启用增强时域运动矢量预测技术。
[0246]
示例性的,可以在当前编码单元的预测模式为跳过(skip)模式或直接(direct)模式、当前编码单元的尺寸满足预设尺寸限制、序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术、当前编码单元满足角度加权预测(angle weight prediction,简称awp)使用条件或满足高级运动矢量表达(ultimate motion vector expression,简称umve)使用条件等条件中的一个或多个满足时,确定当前编码单元满足第一解析条件。
[0247]
例如,在当前编码单元的预测模式为跳过模式或直接模式时,或,在当前编码单元的尺寸满足预设尺寸限制时,或,在序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术时,或,在当前编码单元满足角度加权预测使用条件或满足高级运动矢量表达使用条件时,确定当前编码单元满足第一解析条件。
[0248]
例如,在当前编码单元的预测模式为跳过模式或直接模式时,确定当前编码单元满足第一解析条件。
[0249]
例如,在当前编码单元的尺寸满足预设尺寸限制时,确定当前编码单元满足第一解析条件。
[0250]
例如,在序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术时,确定当前编码单元满足第一解析条件。
[0251]
例如,在当前编码单元满足角度加权预测使用条件或满足高级运动矢量表达使用条件时,确定当前编码单元满足第一解析条件。
[0252]
又例如,可以在当前编码单元的预测模式为跳过模式或直接模式、当前编码单元的尺寸满足预设尺寸限制、序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术时,即上述条件均满足时,确定当前编码单元满足第一解析条件。
[0253]
又例如,可以在当前编码单元的预测模式为跳过模式或直接模式、当前编码单元的尺寸满足预设尺寸限制、序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术、且当前编码单元满足角度加权预测使用条件或满足高级运动矢量表达使用条件时,即上述条件均满足时,确定当前编码单元满足第一解析条件。
[0254]
示例性的,当前编码单元的尺寸满足预设尺寸限制可以包括当前编码单元的宽度和高度均大于或等于n0。
[0255]
示例性的,n0=8。
[0256]
需要说明的是,上述当前编码单元的尺寸满足预设尺寸限制的描述仅仅是本技术实施例中相关实现的一种具体示例,而并不是对本技术保护范围的限定,本技术实施例中,当前编码单元的尺寸满足预设尺寸限制也可以包括其它情况,如当前编码单元的宽度大于或等于n0、当前编码单元的高度大于或等于n0、或、当前编码单元的高度和宽度均大于或等
于n0,且宽度和高度不同时等于n0等。
[0257]
示例性的,当前编码单元满足角度加权预测使用条件,可以包括:
[0258]
序列级高层语法允许当前编码单元启用角度加权预测技术;
[0259]
当前编码单元的宽度和高度均大于或等于n1,当前编码单元的宽度和高度均小于或等于n2;
[0260]
当前图像帧类型为b图像。
[0261]
示例性的,当前编码单元满足高级运动矢量表达使用条件,可以包括:
[0262]
序列级高层语法允许所述当前编码单元启用高级运动矢量表达技术。
[0263]
在一个示例中,当前编码单元满足第一解析条件包括:
[0264]
当前编码单元的预测模式为跳过模式或直接模式;
[0265]
当前编码单元的尺寸满足尺寸限制:当前编码单元的宽度和高度均大于或等于n0;
[0266]
序列级高层语法允许所述当前编码单元启用增强时域运动矢量预测技术;
[0267]
所述当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
[0268]
在一个示例中,增强时域运动矢量预测模式标志位可以采用基于上下文的二进制算术编码,并采用一个上下文模型。
[0269]
在另一个示例中,增强时域运动矢量预测模式标志位可以采用基于上下文的二进制算术编码,并采用多个上下文模型。
[0270]
示例性的,该多个上下文模型可以根据当前编码单元的尺寸确定。
[0271]
示例性的,当前编码单元的尺寸可以包括但不限于当前编码单元的宽度和或高度、当前编码单元的宽度和高度中的最大值或最小值,或当前编码单元的宽度和高度的乘积等。
[0272]
在一些实施例中,步骤s300中,获取当前编码单元的增强时域运动矢量预测模式索引值,可以包括:
[0273]
当当前编码单元满足第二解析条件时,从码流中解析增强时域运动矢量预测模式索引值;
[0274]
否则,确定增强时域运动矢量预测模式索引值为第三数值。
[0275]
示例性的,增强时域运动矢量预测模式索引值为第三数值表明当前编码单元不启用增强时域运动矢量预测模式。
[0276]
示例性的,考虑到增强时域运动矢量预测模式的使用需要满足一定条件,当不满足该条件时,增强时域运动矢量预测模式将不适用,此时,增强时域运动矢量预测模式索引值可以不需要从码流中解析,而是可以推导得出。
[0277]
示例性的,当当前编码单元满足指定条件(本文中称为第二解析条件)时,可以从码流中解析增强时域运动矢量预测模式索引值;否则,可以确定增强时域运动矢量预测模式索引值为第三数值,该增强时域运动矢量预测模式索引值为第三数值表明当前编码单元不启用增强时域运动矢量预测模式。
[0278]
示例性的,第三数值可以与上述第一数值或第二数值相同,或者,第三数值可以与上述第一数值和第二数据均不同。
[0279]
在一个示例中,当前编码单元满足第二解析条件,可以包括以下之一或多个:
[0280]
当前编码单元的预测模式为跳过模式或直接模式;
[0281]
当前编码单元启用增强时域运动矢量预测模式。
[0282]
在一个示例中,增强时域运动矢量预测模式索引值的反二值化方式采用最大值为4的截断一元码,最多使用4个二元符号串,每个二元符号采用单独的上下文模型,一共4个上下文模型。
[0283]
示例性的,为了节省编码比特开销,提高编解码性能,增强时域运动矢量预测模式索引值的反二值化方式采用最大值为4的截断一元码,最多使用4个二元符号串,每个二元符号采用单独的上下文模型,一共4个上下文模型。
[0284]
例如,增强时域运动矢量预测模式索引值的反二值化实现可以参见表1:
[0285]
表1
[0286][0287]
其中,cu_etmvp_cand_index为增强时域运动矢量预测模式索引值。
[0288]
在一些实施例中,步骤s310中,根据当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息,包括:
[0289]
根据当前图像帧类型确定匹配编码单元所在的时域参考图像;
[0290]
根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在时域参考图像中的坐标信息。
[0291]
示例性的,为了确定当前编码单元的初始匹配编码单元的坐标信息,可以确定当前编码单元所在图像(本文中称为当前图像)的帧类型(即当前图像帧类型),根据当前图像帧类型确定匹配编码单元所在的时域参考图像。
[0292]
示例性的,若当前图像帧类型为p图像,则时域参考图像是参考图像队列0(即list0)中参考帧索引值为0的参考图像;若当前图像是b图像,则时域参考图像是参考图像队列1(即list1)中参考帧索引值为0的参考图像。
[0293]
示例性的,当确定了匹配编码单元所在的时域参考图像时,可以根据当前编码单元的坐标信息,确定初始匹配编码单元在该时域参考图像中的坐标信息。
[0294]
在一个示例中,当前编码单元的坐标信息为当前编码单元在当前图像中的的左上角坐标;匹配编码单元的坐标信息为匹配编码单元在时域参考图像中的的左上角坐标。
[0295]
示例性的,匹配编码单元可以包括初始匹配编码单元或目标匹配编码单元,即下文中若未特殊说明,所提及的初始匹配编码单元的坐标信息可以指初始匹配编码单元的左上角坐标,目标匹配编码单元的坐标信息可以指目标匹配编码单元的左上角坐标。
[0296]
在一个示例中,上述根据当前编码单元的坐标信息,确定初始匹配编码单元在时域参考图像中的坐标信息,可以包括:
[0297]
根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单
元的坐标信息。
[0298]
示例性的,一个最大编码单元可以包括一个或多个编码单元。
[0299]
示例性,可以根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前编码单元的尺寸、当前图像的尺寸、当前编码单元在图像中的左上角坐标来确定当前编码单元的匹配编码单元的坐标信息。
[0300]
在一个示例中,上述根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息,可以包括:
[0301]
根据当前最大编码单元在图像中的左上角横坐标、最大编码单元的大小、当前编码单元的宽度、当前图像的宽度、当前编码单元在图像中的左上角横坐标,确定初始匹配编码单元的横坐标;
[0302]
根据当前最大编码单元在图像中的左上角纵坐标、最大编码单元的大小、当前编码单元的高度、当前图像的高度、当前编码单元在图像中的左上角纵坐标来,确定初始匹配编码单元的纵坐标。
[0303]
示例性的,以当前编码单元的坐标信息为当前编码单元在当前图像中的的左上角坐标;匹配编码单元的坐标信息为匹配编码单元在时域参考图像中的的左上角坐标。
[0304]
示例性的,以在图像平面内向右为坐标系横轴正向,向下为坐标系纵轴正向(下同)为例。
[0305]
举例来说,假设(xpos,ypos)是当前编码单元在图像中的左上角坐标,(x_ctb_pos,y_ctb_pos)是当前最大编码单元在图像中的左上角坐标,cu_width和cu_height分别是当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度,lcu_size是最大编码单元的大小,按以下方法导出匹配编码单元的坐标(mx,my):
[0306]
mx=clip3(x_ctb_pos,min(x_ctb_pos+lcu_size

cu_width,horizontal_size

cu_width),((xpos+4)>>3)<<3)
[0307]
my=clip3(y_ctb_pos,min(y_ctb_pos+lcu_size

cu_height,vertical_size

cu_height),((ypos+4)>>3)<<3)
[0308]
又举例来说,假设(xpos,ypos)是当前编码单元在图像中的左上角坐标,(x_ctb_pos,y_ctb_pos)是当前最大编码单元在图像中的左上角坐标,cu_width和cu_height分别是当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度,lcu_size是最大编码单元的大小,按以下方法导出匹配编码单元的坐标(mx,my):
[0309]
mx=min(((xpos+4)>>3)<<3,min(x_ctb_pos+lcu_size

cu_width,horizontal_size

cu_width))
[0310]
my=min(((ypos+4)>>3)<<3,min(y_ctb_pos+lcu_size

cu_height,vertical_size

cu_height))
[0311]
在一些实施例中,步骤s320中,根据初始匹配编码单元的坐标信息,构建增强时域候选列表,可以包括:
[0312]
根据初始匹配编码单元的坐标信息,确定至少一个增强时域运动矢量预测模式号;
[0313]
根据至少一个增强时域运动矢量预测模式号,构建增强时域候选列表。
[0314]
示例性的,该至少一个增强时域运动矢量预测模式号可以包括初始匹配编码单元的坐标信息对应的增强时域运动矢量预测模式号,以及一个或多个通过对初始匹配编码单元进行偏移得到的多个新的匹配编码单元(若可用)对应的增强时域运动矢量预测模式号。
[0315]
示例性的,当根据初始匹配编码单元的坐标信息,确定了至少一个增强时域运动矢量预测模式号时,可以根据该至少一个增强时域运动矢量预测模式号,构建增强时域候选列表。
[0316]
示例性的,在构建增强时域候选列表时,可以将该增强时域候选列表的长度初始化为0,即该增强时域候选列表的初始长度为0。
[0317]
示例性的,该增强时域候选列表的长度可以根据加入的增强时域运动矢量预测模式号的数量的增加而增加。
[0318]
在一个示例中,匹配编码单元的坐标信息为匹配编码单元在时域参考图像中的的左上角坐标;
[0319]
上述根据至少一个增强时域运动矢量预测模式号,构建增强时域候选列表,可以包括:
[0320]
将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0321]
若my+8小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值,且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0322]
若mx+8小于或等于x_ctb_pos+lcu_size

cu_width和horizontal_size

cu_width中的较小值,且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0323]
若my

8大于或等于y_ctb_pos,且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0324]
若mx

8大于或等于x_ctb_pos,且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1。
[0325]
示例性的,(mx,my)所述初始匹配编码单元的坐标信息,(x_ctb_pos,y_ctb_pos)为当前最大编码单元在图像中的左上角坐标,lcu_size为最大编码单元的大小,cu_width和cu_height分别为当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度。
[0326]
示例性的,a1为初始匹配编码单元的左上角4*4块、b1为a1正左侧的4*4块,c1为a1正上方的4*4块;a2为初始匹配编码单元的右上角4*4块、b2为a2正右侧的4*4块,c2为a2正上方的4*4块;a3为初始匹配编码单元的左下角4*4块、b3为a3正左侧的4*4块,c3为a3正下方的4*4块;a4为初始匹配编码单元的右下角4*4块、b4为a4正右侧的4*4块,c4为a4正下方的4*4块,其示意图可以如图4所示。
[0327]
示例性的,以对匹配编码单元进行偏移时,偏移的单位为8像素为例。
[0328]
例如,对匹配编码单元向下进行偏移时,对匹配编码单元向下偏移8个像素。
[0329]
考虑到本技术实施例中通过对匹配编码单元进行向上/下/左/右偏移得到新的匹配编码单元,增加候选匹配编码单元,以增加新的候选运动信息。
[0330]
以对匹配编码单元向下进行偏移为例,考虑到当a1与c3位置的运动信息相同,且a2与c4位置的运动信息相同时,对匹配编码单元向下进行偏移得到的新的匹配编码单元的运动信息大概率会与原匹配编码单元的运动信息相同,此次偏移可能无法得到新的运动信息。
[0331]
因而,可以分别比较a1位置的运动信息与c3位置的运动信息,以及比较a2位置的运动信息与c4位置的运动信息,并两个比较结果中至少一个比较结果为不一致时,可以确定通过向下偏移能够得到新的运动信息,即向下偏移得到的匹配编码单元可以作为候选匹配编码单元。
[0332]
示例性的,对匹配编码单元进行偏移时,还需要保证偏移后得到的新的匹配编码单元在偏移方向的边界未超过该匹配编码单元(偏移前的匹配编码单元)所在最大编码单元对应的坐标范围,即未超过该最大编码单元在偏移方向的边界,且未超过该匹配编码单元所在图像对应的坐标范围,即未超过该图像在偏移方向的边界。
[0333]
示例性的,对于向上偏移,在偏移方向的边界即为上边界;对于向下偏移,在偏移方向的边界即为下边界;对于向左偏移,在偏移方向的边界即为左边界;对于向右偏移,在偏移方向的边界即为右边界。
[0334]
示例性的,仍以向下偏移为例,当对匹配编码单元向下偏移时,一方面,偏移后的纵坐标(即my+8)需小于或等于y_ctb_pos+lcu_size

cu_height(即偏移后得到的新的匹配编码单元的下边界未超过偏移前的匹配编码单元所在的最大编码单元的下边界),另一方面,偏移后的纵坐标需小于或等于vertical_size

cu_height(偏移后得到的新的匹配编码单元的下边界未超过偏移前的匹配编码单元所在图像的下边界),即my+8需小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值。
[0335]
在一个示例中,步骤s320中,根据初始匹配编码单元的坐标信息,构建增强时域候选列表,还可以包括:
[0336]
当增强时域候选列表长度小于5时,循环执行如下操作,直至增强时域候选列表长度等于5:
[0337]
将与当前增强时域候选列表中最后一个增强时域运动矢量预测模式号相同的增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1。
[0338]
示例性的,考虑到当对匹配编码单元向上偏移、向下偏移、向左偏移、向右偏移均得到可用的候选匹配编码单元的情况下,候选匹配编码单元可以包括偏移前的匹配编码单元,以及通过匹配得到的4个匹配编码单元,即增强时域候选列表长度为5。
[0339]
为了提高解码鲁棒性,避免解码错误,当按照上述方式构建的增强时域候选列表的长度小于5时,可以通过策略将增强时域候选列表长度扩展为5。
[0340]
示例性的,当增强时域候选列表长度小于5时,可以将与当前增强时域候选列表中最后一个增强时域运动矢量预测模式号相同的增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1;循环执行该操作,直至增强时域候选列表长度
等于5。
[0341]
在一些实施例中,根据增强时域运动矢量预测模式索引值,在增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息,可以包括:
[0342]
若增强时域运动矢量预测模式号为0,则px等于mx,py等于my;
[0343]
若增强时域运动矢量预测模式号为1,则px等于mx,py等于my+n;
[0344]
若增强时域运动矢量预测模式号为2,则px等于mx+n,py等于my;
[0345]
若增强时域运动矢量预测模式号为3,则px等于mx,py等于my

n;
[0346]
若增强时域运动矢量预测模式号为4,则px等于mx

n,py等于my;
[0347]
示例性的,(mx,my)初始匹配编码单元的左上角坐标,(px,py)为目标匹配编码单元的左上角坐标。
[0348]
示例性的,以通过对匹配编码单元向上/下/左/右进行偏移n个像素得到新的匹配编码单元为例。
[0349]
示例性的,n=8。
[0350]
示例性的,假设初始匹配编码单元对应的增强时域运动矢量预测模式号为0,向下偏移得到的匹配编码单元对应的增强时域运动矢量预测模式号为1,向右偏移得到的匹配编码单元对应的增强时域运动矢量预测模式号为2,向上偏移得到的匹配编码单元对应的增强时域运动矢量预测模式号为3,向左偏移得到的匹配编码单元对应的增强时域运动矢量预测模式号为4。
[0351]
当按照上述方式构建得到增强时域候选列表时,可以根据步骤s300中获取到的增强时域运动矢量预测模式索引值,在该增强时域候选列表中获取对应的增强时域运动矢量预测模式号。
[0352]
示例性的,若增强时域运动矢量预测模式号为1,则目标匹配编码单元为初始匹配编码单元整体向下偏移n个像素得到的时域参考编码单元,即px等于mx,py等于my+n。
[0353]
若增强时域运动矢量预测模式号为2,则目标匹配编码单元为初始匹配编码单元整体向右偏移n个像素得到的时域参考编码单元,即px等于mx+n,py等于my。
[0354]
若增强时域运动矢量预测模式号为3,则目标匹配编码单元为初始匹配编码单元整体向上偏移n个像素得到的时域参考编码单元,即px等于mx,py等于my

n。
[0355]
若增强时域运动矢量预测模式号为4,则目标匹配编码单元为初始匹配编码单元整体向左偏移n个像素得到的时域参考编码单元,即px等于mx

n,py等于my。
[0356]
在一些实施例中,步骤s340中,根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息,可以包括:
[0357]
对于目标匹配编码单元中的任一子块:
[0358]
在当前图像帧类型是p图像的情况下:
[0359]
若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予所述当前编码单元对应位置的子块。
[0360]
在一些实施例中,步骤s340中,根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息,可以包括:
[0361]
对于目标匹配编码单元中的任一子块:
[0362]
在当前图像帧类型是b图像的情况下:
[0363]
若该子块的前向运动信息和后向运动信息可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0364]
若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0365]
若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块。
[0366]
示例性的,为了提升确定当前编码单元的各子块的运动信息的效率,对于目标匹配编码单元中的任一子块,可以判断该子块的运动信息是否可用。
[0367]
示例性的,在当前图像帧类型为p图像的情况下,可以判断该子块的前向运动信息是否可用;在当前图像帧类型为b图像的情况下,可以分别判断该子块的前向运动信息和后向运动信息是否可用。
[0368]
示例性的,对于目标匹配编码单元内的任一子块,在判断结果为前向运动信息可用的情况下,可以将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块。
[0369]
示例性的,对于目标匹配编码单元内的任一子块,在判断结果为后向运动信息可用的情况(对于当前图像帧类型为b图像的情况)下,可以将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块。
[0370]
示例性的,对于目标匹配编码单元内的任一子块,在判断结果为前向运动信息和后向运动信息均可用的情况(对于当前图像帧类型为b图像的情况)下,可以将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前编码单元对应位置的子块。
[0371]
在一些实施例中,步骤s340中,根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息,可以包括:
[0372]
对于目标匹配编码单元中的任一子块:
[0373]
在当前图像帧类型是p图像的情况下:
[0374]
若将子块的前向运动信息不可用,则当当前编码单元的第一周围块的前向运动信息可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息不可用时,将零运动信息赋予当前编码单元对应位置的子块;
[0375]
在当前图像帧类型是b图像的情况下:
[0376]
若将子块的前向运动信息和后向运动信息均不可用,则当当前编码单元的第一周围块的前向运动信息和后向运动信息均可用时,将第一周围块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息可用,但后向运动信息不可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,并将伸缩
后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的后向运动信息可用,但前向运动信息不可用时,将第一周围块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前编码单元对应位置的子块。
[0377]
示例性的,还可以根据当前编码单元的周围块(本文中称为第一周围块)的运动信息确定当前编码单元内子块的运动信息。
[0378]
示例性的,当前编码单元的第一周围块可以包括但不限于当前编码单元任一已解码的相邻块或非相邻块。
[0379]
举例来说,当前编码单元的第一周围块可以如图5所示。如图5所示,e为当前编码单元,当前编码单元的第一周围块可以包括a、b、c、d、f和g中的任一块。
[0380]
示例性的,一个编码单元至少包括一个子块,每个子块的宽度不超过当前编码单元的宽度,每个子块的高度不超过当前编码单元的高度,例如每个子块为8*8的块。
[0381]
在一个示例中,当前编码单元的第一周围块为图5中的f。
[0382]
示例性的,f的尺寸可以为8*8,即第一周围块为当前编码单元左下角相邻的的8*8块。
[0383]
示例性的,f的尺寸可以为4*4,即第一周围块为当前编码单元左下角相邻的4*4块。
[0384]
示例性的,对于当前图像帧类型为p图像的情况,在目标匹配编码单元的子块的前向运动信息不可用的情况下,还可以根据当前编码单元的第一周围块的运动信息确定当前编码单元的子块的运动信息。
[0385]
示例性的,对于当前图像帧类型为b图像的情况,在目标匹配编码单元的子块的前向运动信息和后向运动信息均不可用的情况下,还可以根据当前编码单元的第一周围块的运动信息确定当前编码单元的子块的运动信息。
[0386]
示例性的,对于当前图像帧类型为p图像的情况,在目标匹配编码单元的子块的前向运动信息和当前图像编码单元的第一周围块的前向运动信息均不可用的情况下,可以将零运动信息赋予当前编码单元对应位置的子块。
[0387]
示例性的,对于当前图像帧类型为b图像的情况,在目标匹配编码单元的子块的前向运动信息和后向运动信息均不可用、且第一周围块的前向运动信息和后向运动信息均不可用的情况下,可以将零运动信息赋予当前编码单元对应位置的子块。
[0388]
在一些实施例中,请参见图6,步骤s340中,根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息之后,还可以包括以下步骤:
[0389]
步骤s350、根据当前编码单元内每个子块的运动信息,对当前编码单元内对应子块进行运动补偿。
[0390]
示例性的,当按照上述方式确定了当前编码单元内每个子块的运动信息时,可以根据当前编码单元内每个子块的运动信息,对当前编码单元内对应子块进行运动补偿。
[0391]
例如,可以根据当前编码单元内第h行第l列的子块的运动信息,对当前编码单元内第h行第l列的子块进行运动补偿。
[0392]
在一个示例中,步骤s350中,根据当前编码单元内每个子块的运动信息,对当前编码单元内对应子块进行运动补偿,可以包括:
[0393]
对于当前编码单元的任一子块,对该子块的运动信息不进行解码端运动矢量调整技术;
[0394]
若该子块满足双向光流条件,根据该子块的运动信息对该子块进行运动补偿,并使用双向光流技术对补偿后的像素值叠加光流偏移值,得到该子块的预测样本矩阵;
[0395]
否则,根据该子块的运动信息对该子块进行运动补偿,得到该子块的预测样本矩阵。
[0396]
示例性的,当前编码单元的预测样本由各子块的预测样本组成。
[0397]
在一个示例中,子块满足双向光流条件包括:
[0398]
序列级高层语法允许启用双向光流技术;
[0399]
当前编码单元的运动矢量精度等于0;
[0400]
该子块采用双向预测;
[0401]
该子块的参考图像队列0中参考帧索引值为refidxl0的参考帧和参考图像队列1中参考索引值为refidxl1的参考帧显示顺序分别位于当前帧的两侧。
[0402]
作为一种示例,本技术实施例还提供的一种编码方法,其中,该编码方法可以应用于编码端设备,该方法可以包括以下步骤:
[0403]
t100、根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息。
[0404]
其具体实现可以图3所示实施例中步骤s310,本技术实施例在此不再赘述。
[0405]
t110、根据初始匹配编码单元的坐标信息,构建增强时域候选列表。
[0406]
其具体实现可以图3所示实施例中步骤s320,本技术实施例在此不再赘述。
[0407]
t120、按顺序遍历增强时域候选列表中的每个增强时域运动矢量预测模式号,确定每个增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息。
[0408]
示例性的,当按照步骤t120中描述的方式构建了增强时域候选列表时,编码端设备可以遍历增强时域候选列表中各候选增强时域运动矢量预测模式号。
[0409]
对于任一候选增强时域运动矢量预测模式号,编码端设备可以根据该候选增强时域运动矢量预测模式号,确定对应的目标匹配编码单元的坐标信息,其具体实现可以图3所示实施例中步骤s330,本技术实施例在此不再赘述。
[0410]
t130、根据目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,该目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元内对应位置的子块的运动信息。
[0411]
其具体实现可以图3所示实施例中步骤s340,本技术实施例在此不再赘述。
[0412]
t140、根据当前编码单元内的每个子块的运动信息,对当前编码单元内的对应子块进行运动补偿。
[0413]
其具体实现可以图6所示实施例中步骤s350,本技术实施例在此不再赘述。
[0414]
t150、计算增强时域运动矢量预测模式对应的率失真代价值,并将该率失真代价值与其他预测模式的率失真代价值进行比较,选择最小的率失真代价值所对应的预测模式,并将对应的增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值写入码流,传送给解码端设备。
[0415]
示例性的,编码端设备可以基于rdo决策确定率失真代价值最小的预测模式,并根
据最小的率失真代价值所对应的预测模式,确定增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值,并将其写入码流,传送给解码端设备。
[0416]
示例性的,上述各实施例编码端和解码端的实现流程可以相互参照。
[0417]
为了使本领域技术人员更好地理解本技术实施例提供的技术方案,下面结合具体实例对本技术实施例提供的技术方案进行说明。
[0418]
实施例一
[0419]
本技术实施例提供一种增强时域运动信息预测方法,利用当前编码单元在co

located帧中同位编码单元的运动信息来确定匹配编码单元,并且将找到的匹配编码单元进行上下左右等一系列的偏移,产生多个时域候选模式,一定程度上避免了由于周围编码单元的运动信息不准而导致的寻找匹配编码单元不准的问题。
[0420]
本技术实施例的主要实现流程可以包括以下6个部分:
[0421]
第一部分、根据当前编码单元的编码/解码条件,编码/解析增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值;
[0422]
第二部分、根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息;
[0423]
第三部分、根据初始匹配编码单元的坐标信息,构建增强时域候选列表;
[0424]
第四部分、根据增强时域运动矢量预测模式索引值,在增强时域候选模式列表中获取对应的增强时域运动矢量预测模式,并确定该增强时域运动矢量预测模式对应的目标匹配编码单元的坐标信息。
[0425]
第五部分、根据目标匹配编码单元的坐标信息获得当前编码单元内每个子块的运动信息;
[0426]
第六部分、根据当前编码单元内的每个子块的运动信息,对当前编码单元内对应子块进行运动补偿。
[0427]
示例性的,上述六个部分的先后顺序可以调整。
[0428]
实施例二
[0429]
本技术实施例提供的编码方法可以包括以下步骤:
[0430]
1、根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息;
[0431]
2、根据初始匹配编码单元的坐标信息,构建增强时域候选列表;
[0432]
3、按顺序遍历增强时域候选列表中的每一种增强时域候选模式,确定每个模式对应的目标匹配编码单元的坐标信息;
[0433]
4、根据目标匹配编码单元的坐标信息对应的运动信息确定当前编码单元中的每个子块的运动信息;
[0434]
5、根据当前编码单元内的每个子块的运动信息,对当前编码单元内的对应子块进行运动补偿。
[0435]
6、计算增强时域运动矢量预测模式对应的率失真代价值,并将该率失真代价值与其他预测模式的率失真代价值进行比较,选择最小的率失真代价值所对应的预测模式,并将对应的增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值写入码流,传送给解码端设备。
[0436]
实施例三
[0437]
本技术实施例提供的解码方法可以包括以下步骤:
[0438]
1、获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值;
[0439]
当获取到的当前编码单元的增强时域运动矢量预测模式标志位的取值为第一数值时,执行步骤2~6。
[0440]
2、根据当前编码单元的坐标信息,确定当前编码单元的初始匹配编码单元的坐标信息;
[0441]
3、根据初始匹配编码单元的坐标信息,构建增强时域候选列表;
[0442]
4、根据获取到的增强时域运动矢量预测模式索引值,在增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定该增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;
[0443]
5、根据目标匹配编码单元的坐标信息对应的运动信息确定当前编码单元内每个子块的运动信息;
[0444]
6、根据当前编码单元内每个子块的运动信息,对当前编码单元内对应子块进行运动补偿。
[0445]
下面结合实施例对本技术实施例主要流程的各部分(即第一部分~第六部分中各部分)分别进行说明。
[0446]
第一部分、编码/解析增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值
[0447]
示例性的,解析增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值可以包括:
[0448]
1)、解析增强时域运动矢量预测模式标志位(可以记为etmvp_flag);
[0449]
2)、解析增强时域运动矢量预测模式索引值(可以记为cu_etmvp_cand_index)。
[0450]
实施例四
[0451]
若当前编码单元满足解析条件1(即上述第一解析条件),则从码流中解析出增强时域运动矢量预测模式标志位,否则,增强时域运动矢量预测模式标志位取值为0(即上述第二数值为0)。
[0452]
示例性的,当前编码单元满足解析条件1的情况可以分别参见实施例五~实施例十。
[0453]
实施例五
[0454]
当前编码单元满足解析条件1,包括:
[0455]
当前编码单元为跳过模式或者直接模式。
[0456]
实施例六
[0457]
当前编码单元满足解析条件1,包括:
[0458]
当前编码单元尺寸满足以下限制(即上述预设尺寸限制)中的一种:
[0459]
当前编码单元的宽度和高度均大于或等于n0。
[0460]
示例性的,n0=8。
[0461]
实施例七
[0462]
当前编码单元满足解析条件1,包括:
[0463]
序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术。
[0464]
实施例八
[0465]
当前编码单元满足解析条件1,包括:
[0466]
当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
[0467]
示例性的,角度加权预测使用条件可以包括:
[0468]
序列级高层语法允许所述当前编码单元启用角度加权预测技术;
[0469]
当前编码单元的宽度和高度均大于或等于n1,当前编码单元的宽度和高度均小于或等于n2;
[0470]
当前图像帧类型为b图像。
[0471]
示例性的,n1=8。
[0472]
示例性的,n2=64。
[0473]
示例性,当前编码单元满足高级运动矢量表达使用条件包括:
[0474]
序列级高层语法允许当前编码单元启用高级运动矢量表达技术。
[0475]
实施例九
[0476]
当前编码单元满足解析条件1,包括:
[0477]
1)、当前编码单元为跳过模式或者直接模式;
[0478]
2)、当前编码单元尺寸满足以下限制:
[0479]
2.1)、当前编码单元的宽度和高度均大于或等于n0。
[0480]
示例性的,n0=8
[0481]
3)、序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术。
[0482]
实施例十
[0483]
当前编码单元满足解析条件1,包括:
[0484]
1)、当前编码单元为跳过模式或者直接模式;
[0485]
2)、当前编码单元尺寸满足以下限制:
[0486]
2.1)、当前编码单元的宽度和高度均大于或等于n0。
[0487]
示例性的,n0=8
[0488]
3)、序列级高层语法允许当前编码单元启用增强时域运动矢量预测技术。
[0489]
4)、当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
[0490]
示例性的,角度加权预测使用条件可以包括:
[0491]
4.1)、序列级高层语法允许所述当前编码单元启用角度加权预测技术;
[0492]
4.2)、当前编码单元的宽度和高度均大于或等于n1,当前编码单元的宽度和高度均小于或等于n2;
[0493]
4.3)、当前图像帧类型为b图像。
[0494]
示例性的,n1=8。
[0495]
示例性的,n2=64。
[0496]
示例性,当前编码单元满足高级运动矢量表达使用条件包括:
[0497]
序列级高层语法允许当前编码单元启用高级运动矢量表达技术
[0498]
需要说明的是,本技术实施例中,当前编码单元满足解析条件1并不限于上述实施例五~实施例十中描述的情况,其也可以包括由实施例五~实施例八中各实施例中任意两个组合得到的情况,以及任意三个组合得到的情况(实施例五~实施例七组合得到的即为实施例九)。
[0499]
实施例十一
[0500]
若当前编码单元满足解析条件1,则从码流解析出增强时域运动矢量预测模式标志位;否则,增强时域运动矢量预测模式标志位取值为0。
[0501]
示例性的,增强型时域运动矢量预测模式标志位采用基于上下文的二进制算术编码。
[0502]
实施例十二
[0503]
若当前编码单元满足解析条件1,则从码流解析出增强时域运动矢量预测模式标志位;否则,增强时域运动矢量预测模式标志位取值为0。
[0504]
示例性的,当前编码单元满足解析条件1的具体情况可以参见上述实施例中的相关描述,如实施例五~实施例十中任一实施例的描述。
[0505]
示例性的,增强型时域运动矢量预测模式标志位采用基于上下文的二进制算术编码,并采用1个上下文模型。
[0506]
实施例十三
[0507]
若当前编码单元满足解析条件1,则从码流解析出增强时域运动矢量预测模式标志位;否则,增强时域运动矢量预测模式标志位取值为0。
[0508]
示例性的,当前编码单元满足解析条件1的具体情况可以参见上述实施例中的相关描述,如实施例五~实施例十中任一实施例的描述。
[0509]
示例性的,增强型时域运动矢量预测模式标志位采用基于上下文的二进制算术编码,并采用多个上下文模型。
[0510]
示例性的,该多个上下文模型可以根据当前编码单元的尺寸确定。
[0511]
示例性的,当前编码单元的尺寸可以包括但不限于当前编码单元的宽度和或高度、当前编码单元的宽度和高度中的最大值或最小值,或当前编码单元的宽度和高度的乘积等。
[0512]
实施例十四
[0513]
若当前编码单元满足解析条件2(即上述第二解析条件),则从码流解析出增强型时域运动矢量预测模式索引值;否则,增强时域运动矢量预测模式索引值为0(即上述第三数值为0)。
[0514]
示例性的,当前编码单元满足解析条件2的情况可以分别参见实施例十五~实施例十七。
[0515]
实施例十五
[0516]
当前编码单元满足解析条件2,包括:
[0517]
当前编码单元为跳过模式或者直接模式。
[0518]
实施例十六
[0519]
当前编码单元满足解析条件2,包括:
[0520]
当前编码单元为增强时域运动矢量预测模式。
[0521]
实施例十七
[0522]
当前编码单元满足解析条件2,包括:
[0523]
1)、当前编码单元为跳过模式或者直接模式;
[0524]
2)、当前编码单元为增强时域运动矢量预测模式。
[0525]
例如,增强时域运动矢量预测模式索引值的语法描述可以如下:
[0526]
if((skipflag||directflag)&&etmvpflag){ cu_etmvp_cand_indexae(v)
[0527]
实施例十八
[0528]
若当前编码单元满足解析条件2(即上述第二解析条件),则从码流解析出增强型时域运动矢量预测模式索引值;否则,增强时域运动矢量预测模式索引值为0(即上述第三数值为0)。
[0529]
示例性的,当前编码单元满足解析条件2的情况可以参见实施例十五~实施例十七中任一实施例中的描述。
[0530]
示例性的,增强时域运动矢量预测模式索引值的反二值化方式采用最大值为4的截断一元码,最多使用4个二元符号串(bins),每个二元符号(bin)采用单独的上下文模型,一共4个上下文模型。
[0531]
例如,增强时域运动矢量预测模式索引值的反二值化实现可以参见表1。
[0532]
第二部分、根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息
[0533]
示例性的,根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息,可以包括:
[0534]
根据当前图像帧类型确定匹配编码单元所在的时域参考图像;
[0535]
根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息。
[0536]
示例性的,时域参考图像中宽度和高度与当前编码单元的宽度和高度一致的时域参考块为当前编码单元的匹配编码单元。
[0537]
示例性的,若当前图像帧类型为p图像,则时域参考图像是参考图像队列0中参考帧索引值为0的参考图像;若当前图像帧类型为b图像,则时域参考图像是参考图像队列1中参考帧索引值为0的参考图像。
[0538]
示例性的,当前编码单元的坐标信息可以为当前编码单元在图像(当前图像)中的的左上角坐标;
[0539]
匹配编码单元的坐标信息可以为匹配编码单元在时域参考图像中的的左上角坐标。
[0540]
示例性的,根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息,可以包括:
[0541]
基于当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前编码单元的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息。
[0542]
示例性的,基于当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、
当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息,包括:
[0543]
根据当前最大编码单元在图像中的左上角横坐标、最大编码单元的大小、当前编码单元的宽度、当前图像的宽度、当前编码单元在图像中的左上角横坐标,确定初始匹配编码单元的横坐标;
[0544]
根据当前最大编码单元在图像中的左上角纵坐标、当前最大编码单元尺寸、当前编码单元的高度、当前图像的高度、当前编码单元在图像中的左上角纵坐标,确定初始匹配编码单元的纵坐标。
[0545]
示例性的,根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息的具体实现可以参见实施例十九~实施例二十一中任一实施例的描述。
[0546]
实施例十九
[0547]
假设(xpos,ypos)是当前编码单元在图像中的左上角坐标,(x_ctb_pos,y_ctb_pos)是当前最大编码单元在图像中的左上角坐标,cu_width和cu_height分别是当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度,lcu_size是最大编码单元的大小,按以下方法导出匹配编码单元的坐标(mx,my):
[0548]
mx=clip3(x_ctb_pos,min(x_ctb_pos+lcu_size

cu_width,horizontal_size

cu_width),((xpos+4)>>3)<<3)
[0549]
my=clip3(y_ctb_pos,min(y_ctb_pos+lcu_size

cu_height,vertical_size

cu_height),((ypos+4)>>3)<<3)
[0550]
实施例二十
[0551]
假设(xpos,ypos)是当前编码单元在图像中的左上角坐标,(x_ctb_pos,y_ctb_pos)是当前最大编码单元在图像中的左上角坐标,cu_width和cu_height分别是当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度,lcu_size是最大编码单元的大小,按以下方法导出匹配编码单元的坐标(mx,my):
[0552]
mx=min(((xpos+4)>>3)<<3,min(x_ctb_pos+lcu_size

cu_width,horizontal_size

cu_width))
[0553]
my=min(((ypos+4)>>3)<<3,min(y_ctb_pos+lcu_size

cu_height,vertical_size

cu_height))
[0554]
实施例二十一
[0555]
假设(xpos,ypos)是当前编码单元在图像中的左上角坐标,(x_ctb_pos,y_ctb_pos)是当前最大编码单元在图像中的左上角坐标,cu_width和cu_height分别是当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度,lcu_size是最大编码单元的大小,按以下方法导出匹配编码单元的坐标(mx,my):
[0556]
mx=clip3(x_ctb_pos,min(x_ctb_pos+lcu_size

cu_width,horizontal_size

cu_width),(xpos>>3)<<3)
[0557]
my=clip3(y_ctb_pos,min(y_ctb_pos+lcu_size

cu_height,vertical_size

cu_height),(ypos>>3)<<3)
[0558]
实施例二十二
[0559]
假设(xpos,ypos)是当前编码单元在图像中的左上角坐标,则可以按照以下方法
导出匹配编码单元的坐标(mx,my):
[0560]
mx=(xpos>>shift)<<shift
[0561]
my=(ypos>>shift)<<shift)
[0562]
示例性的,shift与子块的大小有关,对于n*n的子块,n=1<<shift。
[0563]
例如,若子块大小为8*8,则shift=3。
[0564]
第三部分、根据初始匹配编码单元的坐标信息,构建增强时域候选列表
[0565]
示例性的,假设(mx,my)为初始匹配编码单元在时域参考图像中的左上角坐标,a1~a4,b1~b4,c1~c4是时域参考图像中位于初始匹配编码单元周围的相邻4*4块,其示意图可以如图4所示。
[0566]
实施例二十三
[0567]
23.0、将增强时域候选列表的长度初始化为0。
[0568]
示例性的,增强时域候选列表的初始长度为0。
[0569]
23.1、将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0570]
23.2、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的下边界,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0571]
23.3、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的右边界,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0572]
23.4、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的上边界,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0573]
23.5、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的左边界,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1;
[0574]
23.6、若增强时域候选列表长度小于5,则循环执行以下操作:
[0575]
23.6.1、将增强时域候选列表中最后一个增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1;
[0576]
23.6.2、若增强时域候选列表长度等于5,则结束列表构建过程。
[0577]
示例性的,其实现逻辑可以如下:
[0578]
1)、将etmvpcandarray[i]初始化为0,i=0~4;length初始化为0;
[0579]
2)、首先etmvpcandarray[0]=0,length加1;
[0580]
3)、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的下边界,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的
运动信息不同,则etmvpcandarray[length]=1,length加1;
[0581]
4)、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的右边界,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则etmvpcandarray[length]=2,length加1;
[0582]
5)、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的上边界,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则etmvpcandarray[length]=3,length加1;
[0583]
6)、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的左边界,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则etmvpcandarray[length]=4,length加1;
[0584]
7)、若length小于5,循环执行以下操作:
[0585]
7.1)、etmvpcandarray[length]=etmvpcandarray[length

1],length加1。
[0586]
7.2)、若length等于5,结束列表构建过程。
[0587]
实施例二十四
[0588]
24.0、将增强时域候选列表的长度初始化为0。
[0589]
示例性的,增强时域候选列表的初始长度为0。
[0590]
24.1、将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0591]
24.2、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的下边界,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0592]
24.3、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的右边界,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0593]
24.4、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的上边界,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0594]
24.5、若(mx,my)所在的匹配编码单元未超过该匹配编码单元所在lcu或者图像的左边界,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1。
[0595]
实施例二十五
[0596]
25.0、将增强时域候选列表的长度初始化为0。
[0597]
示例性的,增强时域候选列表的初始长度为0。
[0598]
25.1、将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0599]
示例性的,增强时域候选列表的初始长度为0。
[0600]
25.2、若(mx,my+8)所在的匹配编码单元的下边界未超过该匹配编码单元所在lcu或者图像的下边界,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0601]
25.3、若(mx+8,my)所在的匹配编码单元的右边界未超过该匹配编码单元所在lcu或者图像的右边界,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0602]
25.4、若(mx,my

8)所在的匹配编码单元的上边界未超过该匹配编码单元所在lcu或者图像的上边界,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0603]
25.5、若(mx

8,my)所在的匹配编码单元的左边界未超过该匹配编码单元所在lcu或者图像的左边界,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1;
[0604]
25.6、若增强时域候选列表长度小于5,则循环执行以下操作:
[0605]
25.6.1、将增强时域候选列表中最后一个增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1;
[0606]
25.6.2、若增强时域候选列表长度等于5,则结束列表构建过程。
[0607]
实施例二十六
[0608]
26.0、将增强时域候选列表的长度初始化为0。
[0609]
26.1、将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0610]
示例性的,增强时域候选列表的初始长度为0。
[0611]
26.2、若(mx,my+8)所在的匹配编码单元的下边界未超过该匹配编码单元所在lcu或者图像的下边界,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0612]
26.3、若(mx+8,my)所在的匹配编码单元的右边界未超过该匹配编码单元所在lcu或者图像的右边界,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0613]
26.4、若(mx,my

8)所在的匹配编码单元的上边界未超过该匹配编码单元所在lcu或者图像的上边界,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0614]
26.5、若(mx

8,my)所在的匹配编码单元的左边界未超过该匹配编码单元所在lcu
或者图像的左边界,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1。
[0615]
实施例二十七
[0616]
27.0、将增强时域候选列表的长度初始化为0。
[0617]
示例性的,增强时域候选列表的初始长度为0。
[0618]
27.1、将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0619]
27.2、若my+8小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0620]
27.3、若mx+8小于或等于x_ctb_pos+lcu_size

cu_width和horizontal_size

cu_width中的较小值,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0621]
27.4、若my

8大于或等于y_ctb_pos,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0622]
27.5、若mx

8大于或等于x_ctb_pos,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1;
[0623]
27.6、若增强时域候选列表长度小于5,则循环执行以下操作:
[0624]
27.6.1、将增强时域候选列表中最后一个增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1;
[0625]
27.6.2、若增强时域候选列表长度等于5,则结束列表构建过程。
[0626]
实施例二十八
[0627]
28.0、将增强时域候选列表的长度初始化为0。
[0628]
示例性的,增强时域候选列表的初始长度为0。
[0629]
28.1、将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0630]
28.2、若my+8小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值,并且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0631]
28.3、若mx+8小于或等于x_ctb_pos+lcu_size

cu_width和horizontal_size

cu_width中的较小值,并且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0632]
28.4、若my

8大于或等于y_ctb_pos,并且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0633]
28.5、若mx

8大于或等于x_ctb_pos,并且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1。
[0634]
第四部分、根据增强时域运动矢量预测模式索引值,在增强时域候选模式列表中获取对应的增强时域运动矢量预测模式,并确定该增强时域运动矢量预测模式对应的目标匹配编码单元的坐标信息
[0635]
示例性的,根据增强时域运动矢量预测模式索引(可以记为etmvpcandindex),在增强时域候选列表中获取对应的增强型时域运动矢量预测模式号(可以记为etmvp_mode),根据增强型时域运动矢量预测模式号etmvp_mode确定得到目标匹配编码单元的位置坐标(px,py)。
[0636]
示例性的,etmvp_mode=etmvpcandarray[etmvpcandindex]。
[0637]
实施例二十九
[0638]
根据增强型时域运动矢量预测模式号,通过查表确定目标匹配编码单元的位置坐标(px,py)。
[0639]
示例性的,etmvp_mode与px、py的对应关系可以如表2所示:
[0640]
表2
[0641][0642][0643]
示例性的,n可以为8。
[0644]
实施例三十
[0645]
若增强型时域运动矢量预测模式号为0,则目标匹配编码单元为初始匹配编码单元,即px等于mx,py等于my;
[0646]
若增强型时域运动矢量预测模式号为1,则目标匹配编码单元为初始匹配编码单元整体向下偏移n个像素得到的时域参考块,即px等于mx,py等于my+n;
[0647]
若增强型时域运动矢量预测模式号为2,则目标匹配编码单元为初始匹配编码单元整体向右偏移n个像素得到的时域参考块,即px等于mx+n,py等于my;
[0648]
若增强型时域运动矢量预测模式号为3,则目标匹配编码单元为初始匹配编码单元整体向上偏移n个像素得到的时域参考块,即px等于mx,py等于my

n;
[0649]
若增强型时域运动矢量预测模式号为4,则目标匹配编码单元为初始匹配编码单元整体向左偏移n个像素得到的时域参考块,即px等于mx

n,py等于my。
[0650]
示例性的,n可以为8。
[0651]
第五部分、根据目标匹配编码单元的坐标信息获得当前编码单元内每个子块的运
动信息
[0652]
示例性的,可以根据目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息;根据目标匹配编码单元内每个子块的运动信息,确定当前编码单元对应位置的子块的运动信息。
[0653]
示例性的,当前编码单元的第一周围块可以如图5所示。如图5所示,e为当前编码单元,当前编码单元的第一周围块可以包括a、b、c、d、f和g中的任一块。
[0654]
示例性的,一个编码单元至少包括一个子块,每个子块的宽度不超过当前编码单元的宽度,每个子块的高度不超过当前编码单元的高度,例如每个子块为8*8的块。
[0655]
在一个示例中,当前编码单元的第一周围块为图5中的f。
[0656]
示例性的,对于目标匹配编码单元中的任一子块(以8*8子块为例),每个8*8子块的左上角坐标为(px+(i<<3),py+(j<<3)),i是子块水平索引值,j是子块垂直索引值,i=0~(cu_width>>3)

1,j=0~(cu_height>>3)

1。
[0657]
示例性的,对于当前编码单元中的任一子块(以8*8子块为例),每个8*8子块的运动信息记为motionarray[i][j],i是子块水平索引值,j是子块垂直索引值,i=0~(cu_width>>3)

1,j=0~(cu_height>>3)

1。
[0658]
实施例三十一
[0659]
对于目标匹配编码单元中的任一子块:
[0660]
31.1、若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0661]
31.2、若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0662]
31.3、若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;
[0663]
31.4、若将子块的前向运动信息和后向运动信息均不可用,则填充缺省运动信息。
[0664]
示例性的,本技术实施例对缺省运动信息可以不作限制,例如,缺省运动信息可以为零运动信息或由当前编码单元的周围块导出的运动信息。
[0665]
实施例三十二
[0666]
对于目标匹配编码单元中的任一子块:
[0667]
32.1、若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0668]
32.2、若该子块的前向运动信息不可用,则填充缺省运动信息。
[0669]
示例性的,本技术实施例对缺省运动信息可以不作限制,例如,缺省运动信息可以为零运动信息或由当前编码单元的周围块导出的运动信息。
[0670]
实施例三十三
[0671]
对于目标匹配编码单元中的任一子块:
[0672]
33.1、在当前图像帧类型是p图像的情况下:
[0673]
33.1.1、若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0674]
33.1.2、若该子块的前向运动信息不可用,则填充缺省运动信息。
[0675]
示例性的,本技术实施例对缺省运动信息可以不作限制,例如,缺省运动信息可以为零运动信息或由当前编码单元的周围块导出的运动信息。
[0676]
33.2、在当前图像帧类型是b图像的情况下:
[0677]
33.2.1、若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0678]
33.2.2、若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0679]
33.2.3、若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;
[0680]
33.2.4、若将子块的前向运动信息和后向运动信息均不可用,则填充缺省运动信息。
[0681]
示例性的,本技术实施例对缺省运动信息可以不作限制,例如,缺省运动信息可以为零运动信息或由当前编码单元的周围块导出的运动信息。
[0682]
实施例三十四
[0683]
对于目标匹配编码单元中的任一子块:
[0684]
34.1、若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0685]
34.2、若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0686]
34.3、若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;
[0687]
34.4、若将子块的前向运动信息和后向运动信息均不可用,则:
[0688]
34.4.1、当当前编码单元的第一周围块的前向运动信息和后向运动信息均可用时,将第一周围块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0689]
34.4.2、当第一周围块的前向运动信息可用,但后向运动信息不可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0690]
34.4.3、当第一周围块的后向运动信息可用,但前向运动信息不可用时,将第一周围块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;
[0691]
34.4.4、当第一周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前编码单元对应位置的子块。
[0692]
实施例三十五
[0693]
对于目标匹配编码单元中的任一子块:
[0694]
35.1、若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0695]
35.2、若该子块的前向运动信息不可用,则:
[0696]
35.2.1、当当前编码单元的第一周围块的前向运动信息可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0697]
35.2.2、当第一周围块的前向运动信息不可用时,将零运动信息赋予当前编码单元对应位置的子块。
[0698]
实施例三十六
[0699]
对于目标匹配编码单元中的任一子块:
[0700]
36.1、在当前图像帧类型是p图像的情况下:
[0701]
36.1.1、若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0702]
36.1.2、若该子块的前向运动信息不可用,则:
[0703]
36.1.2.1、当当前编码单元的第一周围块的前向运动信息可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0704]
36.1.2.2、当第一周围块的前向运动信息不可用时,将零运动信息赋予当前编码单元对应位置的子块。
[0705]
36.2、在当前图像帧类型是b图像的情况下:
[0706]
36.2.1、若该子块的前向运动信息和后向运动信息均可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0707]
36.2.2、若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0708]
36.2.3、若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;
[0709]
36.2.4、若将子块的前向运动信息和后向运动信息均不可用,则:
[0710]
36.2.4.1、当当前编码单元的第一周围块的前向运动信息和后向运动信息均可用时,将第一周围块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1
的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;
[0711]
36.2.4.2、当第一周围块的前向运动信息可用,但后向运动信息不可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0712]
36.2.4.3、当第一周围块的后向运动信息可用,但前向运动信息不可用时,将第一周围块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;
[0713]
36.2.4.4、当第一周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前编码单元对应位置的子块。
[0714]
第六部分、根据当前编码单元内的每个子块的运动信息,对当前编码单元内对应子块进行运动补偿
[0715]
示例性的,一个编码单元至少包括一个子块,每个子块的宽度不超过当前编码单元的宽度,每个子块的高度不超过当前编码单元的高度。
[0716]
例如,每个子块为8*8大小的块。
[0717]
示例性的,对于当前编码单元中的任一子块(以8*8子块为例),每个8*8子块的运动信息记为motionarray[i][j],i是子块水平索引值,j是子块垂直索引值,i=0~(cu_width>>3)

1,j=0~(cu_height>>3)

1。
[0718]
实施例三十七
[0719]
对于当前编码单元的任一子块,根据当前子块的运动信息,对当前子块进行运动补偿,得到当前子块的预测样本矩阵。
[0720]
示例性的,当前编码单元的预测样本由各子块的预测样本组成。
[0721]
实施例三十八
[0722]
对于当前编码单元的任一子块,若当前子块满足bio条件,则根据当前子块的运动信息对当前子块进行运动补偿,并使用bio技术来对补偿后的像素值叠加光流偏移值,得到当前子块的预测样本矩阵;否则,根据当前子块的运动信息对当前子块进行运动补偿,得到当前子块的预测样本矩阵。
[0723]
示例性的,当前编码单元的预测样本由各子块的预测样本组成。
[0724]
示例性的,子块满足双向光流条件包括:
[0725]
1)、序列级高层语法允许启用双向光流技术;
[0726]
2)、当前编码单元的运动矢量精度等于0;
[0727]
3)、该子块采用双向预测;
[0728]
4)、该子块的参考图像队列0中参考帧索引值为refidxl0的参考帧和参考图像队列1中参考索引值为refidxl1的参考帧显示顺序分别位于当前帧的两侧。
[0729]
实施例三十九
[0730]
对于当前编码单元的任一子块,对当前子块的运动信息不进行解码端运动矢量调整(dmvr)技术,根据当前子块的运动信息对当前子块进行运动补偿,得到当前子块的预测样本矩阵。
[0731]
示例性的,当前编码单元的预测样本由各子块的预测样本组成。
[0732]
实施例四十
[0733]
对于当前编码单元的任一子块,对当前子块的运动信息不进行解码端运动矢量调整(dmvr)技术,若当前子块满足bio条件,根据当前子块的运动信息对当前子块进行运动补偿,并使用bio技术来对补偿后的像素值叠加光流偏移值,得到当前子块的预测样本矩阵;否则,根据当前子块的运动信息对当前子块进行运动补偿,得到当前子块的预测样本矩阵。
[0734]
示例性的,当前编码单元的预测样本由各子块的预测样本组成。
[0735]
示例性的,子块满足双向光流条件包括:
[0736]
1)、序列级高层语法允许启用双向光流技术;
[0737]
2)、当前编码单元的运动矢量精度等于0;
[0738]
3)、该子块采用双向预测;
[0739]
4)、该子块的参考图像队列0中参考帧索引值为refidxl0的参考帧和参考图像队列1中参考索引值为refidxl1的参考帧显示顺序分别位于当前帧的两侧。
[0740]
需要说明的是,上述实施例仅仅是本技术实施例的实现方式的具体示例,而并不是对本技术保护范围的限定,基于上述实施例,可以通过实施例之间的组合,即一个或多个实施例之间的任意组合,或对实施例进行变型,得到新的实施例,其均应属于本技术的保护范围。
[0741]
此外,上述各实施例之间可以相互参照,且编码端和解码端的实现流程可以相互参照。
[0742]
以上对本技术提供的方法进行了描述。下面对本技术提供的装置进行描述:
[0743]
请参见图7,图7是本技术实施例提供的一种解码装置的结构示意图,该装置可以包括:
[0744]
获取单元710,用于获取当前编码单元的增强时域运动矢量预测模式标志位的取值和增强时域运动矢量预测模式索引值;
[0745]
第一确定单元720,用于当所述增强时域运动矢量预测模式标志位的取值为第一数值时,根据所述当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息;
[0746]
构建单元730,用于根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表;
[0747]
第二确定单元740,用于根据所述增强时域运动矢量预测模式索引值,在所述增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定所述增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;
[0748]
第三确定单元750,用于根据所述目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,所述目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息。
[0749]
在一些实施例中,所述获取单元710获取当前编码单元的增强时域运动矢量预测模式标志位的取值,包括:
[0750]
当所述当前编码单元满足第一解析条件时,从码流中解析所述增强时域运动矢量预测模式标志位的取值;
[0751]
否则,确定所述增强时域运动矢量预测模式标志位的取值为第二数值;
[0752]
所述增强时域运动矢量预测模式标志位的取值为第一数值,表明所述当前编码单元启用增强时域运动矢量预测模式,所述增强时域运动矢量预测模式标志位的取值为第二数值表明所述当前编码单元不启用增强时域运动矢量预测模式。
[0753]
在一些实施例中,所述当前编码单元满足第一解析条件包括以下之一或多个:
[0754]
所述当前编码单元的预测模式为跳过模式或直接模式;
[0755]
所述当前编码单元的尺寸满足预设尺寸限制;
[0756]
序列级高层语法允许所述当前编码单元启用增强时域运动矢量预测技术;
[0757]
所述当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
[0758]
在一些实施例中,所述当前编码单元满足第一解析条件包括:
[0759]
所述当前编码单元的预测模式为跳过模式或直接模式;
[0760]
所述当前编码单元的尺寸满足尺寸限制:当前编码单元的宽度和高度均大于或等于n0;
[0761]
序列级高层语法允许所述当前编码单元启用增强时域运动矢量预测技术;
[0762]
所述当前编码单元满足角度加权预测使用条件或者满足高级运动矢量表达使用条件。
[0763]
在一些实施例中,所述增强时域运动矢量预测模式标志位采用基于上下文的二进制算术编码,并采用一个上下文模型。
[0764]
在一些实施例中,所述获取单元710获取当前编码单元的增强时域运动矢量预测模式索引值,包括:
[0765]
当所述当前编码单元满足第二解析条件时,从码流中解析所述增强时域运动矢量预测模式索引值。
[0766]
在一些实施例中,所述当前编码单元满足第二解析条件,包括以下之一或多个:
[0767]
所述当前编码单元的预测模式为跳过模式或直接模式;
[0768]
所述当前编码单元启用增强时域运动矢量预测模式。
[0769]
在一些实施例中,所述增强时域运动矢量预测模式索引值的反二值化方式采用最大值为4的截断一元码,最多使用4个二元符号串,每个二元符号采用单独的上下文模型,一共4个上下文模型。
[0770]
在一些实施例中,所述第一确定单元720根据当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息,包括:
[0771]
根据当前图像帧类型确定匹配编码单元所在的时域参考图像;
[0772]
根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在所述时域参考图像中的坐标信息;
[0773]
其中,若所述当前图像帧类型为p图像,则所述时域参考图像是参考图像队列0中参考帧索引值为0的参考图像;若当前图像是b图像,则所述时域参考图像是参考图像队列1中参考帧索引值为0的参考图像。
[0774]
在一些实施例中,所述第一确定单元720根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在所述时域参考图像中的坐标信息,包括:
[0775]
根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息。
[0776]
在一些实施例中,所述第一确定单元720根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息,包括:
[0777]
根据当前最大编码单元在图像中的左上角横坐标、最大编码单元的大小、当前编码单元的宽度、当前图像的宽度、当前编码单元在图像中的左上角横坐标,确定所述初始匹配编码单元的横坐标;
[0778]
根据当前最大编码单元在图像中的左上角纵坐标、最大编码单元的大小、当前编码单元的高度、当前图像的高度、当前编码单元在图像中的左上角纵坐标来,确定所述初始匹配编码单元的纵坐标。
[0779]
在一些实施例中,所述构建单元730根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表,包括:
[0780]
根据所述初始匹配编码单元的坐标信息,确定至少一个增强时域运动矢量预测模式号;
[0781]
根据所述至少一个增强时域运动矢量预测模式号,构建增强时域候选列表。
[0782]
在一些实施例中,匹配编码单元的坐标信息为匹配编码单元在时域参考图像中的的左上角坐标;
[0783]
所述构建单元730根据所述至少一个增强时域运动矢量预测模式号,构建增强时域候选列表,包括:
[0784]
将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0785]
若my+8小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值,且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0786]
若mx+8小于或等于x_ctb_pos+lcu_size

cu_width和horizontal_size

cu_width中的较小值,且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0787]
若my

8大于或等于y_ctb_pos,且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0788]
若mx

8大于或等于x_ctb_pos,且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1;
[0789]
其中,(mx,my)所述初始匹配编码单元的坐标信息,(x_ctb_pos,y_ctb_pos)为当前最大编码单元在图像中的左上角坐标,lcu_size为最大编码单元的大小,cu_width和cu_
height分别为当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度;
[0790]
a1为所述初始匹配编码单元的左上角4*4块、b1为a1正左侧的4*4块,c1为a1正上方的4*4块;a2为所述初始匹配编码单元的右上角4*4块、b2为a2正右侧的4*4块,c2为a2正上方的4*4块;a3为所述初始匹配编码单元的左下角4*4块、b3为a3正左侧的4*4块,c3为a3正下方的4*4块;a4为所述初始匹配编码单元的右下角4*4块、b4为a4正右侧的4*4块,c4为a4正下方的4*4块。
[0791]
在一些实施例中,所述构建单元730根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表,还包括:
[0792]
当所述增强时域候选列表长度小于5时,循环执行如下操作,直至增强时域候选列表长度等于5:
[0793]
将与当前增强时域候选列表中最后一个增强时域运动矢量预测模式号相同的增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1。
[0794]
在一些实施例中,所述第二确定单元740根据所述增强时域运动矢量预测模式索引值,在所述增强时域候选列表中获取对应的增强时域运动矢量预测模式号,并确定所述增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息,包括:
[0795]
若增强时域运动矢量预测模式号为0,则px等于mx,py等于my;
[0796]
若增强时域运动矢量预测模式号为1,则px等于mx,py等于my+n;
[0797]
若增强时域运动矢量预测模式号为2,则px等于mx+n,py等于my;
[0798]
若增强时域运动矢量预测模式号为3,则px等于mx,py等于my

n;
[0799]
若增强时域运动矢量预测模式号为4,则px等于mx

n,py等于my;
[0800]
其中,(mx,my)所述初始匹配编码单元的左上角坐标,(px,py)为所述目标匹配编码单元的左上角坐标。
[0801]
在一些实施例中,所述第三确定单元750根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括:
[0802]
对于目标匹配编码单元中的任一子块:
[0803]
在当前图像帧类型是p图像的情况下:
[0804]
若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予所述当前编码单元对应位置的子块。
[0805]
在一些实施例中,所述第三确定单元750根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括
[0806]
对于目标匹配编码单元中的任一子块:
[0807]
在当前图像帧类型是b图像的情况下:
[0808]
若该子块的前向运动信息和后向运动信息可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前编码单元对应位置的子块;
[0809]
若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0810]
若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块。
[0811]
在一些实施例中,所述确定单元750根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括
[0812]
对于目标匹配编码单元中的任一子块:
[0813]
在当前图像帧类型是p图像的情况下:
[0814]
若将子块的前向运动信息不可用,则当当前编码单元的第一周围块的前向运动信息可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息不可用时,将零运动信息赋予当前编码单元对应位置的子块;
[0815]
在当前图像帧类型是b图像的情况下:
[0816]
若将子块的前向运动信息和后向运动信息均不可用,则当当前编码单元的第一周围块的前向运动信息和后向运动信息均可用时,将第一周围块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息可用,但后向运动信息不可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的后向运动信息可用,但前向运动信息不可用时,将第一周围块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前编码单元对应位置的子块;
[0817]
其中,所述第一周围块包括所述当前编码单元任一已解码的相邻块。
[0818]
在一些实施例中,如图8所示,所述解码装置还包括:
[0819]
运动补偿单元760,根据所述当前编码单元内每个子块的运动信息,对所述当前编码单元内对应子块进行运动补偿。
[0820]
在一些实施例中,所述运动补偿单元760根据所述当前编码单元内每个子块的运动信息,对所述当前编码单元内对应子块进行运动补偿,包括:
[0821]
对于当前编码单元的任一子块,对该子块的运动信息不进行解码端运动矢量调整技术;
[0822]
若该子块满足双向光流条件,根据该子块的运动信息对该子块进行运动补偿,并使用双向光流技术对补偿后的像素值叠加光流偏移值,得到该子块的预测样本矩阵;
[0823]
否则,根据该子块的运动信息对该子块进行运动补偿,得到该子块的预测样本矩阵;
[0824]
其中,当前编码单元的预测样本由各子块的预测样本组成。
[0825]
在一种可能的实施例中,上述解码装置可以包括视频解码器。
[0826]
请参见图9,为本技术实施例提供的一种解码端设备的硬件结构示意图。该解码端设备可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,通过读取并执行机器可读存储介质902中与解码控制逻辑对应的机器可执行指令,处理器901可执行上文描述的解码方法。
[0827]
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0828]
在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的解码方法。例如,所述机器可读存储介质可以是rom、ram、cd

rom、磁带、软盘和光数据存储设备等。
[0829]
请参见图10,图10是本技术实施例提供的一种编码装置的结构示意图,该装置可以包括:
[0830]
第一确定单元1010,用于根据当前编码单元的坐标信息确定当前编码单元的初始匹配编码单元的坐标信息;
[0831]
构建单元1020,用于根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表;
[0832]
第二确定单元1030,用于按顺序遍历增强型时域候选列表中的每个增强时域运动矢量预测模式号,确定每个增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息;
[0833]
第三确定单元1040,用于根据所述目标匹配编码单元的坐标信息确定目标匹配编码单元的运动信息,所述目标匹配编码单元的运动信息包括目标匹配编码单元内每个子块的运动信息,并根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息;
[0834]
运动补偿单元1050,用于根据所述当前编码单元内的每个子块的运动信息,对当前编码单元内的对应子块进行运动补偿;
[0835]
编码单元1060,用于计算增强时域运动矢量预测模式对应的率失真代价值,并将该率失真代价值与其他预测模式的率失真代价值进行比较,选择最小的率失真代价值所对应的预测模式,并将对应的增强时域运动矢量预测模式标志位和增强时域运动矢量预测模式索引值写入码流,传送给解码端设备。
[0836]
在一些实施例中,所述第一确定单元1010根据当前编码单元的坐标信息,确定所述当前编码单元的初始匹配编码单元的坐标信息,包括:
[0837]
根据当前图像帧类型确定匹配编码单元所在的时域参考图像;
[0838]
根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在所述时域参考图像中的坐标信息;
[0839]
其中,若所述当前图像帧类型为p图像,则所述时域参考图像是参考图像队列0中参考帧索引值为0的参考图像;若当前图像是b图像,则所述时域参考图像是参考图像队列1中参考帧索引值为0的参考图像。
[0840]
在一些实施例中,所述第一确定单元1010根据所述当前编码单元的坐标信息,确定所述初始匹配编码单元在所述时域参考图像中的坐标信息,包括:
[0841]
根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单
元的坐标信息。
[0842]
在一些实施例中,所述第一确定单元1010根据当前最大编码单元在图像中的左上角坐标、最大编码单元的大小、当前图像的尺寸、当前编码单元的尺寸、当前编码单元在图像中的左上角坐标,确定初始匹配编码单元的坐标信息,包括:
[0843]
根据当前最大编码单元在图像中的左上角横坐标、最大编码单元的大小、当前编码单元的宽度、当前图像的宽度、当前编码单元在图像中的左上角横坐标,确定所述初始匹配编码单元的横坐标;
[0844]
根据当前最大编码单元在图像中的左上角纵坐标、最大编码单元的大小、当前编码单元的高度、当前图像的高度、当前编码单元在图像中的左上角纵坐标来,确定所述初始匹配编码单元的纵坐标。
[0845]
在一些实施例中,所述构建单元1020根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表,包括:
[0846]
根据所述初始匹配编码单元的坐标信息,确定至少一个增强时域运动矢量预测模式号;
[0847]
根据所述至少一个增强时域运动矢量预测模式号,构建增强时域候选列表。
[0848]
在一些实施例中,匹配编码单元的坐标信息为匹配编码单元在时域参考图像中的的左上角坐标;
[0849]
所述构建单元1020根据所述至少一个增强时域运动矢量预测模式号,构建增强时域候选列表,包括:
[0850]
将增强时域运动矢量预测模式号0加入增强时域候选列表中,增强时域候选列表长度加1;
[0851]
若my+8小于或等于y_ctb_pos+lcu_size

cu_height和vertical_size

cu_height中的较小值,且a1位置的运动信息与c3位置的运动信息不同,或a2位置的运动信息与c4位置的运动信息不同,则将增强时域运动矢量预测模式号1加入增强时域候选列表中,增强时域候选列表长度加1;
[0852]
若mx+8小于或等于x_ctb_pos+lcu_size

cu_width和horizontal_size

cu_width中的较小值,且a1位置的运动信息与b2位置的运动信息不同,或a3位置的运动信息与b4位置的运动信息不同,则将增强时域运动矢量预测模式号2加入增强时域候选列表中,增强时域候选列表长度加1;
[0853]
若my

8大于或等于y_ctb_pos,且a3位置的运动信息与c1位置的运动信息不同,或a4位置的运动信息与c2位置的运动信息不同,则将增强时域运动矢量预测模式号3加入增强时域候选列表中,增强时域候选列表长度加1;
[0854]
若mx

8大于或等于x_ctb_pos,且a2位置的运动信息与b1位置的运动信息不同,或a4位置的运动信息与b3位置的运动信息不同,则将增强时域运动矢量预测模式号4加入增强时域候选列表中,增强时域候选列表长度加1;
[0855]
其中,(mx,my)所述初始匹配编码单元的坐标信息,(x_ctb_pos,y_ctb_pos)为当前最大编码单元在图像中的左上角坐标,lcu_size为最大编码单元的大小,cu_width和cu_height分别为当前编码单元的宽度和高度,horizontal_size和vertical_size分别是当前图像的宽度和高度;
[0856]
a1为所述初始匹配编码单元的左上角4*4块、b1为a1正左侧的4*4块,c1为a1正上方的4*4块;a2为所述初始匹配编码单元的右上角4*4块、b2为a2正右侧的4*4块,c2为a2正上方的4*4块;a3为所述初始匹配编码单元的左下角4*4块、b3为a3正左侧的4*4块,c3为a3正下方的4*4块;a4为所述初始匹配编码单元的右下角4*4块、b4为a4正右侧的4*4块,c4为a4正下方的4*4块。
[0857]
在一些实施例中,所述构建单元1020根据所述初始匹配编码单元的坐标信息,构建增强时域候选列表,还包括:
[0858]
当所述增强时域候选列表长度小于5时,循环执行如下操作,直至增强时域候选列表长度等于5:
[0859]
将与当前增强时域候选列表中最后一个增强时域运动矢量预测模式号相同的增强时域运动矢量预测模式号加入增强时域候选列表中,增强时域候选列表长度加1。
[0860]
在一些实施例中,所述第二确定单元1030按顺序遍历增强型时域候选列表中的每个增强时域运动矢量预测模式号,确定每个增强时域运动矢量预测模式号对应的目标匹配编码单元的坐标信息,包括:
[0861]
对于当前遍历的增强时域运动矢量预测模式号:
[0862]
若该增强时域运动矢量预测模式号为0,则px等于mx,py等于my;
[0863]
若该增强时域运动矢量预测模式号为1,则px等于mx,py等于my+n;
[0864]
若该增强时域运动矢量预测模式号为2,则px等于mx+n,py等于my;
[0865]
若该增强时域运动矢量预测模式号为3,则px等于mx,py等于my

n;
[0866]
若该增强时域运动矢量预测模式号为4,则px等于mx

n,py等于my;
[0867]
其中,(mx,my)所述初始匹配编码单元的左上角坐标,(px,py)为所述目标匹配编码单元的左上角坐标。
[0868]
在一些实施例中,所述第三确定单元1040根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括:
[0869]
对于目标匹配编码单元中的任一子块:
[0870]
在当前图像帧类型是p图像的情况下:
[0871]
若该子块的前向运动信息可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予所述当前编码单元对应位置的子块。
[0872]
在一些实施例中,所述第三确定单元1040根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括
[0873]
对于目标匹配编码单元中的任一子块:
[0874]
在当前图像帧类型是b图像的情况下:
[0875]
若该子块的前向运动信息和后向运动信息可用,则将该子块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予所述当前编码单元对应位置的子块;
[0876]
若该子块的前向运动信息可用,但后向运动信息不可用,则将该子块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;
[0877]
若该子块的后向运动信息可用,但前向运动信息不可用,则将该子块的后向运动
信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块。
[0878]
在一些实施例中,所述第三确定单元1040根据所述目标匹配编码单元内每个子块的运动信息,确定所述当前编码单元内对应位置的子块的运动信息,包括
[0879]
对于目标匹配编码单元中的任一子块:
[0880]
在当前图像帧类型是p图像的情况下:
[0881]
若将子块的前向运动信息不可用,则当当前编码单元的第一周围块的前向运动信息可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息不可用时,将零运动信息赋予当前编码单元对应位置的子块;
[0882]
在当前图像帧类型是b图像的情况下:
[0883]
若将子块的前向运动信息和后向运动信息均不可用,则当当前编码单元的第一周围块的前向运动信息和后向运动信息均可用时,将第一周围块的前向运动信息和后向运动信息分别伸缩到指向list0的第一帧和list1的第一帧,将伸缩后的前向运动信息和后向运动信息分别赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息可用,但后向运动信息不可用时,将第一周围块的前向运动信息伸缩到指向list0的第一帧,并将伸缩后的前向运动信息赋予当前编码单元对应位置的子块;当第一周围块的后向运动信息可用,但前向运动信息不可用时,将第一周围块的后向运动信息伸缩到指向list1的第一帧,并将伸缩后的后向运动信息赋予当前编码单元对应位置的子块;当第一周围块的前向运动信息和后向运动信息均不可用时,将零运动信息赋予当前编码单元对应位置的子块;
[0884]
其中,所述第一周围块包括所述当前编码单元任一已解码的相邻块。
[0885]
在一些实施例中,所述运动补偿单元1050根据所述当前编码单元内每个子块的运动信息,对所述当前编码单元内对应子块进行运动补偿,包括:
[0886]
对于当前编码单元的任一子块,对该子块的运动信息不进行解码端运动矢量调整技术;
[0887]
若该子块满足双向光流条件,根据该子块的运动信息对该子块进行运动补偿,并使用双向光流技术对补偿后的像素值叠加光流偏移值,得到该子块的预测样本矩阵;
[0888]
否则,根据该子块的运动信息对该子块进行运动补偿,得到该子块的预测样本矩阵;
[0889]
其中,当前编码单元的预测样本由各子块的预测样本组成。
[0890]
在一种可能的实施例中,上述编码装置可以包括视频编码器。
[0891]
请参见图11,为本技术实施例提供的一种编码端设备的硬件结构示意图。该编码端设备可包括处理器1101、存储有机器可执行指令的机器可读存储介质1102。处理器1101与机器可读存储介质1102可经由系统总线1103通信。并且,通过读取并执行机器可读存储介质1102中与编码控制逻辑对应的机器可执行指令,处理器1101可执行上文描述的编码方法。
[0892]
本文中提到的机器可读存储介质1102可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱
动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
[0893]
在一些实施例中,还提供了一种机器可读存储介质,该机器可读存储介质内存储有机器可执行指令,所述机器可执行指令被处理器执行时实现上文描述的编码方法。例如,所述机器可读存储介质可以是rom、ram、cd

rom、磁带、软盘和光数据存储设备等。
[0894]
在一些实施例中,还提供了一种摄像机设备,包括上述任一实施例中的编码装置和上述任一实施例中的解码装置。
[0895]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0896]
以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1