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

串矢量的编解码方法、编码设备、解码设备及存储介质与流程

2022-06-08 20:58:16 来源:中国专利 TAG:


1.本技术实施例涉及图像处理技术领域,尤其涉及一种串矢量的编解码方法、编码设备、解码设备及存储介质。


背景技术:

2.目前主流的视频编码标准,如高效视频编码(high efficiency video coding,hevc)、通用视频编码(versatile video coding,vvc),音视频编解码标准(audio video coding standard,avs)3,均采用基于图像块的混合编码框架。它们将原始的一帧图像划分为一系列的图像块,结合预测,变换和熵编码等视频编码方法,实现视频数据的压缩。其中,运动补偿是视频编解码常用的一类预测方法,运动补偿基于视频内容在时域或空域的冗余特性,根据参考块确定当前待编码图像块的预测值。这类基于运动补偿的预测方法包括:帧间预测、帧内块复制、帧内串复制等。对于使用了这些预测方法的图像块,通常需要在码流显式或隐式的编码一个或多个二维的位移矢量,指示当前待编码图像块相对它的一个或多个参考块的位移。
3.为了减少位移矢量所需要的比特,现有技术还采用了各种方法来实现这一目的。例如:在帧内串复制中,编码端会编码一个标识,以标识待编码串的串矢量(string vector,sv)是否为(0,-1),如果sv不是(0,-1),编码端继续编码一个标识,该标识用于标识该sv是否在历史列表中,如果在,则编码端编码该sv在历史列表中的索引,如果该sv不在历史列表中,则编码端需要对sv进行编码,即对sv的横坐标和纵坐标进行编码。其中,编码端编码标识、索引等可以理解为对sv的隐式编码,对sv的横纵坐标的编码可以理解为对sv的显式编码。
4.总之,在帧内串复制中,编码端针对sv的显式或隐式编码,均没有区别长串和短串,因此这种方式可能导致短串的编码效果比较好,长串的编码效果不佳的问题。


技术实现要素:

