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

视频解码方法、视频编码方法、相关设备及存储介质与流程

2022-06-11 17:07:05 来源:中国专利 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.图1a是本发明实施例提供的一种图像处理系统的架构示意图;
35.图1b是本发明实施例提供的一种将图像划分成多个编码单元的示意图;
36.图1c是本发明实施例提供的一种视频编码器的基本工作流程图;
37.图1d是本发明实施例提供的一种多种帧内预测模式的模式示意图;
38.图1e是本发明实施例提供的一种帧内预测模式中的角度预测模式的示意图;
39.图1f是本发明实施例提供的一种帧间预测的示意图;
40.图1g是本发明实施例提供的一种帧内块复制的示意图;
41.图1h是本发明实施例提供的一种帧内块复制的参考像素的范围示意图;
42.图1i是本发明实施例提供的一种帧内串复制的示意图;
43.图1j是本发明实施例提供的一种具有串长度分辨率控制的帧内串复制的示意图;
44.图2是本发明实施例提供的一种视频编码方法的流程示意图;
45.图3a是本发明实施例提供的一种扫描模式的示意图;
46.图3b是本发明实施例提供的一种关于当前编码单元的方位说明图;
47.图4是本发明实施例提供的一种视频解码方法的流程示意图;
48.图5是本发明实施例提供的一种视频编码装置的结构示意图;
49.图6是本发明实施例提供的一种视频解码装置的结构示意图;
50.图7是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
51.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
52.在本发明实施例中,涉及一种图像处理系统;参见图1a所示,该图像处理系统至少
包括:视频编码设备11和视频解码设备12。其中,视频编码设备11的内部可至少包括视频编码器,该视频编码器可用于对视频信号中的图像执行编码流程以得到码流;相应的,视频解码设备12的内部可至少包括视频解码器,该视频解码器可用于对码流执行解码流程以得到视频信号中的图像所对应的重建图像。此处所提及的视频信号,从信号的获取方式看,可以分为摄像机拍摄到的以及计算机生成的两种方式。由于统计特性的不同,其对应的压缩编码方式也可能有所区别。
53.目前主流的视频编码标准,如国际视频编码标准hevc(high efficiency video coding,,高性能视频编码标准),vvc(versatile video coding,多功能视频编码标准),以及中国国家视频编码标准avs3(audio video coding standard 3,音视频编码标准)等;均采用了混合编码框架,通过将原始视频信号中的图像分成一系列的cu(coding unit,编码单元),结合预测、变换和熵编码等视频编码方法,实现视频数据的压缩。具体的,这些主流的视频编码标准对输入的原始视频信号中的图像,进行了如下一系列的操作和处理:
54.1)块划分结构(block partition structure):将输入图像划分成若干个不重叠的处理单元,每个处理单元将进行类似的压缩操作。这个处理单元被称作ctu(coding tree unit,编码树单元),或者lcu(largest coding unit,最大编码单元)。ctu或者lcu再往下,可以继续进行更加精细的划分,得到一个或多个基本编码的单元,称之为cu。以处理单元为lcu为例,根据每个lcu的特点将相应的lcu进一步划分得到若干个cu的示意图可参见图1b所示;应理解的是,图1b只是示例性表示lcu的划分方式,并不对其进行限定;如图1b表示的是将lcu平均地划分为多个cu,但实际也可将lcu非平均地划分为多个cu。每个cu是一个编码环节中最基本的元素,且每个cu可独立采用一种预测编码模式进行编解码。
55.2)预测编码(predictive coding):目前的视频编码技术包括了帧内预测模式和帧间预测模式等多种预测编码模式,编码端需要为当前cu决定在众多可能的预测编码模式中,选择最适合的一种预测编码模式并告知解码端。然后,编码端采用选择的预测编码模式对当前cu进行预测编码;当前cu经过选定的已重建视频信号的预测后,得到残差视频信号。
56.①
帧内预测模式:预测的信号来自于同一图像内已经编码重建过的区域;
57.②
帧间预测模式:预测的信号来自已经编码过的,不同于当前图像的其他图像(称之为参考图像)。
58.3)变换编码及量化(transform&quantization):残差视频信号经过dft(discrete fourier transform,离散傅里叶变换),dct(discrete cosine transform,离散余弦变换)等变换操作,将残差视频信号转换到变换域中,称之为变换系数。在变换域中的残差视频信号,进一步地进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。由于在一些视频编码标准中,可能有多于一种变换方式可以选择,因此编码端也需要为当前cu选择其中的一种变换方式,并告知解码端。其中,量化的精细程度通常由qp(quantization parameter,量化参数)来决定;当qp取值较大时,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真及较低的码率;相反,当qp取值较小时,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
59.4)熵编码(entropy coding)或统计编码:量化后的变换域信号,将根据各个值出现的频率,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。同时,编码其他信息;
例如选择的模式,运动矢量等,也需要进行熵编码以降低码率。其中,统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率;常见的统计编码方式有变长编码(variable length coding,vlc)或者基于上下文的自适应二进制算术编码(content adaptive binary arithmetic coding,cabac),等等。
60.5)环路滤波(loop filtering):已经编码过的图像,经过反量化,反变换及预测补偿的操作(上述步骤2)-步骤4)的反向操作),可获得重建的解码图像。重建的解码图像与原始图像相比,由于存在量化的影响,部分信息与原始图像有所不同,会产生失真(distortion)。因此可采用滤波器对重建的解码图像进行滤波操作,例如去块效应滤波(deblocking),sao(sample adaptive offset,样点自适应补偿)或者alf(adaptive loop filter,自适应环路滤波)等滤波器,可以有效的降低量化所产生的失真程度。由于这些经过滤波后的重建的解码图像,将作为后续编码图像的参考,用于对将来的信号进行预测,所以上述的滤波操作也被称为环路滤波,及在编码环路内的滤波操作。
61.基于上述步骤1)-步骤5)的相关描述,图1c示例性地展示了一个视频编码器的基本工作流程图;其中,图1c以第k个cu(标记为sk[x,y])为例进行举例说明,k为大于或等于1且小于或等于输入的当前图像中的cu的数量的正整数。sk[x,y]表示第k个cu中坐标为[x,y]的像素点(简称像素),x表示像素的横坐标,y表示像素的纵坐标。sk[x,y]经过运动补偿或者帧内预测等处理中的一种较优处理后获得预测信号sk[x,y]与相减得到残差信号uk[x,y],然后对该残差信号uk[x,y]进行变换和量化。量化输出的数据有两个不同的去处:一个是送给熵编码器进行熵编码,编码后的码流输出到一个缓冲器(buffer)中保存,等待传送出去;另一个是进行反量化和反变换后,得到信号u'k[x,y]。将信号u'k[x,y]与相加得到新的预测信号s
*k
[x,y],并将s
*k
[x,y]送至当前图像的缓冲器中保存。s
*k
[x,y]经过帧内-图像预测,获得f(s
*k
[x,y])。s
*k
[x,y]经过环路滤波后获得s'k[x,y],并将s'k[x,y]送至解码图像缓冲器中保存,以用于生成重建图像。s'k[x,y]经过运动-补偿预测后获得s'r[x m
x
,y my],该s'r[x m
x
,y my]表示参考块;其中,m
x
和my分别表示运动矢量(motion vector,mv)的水平分量和竖直分量。
[0062]
根据上述编码过程的描述,可以看出:在解码端,对于每一个cu,视频解码器获得压缩码流后,需要先进行熵解码,获得各种模式信息(如预测编码模式信息)及量化后的变换系数,使得各个系数经过反量化及反变换后可得到残差信号。另一方面,根据已知的预测编码模式信息,可获得该cu对应的预测信号(即该cu中的各个像素的预测值),两者(即残差信号和预测信号)相加之后,即可得到重建信号(即重建图像)。最后,重建信号中需要经过环路滤波的操作,产生最终的输出信号(即最终解码得到的解码图像)。
[0063]
需要说明的是,随着实际采用的视频编码标准的不同,上述编码过程中所涉及的预测编码模式也会存在一定的差异。其中,avs3中使用的预测编码模式可包括:帧内预测模式、帧间预测模式、帧内块复制预测模式、帧内串复制模式等等;在使用avs3进行编码时,可以单独或组合使用这些预测编码模式;下面,将分别对各预测编码模式进行介绍:
[0064]
(一)帧内预测模式:
[0065]
帧内预测模式是一种常用的预测编码技术,其主要基于视频图像的像素在空域存在的相关性,从相邻已编码区域导出当前cu的预测值。如图1d所示,目前avs3中包含3种非
角度帧内预测模式(plane,dc和bilinear),以及66种角度预测模式。当采用角度预测模式时,当前cu内的像素根据预测模式的角度所对应的方向,将参考像素行或列上对应位置的参考像素的值作为预测值。如图1e所示,对于当前cu中的像素p;首先可根据图中的预测角度,从上方已经编码的像素行中确定参考像素所在的位置,然后以参考像素的值作为像素p的预测值。但需要注意的是,不是所有像素位置指向的参考像素所在位置都是整像素精度(如图1e中像素p的参考像素所在位置为像素b和像素c中间的某个分像素位置);在此情况下,像素p的预测值需要利用周围像素插值得到。为了提高帧内预测的效率,通常可使用片上存储器存储帧内预测的参考像素的值。
[0066]
(二)帧间预测模式:
[0067]
参见图1f所示,帧间预测主要利用视频时间域的相关性,使用邻近已编码的其他图像中的像素预测当前图像中的像素,以达到有效去除视频时域冗余的目的,能够有效节省编码残差数据的比特。其中,p为当前帧,pr为参考帧,b为当前cu,br是b的参考块(即参考cu)。b’与b在图像中的坐标位置相同。假设br坐标为(xr,yr),b’坐标为(x,y);当前cu与其参考块之间的位移,称为运动向量(mv),则:mv=(x
r-x,y
r-y)。
[0068]
(三)帧内块复制模式:
[0069]
帧内块复制(intra block copy,ibc),其也可称为块复制帧内预测;是hevc屏幕内容编码(screen cotent coding,scc)扩展中采纳的一种帧内编码工具,它显著地提升了屏幕内容的编码效率。在avs3和vvc中,也采纳了ibc技术以提升屏幕内容编码的性能。ibc主要利用屏幕内容视频在空间的相关性,使用当前图像上已编码区域中的像素预测当前cu中的像素的预测值,能够有效节省编码像素所需的比特。如图1g所示,在ibc中当前cu与其参考块之间的位移,可称为块矢量(block vector,bv);h.266/vvc采用了类似于帧间预测的bv预测技术进一步节省编码bv所需的比特。
[0070]
在硬件实现中,可将所有用于ibc预测的参考像素,都存放于片上存储器中,以降低片内外内存读写的额外带宽。为了降低硬件成本,ibc被限制为只能使用一个s
×
s像素大小(如128
×
128像素大小)的内存作为存储空间;那么,为了提高该内存的使用效率,128
×
128大小的内存可被分为4个64
×
64大小的区域以进行参考像素内存的复用。其中,参考像素的范围可如图1h所示:图1h中具有垂直条的块是当前处理单元(即当前ctu或当前lcu)中的当前cu;灰色区域是已编码的部分,白色区域是当前处理单元中尚未编码的部分;图1h中带有“x”标记的部分对于当前cu不可用,图1h中带有“x”标记的区域内的像素不能作为当前cu的参考像素。
[0071]
需要说明的是,本发明实施例只是以128
×
128像素大小的内存为例进行说明,在其他实施例也可使用一个64
×
64像素大小的内存作为存储空间,以进一步降低硬件成本;或者,也可使用一个256
×
256像素大小的内存作为存储空间,以满足更多数据的存储需求。并且,本发明实施例也只是以将该存储空间划分成4个64
×
64大小的区域为例进行说明,在其他实施例中,也可具有其他的区域划分方式,如将一个128
×
128大小的内存分为16个32
×
32大小的区域以进行参考像素内存的复用,等等。也就是说,可将一个s
×
s像素大小的内存划分成g2个大小的区域进行参考像素内存的复用;其中,g为s的约数,即s除以g所得到的商为整数。
[0072]
(四)帧内串复制模式——串预测子模式:
[0073]
帧内串复制技术(intra string copy,isc),也可称为串复制帧内预测);其主要按照某种扫描模式(如光栅扫描、往返扫描和zig-zag扫描等)将一个cu分成一系列像素串或未匹配像素(即未匹配到参考像素的像素)。类似于ibc模式,串预测子模式中的每个像素串在当前图像的已编码区域中寻找相同形状的参考串,从而导出当前串中的各个像素的预测值;通过编码当前串中的各个像素的像素值与预测值之间的残差,代替直接编码像素值,能够有效节省比特。
[0074]
在一种实施方式中,对从cu进行划分所得到的各个像素串均不包括未匹配像素;在此实施方式下,图1i示例性地给出了帧内串复制的示意图。其中,深灰色的区域为已编码区域;白色的28个像素构成串1,浅灰色的35个像素构成串2,黑色的1个像素为未匹配像素。
[0075]
再一种实施方式中,由于2020年8月份的avs会议采纳了串长度分辨率控制技术,限制所有串的长度必须为4的整数倍,串的类型被分为匹配串和不完全匹配串。其中,匹配串是指长度可以为4的整数倍,且不包括未匹配像素的串;不完全匹配串是指长度为4,且包含未匹配像素的串。需要说明的是,在其他实施例中,匹配串的长度也可不局限于4的整数倍,其也可以是5的整数倍,或者3的整数倍,等等;同理,不完全匹配串的长度也可不局限于4,其也可以是5、6等等。对于不完全匹配串中的匹配像素,可以根据对应的串位移矢量导出预测值;而对于不完全匹配串中的未匹配像素,其像素值则从码流中解码得到。也就是说,对从cu进行划分所得到的像素串中可包括未匹配像素;在此实施方式下,图1j示例性地给出了具有串长度分辨率控制的帧内串复制的示意图。其中,深灰色的区域为已编码区域;白色的24个像素构成串1,黑色的一个像素与其右侧的三个像素构成串2,浅灰色的36个像素构成串3。
[0076]
另外,帧内串复制技术还需要编码当前cu中各个串对应的串位移矢量(string vector,简称sv)、串长度以及是否有匹配串的标志等;此处的串位移矢量又可称为串矢量,其用于表示当前串到参考串的位移。串长度表示当前串所包含的像素数量。在不同的实现方式中,串长度的编码有多种方式,以下给出几种示例(部分示例可能组合使用):

直接编码串长度。

编码处理该当前串后待处理像素数量,使得解码端根据当前cu的大小p,已处理的像素数量p1,解码得到不包括当前串后的待处理像素数量p2,从而计算得到当前串的串长度l,l=p-p1-p2;其中,l、p均为大于0的整数,p1和p2均为大于或等于0的整数。

编码一个标志指示当前串是否为最后一个串,如果是最后一个串,则根据当前cu的大小p,已处理的像素数量p1,计算得到当前串的串长度l,l=p-p1。
[0077]
在实际应用中,为了保持硬件实现具有较低的复杂度,avs3中的帧内串复制技术使用了类似ibc的参考范围限制,使用1个128x128像素大小的内存存储参考像素的值和当前待重建的像素的值,并使用了与ibc类似的内存重用策略提高该内存的使用效率。
[0078]
(五)帧内串复制模式——等值串与单位矢量串子模式:
[0079]
等值串与单位矢量串模式是帧内串复制模式的一种子模式,在2020年10月被采纳至avs3标准中。类似于帧内串复制模式,该模式将一个cu(即编码/解码块)按照某种扫描顺序将划分为一系列的像素串或未匹配像素,像素串的类型可以为等值串或单位矢量串。此模式下的等值串的特点在于:像素串中所有像素具有相同的预测值。此模式下的单位矢量串(也称为单位基矢量串,单位偏移串,复制上方串等)的特点在于:像素串中的每个像素使
用上方的像素的重建值作为当前像素的预测值。在等值串与单位矢量串子模式中,需要对当前cu中的各个串的长度和预测值进行编码;且等值串与单位矢量串子模式的参考范围与串预测子模式的参考范围一致。
[0080]
基于上述各个预测编码模式的相关介绍,本发明实施例提出了一种编解码方案。一方面,该编解码方案允许在帧内串复制的串预测子模式下的cu使用单位矢量串,从而有助于提升串预测的编码性能;另一方面,该编解码方案还可允许导出与当前cu相邻的像素作为当前串的参考,从而得到当前串中的像素的预测值。具体的,该编解码方案可包括视频编码方法和视频解码方法;下面将分别结合图2和图4,对本发明实施例所提出的视频编码方法和视频解码方法进行说明。
[0081]
请参见图2,是本发明实施例提出一种视频编码方法的流程图;该视频编码方法可以由上述所提及的视频编码设备,或者视频编码设备中的视频编码器执行。为便于阐述,后续均以视频编码设备执行该视频编码方法为例进行说明;如图2所示,该视频编码方法可包括以下步骤s201-s203:
[0082]
s201,从当前图像的当前编码单元中确定待解码的当前串。
[0083]
在具体实施过程中,视频编码设备可接收原始视频信号,并按顺序对原始视频信号中的图像进行编码;相应的,当前图像是指当前正在编码的图像,其可以是原始视频信号中的任一帧图像。在对该当前图像进行编码的过程中,视频编码设备可先将该当前图像划分成多个处理单元(如ctu或者lcu),并将每个处理单元进一步划分成一个或多个编码单元(即cu),从而依次对每个编码单元进行编码。其中,当前待编码(即当前即将开始编码)或者当前正在编码(即已编码了部分像素)的编码单元可称为当前编码单元。例如,设总共有5个cu:cu1、cu2、cu3、cu4以及cu5;且cu1-cu2中的各个像素均已被编码,cu3-cu5中的各个像素均未被编码;那么按照编码顺序可确定cu3为当前待编码的编码单元,因此当前编码单元便为cu3。又如,设总共有5个cu:cu1、cu2、cu3、cu4以及cu5;且cu1中的各个像素均已被编码,cu2中的部分像素均已被编码(即还剩余一部分像素未被编码),cu3-cu5中的各个像素均未被编码;那么可确定cu2为当前正在编码的编码单元,因此当前编码单元可为cu2。
[0084]
针对当前编码单元,视频编码设备内可采用isc对当前编码单元中的各个像素进行编码。需要说明的是,当前编码单元可以是在帧内串复制模式(isc)中的串预测子模式下被编码的;并且,该串预测子模式下的编码单元被允许使用单位矢量串。或者,当前编码单元也可以是在帧内串复制模式(isc)中的等值串与单位矢量串子模式下被编码的,对此不作限制。为便于阐述,后续均以采用串预测子模式对当前编码单元进行编码为例进行说明。并且,当前编码单元可包括p行q列个像素;其中,p和q的取值均为正整数,且p和q的取值可相等或不等,对此不作限制。例如,p和q的取值可以均为64,那么当前编码单元便可包括64
×
64个像素。
[0085]
具体的,视频编码设备可确定当前编码单元的扫描模式,此处的扫描模式可包括但不限于:水平扫描模式或者竖直扫描模式。参见图3a所示,水平扫描模式(又可称为水平往返扫描模式)是指:按照从上往下的顺序依次扫描当前编码单元中的各行中像素的扫描模式;竖直扫描模式(或称为垂直扫描模式)是指:按照从左往右的顺序依次扫描当前编码单元中的各列中像素的扫描模式。需要说明的是,在其他实施例中,水平扫描模式也可以是指:按照从下往上的顺序依次扫描当前编码单元中的各行中像素的扫描模式;竖直扫描模
式也可以是指:按照从右往左的顺序依次扫描当前编码单元中的各列中像素的扫描模式,对此不作限制。为便于阐述,后续均以图3a所示的水平扫描模式和竖直扫描模式进行阐述。然后,视频编码设备可按照当前编码单元的扫描模式将当前编码单元划分成至少一个串和/或未匹配像素,并依次对划分得到的串和/或未匹配像素进行编码处理。其中,当前待编码的串可称为当前串;由于avs3标准限定了串的长度必须为4的整数倍,因此当前串中可包括4l个像素,l为正整数;但应理解的是,在其他视频编码标准中,若未规定串的长度,则当前串可包括一个或多个像素。并且,当前串可以是单位矢量串,也可以不是单位矢量串;且当前串为单位矢量串的同时,其可以是匹配串或者不完全匹配串,对此不作限定。若当前串为单位矢量串,则可执行步骤s202。
[0086]
需要说明的是,本发明实施例中所提及的单位矢量串的特点,与上述等值串与单位矢量串子模式中的单位矢量串的特点并不完全相同。本发明实施例所提及的单位矢量串的特点如下:单位矢量串中的每个像素的预测值由对应的参考像素的重建值确定,且任一像素对应的参考像素是指:位于该任一像素的目标侧且相邻的像素。其中,此处所提及的目标侧可根据当前编码单元的扫描模式确定;若当前编码单元的扫描模式为水平扫描模式,且水平扫描模式指示按照从上往下的顺序对当前编码单元进行扫描,则任一像素的目标侧是指任一像素的上方,即任一像素的参考像素是指位于该任一像素的上方一行的某个像素(如正上方的像素);若当前编码单元的扫描模式为竖直扫描模式,且竖直扫描模式指示按照从左往右的顺序对当前编码单元进行扫描,则任一像素的目标侧是指任一像素的左方(如正左方的像素)。还需要说明的是,本发明实施例所提及的上位是指位于当前编码单元的左上角所在的水平线上侧的方位,正上方则是指像素所在位置垂直向上的方位;左方是指位于当前编码单元的左上角所在的竖直线左侧的方位,正左方则是指像素所在位置水平向左的方位,如图3b所示。需要说明的是,本技术实施例中的重建值指的是未经过环路滤波的像素值。
[0087]
s202,若当前串为单位矢量串,且当前串中包括第一像素,则从当前图像中的历史编码单元中确定第一像素的参考像素。
[0088]
其中,历史编码单元是指当前图像中与当前编码单元相邻的已编码的编码单元;第一像素对应的参考像素和第一像素在当前图像中相邻,且第一像素满足如下条件:第一像素对应的参考像素未位于当前编码单元中。需要说明的是,历史编码单元和当前编码单元相邻是指:历史编码单元和当前编码单元之间不存在其他的编码单元。第一像素对应的参考像素和第一像素在当前图像中相邻是指:在当前图像中,第一像素的参考像素所处的行,和第一像素所处的行是相互毗邻(即紧挨)的;例如,在当前图像中,设第一像素的参考像素所处的行是第5行;若第一像素所处的行是第6行,则可认为第一像素的参考像素所处的行,和第一像素所处的行是相互毗邻的;若第一像素所处的行是第7行,则可认为第一像素的参考像素所处的行,和第一像素所处的行不是相互毗邻的。或者,第一像素对应的参考像素和第一像素在当前图像中相邻是指:在当前图像中,第一像素的参考像素所处的列,和第一像素所处的列之间是相互毗邻(即紧挨)的;例如,在当前图像中,设第一像素的参考像素所处的列是第5列;若第一像素所处的行是第6列,则可认为第一像素的参考像素所处的列,和第一像素所处的列是相互毗邻的;若第一像素所处的列是第7列,则可认为第一像素的参考像素所处的列,和第一像素所处的列不是相互毗邻的。
[0089]
可见,当第一像素和第一像素的参考像素在当前图像中相邻时,第一像素应当是当前编码单元中的临界行或临界列上的像素;此处的临界行又可称为边缘行,其可以是当前编码单元的第一行或者最后一行;同理,临界列又可称为边缘列,其可以是当前编码单元的第一列或者最后一列。在具体实现中,第一像素的具体含义可以根据当前编码单元的扫描模式确定。例如,若当前编码单元的扫描模式为水平扫描模式,且水平扫描模式指示按照从上往下的顺序对当前编码单元进行扫描,则历史编码单元位于当前编码单元的上方(即历史编码单元为位于当前编码单元的上方且与当前编码单元相邻的已编码cu),第一像素为位于当前编码单元的第一行的像素;即此情况下,当前串包括当前编码单元中第一行上的至少一个像素。若当前编码单元的扫描模式为竖直扫描模式,且竖直扫描模式指示按照从左往右的顺序对当前编码单元进行扫描,则历史编码单元位于当前编码单元的左方(即历史编码单元为位于当前编码单元的左方且与当前编码单元相邻的已编码cu),第一像素为位于当前编码单元的第一列的像素;即此情况下,当前串包括当前编码单元中第一列上的至少一个像素。
[0090]
s203,根据第一像素的参考像素的重建值获取第一像素的预测值,以得到当前编码单元的编码信息。
[0091]
在具体实施过程中,可先获取第一像素的参考像素的重建值;其次,将第一像素的参考像素的重建值作为第一像素的预测值;然后,可编码第一像素的像素值和预测值之间的残差,以得到当前编码单元的编码信息;通过此编码方式,可减少比特数,提升编码效率。或者,在得到第一像素的预测值后,可编码用于指示该预测值的指示信息(如串矢量、串长度等),以得到当前编码单元的编码信息。其中,随着当前编码单元的扫描模式的不同,第一像素的参考像素的重建值的获取方式也随之不同;具体参见下述描述:
[0092]
1)若当前编码单元的扫描方式为水平扫描方式,且水平扫描模式指示按照从上往下的顺序对当前编码单元进行扫描;则第一像素的参考像素的重建值的获取方式包括以下任一种:
[0093]
第一种:第一像素的参考像素的重建值从帧内串复制模式对应的第一存储空间(或称为帧内串复制模式的参考像素存储器)中获取。其中,帧内串复制模式的第一存储空间可以是前述ibc内容中所提及的128
×
128大小的内存,且该第一存储空间可被分为4个64
×
64大小的区域以进行参考像素内存的复用;但需说明的是,如前述ibc的相关内容所言,第一存储空间可以不局限于128
×
128大小的内存,且第一存储空间也不局限于被划分成4个64
×
64的区域。由于当前编码单元的预测编码模式为帧内串复制模式中的串预测子模式,或者等值串与单位矢量串子模式,因此第一像素的值是会存储在第一存储空间中的,那么通过从第一存储空间中获取第一像素的参考像素的重建值作为第一像素的预测值,可实现在一个存储空间中完成预测值的赋值,可有效提升编码效率。
[0094]
第二种:第一像素的参考像素的重建值从帧内预测模式对应的第二存储空间(或称为帧内预测模式的参考像素存储器)中获取。由于若第一像素的参考像素采用帧内预测模式进行编码,则此情况下的第一像素的参考像素的重建值位于第二存储空间中;又若第一像素的参考像素采用帧内串复制模式进行编码,则此情况下可能因为内存复用的原因导致第一像素的参考像素的重建值被覆盖。因此,为提升获取第一像素的参考像素的重建值的成功率,可直接从第二存储空间中获取第一像素的参考像素的重建值。
[0095]
第三种:将当前图像划分成多个n
×
n的区域,当第一像素位于任一n
×
n的区域的第一行时,第一像素的参考像素的重建值从第二存储空间中获取;否则,第一像素的参考像素的重建值从第一存储空间中获取。具体的,n的取值可根据经验值,或者处理单元的大小,或者当前cu的大小确定。例如,处理单元的大小为128
×
128,则可将目标区域划分成多个128
×
128的区域;当第一像素位于任一128
×
128的区域的第一行时,参见图1h所示的参考范围限制(图1h对应的扫描模式为水平扫描模式)可知,由于第一存储空间除了存储当前cu的值(如已重建的像素的重建值)以外,其只会存储当前cu左方的cu的重建值,并未存储第一像素的参考像素(即位于当前cu上方且与第一像素相邻的像素)的重建值,因此可从第二存储空间中获取第一像素的参考像素的重建值,以提升重建值的获取成功率。当第一像素未位于任一128
×
128的区域的第一行时,第一像素的参考像素便位于当前cu的内部,那么该参考像素的重建值存在于第一存储空间中,因此可从第一存储空间中获取第一像素的参考像素的重建值,以提升重建值的获取效率。
[0096]
需要说明的是,当前串中的像素可能均为第二像素(即当前串中不包括第一像素),或者当前串中也可能包括第一像素和第二像素(即当前串中除了第一像素,还包括第二像素);其中,第二像素为位于当前编码单元的第一行以外的像素,且当前串中的各个第二像素分布在当前编码单元中的至少一行中。那么计算机设备还可采用如下任一种方式导出当前串中的各个第二像素的预测值:
[0097]
方式a:以行为单位,逐行地获取当前串的各行中的第二像素的预测值。例如,设当前串中的第二像素分布在当前编码单元中的第2行-第3行,则可按照从上往下的顺序,先一次性导出第2行中的第二像素的预测值,再一次性导出第3行中的第二像素的预测值;其中,每一行中的第二像素均使用上方一行中的参考像素的重建值作为预测值。本方式a通过逐行地获取第二像素的预测值,可有效提升预测值的获取效率,从而提升编码效率。
[0098]
方式b:以单个像素为单位,逐像素地获取当前串中的各个第二像素的预测值。例如,设当前串中的第二像素分布在当前编码单元中的第2行-第3行,则可先挨个像素地导出第2行中的各个第二像素的预测值,再挨个像素地导出第3行中的第二像素的预测值;其中,每个第二像素均使用位于其上方的参考像素的重建值作为预测值。
[0099]
由此可见,在上述方式a-b中,任一第二像素的预测值是根据位于任一第二像素的上方且相邻的参考像素的重建值获取到的。具体的,可直接使用任一第二像素的上方且相邻的参考像素的重建值作为该任一第二像素的预测值。
[0100]
2)若当前编码单元的扫描方式为竖直扫描方式,且竖直扫描模式指示按照从左往右的顺序对当前编码单元进行扫描;则第一像素的参考像素的重建值的获取方式包括以下任一种:
[0101]
第一种:第一像素的参考像素的重建值从帧内串复制模式对应的第一存储空间(或称为帧内串复制模式的参考像素存储器)中获取。
[0102]
第二种:第一像素的参考像素的重建值从帧内预测模式对应的第二存储空间(或称为帧内预测模式的参考像素存储器)中获取。
[0103]
第三种:将当前图像划分成多个n
×
n的区域,当第一像素位于任一n
×
n的区域的第一列时,第一像素的参考像素的重建值从第二存储空间中获取;否则,第一像素的参考像素的重建值从第一存储空间中获取。
[0104]
需要说明的是,当前串中的像素可能均为第三像素(即当前串中不包括第一像素),或者当前串中也可能包括第一像素和第三像素(即当前串中除了第一像素,还包括第三像素);其中,第三像素为位于当前编码单元的第一列以外的像素,且当前串中的各个第三像素分布在当前编码单元中的至少一列中。那么计算机设备还可采用如下任一种方式导出当前串中的各个第三像素的预测值:
[0105]
方式a:以列为单位,逐列地获取当前串的各列中的第三像素的预测值。例如,设当前串中的第三像素分布在当前编码单元中的第2列-第3列,则可按照从左往右的顺序,先一次性导出第2列中的第三像素的预测值,再一次性导出第3列中的第三像素的预测值;其中,每一列中的第三像素均使用左方一列中的参考像素的重建值作为预测值。本方式a通过逐列地获取第三像素的预测值,可有效提升预测值的获取效率,从而提升编码效率。
[0106]
方式b:以单个像素为单位,逐像素地获取当前串中的各个第三像素的预测值。例如,设当前串中的第三像素分布在当前编码单元中的第2列-第3列,则可按照从左往右的顺序,先挨个像素地导出第2列中的各个第三像素的预测值,再挨个像素地导出第3列中的第三像素的预测值;其中,每个第三像素均使用位于其左方的参考像素的重建值作为预测值。
[0107]
由此可见,在上述方式a-b中,任一第三像素的预测值是根据位于任一第二像素的左方且相邻的参考像素的重建值获取到的。具体的,可直接使用任一第三像素的左方且相邻的参考像素的重建值作为该任一第三像素的预测值。
[0108]
在一种可选的具体实现中,视频编码设备还可编码串指示标志,使得编码信息中包括该串指示标志;其中,若当前串为单位矢量串,则串指示标志为目标数值。其中,目标数值可根据经验值或者业务需求设置,例如目标数值可设置为0或1等。可选的,该串指示标志可以是一个二值标志,以指示当前串是否为单位矢量串。例如当串指示标志为1(即目标数值为0)时,可指示当前串为单位矢量串;当串指示标志为0时,可指示当前串不为单位矢量串。
[0109]
再一种可选的具体实现中,视频编码设备还可编码数值k,使得编码信息中包括数值k;数值k的取值大于或等于零,该数值k用于指示当前编码单元中的目标组像素中,位于第k组像素后的至少一个串为单位矢量串。其中,当前编码单元可分成多组像素;一组像素包括:一个串或者至少一个未匹配像素。具体的,如果视频编码设备是采用图1i所示的帧内串复制技术对当前编码单元进行串划分的,那么当前编码单元可能会被划分出未匹配像素;此情况下,这些被划分出的未匹配像素可构成一组或多组像素。具体的,若划分出的未匹配像素中存在至少两个未匹配像素在当前编码单元中的分布位置是连续的,则该至少两个未匹配像素中的所有未匹配像素作为一组像素,或者从至少两个未匹配像素中选取部分连续的未匹配像素作为一组像素,未被选取的各个未匹配像素分别作为一组像素。若划分出的未匹配像素存在独立的未匹配像素(即处于两个串之间的未匹配像素),则一个独立的未匹配像素可作为一组像素。需要说明的是,本发明实施例只是示例性地列举了几种如何将未匹配像素划分成一组或多组像素的划分方式,并非穷举。实际应用中,可由编码端根据需求来设置划分方式。如果视频编码设备是采用图1j所示的具有串长度分辨率控制的帧内串复制技术对当前编码单元进行串划分的,那么当前编码单元会被划分成多个串(如匹配串和/或不完全匹配串);在此情况下,每个匹配串可作为一组像素,且每个不完全匹配串也可作为一组像素。
[0110]
在一种实施方式中,当前编码单元中的编码信息所包括的k的数量可以为一个,目标组像素可以是当前编码单元中的所有组像素;在此实施方式下,数值k可用于指示当前编码单元中的所有组像素中,位于第k组像素后的所有串均为单位矢量串。可选的,若每组像素均包括一个串,则数值k可用于指示当前编码单元中的所有组像素中,第k 1个串为单位矢量串。
[0111]
再一种实施方式中,每组像素均包括一个串;当前编码单元中的编码信息所包括的k的数量可以为多个,一个k对应一个目标组像素;在此实施方式下,第i个k可用于指示当前编码单元中的第i个k所对应的目标组像素中,第k 1个串为单位矢量串。其中,第i个k所对应的目标组像素为:当前编码单元中,未根据前i-1个k确定出串类型(单位矢量串或者非单位矢量串)的剩余组像素。例如,设第1个k的取值等于2,则第1个k对应的目标组像素便为当前编码单元中的所有组像素,且第1个k指示当前编码单元中的第1组像素中的串和第2组像素中的串不为单位矢量串,而第3组像素中的串为单位矢量串。设第2个k的取值等于1,则第2个k对应目标组像素便为:未根据第1个k确定出串类型的剩余组像素,即第4组像素及位于第4组像素以后的组像素。并且,由于第2个k所对应的目标组像素中的第1组像素(即第k组像素)对应当前编码单元中的第4组像素,而第2个k所对应的目标组像素中的第2组像素(即第k 1组像素)对应当前编码单元中的第5组像素。因此,第2个k可指示第4组像素中的串不为单位矢量串,第5组串为单位矢量串。
[0112]
再一种可选的具体实现中,视频编码设备还可编码当前串的串位移矢量,使得编码信息中包括串位移矢量;其中,若当前串为单位矢量串,则串位移矢量为单位矢量,此处的单位矢量可包括第一元素和第二元素。若当前编码单元的扫描模式为水平扫描模式,则第一元素的元素值为第一数值,第二元素的元素值为第二数值;若当前编码单元的扫描模式为竖直扫描模式,则第一元素的元素值为第二数值,第二元素的元素值为第一数值。其中,第一数值和第二数值的具体取值可根据经验值或者业务需求设置;例如设置第一数值为0,第二设置为-1:那么当前编码单元的扫描模式为水平扫描模式时,单位矢量则为(0,-1);当前编码单元的扫描模式为竖直扫描模式时,单位矢量则为(-1,0)。
[0113]
由前述可知,当前图像被划分成多个处理单元,每个处理单元包括一个或多个编码单元;且多个处理单元包括:当前处理单元和已解码的处理单元,当前处理单元包括当前编码单元。串位移矢量用于表示当前串到参考串的位移,在当前串为单位矢量串时,可允许当前串的参考串不满足以下一项或多项条件:
[0114]