5.本技术提供一种串矢量的编解码方法、编码设备、解码设备及存储介质,从而提高各种待编码串的编码效果。
6.第一方面,提供一种串矢量的编码方法,包括:获取待编码串的属性信息。根据属性信息对第一串矢量或者第一串矢量的相关信息进行编码,以得到码流。输出码流。其中,第一串矢量是待编码串的串矢量。属性信息包括以下至少一项:待编码串的位置信息、长度信息。
7.第二方面,提供一种串矢量的解码方法,包括:获取码流和待解码串的属性信息。根据属性信息解析码流,以得到第一串矢量。其中,第一串矢量是待解码串的串矢量。属性信息包括以下至少一项:待解码串的位置信息、长度信息。
8.第三方面,提供一种编码设备,包括:获取模块、编码模块、输出模块,其中获取模块用于获取待编码串的属性信息。编码模块用于根据属性信息对第一串矢量或者第一串矢
量的相关信息进行编码,以得到码流。输出模块用于输出码流。其中,第一串矢量是待编码串的串矢量。属性信息包括以下至少一项:待编码串的位置信息、长度信息。
9.第四方面,提供一种解码设备,包括:获取模块和解析模块,其中获取模块用于获取码流和待解码串的属性信息。解析模块用于根据属性信息解析码流,以得到第一串矢量。其中,第一串矢量是待解码串的串矢量。属性信息包括以下至少一项:待解码串的位置信息、长度信息。
10.第五方面,提供了一种编码设备,该编码设备用于执行如第一方面的方法。
11.第六方面,提供了一种解码设备,该解码设备用于执行如第二方面的方法。
12.第七方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序使得计算机执行第一方面的方法。
13.第八方面,提供了一种计算机可读存储介质,用于存储计算机程序,该计算机程序使得计算机执行第一方面的方法。
14.通过本技术提供的技术方案,编码端可以根据待编码串的位置信息、长度信息中的至少一项对第一串矢量或者第一串矢量的相关信息进行编码,即针对位置信息、长度中至少一项不同的待编码串,其采用的编码方式可能不同,以适应不同待编码串的编码,从而提高各种待编码串的编码效果。解码端可以根据待解码串的位置信息、长度信息中的至少一项对第一串矢量或者第一串矢量的相关信息进行解码,即针对位置信息、长度中至少一项不同的待解码串,其采用的解码方式可能不同,以适应不同待解码串的解码,从而提高各种待解码串的解码效果。
附图说明
15.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
16.图1为本技术实施例提供的编码框架的示意图;
17.图2为本技术实施例提供的解码框架的示意图;
18.图3是本技术实施例提供的一种帧内串复制的示意图;
19.图4为本技术实施例提供的一种串矢量的编码方法的流程图;
20.图5为本技术实施例提供的另一种串矢量的编码方法的流程图;
21.图6为本技术实施例提供的一种待编码串和参考串的示意图;
22.图7为本技术实施例提供的另一种待编码串和参考串的示意图;
23.图8为本技术实施例提供的再一种待编码串和参考串的示意图;
24.图9为本技术实施例提供的又一种待编码串和参考串的示意图;
25.图10为本技术实施例提供的再一种待编码串和参考串的示意图;
26.图11为本技术实施例提供的又一种待编码串和参考串的示意图;
27.图12为本技术实施例提供的再一种待编码串和参考串的示意图;
28.图13为本技术实施例提供的再一种串矢量的编码方法的流程图;
29.图14为本技术实施例提供的又一种串矢量的编码方法的流程图;
30.图15为本技术实施例提供的一种串矢量的解码方法的流程图;
31.图16为本技术实施例提供的另一种串矢量的解码方法的流程图;
32.图17为本技术实施例提供的再一种串矢量的解码方法的流程图;
33.图18为本技术实施例提供的又一种串矢量的解码方法的流程图;
34.图19为本技术实施例提供的一种编码设备的示意图;
35.图20为本技术实施例提供的一种解码设备的示意图。
具体实施方式
36.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
37.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
38.在介绍本技术技术方案之前,下面先对图像或者视频编码框架和解码框架、帧内串复制技术、avs3中的sv预测、sv的预测信息(string vector predictor,svp)的导出以及avs3中的sv的编码过程和解码过程进行说明:
39.一、图像或者视频编码框架和解码框架,即混合编码框架。
40.示例性地,图1为本技术实施例提供的编码框架的示意图。如图1所示,该编码框架包括:预测单元11、残差产生单元12、变换单元13、量化单元14、逆量化单元15、逆变换单元16、重建单元17、滤波单元18及熵编码单元19。预测单元11包含帧间预测单元111及帧内预测单元112。帧间预测单元111包含运动估计单元1111及运动补偿单元1112。
41.其中,编码端接收到视频之后,对于构成视频的每帧图像,将该图像划分成多个待编码图像块。对于当前待编码图像块,预测单元11首先通过参考重建图像块对当前待编码图像块进行预测,得到当前待编码图像块的预测信息。其中,编码端可以采用帧间预测或者帧内预测技术得到预测信息。
42.具体地,帧间预测单元111中的运动估计单元1111可搜索参考图片的列表中的参考图片以查找待编码图像块的参考块。运动估计单元1111可产生指示该参考块的索引,及指示待编码图像块与该参考块之间的空间位移的运动向量。运动估计单元1111可将参考块的索引及该运动向量作为该待编码图像块的运动信息而输出。运动补偿单元1112可基于该待编码图像块的运动信息得到该待编码图像块的预测信息。
43.帧内预测单元112可以采用帧内预测模式对当前待编码图像块产生预测信息。目前存在15种帧内预测模式,包括planar模式、dc模式以及13种角度预测模式。帧内预测单元112也可以采用帧内块复制(intra block copy,ibc)、帧内串复制(intra string copy,
isc)技术等。
44.残差产生单元12用于对当前待编码图像块的原始信号减去预测信息,得到残差信号。经过预测后,残差信号的幅值远小于原始信号。变换单元13和量化单元14用于对残差信号进行变换和量化操作。经过变换量化后,得到变换量化系数。熵编码单元19用于通过熵编码技术编码量化系数以及编码中的其他指示信息,得到码流。
45.进一步地,编码端还需要重建当前待编码图像块,以实现对后续待编码图像块的编码提供参考像素。具体地,在得到当前待编码图像块的变换量化系数之后,逆量化单元15和逆变换单元16对当前待编码图像块的变换量化系数进行反量化和反变换,得到重建的残差信号,重建单元17将重建的残差信号与当前待编码图像块对应的预测信息相加,得到当前待编码图像块的重建信号,根据该重建信号得到重建图像块。更进一步地,滤波单元18可以对重建图像块可以进行滤波,其中可以采用去块效应滤波、自适应样点补偿(sample adaptive offset,sao)或者自适应环路滤波(adaptive loop filter,alf)等。其中,该重建图像块可以对后续待编码图像块进行预测。
46.示例性地,图2为本技术实施例提供的解码框架的示意图。如图2所示,该解码框架包括:熵解码单元21、预测单元22、逆量化单元23、逆变换单元24、重建单元25、滤波单元26。预测单元22包括:运动补偿单元221及帧内预测单元222。
47.具体地,解码端获取到码流之后,首先熵解码单元21对码流进行熵解码,得到当前待重建图像块的变换量化系数,然后逆量化单元23和逆变换单元24对变换量化系数进行反量化和反变换,得到当前待重建图像块的重建的残差信号。预测单元22对当前待重建图像块进行预测,得到当前待重建图像块的预测信息。如果预测单元22采用帧间预测,则运动补偿单元221可根据从码流解析的语法元素来构造第一参考图片列表(列表0)及第二参考图片列表(列表1)。此外,则熵解码单元21可解析待重建图像块的运动信息。运动补偿单元221可根据该运动信息来确定待重建图像块的一个或多个参考块。运动补偿单元221可根据一个或多个参考块来产生待重建图像块的预测信息。如果预测单元22采用帧内预测,则熵解码单元21可解析使用的帧内预测模式的索引,帧内预测单元222可以根据该索引,采用该帧内预测模式进行帧内预测,得到待重建图像块的预测信息。帧内预测单元222也可以采用ibc或者isc技术等。
48.进一步地,重建单元25用于将预测信息和上述重建的残差信号相加,得到当前待重建图像块的重建信号,然后根据该重建信号得到当前待重建图像块对应的当前重建图像块,其中,该当前重建图像块可以对后续其他待重建图像块进行预测。类似于上述编码端的情况,可选地,在解码端滤波单元26可以对当前重建图像块进行滤波。
49.二、isc技术
50.isc按照某种扫描顺序(光栅扫描、往返扫描或者zig-zag扫描等)将一个待编码图像块分成一系列像素串或未匹配像素。类似于ibc,当前串在当前一帧图像的已编码区域中寻找相同形状的参考串,基于此,导出当前串的预测信息,通过编码当前串的原始信号与预测信息,得到当前串的残差信号,并对该残差信号进行编码。例如:图3是本技术实施例提供的一种帧内串复制的示意图,如图3所示,斜条纹的28个像素为串1,横条纹的35个像素为串2,黑色的1个像素表示未匹配像素。其中,串1的参考串在其左侧,串1到其对应的参考串的位移通过串矢量1表示。串2的参考串在其上方,串2到其对应的参考串的位移通过串矢量2
表示。
51.isc技术需要编码当前待编码图像块中各个串对应的sv、串长度以及是否有参考串的标志等。
52.需要说明的是,在本技术中,当前待编码图像块也被称为编码单元、当前待编码单元、待编码单元、待编码图像块等,本技术对此不做限制。
53.三、avs3中的sv预测
54.ibc和isc是hevc屏幕内容编码(screen cotent coding,scc)扩展中采纳的一种帧内编码工具,它显著的提升了屏幕内容的编码效率。他们均以当前一帧图像为参考,通过运动补偿导出当前块或者当前串的预测信息。考虑到ibc与isc具有相似的参考区域,块矢量(block vector,bv)和sv具有较高的相关性,可通过允许两者之间的预测进一步提高编码效率。avs3使用一个类似于hmvp的帧内预测历史运动信息表(intrahmvp)记录这两类编码块(即ibc中的当前块和isc中的当前串)的位移矢量信息,位置信息,尺寸信息和重复次数,并由intrahmvp导出块矢量的预测信息(block vector predictor,bvp)和svp。
55.四、svp的导出
56.avs3中,编码端编码一个索引,该索引是sv的svp在intrahmvp中的索引,其中,类似于帧间预测中的skip模式,当前串的sv等于svp,因此,这种情况下,无需编码sv与svp之间的残差。
57.五、avs3中的sv的编码过程
58.在帧内串复制中,编码端会编码一个标识,以标识待编码串的sv是否为(0,-1),如果sv不是(0,-1),编码端继续编码一个标识,该标识用于标识该sv是否在历史列表中,如果在,则编码端编码该sv在历史列表中的索引,如果该sv不在历史列表中,则编码端需要对sv进行编码,即对sv的横坐标和纵坐标进行编码,具体地,可以通过方式计算当前编码单元中第i部分的串矢量sv[i]的横坐标svx[i]和纵坐标svy[i]进行编码,其中sv[i]的横坐标svx[i]也被称为该sv[i]的水平分量,sv[i]的纵坐标svy[i]被称为该sv[i]的垂直分量:
[0059][0060]
其中,svxnonzeroflag[i]等于sv_x_non_zero_flag[i]的值。sv_x_non_zero_flag[i]的值为
‘0’
,表示svx[i]的值不等于0,sv_x_non_zero_flag[i]值为
‘1’
表示svx[i]的值等于0。如果位流中不存在sv_x_non_zero_flag[i],则svxnonzeroflag[i]的值为1。
[0061]
svxsign[i]等于sv_x_sign[i]的值二值变量。sv_x_sign[i]用于确定当前编码单元的svx[i]的正负性。值为
‘0’
表示svx[i]是正数;值为
‘1’
表示svx[i]是负数。如果位流中不存在sv_x_sign[i],则svxsign[i]的值为1。
[0062]
svxabsminus1[i]等于sv_x_abs_minus1[i]的值。sv_x_abs_minus1[i]是svx[i]的绝对值减1。如果位流中不存在sv_x_abs_minus1[i],则svxabsminus1[i]的值为1。
[0063]
svynonzeroflag[i]等于sv_y_non_zero_flag[i]的值,sv_y_non_zero_flag[i]的值为
‘0’
表示当前编码单元的svy[i]的值不等于0;sv_y_non_zero_flag的值为
‘1’
表示svy[i]的值等于0。如果位流中不存在sv_y_non_zero_flag[i],svynonzeroflag[i]的值为1。
[0064]
svysign[i]等于sv_y_sign[i]的值,sv_y_sign[i]的值用于确定当前编码单元svx[i]的正负性。sv_y_sign[i]的值为
‘0’
表示svx[i]是正数;值为
‘1’
表示svx[i]是负数。如果位流中不存在sv_y_sign[i],则svysign[i]的值为1。
[0065]
svyabsminus1[i]等于sv_y_abs_minus1[i]的值。sv_y_abs_minus1[i]的值是svy[i]的绝对值减1。如果位流中不存在sv_y_abs_minus1[i],则svyabsminus1[i]的值为1。
[0066]
上述编码方式,编码端针对sv的显式或隐式编码,均没有区别长串和短串,因此这种方式可能导致短串的编码效果比较好,长串的编码效果不佳的问题。例如:如果编码端对sv[i]的横坐标svx[i]和纵坐标svy[i]进行编码时,其与svx[i]的绝对值、svy[i]的绝对值有关,对于短串而言,该svx[i]的绝对值和svy[i]的绝对值较小,因此编码效率比较高,但是对于长串而言,该svx[i]的绝对值和svy[i]的绝对值较大,这时编码比特较多,从而导致编码效率低的问题。再例如:如果针对所有的待编码串,编码端会编码一个标识,以标识待编码串的sv是否为(0,-1),这种对于长串而言,它的sv很可能不是(0,-1),而这时还需要编码该标识,将造成编码比特较多的问题,显然该标识的编码在这种情况下,也是没有必要的。
[0067]
为了解决上述技术问题,本技术主要根据待编码串的位置信息,或者长度信息,或者,位置信息和长度信息对待编码串的sv进行编码。
[0068]
下面将对本技术技术方案进行详细阐述:
[0069]
实施例1
[0070]
图4为本技术实施例提供的一种串矢量的编码方法的流程图,如图4所示,其中该方法的执行主体可以是如下设备,但不限于此:编码器、或者用于进行串矢量编码的设备,如台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、智能电话等手持机、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机,或其类似者等。如图4所示,该方法包括如下步骤:
[0071]
s410:获取待编码串的属性信息。
[0072]
s420:根据属性信息对第一串矢量或者第一串矢量的相关信息进行编码,以得到码流。
[0073]
s430:输出码流。
[0074]
应理解的是,待编码串是当前编码单元中的当前待编码串。因此,待编码串也被称为当前待编码串。其中,该当前编码单元也被称为编码单元。
[0075]
可选地,属性信息包括以下至少一项:待编码串的位置信息、长度信息。
[0076]
可选地,待编码串的位置信息包括以下至少一项:待编码串的起点的横坐标、纵坐标、待编码串的终点的横坐标、纵坐标。
[0077]
应理解的是,第一串矢量是待编码串的串矢量。
[0078]
可选地,第一串矢量的相关信息可以是对第一串矢量进行隐式编码时,所编码的信息,例如:该第一串矢量的相关信息可以包括第一标识,该第一标识用于标识第一串矢量是否为预设串矢量。或者,该第一串矢量的相关信息可以包括第二标识,该第二标识用于标识第一串矢量是否在第一位移矢量预测列表中。
[0079]
可选地,编码端可以根据属性信息,如根据待编码串的长度,或者,待编码串的终点的纵坐标与起点的纵坐标的差值,对第一串矢量或者第一串矢量的相关信息进行编码。
[0080]
应理解的是,上述码流中除了携带第一串矢量或者第一串矢量的相关信息以外,还携带图像编码过程中的其他信息,如熵编码技术编码量化系数等,本技术主要关注的是第一串矢量的编码过程。
[0081]
综上,在本技术中,编码端可以根据待编码串的位置信息、长度信息中的至少一项对第一串矢量或者第一串矢量的相关信息进行编码,即针对位置信息、长度中至少一项不同的待编码串,其采用的编码方式可能不同,以适应不同待编码串的编码,从而提高各种待编码串的编码效果。
[0082]
下面将针对步骤s420进行如下说明:
[0083]
实施例2
[0084]
图5为本技术实施例提供的另一种串矢量的编码方法的流程图,如图5所示,上述s420包括如下步骤:
[0085]
s510:根据属性信息判断是否对第一标识编码,若是,则执行s520,否则,则执行s540。
[0086]
s520:对第一标识进行编码。
[0087]
s530:若第一标识标识第一串矢量不是预设串矢量,则执行s540,否则,则结束。
[0088]
s540:判断第一串矢量是否在第一位移矢量预测列表中,若是,则执行s550,否则,则执行s560。
[0089]
s550:获取第一串矢量在第一位移矢量预测列表中的索引,并对第一串矢量在第一位移矢量预测列表中的索引进行编码。
[0090]
s560:确定属性信息所满足的预设条件,根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码。
[0091]
如上所述,第一标识用于标识第一串矢量是否为预设串矢量。例如:第一标识取值为1,表示第一串矢量为预设串矢量,第一标识取值为0,表示第一串矢量不是预设串矢量。或者,第一标识取值为0,表示第一串矢量为预设串矢量,第一标识取值为1,表示第一串矢量不是预设串矢量。
[0092]
可选地,若待编码串的预测模式的扫描方向为水平扫描方向,则预设串矢量是待编码串的上方参考串与待编码串之间的串矢量,例如:该串矢量是(0,-1)。若待编码串的预测模式的扫描方向为竖直扫描方向,则预设串矢量是待编码串的左侧参考串与待编码串之间的串矢量,例如:该串矢量是(-1,0)。
[0093]
应理解的是,待编码串的长度越长,则其与参考串,如上方参考串或者左侧参考串越不同,这种情况下,可能越不会采用这类参考串对应的串矢量,即不会采用上述的预设串矢量,因此,在这种情况下,可以跳过对上述第一标识进行编码。相反,待编码串的长度越短,则其与参考串,如上方参考串或者左侧参考串越相同,这种情况下,可能会采用这类参
考串对应的串矢量,即会采用上述的预设串矢量,因此,在这种情况下,可以对上述第一标识进行编码。
[0094]
应理解的是,一个参考串对应的串矢量是如下串矢量,该串矢量用于表征待编码串相对于该参考串的位移。
[0095]
应理解的是,待编码串的长度可以通过上述待编码串的长度信息直接反映,也可以通过待编码串的终点的纵坐标与起点的纵坐标的差值来反映。基于此,本技术提供了如下任一可选方式确定是否对第一标识编码,但不限于此:
[0096]
1、若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则确定不对第一标识编码,若待编码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则确定对第一标识编码。
[0097]
2、若待编码串的长度大于第二阈值,则确定不对第一标识编码,若待编码串的长度小于或等于第二阈值,则确定对第一标识编码。
[0098]
3、若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待编码串的长度大于第二阈值,则确定不对第一标识编码,否则,则确定对第一标识编码。
[0099]
4、若待编码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,则确定不对第一标识编码,若待编码串的终点的纵坐标与起点的纵坐标的差值小于第一阈值,则确定对第一标识编码。
[0100]
5、若待编码串的长度大于或等于第二阈值,则确定不对第一标识编码,若待编码串的长度小于第二阈值,则确定对第一标识编码。
[0101]
6、若待编码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,且待编码串的长度大于或等于第二阈值,则确定不对第一标识编码,否则,则确定对第一标识编码。
[0102]
应理解的是,如上所述,对于位置信息、长度信息中至少一项不同的待编码串,采用的编码方式可能不同,即待编码的信息也可能不同,例如:有些待编码串,可以编码它对应的第一标识。而有些待编码串,可以编码它在第一位移矢量预测列表中的索引,还有些待编码串,可以直接编码它的横纵坐标,基于此,编码端可以根据待编码串的位置信息、长度信息中至少一项,选择不同的上下文模型。
[0103]
本技术提供了如下任一可选方式选择上下文模型,但不限于此:
[0104]
1、若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则选择第一上下文模型,若待编码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则选择第二上下文模型。
[0105]
2、若待编码串的长度大于第二阈值,则选择第一上下文模型,若待编码串的长度小于或等于第二阈值,则选择第二上下文模型。
[0106]
3、若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待编码串的长度大于第二阈值,则选择第一上下文模型,否则,选择第二上下文模型。
[0107]
4、若待编码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,则选择第一上下文模型,若待编码串的终点的纵坐标与起点的纵坐标的差值小于第一阈值,则选择第二上下文模型。
[0108]
5、若待编码串的长度大于或等于第二阈值,则选择第一上下文模型,若待编码串
的长度小于第二阈值,则选择第二上下文模型。
[0109]
6、若待编码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,且待编码串的长度大于或等于第二阈值,则选择第一上下文模型,否则,选择第二上下文模型。
[0110]
应理解的是,第一上下文模型和第二上下文模型为采用基于上下文的自适应二进制算术编码时构造的上下文模型,但是第一上下文模型和第二上下文模型不同,即第一上下文模型更适用于相对于长串,而第二上下文模型更适用于相对于短串,本技术重点关注可以根据属性信息,选择不同的上下文模型,但是对上下文模型本身并不关注,总之,根据属性信息,选择不同的上下文模型进行编码,有利于提升编码效率。
[0111]
应理解的是,上述第一阈值和第二阈值可以是预配置给编码端的,也可以动态配置给编码端,本技术对此不做限制。
[0112]
可选地,编码端可以构建第一位移矢量预测列表,基于此,编码端可以在第一位移矢量预测列表中选择待编码串最佳的svp。
[0113]
可选地,该第一位移矢量预测列表包括以下至少一项,但不限于此:
[0114]
1、在空域上与待编码串相邻的历史编码块的位移矢量。
[0115]
2、历史编码块的位移矢量。
[0116]
3、包括但不限于(0,-1),(-1,0),(-w,0),(0,-h),(-w,-h)等。
[0117]
4、包括但不限于(0,start_y-end_y),(0,start_y-end_y-1),(-start_x-1,0),(-min(start_x len,w),0),(-w,start_y-end_y),(-w,start_y-end_y-1)。
[0118]
其中,待编码串的起点为(start_x,start_y),终点为(end_x,end_y),w、h均可以是大于1的整数。
[0119]
需要说明的是,第一位移矢量预测列表中所涉及的历史编码块指的是已编码的图像块,该历史编码块可以被理解为已编码的编码树单元(coding tree unit,ctu)、编码单元(coding unit,cu)、预测单元(prediction unit,pu)、变换单元(transform unit,tu)、已编码串等,本技术对此不做限制。
[0120]
应理解的是,待编码串相邻的历史编码块可以是待编码串所在的编码单元相邻的历史编码单元,也可以是该历史编码单元中的历史编码串,本社区内对此不做限制。
[0121]
上述位移矢量可为bv、sv或者是帧间预测中的运动向量(motion vector,mv),本技术对此不做限制。
[0122]
可选地,如果第一串矢量在第一位移矢量预测列表中,则编码端只需要编码该第一串矢量在第一位移矢量预测列表中的索引,也就是第一串矢量的svp在第一位移矢量预测列表中的索引,而无需对第一串矢量与其对应的svp的残差信号进行编码。如果第一串矢量不在第一位移矢量预测列表中,确定属性信息所满足的预设条件,根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码。
[0123]
可选地,编码端可以采用如下方式确定对第一串矢量采用的编码方式,以进行编码,但不限于此:
[0124]
1、若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值小于或等于第三阈值,则对第一串矢量进行编码。
[0125]
2、若预设条件是待编码串的长度小于或等于第四阈值,则对第一串矢量进行编码。
[0126]
3、若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息的索引以及残差信息进行编码。
[0127]
4、若预设条件是待编码串的长度大于第四阈值,则获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息的索引以及残差信息进行编码。
[0128]
5、若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待编码串的长度大于第四阈值,则获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息的索引以及残差信息进行编码。
[0129]
6、若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0130]
7、若预设条件是待编码串的长度大于第四阈值,则获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0131]
8、若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待编码串的长度大于第四阈值,则获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0132]
应理解的是,上述第三阈值和第四阈值可以是预配置给编码端的,也可以动态配置给编码端,本技术对此不做限制。
[0133]
可选地,编码端对第一串矢量进行直接编码,即显式编码时,可以采用如下方式,但不限于此:
[0134]
若第一串矢量的纵坐标sv_y大于0,基于参考范围限制,第一串矢量一定指向待编码串的左下方,则对第一串矢量的横坐标sv_x加上第一偏移值svoffsetx之后进行编码,以减少编码比特;或者,
[0135]
若第一串矢量的横坐标sv_x大于0,基于参考范围限制,第一串矢量一定指向待编码串的右上方,则对第一串矢量的纵坐标sv_y加上第二偏移值svoffsety之后进行编码,以减少编码比特。
[0136]
应理解的是,第一偏移值和第二偏移值的设置至少要保证待编码串的参考串不与未编码区域或待编码串自身存在重叠。
[0137]
假设编码端采用水平往返扫描方式进行编码,下面将给出在这种情况下,如何确定第一偏移值和第二偏移值的方法:
[0138]
可选地,若待编码串的起点在偶数行,则第一偏移值svoffsetx为第一数值与待编码串所在的编码单元的宽度width的最小值,第一数值为起点的横坐标start_x与待编码串的长度str_len之和,即svoffsetx=min(start_x str_len,width)。
[0139]
需要说明的是,本技术所述的起点的坐标和终点的坐标均是指起点和终点在待编码串所在的编码单元中的坐标,下面对此不再赘述。
[0140]
示例性地,图6为本技术实施例提供的一种待编码串和参考串的示意图,如图6所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图6所示的
待编码串的起点在第0行,即偶数行,为了保证待编码串的参考串不与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的左边界相邻,如图6所示的参考串,这种情况下,为了减少编码比特,svoffsetx可以取待编码串中像素与待编码串所在的编码单元的左边界的最大距离,即待编码串中最右侧的像素与待编码串所在的编码单元的左边界的距离,其等于start_x str_len。这种情况下,sv_x svoffsetx=0,相比较于未编码前的sv_x,其编码比特减少了。
[0141]
示例性地,图7为本技术实施例提供的另一种待编码串和参考串的示意图,如图7所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图7所示的待编码串的起点在第0行,即偶数行,为了保证待编码串的参考串不能与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的左边界相邻,如图7所示的参考串,这种情况下,为了减少编码比特,svoffsetx可以取待编码串中像素与待编码串所在的编码单元的左边界的最大距离,即待编码串中最右侧的像素与待编码串所在的编码单元的左边界的距离,其等于width。这种情况下,sv_x svoffsetx=0,相比较于未编码前的sv_x,其编码比特减少了。
[0142]
可选地,若待编码串的起点在奇数行,则第一偏移值svoffsetx为起点的横坐标与1之和,即svoffsetx=start_x 1。
[0143]
示例性地,图8为本技术实施例提供的再一种待编码串和参考串的示意图,如图8所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图8所示的待编码串的起点在第1行,即奇数行,为了保证待编码串的参考串不能与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的左边界相邻,如图8所示的参考串,这种情况下,为了减少编码比特,svoffsetx可以取待编码串中像素与待编码串所在的编码单元的左边界的最大距离,即待编码串中最右侧的像素与待编码串所在的编码单元的左边界的距离,其等于start_x 1。这种情况下,sv_x svoffsetx=0,相比较于未编码前的sv_x,其编码比特减少了。
[0144]
可选地,若待编码串的终点的纵坐标end_y大于第二数值,则第一偏移值svoffsetx为待编码串所在的编码单元的宽度width,第二数值为待编码串的起点的纵坐标与1之和,即第二数值为start_y 1。
[0145]
示例性地,图9为本技术实施例提供的又一种待编码串和参考串的示意图,如图9所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图9所示的待编码串存在多行,即end_y》start_y 1,为了保证待编码串的参考串不能与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的左边界相邻,如图9所示的参考串,这种情况下,为了减少编码比特,svoffsetx可以取待编码串中像素与待编码串所在的编码单元的左边界的最大距离,即待编码串中最右侧的像素与待编码串所在的编码单元的左边界的距离,其等于width。这种情况下,sv_x svoffsetx=0,相比较于未编码前的sv_x,其编码比特减少了。
[0146]
可选地,若待编码串的起点在奇数行,待编码串的终点的纵坐标等于第二数值,即end_y=start_y 1,终点的横坐标end_x大于起点的横坐标start_x,,则第一偏移值为终点的横坐标与1之和,即svoffsetx=end_x 1。
[0147]
示例性地,图10为本技术实施例提供的再一种待编码串和参考串的示意图,如图
10所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图10所示的待编码串的起点在第1行,即奇数行,end_y=start_y 1,即待编码串存在两行,为了保证待编码串的参考串不能与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的左边界相邻,如图10所示的参考串,这种情况下,为了减少编码比特,svoffsetx可以取待编码串中像素与待编码串所在的编码单元的左边界的最大距离,即待编码串中最右侧的像素与待编码串所在的编码单元的左边界的距离,其等于end_x 1。这种情况下,sv_x svoffsetx=0,相比较于未编码前的sv_x,其编码比特减少了。
[0148]
可选地,若待编码串的终点在偶数行,终点的横坐标end_x与第一串矢量的横坐标sv_x之和大于或等于待编码串所在的编码单元的宽度width,则第二偏移值svoffsety等于终点的纵坐标end_y与1之和。
[0149]
示例性地,图11为本技术实施例提供的又一种待编码串和参考串的示意图,如图11所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图11所示的待编码串的终点在第2行,即偶数行,end_x=1,sv_x=3,width=4,这时end_x sv_x=width,为了保证待编码串的参考串不能与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的上边界相邻,如图11所示的参考串,这种情况下,为了减少编码比特,svoffsety可以取待编码串中像素与待编码串所在的编码单元的上边界的最大距离,其等于end_y 1=3。这种情况下,sv_y=-3,sv_y svoffsety=0,相比较于未编码前的sv_y,其编码比特减少了。
[0150]
可选地,若采用水平往返扫描方式进行编码,且待编码串的终点在偶数行,终点的横坐标与第一串矢量的横坐标之和小于待编码串所在的编码单元的宽度,则第二偏移值等于0。
[0151]
可选地,若第三数值大于或等于待编码串所在的编码单元的宽度width,则第二偏移值等于终点的纵坐标end_y与1之和。其中,第三数值为终点的横坐标end_x加上待编码串的长度str_len、第一串矢量的横坐标sv_x,再减1,即第三数值为end_x str_len-1 sv_x。
[0152]
示例性地,图12为本技术实施例提供的再一种待编码串和参考串的示意图,如图12所示,每个小方格可以表示一个像素,斜条纹区域为待编码串,带点区域为参考串,图12所示的待编码串的终点在第1行,即奇数行,end_x=0,str_len=2,sv_x=3,这时end_x str_len-1 sv_x=4,其等于width=4为了保证待编码串的参考串不能与未编码区域或待编码串自身存在重叠,参考串最多与待编码串所在的编码单元的上边界相邻,如图12所示的参考串,这种情况下,为了减少编码比特,svoffsety可以取待编码串中像素与待编码串所在的编码单元的上边界的最大距离,其等于end_y 1=2。这种情况下,sv_y=-2,sv_y svoffsety=0,相比较于未编码前的sv_y,其编码比特减少了。
[0153]
可选地,如上所述,编码端可以获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息在第二位移矢量预测列表中的索引以及残差信息进行编码。
[0154]
可选地,编码端可以构建第二位移矢量预测列表,基于此,编码端可以在第二位移矢量预测列表中选择待编码串最佳的svp。
[0155]
可选地,该第二位移矢量预测列表包括以下至少一项,但不限于此:
[0156]
1、在空域上与待编码串相邻的历史编码块的位移矢量。
[0157]
2、历史编码块的位移矢量。
[0158]
3、包括但不限于(0,-1),(-1,0),(-w,0),(0,-h),(-w,-h)等。
[0159]
4、包括但不限于(0,start_y-end_y),(0,start_y-end_y-1),(-start_x-1,0),(-min(start_x len,w),0),(-w,start_y-end_y),(-w,start_y-end_y-1)。
[0160]
其中,待编码串的起点为(start_x,start_y),终点为(end_x,end_y),w、h均可以是大于1的整数。
[0161]
需要说明的是,第二位移矢量预测列表中所涉及的历史编码块指的是已编码的图像块,该历史编码块可以被理解为已编码的ctu、cu、pu、tu、已编码串等,本技术对此不做限制。
[0162]
应理解的是,待编码串相邻的历史编码块可以是待编码串所在的编码单元相邻的历史编码单元,也可以是该历史编码单元中的历史编码串,本社区内对此不做限制。
[0163]
上述位移矢量可为bv、sv或者是帧间预测中的mv,本技术对此不做限制。
[0164]
需要说明的是,第二位移矢量预测列表与第一位移矢量预测列表可以相同,也可以不同,例如:第一位移矢量预测列表包括上述第2项,即历史编码块的位移矢量。而第二位移矢量预测列表包括上述4项。
[0165]
可选地,如上所述,编码端可以获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0166]
示例性地,第一串矢量与预测信息svp之间的方向偏移值包括:横坐标方向上的方向偏移值svd_sign_x,以及纵坐标方向上的方向偏移值svd_sign_y,假设方向偏移值的索引用svd_sign_idx表示,那么svd_sign_idx与svd_sign_x和svd_sign_y的对应关系可以见表1:
[0167]
表1
[0168]
svd_sign_idxsvd_sign_xsvd_sign_y0 101-1020 130-1
[0169]
假设距离偏移值的索引用svd_distance_index表示,距离偏移值用svd_distance表示,那么svd_distance_index和svd_distance的对应关系可以见表2:
[0170]
表2
[0171][0172][0173]
sv_x和sv_y可按如下公式计算
[0174]
sv_x=svp_x svd_distance*svd_sign_x
ꢀꢀꢀ
(1)
[0175]
sv_y=svp_y svd_distance*svd_sign_y
ꢀꢀꢀ
(2)
[0176]
其中,svp_x表示svp的横坐标,svp_y表示svp的纵坐标,公式(1)和(2)中的其他参数可参考上文对应的解释说明,对此不再赘述。
[0177]
综上,在本技术中,编码端可以根据待编码串的位置信息、长度信息中的至少一项确定是否跳过对第一标识的编码,如果跳过第一标识的编码,则可以减少编码比特。编码端还可以根据待编码串的位置信息、长度信息中的至少一项确定所满足的预设条件,根据该预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码,例如:编码第一串矢量对应的残差信息和索引,或者直接编码等,在直接编码中,可以确定上述第一偏移值和第二偏移值,相对于现有技术的直接编码方案,本技术可以更好的减少编码比特,如上面的示例中,几乎经过加上第一偏移值之后的sv_x为0,加上第二偏移值之后的sv_y也为0。
[0178]
实施例3
[0179]
图13为本技术实施例提供的再一种串矢量的编码方法的流程图,如图13所示,上述s420包括如下步骤:
[0180]
s1310:对第一标识进行编码。
[0181]
s1320:若第一标识标识第一串矢量不是预设串矢量,则执行s1330,否则,则结束。
[0182]
s1330:判断第一串矢量是否在第一位移矢量预测列表中,若是,则执行s1340,否则,则执行s1350。
[0183]
s1340:获取第一串矢量在第一位移矢量预测列表中的索引,并对第一串矢量在第一位移矢量预测列表中的索引进行编码。
[0184]
s1350:确定属性信息所满足的预设条件,根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码。
[0185]
应理解的是,实施例3与实施例2的不同之处在于,实施例3无需根据属性信息判断是否对第一标识编码,其他部分均相同,因此,实施例3可参考实施例2中的解释说明,本技术对此不再赘述。
[0186]
实施例4
[0187]
图14为本技术实施例提供的又一种串矢量的编码方法的流程图,如图14所示,上述s420包括如下步骤:
[0188]
s1410:根据属性信息判断是否对第一标识编码,若是,则执行s1420,否则,则执行s1440。
[0189]
s1420:对第一标识进行编码。
[0190]
s1430:若第一标识标识第一串矢量不是预设串矢量,则执行s1440,否则,则结束。
[0191]
s1440:判断第一串矢量是否在第一位移矢量预测列表中,若是,则执行s1450,否则,则执行s1460。
[0192]
s1450:获取第一串矢量在第一位移矢量预测列表中的索引,并对第一串矢量在第一位移矢量预测列表中的索引进行编码。
[0193]
s1460:对第一串矢量进行编码,或者获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息在第二位移矢量预测列表中的索引以及残差信息进行编码,或
者获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0194]
应理解的是,实施例4与实施例2的不同之处在于,实施例4无需确定属性信息所满足的预设条件,根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码。而是直接获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息在第二位移矢量预测列表中的索引以及残差信息进行编码,或者获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码,其他部分均相同,因此,实施例4可参考实施例2中的解释说明,本技术对此不再赘述。
[0195]
需要说明的是,本技术提供的串矢量的编码方法不局限于实施例1-4,实际上,本技术可以保护单独的串矢量的编码方法,只要该编码方式结合待编码串的属性信息即可,本技术还可以保护至少两个编码方式的组合方式,例如下至少两者的组合:编码上述第一标识的方式,编码第一串矢量在第一位移矢量预测列表中的索引,采用直接编码方式,编码预测信息在第二位移矢量预测列表中的索引以及残差信息,编码预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引等,只要有至少一项编码方式结合待编码串的属性信息进行即可,例如:根据属性信息判断是否对第一标识编码,若确定对第一标识编码,则对第一标识进行编码;若确定不对第一标识编码或者第一串矢量不是预设串矢量,则可以采用任一的串矢量编码方式,如对第一串矢量进行直接编码,该直接编码方式可以是现有的直接编码方式,也可以是本技术提供的直接编码方式,本技术对此不做限制。
[0196]
实施例5
[0197]
图15为本技术实施例提供的一种串矢量的解码方法的流程图,其中该方法的执行主体可以是如下设备,但不限于此:解码器、或者用于进行串矢量解码的设备,如台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、智能电话等手持机、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机,或其类似者等。如图15所示,该方法包括如下步骤:
[0198]
s1510:获取码流和待解码串的属性信息。
[0199]
s1520:根据属性信息解析码流,以得到第一串矢量。
[0200]
其中,第一串矢量是待解码串的串矢量;该属性信息包括以下至少一项:待解码串的位置信息、长度信息。
[0201]
应理解的是,待解码串是当前解码单元中的当前待解码串。因此,待解码串也被称为当前待解码串。其中,该当前解码单元也被称为解码单元。
[0202]
可选地,待解码串的位置信息包括以下至少一项:待解码串的起点的横坐标、纵坐标、待解码串的终点的横坐标、纵坐标。
[0203]
可选地,第一串矢量的相关信息可以是对第一串矢量进行隐式编码时,所编码的信息,例如:该第一串矢量的相关信息可以包括第一标识,该第一标识用于标识第一串矢量是否为预设串矢量。或者,该第一串矢量的相关信息可以包括第二标识,该第二标识用于标识第一串矢量是否在第一位移矢量预测列表中。
[0204]
可选地,解码端可以根据属性信息,如根据待解码串的长度,或者,待解码串的终
点的纵坐标与起点的纵坐标的差值,对第一串矢量或者第一串矢量的相关信息进行解码。
[0205]
应理解的是,上述码流中除了携带第一串矢量或者第一串矢量的相关信息以外,还携带图像编码过程中的其他信息,如熵编码技术编码量化系数等,本技术主要关注的是第一串矢量的解码过程。
[0206]
综上,在本技术中,解码端可以根据待解码串的位置信息、长度信息中的至少一项对第一串矢量或者第一串矢量的相关信息进行解码,即针对位置信息、长度中至少一项不同的待解码串,其采用的解码方式可能不同,以适应不同待解码串的解码,从而提高各种待解码串的解码效果。
[0207]
实施例6
[0208]
图16为本技术实施例提供的另一种串矢量的解码方法的流程图,如图16所示,上述s1520包括如下步骤:
[0209]
s1610:根据属性信息判断是否对第一标识解码,若是,则执行s1620,否则,则执行s1640。
[0210]
s1620:对码流进行解析,以获取第一标识。
[0211]
s1630:若第一标识标识第一串矢量不是预设串矢量,则执行s1640,否则,则结束。
[0212]
s1640:判断第一串矢量是否在第一位移矢量预测列表中,若是,则执行s1650,否则,则执行s1660。
[0213]
s1650:解析码流,以获取第一串矢量在第一位移矢量预测列表中的索引,并通过索引获取第一串矢量。
[0214]
s1660:确定属性信息所满足的预设条件,根据预设条件对应的解码方式对码流进行解析。
[0215]
如上所述,第一标识用于标识第一串矢量是否为预设串矢量。例如:第一标识取值为1,表示第一串矢量为预设串矢量,第一标识取值为0,表示第一串矢量不是预设串矢量。或者,第一标识取值为0,表示第一串矢量为预设串矢量,第一标识取值为1,表示第一串矢量不是预设串矢量。
[0216]
可选地,若待解码串的预测模式的扫描方向为水平扫描方向,则预设串矢量是待解码串的上方参考串与待解码串之间的串矢量,例如:该串矢量是(0,-1)。若待解码串的预测模式的扫描方向为竖直扫描方向,则预设串矢量是待解码串的左侧参考串与待解码串之间的串矢量,例如:该串矢量是(-1,0)。
[0217]
应理解的是,待解码串的长度越长,则其与参考串,如上方参考串或者左侧参考串越不同,这种情况下,可能越不会采用这类参考串对应的串矢量,即不会采用上述的预设串矢量,因此,在这种情况下,可以跳过对上述第一标识进行解码。相反,待解码串的长度越短,则其与参考串,如上方参考串或者左侧参考串越相同,这种情况下,可能会采用这类参考串对应的串矢量,即会采用上述的预设串矢量,因此,在这种情况下,可以对上述第一标识进行解码。
[0218]
应理解的是,一个参考串对应的串矢量是如下串矢量,该串矢量用于表征待解码串相对于该参考串的位移。
[0219]
应理解的是,待解码串的长度可以通过上述待解码串的长度信息直接反映,也可以通过待解码串的终点的纵坐标与起点的纵坐标的差值来反映。基于此,本技术提供了如
下任一可选方式确定是否对第一标识解码,但不限于此:
[0220]
1、若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则确定不对第一标识解码,若待解码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则确定对第一标识解码。
[0221]
2、若待解码串的长度大于第二阈值,则确定不对第一标识解码,若待解码串的长度小于或等于第二阈值,则确定对第一标识解码。
[0222]
3、若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待解码串的长度大于第二阈值,则确定不对第一标识解码,否则,则确定对第一标识解码。
[0223]
4、若待解码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,则确定不对第一标识解码,若待解码串的终点的纵坐标与起点的纵坐标的差值小于第一阈值,则确定对第一标识解码。
[0224]
5、若待解码串的长度大于或等于第二阈值,则确定不对第一标识解码,若待解码串的长度小于第二阈值,则确定对第一标识解码。
[0225]
6、若待解码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,且待解码串的长度大于或等于第二阈值,则确定不对第一标识解码,否则,则确定对第一标识解码。
[0226]
应理解的是,如上所述,对于位置信息、长度信息中至少一项不同的待解码串,采用的编码方式可能不同,即待解码的信息也可能不同,例如:有些待解码串,可以解码它对应的第一标识。而有些待解码串,可以解码它在第一位移矢量预测列表中的索引,还有些待解码串,可以直接解码它的横纵坐标,基于此,编码端可以根据待解码串的位置信息、长度信息中至少一项,选择不同的上下文模型。
[0227]
本技术提供了如下任一可选方式选择上下文模型,但不限于此:
[0228]
1、若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则选择第一上下文模型,若待解码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则选择第二上下文模型。
[0229]
2、若待解码串的长度大于第二阈值,则选择第一上下文模型,若待解码串的长度小于或等于第二阈值,则选择第二上下文模型。
[0230]
3、若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待解码串的长度大于第二阈值,则选择第一上下文模型,否则,选择第二上下文模型。
[0231]
4、若待解码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,则选择第一上下文模型,若待解码串的终点的纵坐标与起点的纵坐标的差值小于第一阈值,则选择第二上下文模型。
[0232]
5、若待解码串的长度大于或等于第二阈值,则选择第一上下文模型,若待解码串的长度小于第二阈值,则选择第二上下文模型。
[0233]
6、若待解码串的终点的纵坐标与起点的纵坐标的差值大于或等于第一阈值,且待解码串的长度大于或等于第二阈值,则选择第一上下文模型,否则,选择第二上下文模型。
[0234]
应理解的是,第一上下文模型和第二上下文模型不同,即第一上下文模型更适用于相对于长串,而第二上下文模型更适用于相对于短串,本技术重点关注可以根据属性信息,选择不同的上下文模型,但是对上下文模型本身并不关注。
[0235]
应理解的是,上述第一阈值和第二阈值可以是预配置给解码端的,也可以动态配置给解码端,本技术对此不做限制。
[0236]
可选地,解码端可以构建第一位移矢量预测列表,基于此,解码端可以在第一位移矢量预测列表中选择待解码串最佳的svp。
[0237]
可选地,该第一位移矢量预测列表包括以下至少一项,但不限于此:
[0238]
1、在空域上与待解码串相邻的历史解码块的位移矢量。
[0239]
2、历史解码块的位移矢量。
[0240]
3、包括但不限于(0,-1),(-1,0),(-w,0),(0,-h),(-w,-h)等。
[0241]
4、包括但不限于(0,start_y-end_y),(0,start_y-end_y-1),(-start_x-1,0),(-min(start_x len,w),0),(-w,start_y-end_y),(-w,start_y-end_y-1)。
[0242]
其中,待解码串的起点为(start_x,start_y),终点为(end_x,end_y),w、h均可以是大于1的整数。
[0243]
需要说明的是,第一位移矢量预测列表中所涉及的历史解码块指的是已解码的图像块,该历史解码块可以被理解为已解码的图像块、已解码串等,本技术对此不做限制。
[0244]
应理解的是,待解码串相邻的历史解码块可以是待解码串所在的解码单元相邻的历史解码单元,也可以是该历史解码单元中的历史解码串,本技术对此不做限制。
[0245]
上述位移矢量可为bv、sv或者是帧间预测中的mv,本技术对此不做限制。
[0246]
可选地,如果第一串矢量在第一位移矢量预测列表中,则解码端只需要解码该第一串矢量在第一位移矢量预测列表中的索引,也就是第一串矢量的svp在第一位移矢量预测列表中的索引。如果第一串矢量不在第一位移矢量预测列表中,确定属性信息所满足的预设条件,根据预设条件对应的解码方式对第一串矢量或者第一串矢量的相关信息进行解码。
[0247]
可选地,解码端可以采用如下方式确定对第一串矢量采用的解码方式,以进行解码,但不限于此:
[0248]
1、若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值小于或等于第三阈值,则解析码流,以得到第一串矢量。
[0249]
2、若预设条件是待解码串的长度小于或等于第四阈值,则解析码流,以得到第一串矢量。
[0250]
3、若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。
[0251]
4、若预设条件是待解码串的长度大于第四阈值,则解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。
[0252]
5、若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待解码串的长度大于第四阈值,则解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。
[0253]
6、若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,
则解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。
[0254]
7、若预设条件是待解码串的长度大于第四阈值,则解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。
[0255]
8、若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待解码串的长度大于第四阈值,则解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。
[0256]
应理解的是,上述第三阈值和第四阈值可以是预配置给解码端的,也可以动态配置给解码端,本技术对此不做限制。
[0257]
可选地,解码端对第一串矢量进行直接解码,可以采用如下方式,但不限于此:
[0258]
若第一串矢量的纵坐标sv_y大于0,基于参考范围限制,第一串矢量一定指向待解码串的左下方,则对解析后的横坐标减去第一偏移值svoffsetx,以得到所述第一串矢量的横坐标sv_x;或者,
[0259]
若第一串矢量的横坐标sv_x大于0,基于参考范围限制,第一串矢量一定指向待解码串的右上方,则对解析后的纵坐标减去第二偏移值svoffsety,以得到第一串矢量的纵坐标sv_y。
[0260]
需要说明的是,关于如何确定第一偏移值和第二偏移值可以参考实施例2,本技术对此不再赘述。
[0261]
可选地,如上所述,解码端可以解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。
[0262]
可选地,解码端可以构建第二位移矢量预测列表,基于此,解码端可以在第二位移矢量预测列表中选择待解码串最佳的svp。
[0263]
可选地,该第二位移矢量预测列表包括以下至少一项,但不限于此:
[0264]
1、在空域上与待解码串相邻的历史解码块的位移矢量。
[0265]
2、历史解码块的位移矢量。
[0266]
3、包括但不限于(0,-1),(-1,0),(-w,0),(0,-h),(-w,-h)等。
[0267]
4、包括但不限于(0,start_y-end_y),(0,start_y-end_y-1),(-start_x-1,0),(-min(start_x len,w),0),(-w,start_y-end_y),(-w,start_y-end_y-1)。
[0268]
其中,待解码串的起点为(start_x,start_y),终点为(end_x,end_y),w、h均可以是大于1的整数。
[0269]
需要说明的是,第二位移矢量预测列表中所涉及的历史解码块指的是已解码的图像块,该历史解码块可以被理解为已解码的图像块、已解码串等,本技术对此不做限制。
[0270]
应理解的是,待解码串相邻的历史解码块可以是待解码串所在的解码单元相邻的
历史解码单元,也可以是该历史解码单元中的历史解码串,本技术对此不做限制。
[0271]
上述位移矢量可为bv、sv或者是帧间预测中的mv,本技术对此不做限制。
[0272]
需要说明的是,第二位移矢量预测列表与第一位移矢量预测列表可以相同,也可以不同,例如:第一位移矢量预测列表包括上述第2项,即历史解码块的位移矢量。而第二位移矢量预测列表包括上述4项。
[0273]
可选地,如上所述,解码端可以解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。
[0274]
示例性地,第一串矢量与预测信息svp之间的方向偏移值包括:横坐标方向上的方向偏移值svd_sign_x,以及纵坐标方向上的方向偏移值svd_sign_y,假设方向偏移值的索引用svd_sign_idx表示,那么svd_sign_idx与svd_sign_x和svd_sign_y的对应关系可以见上面的表1。
[0275]
假设距离偏移值的索引用svd_distance_index表示,距离偏移值用svd_distance表示,那么svd_distance_index和svd_distance的对应关系可以见上面的表2。
[0276]
sv_x和sv_y可按如下公式计算
[0277]
sv_x=svp_x svd_distance*svd_sign_x
ꢀꢀꢀ
(1)
[0278]
sv_y=svp_y svd_distance*svd_sign_y
ꢀꢀꢀ
(2)
[0279]
其中,svp_x表示svp的横坐标,svp_y表示svp的纵坐标,公式(1)和(2)中的其他参数可参考上文对应的解释说明,对此不再赘述。
[0280]
综上,在本技术中,解码端可以根据待解码串的位置信息、长度信息中的至少一项确定是否跳过对第一标识的解码,如果跳过第一标识的解码,则可以提高解码效率。解码端还可以根据待解码串的位置信息、长度信息中的至少一项确定所满足的预设条件,根据该预设条件对应的解码方式对第一串矢量或者第一串矢量的相关信息进行解码,例如:解码第一串矢量对应的残差信息和索引,或者直接解码等,在直接解码中,可以确定上述第一偏移值和第二偏移值,相对于现有技术的直接解码方案,本技术可以更好的减少解码比特。
[0281]
实施例7
[0282]
图17为本技术实施例提供的再一种串矢量的解码方法的流程图,如图17所示,上述s1520包括如下步骤:
[0283]
s1710:对码流进行解析,以获取第一标识。
[0284]
s1720:若第一标识标识第一串矢量不是预设串矢量,则执行s1730,否则,则结束。
[0285]
s1730:判断第一串矢量是否在第一位移矢量预测列表中,若是,则执行s1740,否则,则执行s1750。
[0286]
s1740:解析码流,以获取第一串矢量在第一位移矢量预测列表中的索引,并通过索引获取第一串矢量。
[0287]
s1750:确定属性信息所满足的预设条件,根据预设条件对应的解码方式对码流进行解析。
[0288]
应理解的是,实施例7与实施例6的不同之处在于,实施例3无需根据属性信息判断是否对码流进行解析,以获取第一标识,其他部分均相同,因此,实施例7可参考实施例6中
的解释说明,本技术对此不再赘述。
[0289]
实施例8
[0290]
图18为本技术实施例提供的又一种串矢量的解码方法的流程图,如图18所示,上述s1520包括如下步骤:
[0291]
s1810:根据属性信息判断是否对第一标识解码,若是,则执行s1820,否则,则执行s1840。
[0292]
s1820:对码流进行解析,以获取第一标识。
[0293]
s1830:若第一标识标识第一串矢量不是预设串矢量,则执行s1840,否则,则结束。
[0294]
s1840:判断第一串矢量是否在第一位移矢量预测列表中,若是,则执行s1850,否则,则执行s1860。
[0295]
s1850:解析码流,以获取第一串矢量在第一位移矢量预测列表中的索引,并通过索引获取第一串矢量。
[0296]
s1860:解析码流,以得到第一串矢量,或者,解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量,或者解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。
[0297]
应理解的是,实施例8与实施例6的不同之处在于,实施例8无需确定属性信息所满足的预设条件,根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行解码。而是直接解析码流,以得到第一串矢量,或者,解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量,或者解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量,其他部分均相同,因此,实施例8可参考实施例6中的解释说明,本技术对此不再赘述。
[0298]
需要说明的是,本技术提供的串矢量的解码方法不局限于实施例5-8,实际上,本技术可以保护单独的串矢量的解码方法,只要该解码方式结合待解码串的属性信息即可,本技术还可以保护至少两个解码方式的组合方式,例如下至少两者的组合:解码上述第一标识的方式,解码第一串矢量在第一位移矢量预测列表中的索引,采用直接解码方式,解码预测信息在第二位移矢量预测列表中的索引以及残差信息,解码预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引等,只要有至少一项解码方式结合待解码串的属性信息进行即可,例如:根据属性信息判断是否对第一标识解码,若确定对第一标识解码,则对第一标识进行解码;若确定不对第一标识解码或者第一串矢量不是预设串矢量,则可以采用任一的串矢量解码方式,如对第一串矢量进行直接解码,该直接解码方式可以是现有的直接解码方式,也可以是本技术提供的直接解码方式,本技术对此不做限制。
[0299]
实施例9
[0300]
图19为本技术实施例提供的一种编码设备的示意图,如图19所示,该设备包括:
[0301]
获取模块1910,用于获取待编码串的属性信息。
[0302]
编码模块1920,用于根据属性信息对第一串矢量或者第一串矢量的相关信息进行编码,以得到码流。
[0303]
输出模块1930,用于输出码流。
[0304]
其中,第一串矢量是待编码串的串矢量。属性信息包括以下至少一项:待编码串的位置信息、长度信息。
[0305]
可选地,编码模块1920具体用于:根据属性信息判断是否对第一标识编码,第一标识用于标识第一串矢量是否为预设串矢量。
[0306]
可选地,码模块1920还用于:若确定对第一标识编码,则对第一标识进行编码;若确定不对第一标识编码或者第一串矢量不是预设串矢量,则判断第一串矢量是否在第一位移矢量预测列表中;若确定第一串矢量在第一位移矢量预测列表中,则获取第一串矢量在第一位移矢量预测列表中的索引,并对第一串矢量在第一位移矢量预测列表中的索引进行编码;若确定第一串矢量不在第一位移矢量预测列表中,则确定属性信息所满足的预设条件,根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码。
[0307]
可选地,码模块1920还用于:若确定对第一标识编码,则对第一标识进行编码;若确定不对第一标识编码或者第一串矢量不是预设串矢量,则判断第一串矢量是否在第一位移矢量预测列表中;若确定第一串矢量在第一位移矢量预测列表中,则获取第一串矢量在第一位移矢量预测列表中的索引,并对第一串矢量在第一位移矢量预测列表中的索引进行编码;若确定第一串矢量不在第一位移矢量预测列表中,则对第一串矢量进行编码,或者获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息在第二位移矢量预测列表中的索引以及残差信息进行编码,或者获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0308]
可选地,码模块1920还用于:若确定对第一标识编码,则对第一标识进行编码;若确定不对第一标识编码或者第一串矢量不是预设串矢量,则对第一串矢量进行编码。
[0309]
可选地,编码模块1920具体用于:确定属性信息所满足的预设条件;根据预设条件对应的编码方式对第一串矢量或者第一串矢量的相关信息进行编码。
[0310]
可选地,编码模块1920还用于:对第一标识进行编码,第一标识用于标识第一串矢量是否为预设串矢量;若确定第一串矢量不是预设串矢量,则判断第一串矢量是否在第一位移矢量预测列表中;相应的,编码模块1920具体用于:若确定第一串矢量不在第一位移矢量预测列表中,则确定属性信息所满足的预设条件。
[0311]
可选地,编码模块1920还用于:若确定第一串矢量在第一位移矢量预测列表中,则获取第一串矢量在第一位移矢量预测列表中的索引,并对第一串矢量在第一位移矢量预测列表中的索引进行编码。
[0312]
可选地,编码模块1920具体用于:若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则确定不对第一标识编码,若待编码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则确定对第一标识编码。或者,若待编码串的长度大于第二阈值,则确定不对第一标识编码,若待编码串的长度小于或等于第二阈值,则确定对第一标
识编码。或者,若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待编码串的长度大于第二阈值,则确定不对第一标识编码,否则,则确定对第一标识编码。
[0313]
可选地,还包括选择模块1940,用于根据属性信息,选择上下文模型。
[0314]
可选地,选择模块1940具体用于:若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则选择第一上下文模型,若待编码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则选择第二上下文模型。或者,若待编码串的长度大于第二阈值,则选择第一上下文模型,若待编码串的长度小于或等于第二阈值,则选择第二上下文模型。或者,若待编码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待编码串的长度大于第二阈值,则选择第一上下文模型,否则,选择第二上下文模型。
[0315]
可选地,若待编码串的预测模式的扫描方向为水平扫描方向,则预设串矢量是待编码串的上方参考串与待编码串之间的串矢量。若待编码串的预测模式的扫描方向为竖直扫描方向,则预设串矢量是待编码串的左侧参考串与待编码串之间的串矢量。
[0316]
可选地,编码模块1920具体用于:若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值小于或等于第三阈值,则对第一串矢量进行编码。或者,若预设条件是待编码串的长度小于或等于第四阈值,则对第一串矢量进行编码。
[0317]
可选地,编码模块1920具体用于:若第一串矢量的纵坐标大于0,则对第一串矢量的横坐标加上第一偏移值之后进行编码。或者,若第一串矢量的横坐标大于0,则对第一串矢量的纵坐标加上第二偏移值之后进行编码。
[0318]
可选地,若采用水平往返扫描方式进行编码,且待编码串的起点在偶数行,则第一偏移值为第一数值与待编码串所在的编码单元的宽度的最小值,第一数值为起点的横坐标与待编码串的长度之和。或者,若采用水平往返扫描方式进行编码,且待编码串的起点在奇数行,则第一偏移值为起点的横坐标与1之和。或者,若采用水平往返扫描方式进行编码,且待编码串的终点的纵坐标大于第二数值,则第一偏移值为待编码串所在的编码单元的宽度,第二数值为待编码串的起点的纵坐标与1之和。或者,若采用水平往返扫描方式进行编码,且待编码串的起点在奇数行,待编码串的终点的纵坐标等于第二数值,终点的横坐标大于起点的横坐标,则第一偏移值为终点的横坐标与1之和。
[0319]
可选地,若采用水平往返扫描方式进行编码,且待编码串的终点在偶数行,终点的横坐标与第一串矢量的横坐标之和大于或等于待编码串所在的编码单元的宽度,则第二偏移值等于终点的纵坐标与1之和。或者,若采用水平往返扫描方式进行编码,且待编码串的终点在偶数行,终点的横坐标与第一串矢量的横坐标之和小于待编码串所在的编码单元的宽度,则第二偏移值等于0;或者,若采用水平往返扫描方式进行编码,且第三数值大于或等于待编码串所在的编码单元的宽度,则第二偏移值等于终点的纵坐标与1之和。其中,第三数值为终点的横坐标加上待编码串的长度、第一串矢量的横坐标,再减1。
[0320]
可选地,编码模块1920具体用于:若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息的索引以及残差信息进行编码。或者,若预设条件是待编码串的长度大于第四阈值,则获取第一串矢量与第一串矢量的预测信息之间的残差信息,对预测信息的索引以及残差信息进行编码。或者,若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待编码串的长度大于第四阈值,则获取第一串矢量与第一串矢量的
预测信息之间的残差信息,对预测信息的索引以及残差信息进行编码。
[0321]
可选地,编码模块1920具体用于:若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。或者,若预设条件是待编码串的长度大于第四阈值,则获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。若预设条件是待编码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待编码串的长度大于第四阈值,则获取第一串矢量与预测信息之间的距离偏移值的索引和方向偏移值的索引,对预测信息在第二位移矢量预测列表中的索引、距离偏移值的索引以及方向偏移值的索引进行编码。
[0322]
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图19所示的编码设备可以执行上述编码端对应的方法实施例,并且编码设备中的各个模块的前述和其它操作和/或功能分别为了实现上述编码端对应的方法实施例的相应流程,为了简洁,在此不再赘述。
[0323]
上文中结合附图从功能模块的角度描述了本技术实施例的编码设备。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本技术实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本技术实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
[0324]
实施例10
[0325]
图20为本技术实施例提供的一种解码设备的示意图,如图20所示,该设备包括:
[0326]
获取模块2010,用于获取码流和待解码串的属性信息。
[0327]
解析模块2020,用于根据属性信息解析码流,以得到第一串矢量。
[0328]
其中,第一串矢量是待解码串的串矢量。属性信息包括以下至少一项:待解码串的位置信息、长度信息。
[0329]
可选地,解析模块2020具体用于:根据属性信息判断是否对第一标识解码,第一标识用于标识第一串矢量是否为预设串矢量。
[0330]
可选地,解析模块2020还用于:若确定对第一标识解码,则对第一标识进行解码;若确定不对第一标识解码或者第一串矢量不是预设串矢量,则解析码流,以判断第一串矢量是否在第一位移矢量预测列表中;若确定第一串矢量在第一位移矢量预测列表中,则解析码流,以获取第一串矢量在第一位移矢量预测列表中的索引,并通过索引获取第一串矢量;若确定第一串矢量不在第一位移矢量预测列表中,则确定属性信息所满足的预设条件,根据预设条件对应的解码方式对码流进行解析。
[0331]
可选地,解析模块2020还用于:若确定对第一标识解码,则对第一标识进行解码;若确定不对第一标识解码或者第一串矢量不是预设串矢量,则解析码流,以判断第一串矢
量是否在第一位移矢量预测列表中;若确定第一串矢量在第一位移矢量预测列表中,则解析码流,以获取第一串矢量在第一位移矢量预测列表中的索引,并通过索引获取第一串矢量;若确定第一串矢量不在第一位移矢量预测列表中,则解析码流,以得到第一串矢量,或者,解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量,或者解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。
[0332]
可选地,解析模块2020还用于:若确定对第一标识解码,则对第一标识进行解码;若确定不对第一标识解码或者第一串矢量不是预设串矢量,则解析码流,以得到第一串矢量。
[0333]
可选地,解析模块2020具体用于:确定属性信息所满足的预设条件;根据预设条件对应的解码方式对码流进行解析。
[0334]
可选地,解析模块2020还用于:对码流进行解析,以获取第一标识,第一标识用于标识第一串矢量是否为预设串矢量;若确定第一串矢量不是预设串矢量,则解析码流,以判断第一串矢量是否在第一位移矢量预测列表中;相应的,解析模块2020具体用于:若确定第一串矢量不在第一位移矢量预测列表中,则确定属性信息所满足的预设条件。
[0335]
可选地,解析模块2020还用于:若确定第一串矢量在第一位移矢量预测列表中,则解析码流,以获取第一串矢量在第一位移矢量预测列表中的索引,并通过索引获取第一串矢量。
[0336]
可选地,解析模块2020具体用于:若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则确定不对第一标识解码,若待解码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则确定对第一标识解码。或者,若待解码串的长度大于第二阈值,则确定不对第一标识解码,若待解码串的长度小于或等于第二阈值,则确定对第一标识解码。或者,若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待解码串的长度大于第二阈值,则确定不对第一标识解码,否则,则确定对第一标识解码。
[0337]
可选地,还包括选择模块2030,用于根据属性信息,选择上下文模型。
[0338]
可选地,选择模块2030具体用于:若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,则选择第一上下文模型,若待解码串的终点的纵坐标与起点的纵坐标的差值小于或等于第一阈值,则选择第二上下文模型。或者,若待解码串的长度大于第二阈值,则选择第一上下文模型,若待解码串的长度小于或等于第二阈值,则选择第二上下文模型。或者,若待解码串的终点的纵坐标与起点的纵坐标的差值大于第一阈值,且待解码串的长度大于第二阈值,则选择第一上下文模型,否则,选择第二上下文模型。
[0339]
可选地,若待解码串的预测模式的扫描方向为水平扫描方向,则预设串矢量是待解码串的上方参考串与待解码串之间的串矢量。若待解码串的预测模式的扫描方向为竖直扫描方向,则预设串矢量是待解码串的左侧参考串与待解码串之间的串矢量。
[0340]
可选地,解析模块2020具体用于:若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值小于或等于第三阈值,则解析码流,以得到第一串矢量。或者,若预设条件是待解码串的长度小于或等于第四阈值,则解析码流,以得到第一串矢量。
[0341]
可选地,解析模块2020具体用于:解析码流,以得到第一串矢量解析后的纵坐标和横坐标。若解析后的纵坐标大于0,则对解析后的横坐标减去第一偏移值,以得到第一串矢量的横坐标。或者,若解析后的横坐标大于0,则对解析后的纵坐标减去第二偏移值,以得到第一串矢量的纵坐标。
[0342]
可选地,若采用水平往返扫描方式进行解码,且待解码串的起点在偶数行,则第一偏移值为第一数值与待解码串所在的解码单元的宽度的最小值,第一数值为起点的横坐标与待解码串的长度之和。或者,若采用水平往返扫描方式进行解码,且待解码串的起点在奇数行,则第一偏移值为起点的横坐标与1之和。或者,若采用水平往返扫描方式进行解码,且待解码串的终点的纵坐标大于第二数值,则第一偏移值为待解码串所在的解码单元的宽度,第二数值为待解码串的起点的纵坐标与1之和。或者,若采用水平往返扫描方式进行解码,且待解码串的起点在奇数行,待解码串的终点的纵坐标等于第二数值,终点的横坐标大于起点的横坐标,则第一偏移值为终点的横坐标与1之和。
[0343]
可选地,若采用水平往返扫描方式进行解码,且待解码串的终点在偶数行,终点的横坐标与第一串矢量的横坐标之和大于或等于待解码串所在的解码单元的宽度,则第二偏移值等于终点的纵坐标与1之和。或者,若采用水平往返扫描方式进行编码,且待解码串的终点在偶数行,终点的横坐标与第一串矢量的横坐标之和小于待解码串所在的解码单元的宽度,则第二偏移值等于0;或者,若采用水平往返扫描方式进行解码,且第三数值大于或等于待解码串所在的解码单元的宽度,则第二偏移值等于终点的纵坐标与1之和。其中,第三数值为终点的横坐标加上待解码串的长度、第一串矢量的横坐标,再减1。
[0344]
可选地,解析模块2020具体用于:若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。或者,若预设条件是待解码串的长度大于第四阈值,则解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。或者,若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待解码串的长度大于第四阈值,则解析码流,以获取第一串矢量与第一串矢量的预测信息之间的残差信息和预测信息在第二位移矢量预测列表中的索引,根据残差信息和索引得到第一串矢量。
[0345]
可选地,解析模块2020具体用于:若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,则解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。或者,若预设条件是待解码串的长度大于第四阈值,则解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表中的索引得到第一串矢量。若预设条件是待解码串的终点的纵坐标与起点的纵坐标的差值大于第三阈值,且待解码串的长度大于第四阈值,则解析码流,以得到第一串矢量与预测信息之间的距离偏移值的索引、方向偏移的索引以及预测信息在第二位移矢量预测列表中的索引,根据距离偏移值的索引、方向偏移的索引和预测信息在第二位移矢量预测列表
中的索引得到第一串矢量。
[0346]
应理解的是,装置实施例与方法实施例可以相互对应,类似的描述可以参照方法实施例。为避免重复,此处不再赘述。具体地,图20所示的解码设备可以执行上述解码端对应的方法实施例,并且解码设备中的各个模块的前述和其它操作和/或功能分别为了实现上述解码端对应的方法实施例的相应流程,为了简洁,在此不再赘述。
[0347]
上文中结合附图从功能模块的角度描述了本技术实施例的解码设备。应理解,该功能模块可以通过硬件形式实现,也可以通过软件形式的指令实现,还可以通过硬件和软件模块组合实现。具体地,本技术实施例中的方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路和/或软件形式的指令完成,结合本技术实施例公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。可选地,软件模块可以位于随机存储器,闪存、只读存储器、可编程只读存储器、电可擦写可编程存储器、寄存器等本领域的成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法实施例中的步骤。
[0348]
本技术还提供一种编码设备,该设备可以用于执行上述编码端对应的方法实施例,其中该设备可以是编码器、或者用于进行串矢量编码的设备,如台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、智能电话等手持机、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机,或其类似者等其他串矢量编码设备。若是进行串矢量编码的设备,该设备可以包括编码器、显示器以及存储器等,该编码器主要用于执行编码端对应的方法实施例。
[0349]
本技术还提供一种解码设备,该设备可以用于执行上述解码端对应的方法实施例,其中该设备可以是解码器、或者用于进行串矢量解码的设备,如台式计算机、移动计算装置、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、智能电话等手持机、电视、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机,或其类似者等其他串矢量解码设备。若是进行串矢量解码的设备,该设备可以包括解码器、显示器以及存储器等,该解码器主要用于执行解码端对应的方法实施例。
[0350]
在本技术的一些实施例中,该存储器包括但不限于:
[0351]
易失性存储器和/或非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synch link dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0352]
在本技术的一些实施例中,该计算机程序可以被分割成一个或多个模块,该一个或者多个模块被存储在该存储器中,并由该处理器执行,以完成本技术提供的方法。该一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述该计
算机程序在图像处理设备中的执行过程。
[0353]
本技术还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被计算机执行时使得该计算机能够执行上述方法实施例的方法。或者说,本技术实施例还提供一种包含指令的计算机程序产品,该指令被计算机执行时使得计算机执行上述方法实施例的方法。
[0354]
当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本技术实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,dvd))、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0355]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0356]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0357]
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。例如,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0358]
以上该,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以该权利要求的保护范围为准。
再多了解一些

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

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

相关文献