参考串中的任一参考像素在指定区域范围内;例如,该指定区域范围可以为当前处理单元的范围或当前处理单元左方的h个已解码的处理单元的范围,h为正整数。在示例性的实施例中,h的取值可由处理单元(即lcu或ctu)的大小确定;具体的,可根据下述公式确定h:
[0115]
h=(1《《((7-log2_lcu_size_minus2 2)《《1))

(((log2_lcu_size_minus2 2)《7)?1:0)
[0116]
其中,lcu_size,lcu_size表示处理单元的宽或高,其具体可为大于或等于1的正整数;log2_lcu_size_minus2=log2(lcu_size)-2。“《《”运算符表示左移,用来将一个数的各二进制位全部左移k(k为大于或等于1的正整数)位,高位舍弃,低位补0。(((log2_lcu_size_minus2 2)《7)?1:0)是一个三目运算符,先判断((log2_lcu_size_minus2 2)《7)是否
成立,若成立,则(((log2_lcu_size_minus2 2)《7)?1:0)=1;若不成立,则(((log2_lcu_size_minus2 2)《7)?1:0)=0。例如,若处理单元的大小为128
×
128,则lcu_size=128,log2(128)=7,log2_lcu_size_minus2=5,h=(1《《(0《《1))-0=1。再例如,若处理单元的大小等于64
×
64,则lcu_size=64,log2(64)=6,log2_lcu_size_minus2=4,h=(1《《(1《《1))

1=3。
[0117]
或者,也可以根据以下公式确定h:
[0118]
h=(1《《((7-log2_lcu_size)《《1))

(((log2_lcu_size)《7)?1:0)
[0119]
其中,log2_lcu_size=log2(lcu_size);先判断((log2_lcu_size)《7)是否成立,若成立,则(((log2_lcu_size)《7)?1:0)=1;若不成立,则(((log2_lcu_size)《7)?1:0)=0。
[0120]

当参考串中的任一参考像素处于当前处理单元左方相邻的已解码的处理单元内时,参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的像素尚未重建。其中,预定像素和目标区域均可根据处理单元(即lcu或ctu)的大小确定;具体的,若处理单元的大小为m
×
m,则预定像素为m个像素,目标区域为参考串中的任一像素往右移动m个像素后对应的区域。例如,设处理单元的大小为128
×
128,则预定像素可为128个像素,目标区域则为参考串中的任一像素往右移动128个像素后对应的64
×
64的区域。其中,参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的像素尚未重建是指:参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的任一像素均尚未重建,或者,参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的左上角处的像素尚未重建。
[0121]
可选的,左方相邻的处理单元中包括参考串中任一参考像素的参考区域可对应地在当前处理单元中找到相同的位置区域,且该位置区域的左上角坐标不应与当前cu的左上角坐标相同。以处理单元的大小为128
×
128,cu的大小为64
×
64为例;设参考串中的任一参考像素的位置为(xref,yref),则((xref 128)/64
×
64,yref/64
×
64)不可得(即第一存储空间中无法找到该像素的重建值),((xref 128)/64
×
64,yref/64
×
64)不应等于当前cu左上角坐标(xcb,ycb)。需要说明的是,这里“/”表示向下取整的除法。
[0122]

参考串中的各个参考像素位于同一个对齐区域,该对齐区域的尺寸是根据处理单元的尺寸确定的。具体的,可采用vsize表示对齐区域的高或宽,且可定义:vsize=lcusize》=64?64:lcusize。其中,vsize=lcusize》=64?64:lcusize表示:判断lcusize是否大于或等于64,lcusize表示处理单元的高或宽;若是,则vsize等于64;否则,vsize等于lcusize。
[0123]
也就是说,在此情况下:串位移矢量指向的参考串中所有的参考像素只能来自同一个vsize x vsize对齐区域。即需满足如下条件:
[0124]
xrefa/vsize=xrefb/vsize
[0125]
yrefa/vsize=yrefb/vsize
[0126]
其中,(xrefa,yrefa)和(xrefb,yrefb)是参考串中任意两个参考像素(亮度分量)a和b的坐标。需要说明的是,这里“/”表示向下取整的除法。
[0127]

参考串中的任一参考像素不属于当前串,即参考串和当前串不重叠。
[0128]
再一种可选的具体实现中,视频编码设备还可编码串扫描模式标志(或称为串预测扫描模式标志),使得编码信息中包括串扫描模式标志。具体的,若当前编码单元的扫描模式为水平扫描模式,则串扫描模式标志为第三数值;若当前编码单元的扫描模式为竖直扫描模式,则串扫描模式标志为第四数值。其中,第三数值和第四数值均可根据经验值或者业务需求设置;例如将第三数值设置为0,将第四数值设置为1。
[0129]
需要说明的是,若当前串不为单位矢量串,则视频编码设备还可从当前处理单元和已编码的处理单元中的部分已编码的编码单元中,搜索当前串的参考串;并根据参考串获取当前串中的各个像素的预测值,以得到当前编码单元的编码信息。此情况下,参考串需满足以下一项或多项条件:
[0130]

参考串中的任一参考像素在当前处理单元和当前处理单元左方的h个已解码的处理单元范围内,h为正整数。
[0131]

当参考串中的任一参考像素处于当前处理单元左方相邻的已编码的处理单元内时,参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的像素尚未重建。
[0132]

参考串中的各个参考像素位于同一个对齐区域,该对齐区域的尺寸是根据处理单元的尺寸确定的。
[0133]

参考串中的各个参考像素和当前串中的各个像素位于同一个独立编码区域内,此处的独立编码区域可以包括当前图像,或者当前图像中的片、条带。
[0134]

参考串中的任一参考像素不属于当前串。
[0135]
还需说明的是,若当前编码单元中包括未匹配像素(即在当前图像的已编码区域中的参考区域内,未找到对应的参考像素的像素),则视频编码设备可直接编码未匹配像素的像素值,使得编码信息中包括未匹配像素的像素值。
[0136]
本发明实施例在编码的过程中,在当前编码单元的当前串为单位矢量串,且当前串中包括第一像素(如当前编码单元中的第一行的像素或者当前编码单元中的第一列的像素等等)时,可从当前图像中的历史解码单元中确定第一像素的参考像素,并根据参考像素的重建值获取第一像素的预测值以实现编码处理。可见,本发明实施例通过允许使用当前编码单元相邻的历史解码单元中的像素作为参考像素,使得当前编码单元中任一串均可成为单位矢量串,这样可有效扩宽单位矢量串的适用范围,有助于提升编码性能。并且,本发明实施例针对当前编码单元所采用的预测编码模式并不局限于等值串与单位矢量串子模式,还可以是帧内串复制模式中的串预测子模式等其他预测编码模式;也就是说,本发明实施例可允许串预测子模式下的编码单元使用单位矢量串,这样可进一步扩宽单位矢量串的适用范围,提升串预测的编码性能。
[0137]
请参见图4,是本发明实施例提出一种视频解码方法的流程图;该视频解码方法可以由上述所提及的视频解码设备,或者视频解码设备中的视频解码器执行。为便于阐述,后续均以视频解码设备执行该视频解码方法为例进行说明;如图4所示,该视频解码方法可包括以下步骤s401-s403:
[0138]
s401,从当前图像的当前编码单元中确定待解码的当前串。
[0139]
在具体实施过程中,视频解码设备可获取当前图像中的当前编码单元的编码信息,当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数。然后,可根据当前编码
单元的编码信息,从当前编码单元中确定出待解码的当前串。具体的,视频解码设备可从当前编码单元的编码信息中解码出当前编码单元的预测编码模式;若预测编码模式为isc中的串预测子模式或者等值串与单位矢量串预测子模式,则进一步从当前编码单元的解码信息中解码出扫描模式和串长度。然后,可根据扫描模式和串长度从当前编码单元中确定待解码的当前串。
[0140]
需要说明的是,解码侧所提及的当前编码单元均是指:当前待解码(即当前即将开始解码)或者当前正在解码(即已解码了部分像素)的cu。当前编码单元可以是在帧内串复制模式(isc)中的串预测子模式下被编码的;并且,该串预测子模式下的编码单元被允许使用单位矢量串。或者,当前编码单元也可以是在帧内串复制模式(isc)中的等值串与单位矢量串子模式下被编码的,对此不作限制。为便于阐述,后续均以采用串预测子模式对当前编码单元进行编码为例进行说明。
[0141]
在确定出当前串后,视频解码设备可采用下述任一方式判断当前串是否为单位矢量串:
[0142]
方式一,视频解码设备可从当前编码单元的编码信息中解码出串指示标志;若串指示标志为目标数值,则确定当前串为单位矢量串。
[0143]
方式二,视频解码设备可从当前编码单元的编码信息中解码出数值k,数值k的取值大于或等于零;且该数值k用于指示当前编码单元中的目标组像素中,位于第k组像素后的至少一个串为单位矢量串,一组像素包括:一个串或者至少一个未匹配像素。若当前串在所述目标组像素中位于第k组像素后,则确定当前串为单位矢量串。可选的,若每组像素均包括一个串,则数值k可具体用于指示当前编码单元中的目标组像素中,第k 1个串为单位矢量串;那么在此实施方式下,可进一步判断当前串是否为在所述目标组像素中的第k 1个串;若当前串在所述目标组像素中为第k 1个串,则确定当前串为单位矢量串。
[0144]
实施方式三,视频解码设备可当前编码单元的编码信息中解码出当前串的串位移矢量;若串位移矢量为单位矢量,则确定当前串为单位矢量串。其中,单位矢量可包括第一元素和第二元素。若当前编码单元的扫描模式为水平扫描模式,则第一元素的元素值为第一数值,第二元素的元素值为第二数值;若当前编码单元的扫描模式为竖直扫描模式,则第一元素的元素值为第二数值,第二元素的元素值为第一数值。其中,第一数值和第二数值的具体取值可根据经验值或者业务需求设置;例如设置第一数值为0,第二设置为-1:那么当前编码单元的扫描模式为水平扫描模式时,单位矢量则为(0,-1);当前编码单元的扫描模式为竖直扫描模式时,单位矢量则为(-1,0)。
[0145]
其中,当前编码单元的扫描方式的确定方式可以如下:从当前编码单元的编码信息中解码出串扫描模式标志;若串扫描模式标志为第三数值,则确定当前编码单元的扫描模式为水平扫描模式;若串扫描模式标志为第四数值,则确定当前编码单元的扫描模式为竖直扫描模式。
[0146]
由前述可知,当前图像被划分成多个处理单元,每个处理单元包括一个或多个编码单元;且多个处理单元包括:当前处理单元和已解码的处理单元,当前处理单元包括当前编码单元。串位移矢量用于表示当前串到参考串的位移,在当前串为单位矢量串时,可允许当前串的参考串不满足以下一项或多项条件:
[0147]

参考串中的任一参考像素在指定区域范围内;例如,指定区域范围可以为当前
处理单元的范围,或者和当前处理单元左方的h个已解码的处理单元的范围。
[0148]

当参考串中的任一参考像素处于当前处理单元左方相邻的已解码的处理单元内时,参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的像素尚未重建。可选的,左方相邻的处理单元中包括参考串中任一参考像素的参考区域可对应地在当前处理单元中找到相同的位置区域,且该位置区域的左上角坐标不应与当前cu的左上角坐标相同。
[0149]

参考串中的各个参考像素位于同一个对齐区域。
[0150]

参考串中的任一参考像素不属于当前串。
[0151]
s402,若当前串为单位矢量串,且当前串中包括第一像素,则从当前图像中的历史解码单元中确定第一像素的参考像素。
[0152]
其中,历史解码单元是指当前图像中与当前编码单元相邻的已解码的编码单元,第一像素对应的参考像素和第一像素在所述当前图像中相邻;且第一像素满足如下条件:第一像素对应的参考像素未位于当前编码单元中。需要说明的是,历史解码单元和当前编码单元相邻是指:历史解码单元和当前编码单元之间不存在其他的编码单元。第一像素对应的参考像素和第一像素在当前图像中相邻是指:在当前图像中,第一像素的参考像素所处的行,和第一像素所处的行是相互毗邻(即紧挨)的。或者,第一像素对应的参考像素和第一像素在当前图像中相邻是指:在当前图像中,第一像素的参考像素所处的列,和第一像素所处的列之间是相互毗邻(即紧挨)的。
[0153]
可见,当第一像素和第一像素的参考像素在当前图像中相邻时,第一像素应当是当前编码单元中的临界行或临界列上的像素;此处的临界行又可称为边缘行,其可以是当前编码单元的第一行或者最后一行;同理,临界列又可称为边缘列,其可以是当前编码单元的第一列或者最后一列。在具体实现中,第一像素的具体含义可以根据当前编码单元的扫描模式确定。例如,若当前编码单元的扫描模式为水平扫描模式,且水平扫描模式指示按照从上往下的顺序对当前编码单元进行扫描,则历史解码单元位于当前编码单元的上方(即历史解码单元为位于当前编码单元的上方且与当前编码单元相邻的已解码cu),第一像素为位于当前编码单元的第一行的像素;即此情况下,当前串包括当前编码单元中第一行上的至少一个像素。若当前编码单元的扫描模式为竖直扫描模式,且竖直扫描模式指示按照从左往右的顺序对当前编码单元进行扫描,则历史解码单元位于当前编码单元的左方(即历史解码单元为位于当前编码单元的左方且与当前编码单元相邻的已解码cu),第一像素为位于当前编码单元的第一列的像素;即此情况下,当前串包括当前编码单元中第一列上的至少一个像素。
[0154]
s403,根据第一像素的参考像素的重建值获取第一像素的预测值,以得到解码图像。
[0155]
在具体实施过程中,可先获取第一像素的参考像素的重建值;其次,将第一像素的参考像素的重建值作为第一像素的预测值,以得到解码图像;通过此解码方式,可简化预测值的获取过程,提升解码效率。其中,随着当前编码单元的扫描模式的不同,第一像素的参考像素的重建值的获取方式也随之不同;具体参见下述描述:
[0156]
1)若当前编码单元的扫描方式为水平扫描方式,且水平扫描模式指示按照从上往下的顺序对当前编码单元进行扫描;则第一像素的参考像素的重建值的获取方式包括以下
任一种:
[0157]
第一种:第一像素的参考像素的重建值从帧内串复制模式对应的第一存储空间(或称为帧内串复制模式的参考像素存储器)中获取。
[0158]
第二种:第一像素的参考像素的重建值从帧内预测模式对应的第二存储空间(或称为帧内预测模式的参考像素存储器)中获取。
[0159]
第三种:将当前图像划分成多个n
×
n的区域,当第一像素位于任一n
×
n的区域的第一行时,第一像素的参考像素的重建值从第二存储空间中获取;否则,第一像素的参考像素的重建值从第一存储空间中获取。
[0160]
需要说明的是,当前串中的像素可能均为第二像素(即当前串中不包括第一像素),或者当前串中也可能包括第一像素和第二像素(即当前串中除了第一像素,还包括第二像素);其中,第二像素为位于当前编码单元的第一行以外的像素,且当前串中的各个第二像素分布在当前编码单元中的至少一行中。那么计算机设备还可采用如下任一种方式导出当前串中的各个第二像素的预测值:
[0161]
方式a:以行为单位,逐行地获取当前串的各行中的第二像素的预测值。
[0162]
方式b:以单个像素为单位,逐像素地获取当前串中的各个第二像素的预测值。
[0163]
在上述方式a-b中,任一第二像素的预测值是根据位于任一第二像素的上方且相邻的参考像素的重建值获取到的。
[0164]
2)若当前编码单元的扫描方式为竖直扫描方式,且竖直扫描模式指示按照从左往右的顺序对当前编码单元进行扫描;则第一像素的参考像素的重建值的获取方式包括以下任一种:
[0165]
第一种:第一像素的参考像素的重建值从帧内串复制模式对应的第一存储空间中获取。
[0166]
第二种:第一像素的参考像素的重建值从帧内预测模式对应的第二存储空间中获取。
[0167]
第三种:将当前图像划分成多个n
×
n的区域,当第一像素位于任一n
×
n的区域的第一列时,第一像素的参考像素的重建值从第二存储空间中获取;否则,第一像素的参考像素的重建值从第一存储空间中获取。
[0168]
需要说明的是,当前串中的像素可能均为第三像素(即当前串中不包括第一像素),或者当前串中也可能包括第一像素和第三像素(即当前串中除了第一像素,还包括第三像素);其中,第三像素为位于当前编码单元的第一列以外的像素,且当前串中的各个第三像素分布在当前编码单元中的至少一列中。那么计算机设备还可采用如下任一种方式导出当前串中的各个第三像素的预测值:
[0169]
方式a:以列为单位,逐列地获取当前串的各列中的第三像素的预测值。
[0170]
方式b:以单个像素为单位,逐像素地获取当前串中的各个第三像素的预测值。在上述方式a-b中,任一第三像素的预测值是根据位于任一第二像素的左方且相邻的参考像素的重建值获取到的。
[0171]
需要说明的是,若当前串不为单位矢量串,则视频解码设备还可从当前处理单元和已编码的处理单元中的部分已解码的编码单元中,搜索当前串的参考串;并根据参考串获取当前串中的各个像素的预测值,以得到解码图像。此情况下,参考串需满足以下一项或
多项条件:
[0172]

参考串中的任一参考像素在当前处理单元和当前处理单元左方的h个已解码的处理单元范围内,h为正整数。
[0173]

当参考串中的任一参考像素处于当前处理单元左方相邻的已编码的处理单元内时,参考串的任一参考像素往右移动预定像素后的位置所在的目标区域的像素尚未重建。
[0174]

参考串中的各个参考像素位于同一个对齐区域,该对齐区域的尺寸是根据处理单元的尺寸确定的。
[0175]

参考串中的各个参考像素和当前串中的各个像素位于同一个独立编码区域内,此处的独立编码区域可以包括当前图像,或者当前图像中的片、条带。
[0176]

参考串中的任一参考像素不属于当前串。
[0177]
还需说明的是,若当前编码单元包括未匹配像素,则未匹配像素的像素值可直接从当前编码单元的编码信息中解码得到。
[0178]
本发明实施例在解码的过程中,在当前编码单元的当前串为单位矢量串,且当前串中包括第一像素(如当前编码单元中的第一行的像素或者当前编码单元中的第一列的像素等等)时,可从当前图像中的历史解码单元中确定第一像素的参考像素,并根据参考像素的重建值获取第一像素的预测值以实现解码处理。可见,本发明实施例通过允许使用当前编码单元相邻的历史解码单元中的像素作为参考像素,使得当前编码单元中任一串均可成为单位矢量串,这样可有效扩宽单位矢量串的适用范围,有助于提升解码性能。并且,本发明实施例针对当前编码单元所采用的预测编码模式并不局限于等值串与单位矢量串子模式,还可以是帧内串复制模式中的串预测子模式等其他预测编码模式;也就是说,本发明实施例可允许串预测子模式下的编码单元使用单位矢量串,这样可进一步扩宽单位矢量串的适用范围,提升串预测的编码性能。
[0179]
基于上述图2所示的视频编码方法的实施例描述和图4所示的视频解码方法的实施例描述,本发明实施例提出了一种基于单位矢量串的串预测方法;该方法适用于使用了帧内串复制模式的编解码器中,下面以解码端进行描述:
[0180]
1)单位矢量为:
[0181]
a)如果isc块(当前cu)的扫描模式为水平扫描模式,那么单位矢量为(0,-1);
[0182]
b)如果isc块(当前cu)的扫描模式为竖直扫描模式,那么单位矢量为(-1,0)。
[0183]
2)有以下可选方式确认当前串为单位矢量串:
[0184]
a)从码流(如当前cu的编码信息)中解码一个二值标志(即前述所提及的串指示标志),若二值标志为目标数值,则指示当前串为单位矢量串;
[0185]
b)从码流(如当前cu的编码信息)中解码一个数值k,指示当前编码单元中的目标组像素中,位于第k组像素后的至少一个串为单位矢量串。若当前串在目标组像素中位于第k组像素后,则确定当前串为单位矢量串;
[0186]
c)从码流(如当前cu的编码信息)解码当前串的串矢量(即串位移矢量),如果串矢量为单位矢量,则当前串为单位矢量串。
[0187]
3)单位矢量串的预测值的导出:
[0188]
a)如果当前isc块(当前cu)采用水平扫描顺序
[0189]
i、从上到下逐行导出当前串的预测值,该串每行中的像素使用上方一行像素的值(如重建值)作为预测值;
[0190]
ii、i.的另一种实现方式,逐像素完成单位矢量串的重建,该串中每个像素使用位于其上方像素的值(如重建值)作为预测值;
[0191]
iii、在i.和ii.中,如果待预测的像素位于当前解码块(即当前cu)的第一行,那么该像素的参考像素位于当前解码块之外上方一行,该参考像素的重建值有以下可选的获取方式:
[0192]

该参考像素的重建值从帧内串复制的参考像素存储器(即前述所提及的第一存储空间)中获取;
[0193]

该参考像素的重建值从帧内预测的参考像素存储器(即前述所提及的第二存储空间)中获取;
[0194]

将当前图像分为一系列大小为n
×
n(例如64
×
64)的区域,仅当该像素位于区域的第一行,该参考像素的重建值从帧内预测的参考像素存储器中获取;否则,该参考像素的重建值从帧内串复制的参考像素存储器中获取。
[0195]
b)如果当前isc块(当前cu)采用竖直扫描顺序
[0196]
i、逐列导出当前串的预测值,该串每行中的像素使用左方一列像素的值(如重建值)作为预测值;
[0197]
ii、i.的另一种实现方式,逐像素完成单位矢量串的重建,该串中每个像素使用位于其左方像素的值(如重建值)作为预测值;
[0198]
iii、在i.和ii.中,如果待预测的像素位于当前解码块的第一列,该像素的参考像素位于当前解码块之外左方一列,该参考像素的重建值有以下可选的获取方式:
[0199]

该参考像素的重建值从帧内串复制的参考像素存储器中获取;
[0200]

该参考像素的重建值从帧内预测的参考像素存储器中获取;
[0201]

将当前图像分为一系列大小为n
×
n(例如64
×
64)的区域,当该像素位于区域的第一列,该参考像素的重建值从帧内预测的参考像素存储器中获取;否则,该参考像素的重建值从帧内串复制的参考像素存储器中获取。
[0202]
4)可选的,在帧内串复制串预测子模式中允许使用单位矢量串,除非当前串为单位矢量偏移串,符合标准的位流应满足如下全部或部分参考范围限制:
[0203]
a)串位移矢量指向的参考串中任意参考像素限制在一定的指定区域范围内。例如,指定区域范围可以是:当前处理单元(如当前最大编码单元)的范围或左边h个处理单元(如最大编码单元)的范围内;其中,h的大小可由处理单元(如lcu或者ctu)的大小决定。n=(1《《((7-log2_lcu_size_minus2 2)《《1))-(((log2_lcu_size_minus2 2)《7)?1:0)。
[0204]
b)当串位移矢量指向的参考串的任意参考像素落在左边相邻最大编码单元,且最大编码单元的亮度样本尺寸为128
×
128时,参考串中任意参考像素亮度样本右移128像素后的位置所在的64
×
64区域的左上角尚未重建。且,参考串中任意参考像素落在左边相邻ctu中所在的64
×
64的区域可对应找到当前ctu中的相同的区域位置,该64
×
64的区域的左上角坐标不应与当前编码块的左上角坐标位置相同。即参考串亮度分量任意位置为(xref,yref),((xref 128)/64
×
64,yref/64
×
64)不可得;((xref 128)/64
×
64,yref/64
×
64)不应等于当前块左上角位置(xcb,ycb)。
[0205]
c)参考串位置限定。定义样本限制区域大小vsize=lcusize》=64?64:lcusize。串位移矢量指向的参考串中所有的像素只能来自同一个vsize x vsize对齐区域。即:
[0206]
xrefa/vsize=xrefb/vsize
[0207]
yrefa/vsize=yrefb/vsize
[0208]
其中,(xrefa,yrefa)和(xrefb,yrefb)是参考串上任意两个亮度分量a和b的坐标。
[0209]
d)串位移矢量指向的参考串中任意参考像素不应位于当前串内。
[0210]
本发明实施例所提出的方法扩展了单位矢量串的使用范围,有助于提升串矢量的编码效率;并且,通过将单位矢量串与串预测子模式结合,还可凭借单位矢量串所具有的较低实现复杂度,提升串预测的编码性能。
[0211]
基于上述视频编码方法的实施例描述,本发明实施例还公开了一种视频编码装置,所述视频编码装置可以是运行于上述所提及的视频编码设备中的一个计算机程序(包括程序代码)。该视频编码装置可以执行图2所示的方法。请参见图5,所述视频编码装置可以运行如下单元:
[0212]
获取单元501,用于从当前图像的当前编码单元中确定待编码的当前串;
[0213]
编码单元502,用于若所述当前串为单位矢量串,且所述当前串中包括第一像素,则从所述当前图像中的历史编码单元中确定所述第一像素的参考像素;所述历史编码单元是指所述当前图像中与所述当前编码单元相邻的已编码的编码单元,所述第一像素对应的参考像素和所述第一像素在所述当前图像中相邻;
[0214]
所述编码单元502,还用于根据所述第一像素的参考像素的重建值获取所述第一像素的预测值,以得到所述当前编码单元的编码信息。
[0215]
在一种实施方式中,编码单元502还可用于:编码所述串指示标志,使得所述编码信息中包括所述串指示标志。
[0216]
再一种实施方式中,编码单元502还可用于:编码数值k,使得所述编码信息中包括所述数值k,数值k的取值大于或等于零。
[0217]
再一种实施方式中,编码单元502还可用于:编码所述当前串的串位移矢量,使得所述编码信息中包括所述串位移矢量。
[0218]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为水平扫描模式,且所述水平扫描模式指示按照从上往下的顺序对所述当前编码单元进行扫描,则所述历史编码单元位于所述当前编码单元的上方,所述第一像素为位于所述当前编码单元的第一行的像素。
[0219]
在此情况下,若所述当前串中的像素均为第二像素,或者所述当前串中包括所述第一像素和所述第二像素;所述第二像素为位于所述当前编码单元的第一行以外的像素,且所述当前串中的各个第二像素分布在所述当前编码单元中的至少一行中;则相应的,编码单元502还可用于:
[0220]
以行为单位,逐行地获取所述当前串的各行中的第二像素的预测值;或者,
[0221]
以单个像素为单位,逐像素地获取所述当前串中的各个第二像素的预测值;
[0222]
其中,任一第二像素的预测值是根据位于所述任一第二像素的上方且相邻的参考像素的重建值获取到的。
[0223]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为竖直扫描模式,且所述竖直扫描模式指示按照从左往右的顺序对所述当前编码单元进行扫描,则所述历史编码单元位于所述当前编码单元的左方,所述第一像素为位于所述当前编码单元的第一列的像素。
[0224]
在此情况下,若所述当前串中的像素均为第三像素,或者所述当前串中包括所述第一像素和所述第三像素;所述第三像素为位于所述当前编码单元的第一列以外的像素,且所述当前串中的各个第三像素分布在所述当前编码单元中的至少一列中;则相应的,编码单元502还可用于:
[0225]
以列为单位,逐列地获取所述当前串的各列中的第三像素的预测值;或者,
[0226]
以单个像素为单位,逐像素地获取所述当前串中的各个第三像素的预测值;
[0227]
其中,任一第三像素的预测值是根据位于所述任一第二像素的左方且相邻的参考像素的重建值获取到的。
[0228]
再一种实施方式中,编码单元502还可用于:编码串扫描模式标志,使得所述编码信息中包括所述串扫描模式标志。
[0229]
再一种实施方式中,所述当前图像被划分成多个处理单元,每个处理单元包括一个或多个编码单元;所述多个处理单元包括:当前处理单元和已编码的处理单元,所述当前处理单元包括所述当前编码单元;相应的,编码单元502还可用于:
[0230]
若所述当前串不为所述单位矢量串,则从所述当前处理单元和所述已编码的处理单元中的部分已编码的编码单元中,搜索所述当前串的参考串;
[0231]
根据所述参考串获取所述当前串中的各个像素的预测值,以得到所述当前编码单元的编码信息。
[0232]
再一种实施方式中,编码单元502还可用于:
[0233]
若当前编码单元中包括未匹配像素,则编码未匹配像素的像素值,使得编码信息中包括未匹配像素的像素值。
[0234]
根据本技术的一个实施例,图2所示的方法所涉及的各个步骤均可以是由图5所示的视频编码装置中的各个单元来执行的。例如,图2中所示的步骤s201可由图5中所示的获取单元501来执行,步骤s202-s203均可由图5中所示的编码单元502来执行。
[0235]
根据本技术的另一个实施例,图5所示的视频编码装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于视频编码装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0236]
根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图5中所示的视频编码装置设备,以及来实现本发明实施例的视频编码方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计
算设备中,并在其中运行。
[0237]
本发明实施例在编码的过程中,在当前编码单元的当前串为单位矢量串,且当前串中包括第一像素(如当前编码单元中的第一行的像素或者当前编码单元中的第一列的像素等等)时,可从当前图像中的历史解码单元中确定第一像素的参考像素,并根据参考像素的重建值获取第一像素的预测值以实现编码处理。可见,本发明实施例通过允许使用当前编码单元相邻的历史解码单元中的像素作为参考像素,使得当前编码单元中任一串均可成为单位矢量串,这样可有效扩宽单位矢量串的适用范围,有助于提升编码性能。并且,本发明实施例针对当前编码单元所采用的预测编码模式并不局限于等值串与单位矢量串子模式,还可以是帧内串复制模式中的串预测子模式等其他预测编码模式;也就是说,本发明实施例可允许串预测子模式下的编码单元使用单位矢量串,这样可进一步扩宽单位矢量串的适用范围,提升串预测的编码性能。
[0238]
基于上述视频解码方法的实施例描述,本发明实施例还公开了一种视频解码装置,所述视频解码装置可以是运行于上述所提及的视频解码设备中的一个计算机程序(包括程序代码)。该视频解码装置可以执行图4所示的方法。请参见图6,所述视频解码装置可以运行如下单元:
[0239]
获取单元601,用于从当前图像的当前编码单元中确定待解码的当前串;
[0240]
解码单元602,用于若所述当前串为单位矢量串,且所述当前串中包括第一像素,则从所述当前图像中的历史解码单元中确定所述第一像素的参考像素;所述历史解码单元是指所述当前图像中与所述当前编码单元相邻的已解码的编码单元,所述第一像素对应的参考像素和所述第一像素在所述当前图像中相邻;
[0241]
所述解码单元602,还用于根据所述第一像素的参考像素的重建值获取所述第一像素的预测值,以得到解码图像。
[0242]
在一种实施方式中,解码单元602还可用于:
[0243]
从所述当前编码单元的编码信息中解码出串指示标志;
[0244]
若所述串指示标志为目标数值,则确定所述当前串为单位矢量串。
[0245]
再一种实施方式中,解码单元602还可用于:
[0246]
从所述当前编码单元的编码信息中解码出数值k,数值k的取值大于或等于零;所述数值k用于指示所述当前编码单元中的目标组像素中,位于第k组像素后的至少一个串为单位矢量串,一组像素包括:一个串或者至少一个未匹配像素;
[0247]
若所述当前串在所述目标组像素中位于所述第k组像素后,则确定所述当前串为所述单位矢量串。
[0248]
再一种实施方式中,若每组像素均包括一个串,则所述数值k用于指示所述当前编码单元中的目标组像素中,第k 1个串为所述单位矢量串;
[0249]
相应的,解码单元602在用于若所述当前串在所述目标组像素中位于所述第k组像素后,则确定所述当前串为所述单位矢量串时,可具体用于:
[0250]
若所述当前串在所述目标组像素中为所述第k 1个串,则确定所述当前串为所述单位矢量串。
[0251]
再一种实施方式中,解码单元602还可用于:
[0252]
从所述当前编码单元的编码信息中解码出所述当前串的串位移矢量;
[0253]
若所述串位移矢量为单位矢量,则确定所述当前串为所述单位矢量串。
[0254]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为水平扫描模式,且所述水平扫描模式指示按照从上往下的顺序对所述当前编码单元进行扫描,则所述历史解码单元位于所述当前编码单元的上方,所述第一像素为位于所述当前编码单元的第一行的像素。
[0255]
在此情况下,若所述当前串中的像素均为第二像素,或者所述当前串中包括所述第一像素和所述第二像素;所述第二像素为位于所述当前编码单元的第一行以外的像素,且所述当前串中的各个第二像素分布在所述当前编码单元中的至少一行中;则相应的,解码单元602还可用于:
[0256]
以行为单位,逐行地获取所述当前串的各行中的第二像素的预测值;或者,
[0257]
以单个像素为单位,逐像素地获取所述当前串中的各个第二像素的预测值;
[0258]
其中,任一第二像素的预测值是根据位于所述任一第二像素的上方且相邻的参考像素的重建值获取到的。
[0259]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为竖直扫描模式,且所述竖直扫描模式指示按照从左往右的顺序对所述当前编码单元进行扫描,则所述历史解码单元位于所述当前编码单元的左方,所述第一像素为位于所述当前编码单元的第一列的像素。
[0260]
在此情况下,若所述当前串中的像素均为第三像素,或者所述当前串中包括所述第一像素和所述第三像素;所述第三像素为位于所述当前编码单元的第一列以外的像素,且所述当前串中的各个第三像素分布在所述当前编码单元中的至少一列中;则相应的,解码单元602还可用于:
[0261]
以列为单位,逐列地获取所述当前串的各列中的第三像素的预测值;或者,
[0262]
以单个像素为单位,逐像素地获取所述当前串中的各个第三像素的预测值;
[0263]
其中,任一第三像素的预测值是根据位于所述任一第二像素的左方且相邻的参考像素的重建值获取到的。
[0264]
再一种实施方式中,解码单元602还可用于:
[0265]
从所述当前编码单元的编码信息中解码出串扫描模式标志;
[0266]
若所述串扫描模式标志为第三数值,则确定所述当前编码单元的扫描模式为水平扫描模式;
[0267]
若所述串扫描模式标志为第四数值,则确定所述当前编码单元的扫描模式为竖直扫描模式。
[0268]
再一种实施方式中,所述当前图像被划分成多个处理单元,每个处理单元包括一个或多个编码单元;所述多个处理单元包括:当前处理单元和已解码的处理单元,所述当前处理单元包括所述当前编码单元;相应的,解码单元602还可用于:
[0269]
若所述当前串不为所述单位矢量串,则从所述当前处理单元和所述已解码的处理单元中的部分已解码的编码单元中,搜索所述当前串的参考串;
[0270]
根据所述参考串获取所述当前串中的各个像素的预测值,以得到解码图像。
[0271]
根据本技术的一个实施例,图4所示的方法所涉及的各个步骤均可以是由图6所示的视频解码装置中的各个单元来执行的。例如,图4中所示的步骤s401可由图6中所示的获
取单元501来执行,步骤s402-s403均可由图6中所示的解码单元602来执行。
[0272]
根据本技术的另一个实施例,图6所示的视频解码装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于视频解码装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0273]
根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的视频解码装置设备,以及来实现本发明实施例的视频解码方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
[0274]
本发明实施例在解码的过程中,在当前编码单元的当前串为单位矢量串,且当前串中包括第一像素(如当前编码单元中的第一行的像素或者当前编码单元中的第一列的像素等等)时,可从当前图像中的历史解码单元中确定第一像素的参考像素,并根据参考像素的重建值获取第一像素的预测值以实现解码处理。可见,本发明实施例通过允许使用当前编码单元相邻的历史解码单元中的像素作为参考像素,使得当前编码单元中任一串均可成为单位矢量串,这样可有效扩宽单位矢量串的适用范围,有助于提升解码性能。并且,本发明实施例针对当前编码单元所采用的预测编码模式并不局限于等值串与单位矢量串子模式,还可以是帧内串复制模式中的串预测子模式等其他预测编码模式;也就是说,本发明实施例可允许串预测子模式下的编码单元使用单位矢量串,这样可进一步扩宽单位矢量串的适用范围,提升串预测的编码性能。
[0275]
基于上述方法实施例以及装置实施例的描述,本发明实施例还提供一种计算机设备;该计算机设备可以是上述所提及的视频编码设备,或者上述所提及的视频解码设备。请参见图7,该计算机设备可至少包括处理器701、输入接口702、输出接口703以及计算机存储介质704。其中,计算机设备内的处理器701、输入接口702、输出接口703以及计算机存储介质704可通过总线或其他方式连接。可选的,若计算机设备为上述所提及的视频编码设备,则计算机设备中还可包括视频编码器;若计算机设备为上述所提及的视频解码设备,则计算机设备中还可包括视频解码器。
[0276]
其中,计算机存储介质704可以存储在计算机设备的存储器中,所述计算机存储介质704用于存储计算机程序,所述计算机程序包括程序指令,所述处理器701用于执行所述计算机存储介质704存储的程序指令。处理器701(或称cpu(central processing unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。在一个实施例中,当计算机设备为视频编码设备时,本发明实施例所述的处理器701可以用于进行上述图2所示的视频编码方法的相关方法步骤。再一个实施中,当计算机设备为视频解码设备时,本发明实施例所述的处理器701可用于进行上述图4所示的视频解码方法的相关方法步骤。
[0277]
本发明实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质提供存储空间,所述存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了适于被处理器1001加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
[0278]
在一个实施例中,当计算机设备为上述所提及的视频解码设备时,可由处理器701加载并执行计算机存储介质中存放的一条或多条第一指令,以实现上述图4所示的视频解码方法实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条第一指令由处理器701加载并执行如下步骤:
[0279]
从当前图像的当前编码单元中确定待解码的当前串;
[0280]
若所述当前串为单位矢量串,且所述当前串中包括第一像素,则从所述当前图像中的历史解码单元中确定所述第一像素的参考像素;所述历史解码单元是指所述当前图像中与所述当前编码单元相邻的已解码的编码单元,所述第一像素对应的参考像素和所述第一像素在所述当前图像中相邻;
[0281]
根据所述第一像素的参考像素的重建值获取所述第一像素的预测值,以得到解码图像。
[0282]
在一种实施方式中,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0283]
从所述当前编码单元的编码信息中解码出串指示标志;
[0284]
若所述串指示标志为目标数值,则确定所述当前串为单位矢量串。
[0285]
再一种实施方式中,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0286]
从所述当前编码单元的编码信息中解码出数值k,数值k的取值大于或等于零;所述数值k用于指示所述当前编码单元中的目标组像素中,位于第k组像素后的至少一个串为单位矢量串,一组像素包括:一个串或者至少一个未匹配像素;
[0287]
若所述当前串在所述目标组像素中位于所述第k组像素后,则确定所述当前串为所述单位矢量串。
[0288]
再一种实施方式中,若每组像素均包括一个串,则所述数值k用于指示所述当前编码单元中的目标组像素中,第k 1个串为所述单位矢量串;
[0289]
相应的,在若所述当前串在所述目标组像素中位于所述第k组像素后,则确定所述当前串为所述单位矢量串时,所述一条或多条第一指令可以由处理器701加载并具体执行:
[0290]
若所述当前串在所述目标组像素中为所述第k 1个串,则确定所述当前串为所述单位矢量串。
[0291]
再一种实施方式中,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0292]
从所述当前编码单元的编码信息中解码出所述当前串的串位移矢量;
[0293]
若所述串位移矢量为单位矢量,则确定所述当前串为所述单位矢量串。
[0294]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为水平扫描模式,且所述水平扫描模式指示按照从上往下的顺序对所述当前编码单元进行扫描,则所述历史解码单元位于所述当前编码单元的上方,所述第一像素为位于所述当前编码单元的第一行的像素。
[0295]
在此情况下,若所述当前串中的像素均为第二像素,或者所述当前串中包括所述第一像素和所述第二像素;所述第二像素为位于所述当前编码单元的第一行以外的像素,且所述当前串中的各个第二像素分布在所述当前编码单元中的至少一行中;则相应的,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0296]
以行为单位,逐行地获取所述当前串的各行中的第二像素的预测值;或者,
[0297]
以单个像素为单位,逐像素地获取所述当前串中的各个第二像素的预测值;
[0298]
其中,任一第二像素的预测值是根据位于所述任一第二像素的上方且相邻的参考像素的重建值获取到的。
[0299]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为竖直扫描模式,且所述竖直扫描模式指示按照从左往右的顺序对所述当前编码单元进行扫描,则所述历史解码单元位于所述当前编码单元的左方,所述第一像素为位于所述当前编码单元的第一列的像素。
[0300]
在此情况下,若所述当前串中的像素均为第三像素,或者所述当前串中包括所述第一像素和所述第三像素;所述第三像素为位于所述当前编码单元的第一列以外的像素,且所述当前串中的各个第三像素分布在所述当前编码单元中的至少一列中;则相应的,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0301]
以列为单位,逐列地获取所述当前串的各列中的第三像素的预测值;或者,
[0302]
以单个像素为单位,逐像素地获取所述当前串中的各个第三像素的预测值;
[0303]
其中,任一第三像素的预测值是根据位于所述任一第二像素的左方且相邻的参考像素的重建值获取到的。
[0304]
再一种实施方式中,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0305]
从所述当前编码单元的编码信息中解码出串扫描模式标志;
[0306]
若所述串扫描模式标志为第三数值,则确定所述当前编码单元的扫描模式为水平扫描模式;
[0307]
若所述串扫描模式标志为第四数值,则确定所述当前编码单元的扫描模式为竖直扫描模式。
[0308]
再一种实施方式中,所述当前图像被划分成多个处理单元,每个处理单元包括一个或多个编码单元;所述多个处理单元包括:当前处理单元和已解码的处理单元,所述当前处理单元包括所述当前编码单元;相应的,所述一条或多条第一指令还可以由处理器701加载并具体执行:
[0309]
若所述当前串不为所述单位矢量串,则从所述当前处理单元和所述已解码的处理单元中的部分已解码的编码单元中,搜索所述当前串的参考串;
[0310]
根据所述参考串获取所述当前串中的各个像素的预测值,以得到解码图像。
[0311]
再一个实施例中,当计算机设备为上述所提及的视频编码设备时,可由处理器701加载并执行计算机存储介质中存放的一条或多条第二指令,以实现上述图2所示的视频编码方法实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条第二指令由处理器701加载并执行如下步骤:
[0312]
从当前图像的当前编码单元中确定待编码的当前串;
[0313]
若所述当前串为单位矢量串,且所述当前串中包括第一像素,则从所述当前图像中的历史编码单元中确定所述第一像素的参考像素;所述历史编码单元是指所述当前图像中与所述当前编码单元相邻的已编码的编码单元,所述第一像素对应的参考像素和所述第一像素在所述当前图像中相邻;
[0314]
根据所述第一像素的参考像素的重建值获取所述第一像素的预测值,以得到所述当前编码单元的编码信息。
[0315]
在一种实施方式中,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0316]
编码所述串指示标志,使得所述编码信息中包括所述串指示标志。
[0317]
再一种实施方式中,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0318]
编码数值k,使得所述编码信息中包括所述数值k,数值k的取值大于或等于零。
[0319]
再一种实施方式中,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0320]
编码所述当前串的串位移矢量,使得所述编码信息中包括所述串位移矢量。
[0321]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为水平扫描模式,且所述水平扫描模式指示按照从上往下的顺序对所述当前编码单元进行扫描,则所述历史编码单元位于所述当前编码单元的上方,所述第一像素为位于所述当前编码单元的第一行的像素。
[0322]
在此情况下,若所述当前串中的像素均为第二像素,或者所述当前串中包括所述第一像素和所述第二像素;所述第二像素为位于所述当前编码单元的第一行以外的像素,且所述当前串中的各个第二像素分布在所述当前编码单元中的至少一行中;则相应的,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0323]
以行为单位,逐行地获取所述当前串的各行中的第二像素的预测值;或者,
[0324]
以单个像素为单位,逐像素地获取所述当前串中的各个第二像素的预测值;
[0325]
其中,任一第二像素的预测值是根据位于所述任一第二像素的上方且相邻的参考像素的重建值获取到的。
[0326]
再一种实施方式中,所述当前编码单元包括p行q列个像素;其中,p和q的取值均为正整数;若所述当前编码单元的扫描模式为竖直扫描模式,且所述竖直扫描模式指示按照从左往右的顺序对所述当前编码单元进行扫描,则所述历史编码单元位于所述当前编码单元的左方,所述第一像素为位于所述当前编码单元的第一列的像素。
[0327]
在此情况下,若所述当前串中的像素均为第三像素,或者所述当前串中包括所述第一像素和所述第三像素;所述第三像素为位于所述当前编码单元的第一列以外的像素,且所述当前串中的各个第三像素分布在所述当前编码单元中的至少一列中;则相应的,所
述一条或多条第二指令还可以由处理器701加载并具体执行:
[0328]
以列为单位,逐列地获取所述当前串的各列中的第三像素的预测值;或者,
[0329]
以单个像素为单位,逐像素地获取所述当前串中的各个第三像素的预测值;
[0330]
其中,任一第三像素的预测值是根据位于所述任一第二像素的左方且相邻的参考像素的重建值获取到的。
[0331]
再一种实施方式中,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0332]
编码串扫描模式标志,使得所述编码信息中包括所述串扫描模式标志。
[0333]
再一种实施方式中,所述当前图像被划分成多个处理单元,每个处理单元包括一个或多个编码单元;所述多个处理单元包括:当前处理单元和已编码的处理单元,所述当前处理单元包括所述当前编码单元;相应的,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0334]
若所述当前串不为所述单位矢量串,则从所述当前处理单元和所述已编码的处理单元中的部分已编码的编码单元中,搜索所述当前串的参考串;
[0335]
根据所述参考串获取所述当前串中的各个像素的预测值,以得到所述当前编码单元的编码信息。
[0336]
再一种实施方式中,所述一条或多条第二指令还可以由处理器701加载并具体执行:
[0337]
若当前编码单元中包括未匹配像素,则编码未匹配像素的像素值,使得编码信息中包括未匹配像素的像素值。
[0338]
本发明实施例在解码的过程中,在当前编码单元的当前串为单位矢量串,且当前串中包括第一像素(如当前编码单元中的第一行的像素或者当前编码单元中的第一列的像素等等)时,可从当前图像中的历史解码单元中确定第一像素的参考像素,并根据参考像素的重建值获取第一像素的预测值以实现解码处理。可见,本发明实施例通过允许使用当前编码单元相邻的历史解码单元中的像素作为参考像素,使得当前编码单元中任一串均可成为单位矢量串,这样可有效扩宽单位矢量串的适用范围,有助于提升解码性能。并且,本发明实施例针对当前编码单元所采用的预测编码模式并不局限于等值串与单位矢量串子模式,还可以是帧内串复制模式中的串预测子模式等其他预测编码模式;也就是说,本发明实施例可允许串预测子模式下的编码单元使用单位矢量串,这样可进一步扩宽单位矢量串的适用范围,提升串预测的编码性能。
[0339]
需要说明的是,根据本技术的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2所示的视频编码方法或图4所示的视频解码方法实施例方面的各种可选方式中提供的方法。
[0340]
并且,应理解的是,以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
再多了解一些

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

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

相关文献