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

文档序号:24123278发布日期:2021-03-02 12:23阅读:123来源:国知局
视频解码方法、编码方法、装置、设备及存储介质与流程

[0001]
本申请涉及视频处理领域,特别涉及一种视频解码方法、编码方法、装置、设备及存储介质。


背景技术:

[0002]
在对视频进行编码的过程中,针对当前编码块,可以在已编码的区域中确定当前编码块对应的参考块,根据当前编码块与参考块之间的块矢量(block vector,bv)对当前块进行编码,该编码方式可以应用于帧间编码过程中,也可以应用于帧内块复制过程中。
[0003]
相关技术中,提供了一种基于历史的块矢量预测(history based block vector prediction,hbvp)方法,在该方法中,可以在已编码的区域中根据编码顺序确定出n个编码块以及这n个编码块对应的n个矢量,每个编码块对应的矢量包括帧间编码的运动矢量或帧内块复制的块矢量。然后,根据这n个矢量生成hbvp列表,该hbvp列表中的n个矢量按照对应编码块的编码顺序排列,每个矢量对应一个索引值,且按照编码顺序排列在越后面的矢量对应的索引值越大。在对当前编码块进行编码时,可以从hbvp列表中的n个矢量块中确定出当前块对应的预测矢量,根据该预测矢量的索引值对当前编码块进行编码,预测矢量用于定位当前块的参考块。
[0004]
而由于预测矢量为n个矢量中确定得到的矢量,预测矢量的索引值为n个矢量对应的索引值中的其中一个,且该n个矢量是按照对应编码块的编码顺序进行排列的,当预测矢量属于编码顺序中的后序时,预测矢量的索引值通常较大,从而导致视频的编码效率较低。


技术实现要素:

[0005]
本申请提供了一种视频解码方法、编码方法、装置、设备及存储介质,可以解决相关技术中存在的n个矢量是按照对应编码块的编码顺序进行排列的,当预测矢量属于编码顺序中的后序时,预测矢量的索引值通常较大,从而导致视频的编码效率较低的问题。所述技术方案如下:
[0006]
一方面,提供了一种视频解码方法,所述方法包括:
[0007]
获取当前解码块的n个候选矢量,所述候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数;
[0008]
确定所述n个矢量中每个矢量对应的解码块与所述当前解码块之间的距离;
[0009]
从所述n个候选矢量中,获取按照对应的解码块与所述当前解码块之间的距离顺序排列的k个候选矢量,所述k个候选矢量对应的索引值与所述所述k个候选矢量的排列顺序呈正相关,0<k≤n;
[0010]
对所述当前解码块的编码内容进行解码,得到所述当前解码块对应的索引值;
[0011]
从顺序排列的所述k个候选矢量中确定所述当前解码块的所述索引值对应的预测矢量;
[0012]
结合所述预测矢量得到所述当前解码块的解码结果。
[0013]
另一方面,提供了一种视频编码方法,所述方法包括:
[0014]
获取当前编码块的n个候选矢量,所述候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数;
[0015]
确定所述n个矢量中每个矢量对应的编码块与所述当前编码块之间的距离;
[0016]
从所述n个候选矢量中,获取按照对应的编码块与所述当前编码块之间的距离顺序排列的k个候选矢量,所述k个候选矢量对应的索引值与所述所述k个候选矢量的排列顺序呈正相关,0<k≤n;
[0017]
从顺序排列的所述k个候选矢量中确定所述当前编码块的预测矢量;
[0018]
结合所述预测矢量对应的索引值,对所述当前编码块进行编码。
[0019]
另一方面,提供了一种视频解码装置,其特征在于,所述装置包括:
[0020]
第一获取模块,用于获取当前解码块的n个候选矢量,所述候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数;
[0021]
第一确定模块,用于确定所述n个矢量中每个矢量对应的解码块与所述当前解码块之间的距离;
[0022]
第二获取模块,用于从所述n个候选矢量中,获取按照对应的解码块与所述当前解码块之间的距离顺序排列的k个候选矢量,所述k个候选矢量对应的索引值与所述所述k个候选矢量的排列顺序呈正相关,0<k≤n;
[0023]
解码模块,用于对所述当前解码块的编码内容进行解码,得到所述当前解码块对应的索引值;
[0024]
第二确定模块,用于从顺序排列的所述k个候选矢量中确定所述当前解码块的所述索引值对应的预测矢量,结合所述预测矢量得到所述当前解码块的解码结果。
[0025]
另一方面,提供了视频编码装置,其特征在于,所述装置包括:
[0026]
第一获取模块,用于获取当前解码块的n个候选矢量,所述候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数;
[0027]
第一确定模块,用于确定所述n个矢量中每个矢量对应的解码块与所述当前解码块之间的距离;
[0028]
第二获取模块,用于从所述n个候选矢量中,获取按照对应的解码块与所述当前解码块之间的距离顺序排列的k个候选矢量,所述k个候选矢量对应的索引值与所述所述k个候选矢量的排列顺序呈正相关,0<k≤n;
[0029]
第二确定模块,用于从顺序排列的所述k个候选矢量中确定所述当前编码块的预测矢量;
[0030]
编码模块,用于结合所述预测矢量对应的索引值,对所述当前编码块进行编码。
[0031]
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述视频解码方法或上述视频编码方法。
[0032]
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述视频解码方法或上述视频编码方法。
[0033]
另一方面,提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述本申请实施例中提供的视频编码方法或解码方法。
[0034]
本申请提供的技术方案至少可以带来以下有益效果:
[0035]
通过在解码过程中,按照对应的解码块与当前解码块之间的距离对候选矢量进行排序,然后从按照距离排列的候选矢量中确定当前解码块的预测矢量,由于候选矢量是按照与当前解码块之间的距离进行排列,结合解码块的空间相关性,当前编码块的预测矢量位于该顺序排列的候选矢量前序的可能相对较大,则该预测矢量对应的索引值也较小,从而提高了视频的解码效率。
附图说明
[0036]
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]
图1是本申请一个示例性实施例提供的对当前块进行编码的示意图;
[0038]
图2是本申请一个示例性实施例提供的通信系统的结构框图;
[0039]
图3是本申请一个示例性实施例提供的视频编码器和视频解码器在流式传输环境中的放置方式;
[0040]
图4是本申请一个示例性实施例提供的视频编码方法的流程图;
[0041]
图5是本申请一个示例性实施例提供的视频解码方法的流程图;
[0042]
图6是本申请另一个示例性实施例提供的视频编、解码方法的流程图;
[0043]
图7是本申请一个示例性实施例提供的视频解码装置的结构框图;
[0044]
图8是本申请一个示例性实施例提供的视频编码装置的结构框图;
[0045]
图9是本申请一个示例性的实施例提供的计算机设备的结构框图。
具体实施方式
[0046]
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0047]
h.265/hevc(itu-t h.265建议书,“高效视频编解码(high efficiency video coding)”,2016年12月)中描述了各种运动矢量(motion vector,mv)预测机制。在h.265提供的多种mv预测机制中,本申请描述的是下文称作“空间合并”的技术。
[0048]
请参考图1,当前块(101)包括在运动搜索过程期间已由编码器发现的样本,根据已产生空间偏移的相同大小的先前块,可预测该样本。另外,可从一个或多个参考图片相关联的元数据中导出mv,而非对mv直接编码。例如,使用关联于a0、a1和b0、b1、b2(分别对应102到106)五个周围样本中的任一样本的mv,(按解码次序)从最近的参考图片的元数据中导出mv。在h.265中,mv预测可使用相邻块也正在使用的相同参考图片的预测值。
[0049]
图2是根据本申请公开的实施例的通信系统(200)的简化框图。通信系统(200)包括多个终端装置,所述终端装置可通过例如网络(250)彼此通信。举例来说,通信系统(200)包括通过网络(250)互连的第一终端装置(210)和第二终端装置(220)。在图2的实施例中,
第一终端装置(210)和第二终端装置(220)执行单向数据传输。举例来说,第一终端装置(210)可对视频数据(例如由终端装置(210)采集的视频图片流)进行编码以通过网络(250)传输到第二端装置(220)。已编码的视频数据以一个或多个已编码视频码流形式传输。第二终端装置(220)可从网络(250)接收已编码视频数据,对已编码视频数据进行解码以恢复视频数据,并根据恢复的视频数据显示视频图片。单向数据传输在媒体服务等应用中是较常见的。
[0050]
在另一实施例中,通信系统(200)包括执行已编码视频数据的双向传输的第三终端装置(230)和第四终端装置(240),所述双向传输可例如在视频会议期间发生。对于双向数据传输,第三终端装置(230)和第四终端装置(240)中的每个终端装置可对视频数据(例如由终端装置采集的视频图片流)进行编码,以通过网络(250)传输到第三终端装置(230)和第四终端装置(240)中的另一终端装置。第三终端装置(230)和第四终端装置(240)中的每个终端装置还可接收由第三终端装置(230)和第四终端装置(240)中的另一终端装置传输的已编码视频数据,且可对所述已编码视频数据进行解码以恢复视频数据,且可根据恢复的视频数据在可访问的显示装置上显示视频图片。
[0051]
在图2的实施例中,第一终端装置(210)、第二终端装置(220)、第三终端装置(230)和第四终端装置(240)可为服务器、个人计算机和智能电话,但本申请公开的原理可不限于此。本申请公开的实施例适用于膝上型计算机、平板电脑、媒体播放器和/或专用视频会议设备。网络(250)表示在第一终端装置(210)、第二终端装置(220)、第三终端装置(230)和第四终端装置(240)之间传送已编码视频数据的任何数目的网络,包括例如有线(连线的)和/或无线通信网络。通信网络(250)可在电路交换和/或分组交换信道中交换数据。该网络可包括电信网络、局域网、广域网和/或互联网。出于本申请的目的,除非在下文中有所解释,否则网络(250)的架构和拓扑对于本申请公开的操作来说可能是无关紧要的。
[0052]
作为实施例,图3示出视频编码器和视频解码器在流式传输环境中的放置方式。本申请所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字tv、在包括cd、dvd、存储棒等的数字介质上存储压缩视频等等。
[0053]
流式传输系统可包括采集子系统(313),所述采集子系统可包括数码相机等视频源(301),所述视频源创建未压缩的视频图片流(302)。在实施例中,视频图片流(302)包括由数码相机拍摄的样本。相较于已编码的视频数据(304)(或已编码的视频码流),视频图片流(302)被描绘为粗线以强调高数据量的视频图片流,视频图片流(302)可由电子装置(320)处理,所述电子装置(320)包括耦接到视频源(301)的视频编码器(303)。视频编码器(303)可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于视频图片流(302),已编码的视频数据(304)(或已编码的视频码流(304))被描绘为细线以强调较低数据量的已编码的视频数据(304)(或已编码的视频码流(304)),其可存储在流式传输服务器(305)上以供将来使用。一个或多个流式传输客户端子系统,例如图3中的客户端子系统(306)和客户端子系统(308),可访问流式传输服务器(305)以检索已编码的视频数据(304)的副本(307)和副本(309)。客户端子系统(306)可包括例如电子装置(330)中的视频解码器(310)。视频解码器(310)对已编码的视频数据的传入副本(307)进行解码,且产生可在显示器(312)(例如显示屏)或另一呈现装置(未描绘)上呈现的输出视频图片流(311)。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码的视频数
据(304)、视频数据(307)和视频数据(309)(例如视频码流)进行编码。该些标准的实施例包括itu-t h.265。在实施例中,正在开发的视频编码标准非正式地称为下一代视频编码(versatile video coding,vvc),本申请可用于vvc标准的上下文中。
[0054]
应注意,电子装置(320)和电子装置(330)可包括其它组件(未示出)。举例来说,电子装置(320)可包括视频解码器(未示出),且电子装置(330)还可包括视频编码器(未示出)。
[0055]
在对视频进行编码过程中,提供了一种基于历史的块矢量预测(history based motion vector prediction,hbvp)方法,在对当前编码块进行编码的过程中,首先顺序获取该当前编码块之前已编码的n个编码块的矢量作为n个候选矢量,并根据编码顺序生成包含该n个候选矢量的hbvp列表,其中,hbvp列表中的每个候选矢量对应一个索引值,且排列顺序与索引值的大小呈正相关,也即排列在越后方的候选矢量对应的索引值越大。示意性的,该列表中包括按照编码顺序排列的bv1、bv2以及bv3,其中,bv1的索引值为1,bv2的索引值为01,bv3的索引值为001。
[0056]
在对当前编码块进行编码的过程中,首先从该hbvp列表中确定该当前编码块的目标矢量或块矢量预测(block vector prediction,bvp)。当从hbvp列表中确定目标矢量后,确定该目标矢量的索引值,并对该索引值进行编码(当默认使用hbvp列表中的第一个矢量作为目标矢量的情况,也可以不对该索引值进行编码);当从hbvp中确定bvp时,确定矢量与bvp之间的块矢量差值(block vector difference,bvd),并对该bvp的索引值(当默认使用hbvp中的第一个作为bvp的情况,也可以不对该bvp的索引值进行编码)以及该bvd进行编码。
[0057]
然而,由于hbvp列表中的候选矢量是根据对应编码块的编码顺序进行排列的,故当前编码块所对应的矢量可能位于该列表的前序位置,也可能位于该列表的后序位置,而当该矢量位于列表的后序位置时,该矢量的索引值较大,从而导致视频的编码效率较低。
[0058]
本申请实施例中,提供了一种视频编码方法,该视频编码方法可以应用于帧间编码过程中,也可以应用于帧内块复制过程中,还可以应用于其他基于块的运动补偿技术中。针对下文中提及的“候选矢量”和“预测矢量”,对于帧间编码过程,候选矢量是指候选运动矢量,预测矢量是指预测运动矢量,预测运动矢量是多个候选运动矢量中的一个;对于帧内块复制过程,候选矢量是指候选块矢量,预测矢量是指预测块矢量。也即,下文中的矢量是指运动矢量或块矢量,在帧间编码过程,被理解为运动矢量;在帧内块复制过程,被理解为块矢量。
[0059]
图4是本申请一个示例性实施例提供的视频编码方法的流程图,以该方法应用于编码端为例进行说明,如图4所示,该方法包括:
[0060]
步骤401:获取当前编码块的n个候选矢量,候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数。
[0061]
其中,该n个候选矢量与n个编码块一一对应,为该n个编码块的矢量。
[0062]
可选地,该n个候选矢量包括该当前编码块之前已编码编码块的矢量,也可以包括该当前编码块在空间上的临近编码块的矢量,还可以既包括当前编码块之前已编码编码块的矢量,又包括当前编码块在空间上的临近编码块的矢量,针对上述三种情况分别进行说明:
[0063]
第一,根据编码顺序获取当前编码块之前的n个已编码编码块的矢量作为n个候选矢量。
[0064]
可选地,以帧间编码过程为例进行说明,该n个已编码编码块为当前编码块所在图像帧之前已编码图像帧中的编码块。可选地,已编码编码块为时域上与当前编码块对应的编码块,示意性的,当前图像帧为一组图像帧中的第5帧,当前编码块为该当前图像帧中位于目标区域中的编码块,以n为3为例进行说明,对第1帧图像帧进行直接编码,获取第2帧位于目标区域中的已编码编码块的矢量、第3帧位于目标区域中的已编码编码块的矢量以及第4帧位于目标区域中的已编码编码块的矢量作为候选运动矢量。
[0065]
可选地,以帧内块复制技术为例进行说明,该n个已编码编码块为当前编码块所在图像帧中当前编码块之前已编码的编码块。示例的,当前编码块为当前图像帧中按照编码顺序编码的第5个编码块,则可以获取当前编码块之前已编码的4个编码块的矢量作为候选矢量。
[0066]
可选地,获取n个已编码编码块的矢量时,每获取一个新的已编码编码块的矢量时,可以与已有的已编码编码块的矢量进行冗余检查,也可以不进行冗余检查。
[0067]
第二、获取当前编码块的n个临近样点的矢量作为该n个候选矢量,该临近样点包括临近像素点和临近编码块中的至少一种。
[0068]
可选地,该n个临近样点为当前编码块在空间上临近的样点,可选地,该临近样点为与当前编码块在同一帧图像帧中且位于该当前编码块周侧的像素点或编码块。可选地,该n个临近样点所采用的的编码预测方式与当前编码块一致,如:该n个临近样点以及当前编码块皆采用帧间预测方式进行帧间编码。
[0069]
第三、根据编码顺序获取所述当前编码块之前的p个已编码编码块的矢量,以及获取当前编码块的q个临近样点的矢量,将p个已编码编码块的矢量和q个临近样点的矢量作为n个候选矢量,其中,n为p与q之和,且p、q皆为正整数。
[0070]
可选地,p和q可以是预先设定的参数,也可以是编码器中默认规定的,其中,当该p和q是预先设定的时,p和q可以在图像、条带或者序列等高层语法中进行设定。
[0071]
可选地,获取当前编码块的n个候选矢量之后,可以基于这n个候选矢量生成hbvp列表,hbvp列表中的n个矢量按照对应编码块的编码顺序排列,每个矢量对应一个索引值,且按照编码顺序排列在越后面的矢量对应的索引值越大。
[0072]
可选地,还可以获取当前编码块的n个候选矢量中每个候选矢量对应的位置信息,基于这n个候选矢量和对应的位置信息生成hbvp列表。
[0073]
步骤402:确定n个候选矢量中每个候选矢量对应的编码块与当前编码块之间的距离。
[0074]
可选地,根据每个候选矢量对应的编码块的位置,以及当前编码块的位置,确定每个候选矢量对应的编码块与当前编码块之间的距离。
[0075]
可选地,对应的编码块与当前编码块之间的距离越近,与当前编码块的空间相关性越高,该候选矢量被选中为当前编码的预测矢量的可能性越大。
[0076]
步骤403:从n个候选矢量中,获取按照对应的编码块与当前编码块之间的距离顺序排列的k个候选矢量,该k个候选矢量对应的索引值与所述k个候选矢量的排列顺序呈正相关,0<k≤n。
[0077]
可选地,k个候选矢量按照对应的编码块与当前编码块之间的距离从小到大的顺序排列。候选矢量在该顺序排列的候选矢量中的排列位置越靠前,则该候选矢量所对应的索引值越小。
[0078]
可选地,顺序排列的候选矢量可以采用列表的形式进行存储。
[0079]
可选地,可以对n个候选矢量按照距离进行排序,得到顺序排列的k个候选矢量,也可以对n个候选矢量按照距离分组,得到顺序排列的m组候选矢量,也可以先对n个候选矢量按照距离进行排序,再从排序后的n个候选矢量中筛选出排序在前的k个候选矢量,分别针对这三种情况进行说明:
[0080]
第一、距离排序
[0081]
可选地,按照对应的编码块与当前编码块之间的距离,对n个候选矢量进行排序,将排序结果作为顺序排列的k个候选矢量,k=n。
[0082]
可选地,按照对应的编码块与当前编码块之间的距离从小到大的顺序,对n个候选矢量进行排序。
[0083]
可选地,对于n个候选矢量中的任意两个矢量,若该任意两个矢量对应的编码块与当前编码块之间的距离相等,则将该任意两个矢量中对应的编码块按照解码顺序排列最靠近当前编码块的矢量排序在前,将另一矢量排序在后。也即是,若距离相同,则编码顺序更靠近当前编码块的编码块的矢量具有更高的优先级。
[0084]
第二、分组排序
[0085]
可选地,按照对应的编码块与当前编码块之间的距离,对n个候选矢量进行分组,得到顺序排列的m组候选矢量,将顺序排列的m组候选矢量作为顺序排列的所述k个候选矢量,1<m<n。其中,每组候选矢量对应的编码块与当前编码块之间的距离处于同一距离区间内,顺序排列的m组候选矢量对应于不同的距离区间。
[0086]
可选地,顺序排列的m组候选矢量所对应的的距离区间递减,即m组候选矢量按照对应的距离区间从小到大的顺序进行排序。
[0087]
可选地,可以获取m-1个阈值,通过将n个候选矢量对应的编码块与当前编码块的距离与该m-1个阈值进行比较,将n个候选矢量划分成m组候选矢量。
[0088]
比如,这m-1个阈值的大小依次递增,即按照从小到大的顺序进行排列。对于这n个候选矢量,若某个候选矢量对应的编码块与当前编码块之间的距离小于第一个阈值,则将该候选矢量归入第一组候选矢量,若某个候选矢量对应的编码块与当前编码块之间的距离大于或等于第一个阈值且小于第二个阈值,则将该候选矢量归入第一组候选矢量,若某个候选矢量对应的编码块与当前编码块之间的距离大于或等于第m-2个阈值且小于第m-1个阈值,则将该候选矢量归入第m-1组候选矢量,若某个候选矢量对应的编码块与当前编码块之间的距离大于或等于第m个阈值,则将该候选矢量归入第m组候选矢量。
[0089]
可选地,该m-1个阈值可以是预先设定的固定参数,也可以是编码器中默认规定的,其中,当该m-1个阈值是预先设定的固定参数时,该m-1个阈值可以在lcu、slice或者序列头中设定这m-1个阈值。
[0090]
可选地,该m-1个阈值还可以不是固定参数,而是通过自适应的方法计算得到,比如,该m-1个阈值可以为候选矢量的列表的中位数或平均值等。
[0091]
可选地,每组候选矢量可以按照对应的编码块的编码顺序进行排序,或者,每组候
选矢量按照对应的编码块按照对应的编码块的尺寸进行排序,当然,每组候选矢量也可以按照其他方式进行排序,本申请实施例对此不做限定。
[0092]
第三、排序筛选
[0093]
按照对应的编码块与当前编码块之间的距离,对n个候选矢量进行排序,从排序结果中选择排序在前的k个候选矢量,得到顺序排列的k个候选矢量,0<k<n。
[0094]
可选地,按照对应的编码块与当前编码块之间的距离从小到大的顺序,对n个候选矢量进行排序。
[0095]
可选地,k可以是预先设定的参数,也可以是编码器中默认规定的。其中,当k是预先设定的时,k可以在图像、条带或者序列等高层语法中进行设定。k为正整数,示例的,k为2、3或4等。
[0096]
在一个示例中,对hbvp中的候选矢量按照对应的编码块与当前编码块之间的距离进行排序,并导出排序在前的k个候选矢量,根据排序在前的k个候选矢量生成预测矢量列表。可选地,对hbvp中的候选矢量按照对应的编码块与当前编码块之间的距离从小到大的顺序进行排序。
[0097]
可选地,本申请实施例可以为avs3中的帧间预测模式或帧内块复制模式提供预测矢量,或者,为h.265/hevc中的帧间预测模式或帧内块复制模式提供预测矢量。
[0098]
步骤404:从顺序排列的k个候选矢量中确定当前编码块的预测矢量。
[0099]
可选地,该预测矢量为当前编码块的目标矢量,或,该预测矢量为从顺序排列的k个候选矢量中确定的最佳预测矢量。
[0100]
步骤405:结合预测矢量对应的索引值,对当前编码块进行编码。
[0101]
可选地,当预测矢量为当前编码块的目标矢量时,根据目标矢量得到当前编码块的编码结果;当预测矢量为从顺序排列的k个候选矢量中确定的最佳预测矢量时,确定目标矢量与最佳预测矢量之间的矢量差值,根据最佳预测矢量和矢量差值得到当前编码块的编码结果。
[0102]
本申请实施例中,通过在编码过程中,按照对应的编码块与当前编码块之间的距离对候选矢量进行排序,然后从按照距离排列的候选矢量中确定当前编码块的预测矢量,由于候选矢量是按照与当前编码块之间的距离进行排列,结合编码块的空间相关性,当前编码块的预测矢量位于按距离顺序排列的候选矢量前序的可能相对较大,则该预测矢量对应的索引值也较小,有助于减少编码预测矢量索引的比特数,从而提高了视频的编码效率。
[0103]
与解码过程相对应的解码过程请参考图5,图5是本申请一个示例性实施例提供的视频解码方法的流程图,该视频解码方法可以应用于帧间解码过程中,也可以应用于帧内块复制过程中,还可以应用于其他基于块的运动补偿技术中,以该方法应用于解码端为例进行说明,如图5所示,该方法包括:
[0104]
步骤501:获取当前解码块的n个候选矢量,候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数。
[0105]
其中,该n个候选矢量与n个解码块一一对应,为该n个解码块的矢量。
[0106]
可选地,该n个候选矢量包括该当前解码块之前已解码解码块的矢量,也可以包括该当前解码块在空间上的临近解码块的矢量,还可以既包括当前解码块之前已解码解码块的矢量,又包括当前解码块在空间上的临近解码样点的矢量,针对上述三种情况分别进行
说明:
[0107]
第一、根据解码顺序获取当前解码块之前的n个已解码解码块的矢量作为n个候选矢量。
[0108]
可选地,以帧间解码过程为例进行说明,该n个已解码解码块为当前解码块所在图像帧之前已解码图像帧中的解码块。可选地,已解码解码块为时域上与当前解码块对应的解码块,示意性的,当前图像帧为一组图像帧中的第5帧,当前解码块为该当前图像帧中位于目标区域中的解码块,以n为3为例进行说明,对第1帧图像帧进行直接解码,获取第2帧位于目标区域中的已解码解码块的矢量、第3帧位于目标区域中的已解码解码块的矢量以及第4帧位于目标区域中的已解码解码块的矢量作为候选运动矢量。
[0109]
可选地,以帧内块复制技术为例进行说明,该n个已解码解码块为当前解码块所在图像帧中当前解码块之前已解码的解码块。示例的,当前解码块为当前图像帧中按照解码顺序解码的第5个解码块,则可以获取当前解码块之前已解码的4个解码块的矢量作为候选矢量。
[0110]
可选地,获取n个已解码解码块的矢量时,每获取一个新的已解码解码块的矢量时,可以与已有的已解码解码块的矢量进行冗余检查,也可以不进行冗余检查。
[0111]
第二、获取当前解码块的n个临近样点的矢量作为该n个候选矢量,该临近样点包括临近像素点和临近编码块中的至少一种。
[0112]
可选地,该n个临近样点为当前解码块在空间上临近的样点,可选地,该临近样点为与当前解码块在同一帧图像帧中且位于该当前解码块周侧的像素点或解码块。可选地,该n个临近样点所采用的的解码预测方式与当前解码块一致,如:该n个临近样点以及当前解码块皆采用帧间预测方式进行帧间解码。
[0113]
第三、根据解码顺序获取所述当前解码块之前的p个已解码解码块的矢量,以及获取当前解码块的q个临近样点的矢量,将p个已解码解码块的矢量和q个临近样点的矢量作为n个候选矢量,其中,n为p与q之和,且p、q皆为正整数。
[0114]
可选地,p和q可以是预先设定的参数,也可以是解码器中默认规定的,其中,当该p和q是预先设定的时,p和q可以在图像、条带或者序列等高层语法中进行设定。
[0115]
可选地,获取当前解码块的n个候选矢量之后,可以基于这n个候选矢量生成hbvp列表,hbvp列表中的n个矢量按照对应解码块的解码顺序排列,每个矢量对应一个索引值,且按照解码顺序排列在越后面的矢量对应的索引值越大。
[0116]
可选地,还可以获取当前解码块的n个候选矢量中每个候选矢量对应的位置信息,基于这n个候选矢量和对应的位置信息生成hbvp列表。
[0117]
步骤502:确定n个矢量中每个矢量对应的解码块与当前解码块之间的距离。
[0118]
可选地,根据每个候选矢量对应的解码块的位置,以及当前解码块的位置,确定每个候选矢量对应的解码块与当前解码块之间的距离。
[0119]
可选地,对应的解码块与当前解码块之间的距离越近,与当前解码块的空间相关性越高,该候选矢量被选中为当前解码的预测矢量的可能性越大。
[0120]
步骤503:从n个候选矢量中,获取按照对应的解码块与当前解码块之间的距离顺序排列的k个候选矢量,该k个候选矢量对应的索引值与所述k个候选矢量的排列顺序呈正相关,0<k≤n。
[0121]
可选地,k个候选矢量按照对应的解码块与当前解码块之间的距离从小到大的顺序排列。可选地,候选矢量在该顺序排列的候选矢量中的排列位置越靠前,则该候选矢量所对应的索引值越小。
[0122]
可选地,顺序排列的候选矢量可以采用列表的形式进行存储。
[0123]
可选地,可以对n个候选矢量按照距离进行排序,得到顺序排列的k个候选矢量,也可以对n个候选矢量按照距离分组,得到顺序排列的m组候选矢量,也可以先对n个候选矢量按照距离进行排序,再从排序后的n个候选矢量中筛选出排序在前的k个候选矢量,分别针对这三种情况进行说明:
[0124]
第一、距离排序
[0125]
可选地,按照对应的解码块与当前解码块之间的距离,对n个候选矢量进行排序,将排序结果作为顺序排列的k个候选矢量,k=n。
[0126]
可选地,按照对应的解码块与当前解码块之间的距离从小到大的顺序,对n个候选矢量进行排序。
[0127]
可选地,对于n个候选矢量中的任意两个矢量,若该任意两个矢量对应的解码块与当前解码块之间的距离相等,则将该任意两个矢量中对应的解码块按照解码顺序排列最靠近当前解码块的矢量排序在前,将另一矢量排序在后。也即是,若距离相同,则解码顺序更靠近当前解码块的解码块的矢量具有更高的优先级。
[0128]
第二、分组排序
[0129]
可选地,按照对应的解码块与当前解码块之间的距离,对n个候选矢量进行分组,得到顺序排列的m组候选矢量,将顺序排列的m组候选矢量作为顺序排列的所述k个候选矢量,1<m<n。其中,每组候选矢量对应的解码块与当前解码块之间的距离处于同一距离区间内,顺序排列的m组候选矢量对应于不同的距离区间。
[0130]
可选地,顺序排列的m组候选矢量所对应的的距离区间递减,即m组候选矢量按照对应的距离区间从小到大的顺序进行排序。
[0131]
可选地,可以获取m-1个阈值,通过将n个候选矢量对应的编码块与当前编码块的距离与该m-1个阈值进行比较,将n个候选矢量划分成m组候选矢量。
[0132]
比如,这m-1个阈值的大小依次递增,即按照从小到大的顺序进行排列。对于这n个候选矢量,若某个候选矢量对应的解码块与当前解码块之间的距离小于第一个阈值,则将该候选矢量归入第一组候选矢量,若某个候选矢量对应的解码块与当前解码块之间的距离大于或等于第一个阈值且小于第二个阈值,则将该候选矢量归入第一组候选矢量,若某个候选矢量对应的解码块与当前解码块之间的距离大于或等于第m-2个阈值且小于第m-1个阈值,则将该候选矢量归入第m-1组候选矢量,若某个候选矢量对应的解码块与当前解码块之间的距离大于或等于第m个阈值,则将该候选矢量归入第m组候选矢量。
[0133]
可选地,该m-1个阈值可以是预先设定的固定参数,也可以是编码器中默认规定的,其中,当该m-1个阈值是预先设定的固定参数时,该m-1个阈值可以在lcu、slice或者序列头中设定这m-1个阈值。
[0134]
可选地,该m-1个阈值还可以不是固定参数,而是通过自适应的方法计算得到,比如,该m-1个阈值可以为候选矢量的列表的中位数或平均值等。
[0135]
可选地,每组候选矢量可以按照对应的解码块的解码顺序进行排序,或者,每组候
选矢量按照对应的解码块按照对应的解码块的尺寸进行排序,当然,每组候选矢量也可以按照其他方式进行排序,本申请实施例对此不做限定。
[0136]
第三、排序筛选
[0137]
按照对应的解码块与当前解码块之间的距离从小到大的顺序,对n个候选矢量进行排序,从排序结果中选择排序在前的k个候选矢量,得到顺序排列的k个候选矢量,0<k<n。
[0138]
可选地,按照对应的编码块与当前编码块之间的距离从小到大的顺序,对n个候选矢量进行排序。
[0139]
可选地,k可以是预先设定的参数,也可以是解码器中默认规定的。其中,当k是预先设定的时,k可以在图像、条带或者序列等高层语法中进行设定。k为正整数,示例的,k为2、3或4等。
[0140]
在一个示例中,对hbvp中的候选矢量按照对应的解码块与当前解码块之间的距离从小到大的顺序进行排序,并导出排序在前的k个候选矢量,根据排序在前的k个候选矢量生成预测矢量列表。可选地,对hbvp中的候选矢量按照对应的编码块与当前编码块之间的距离从小到大的顺序进行排序。
[0141]
可选地,本申请实施例可以为avs3中的帧间预测模式或帧内块复制模式提供预测矢量,或者,为h.265/hevc中的帧间预测模式或帧内块复制模式提供预测矢量。
[0142]
步骤504:对当前解码块的编码内容进行解码,得到当前解码块对应的索引值。
[0143]
步骤505:从顺序排列的k个候选矢量中确定当前解码块的该索引值对应的预测矢量。
[0144]
可选地,该预测矢量为当前解码块的目标矢量,或,该预测矢量为从顺序排列的k个候选矢量中确定的最佳预测矢量。
[0145]
步骤506:结合预测矢量得到当前解码块的解码结果。
[0146]
可选地,当预测矢量为当前解码块的目标矢量时,根据目标矢量得到当前解码块的解码结果;当预测矢量为从顺序排列的k个候选矢量中确定的最佳预测矢量时,该解码内容中还解码得到目标矢量与最佳预测矢量的矢量差值,根据最佳预测矢量和矢量差值确定得到当前解码块的目标矢量,并根据目标矢量得到解码结果。
[0147]
本申请实施例中,通过在解码过程中,按照对应的解码块与当前解码块之间的距离对候选矢量进行排序,然后从按照距离排列的候选矢量中确定当前解码块的预测矢量,由于候选矢量是按照与当前解码块之间的距离进行排列,结合解码块的空间相关性,当前编码块的预测矢量位于按距离顺序排列的候选矢量前序的可能相对较大,则该预测矢量对应的索引值也较小,从而提高了视频的解码效率。
[0148]
在一个可选的实施例中,确定每个候选矢量对应的编码块(或解码块)与当前编码块(或解码块)之间的距离时,可以获取每个候选矢量对应的编码块(或解码块)的位置信息,根据每个候选矢量对应的编码块(或解码块)的位置信息确定,上述步骤401至403或步骤501至503可以替代实现为如下步骤601至604,以解码过程为例进行说明,如图6所示:
[0149]
步骤601:获取当前解码块的n个候选矢量,候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数。
[0150]
可选地,根据解码顺序获取当前解码块之前的n个已解码解码块的矢量作为n个候
选矢量。
[0151]
可选地,获取当前解码块的n个临近样点的矢量作为该n个候选矢量,临近样点包括临近像素点和临近编码块中的至少一种。
[0152]
可选地,根据解码顺序获取所述当前解码块之前的p个已解码解码块的矢量,以及获取当前解码块的q个临近样点的矢量,将p个已解码解码块的矢量和q个临近样点的矢量作为n个候选矢量,其中,n为p与q之和,且p、q皆为正整数。
[0153]
步骤602:获取n个候选矢量中每个候选矢量对应的解码块的位置信息。
[0154]
可选地,解码块的位置信息可以包括解码块的中心位置信息、解码块的预设顶点的位置信息、以及解码块的宽度信息中的一种或多种,预设顶点包括左上角顶点、左下角顶点、右上角顶点或右下角顶点中的至少一种。
[0155]
可选地,获取每个候选矢量对应的解码块的位置信息可以包括以下几种实现方式中的至少一种:
[0156]
第一、获取每个候选矢量对应的解码块的中心位置信息。
[0157]
可选地,中心位置信息可以为中心坐标。
[0158]
第二、获取每个候选矢量对应的解码块的预设顶点的位置信息和宽高信息。
[0159]
可选地,预设顶点可以包括左上角顶点、左下角顶点、右上角顶点或右下角顶点中的一种或多种。预设顶点的位置信息可以为预设顶点的坐标。宽高信息是指解码块的高度和宽度,即宽和高的长度。
[0160]
示例的,若预设顶点为左上角顶点,则可以获取每个矢量对应的解码块的左上角顶点的位置信息,以及对应解码块的高度和宽度。若预设顶点为右下角顶点,则可以获取每个矢量对应的解码块的右下顶点的位置信息,以及对应解码块的高度和宽度。
[0161]
步骤603:根据每个候选矢量对应的解码块的位置信息,确定每个候选矢量对应的解码块与当前解码块之间的距离。
[0162]
可选地,确定每个候选矢量对应的解码块与当前解码块之间的距离的实现方式可以包括以下几种实施例:
[0163]
在一个示例中,对于n个候选矢量中的参考矢量,根据参考矢量对应的解码块的位置信息,确定参考矢量对应的解码块与当前解码块的中心距离,将确定出的中心距离作为参考矢量对应的解码块与当前解码块之间的距离,参考矢量为n个候选矢量中的任一个。
[0164]
可选地,参考矢量对应的解码块与当前解码块的中心距离可以为参考矢量对应的解码块的中心与当前解码块的中心之间的距离,也可以为参考矢量对应的解码块的中心与当前解码块的中心之间的欧式距离。
[0165]
在一个示例中,根据参考矢量对应的解码块的位置信息,确定参考解码块的第一顶点与当前解码块的第二顶点之间的距离,将参考解码块的第一顶点与当前解码块的第二顶点之间的距离作为参考矢量对应的解码块与当前解码块之间的距离。其中,第一顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点,第二顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点。
[0166]
可选地,根据参考矢量对应的解码块与当前解码块的相对位置的不同,第一顶点和第二顶点的选择方式相应不同。可选地,若参考矢量对应的解码块在当前解码块的上方,则第一顶点为左下角顶点,第二顶点为左上角顶点,或者,第一顶点为右下角顶点,第二顶
点为右上角顶点。可选地,若参考矢量对应的解码块在当前解码块的左侧,则第一顶点为右上角顶点,第二顶点为左上角顶点,或者,第一顶点为左下角顶点,第二顶点为右下角顶点。当然,第一顶点和第二顶点也可以设置为其他选择方式,本申请实施例对此不做限定。
[0167]
在一个示例中,根据参考矢量对应的解码块的位置信息,确定第一距离和第二距离中的最小值,将确定出的最小值作为参考矢量对应的解码块与当前解码块之间的距离。其中,第一距离是指参考矢量对应的解码块的第一顶点的x轴坐标值与当前解码块的第二顶点的x轴坐标值的差值的绝对值,第二距离是指参考矢量对应的解码块的第一顶点的y轴坐标值与当前解码块的第二顶点的y轴坐标值的差值的绝对值。
[0168]
例如,参考矢量对应的解码块与当前解码块之间的距离可以为min(|y2-y1||x2-x1|)。其中,(x2,y2)为参考矢量对应的解码块的第一顶点的坐标,(x1,y1)为当前解码块的第二顶点的坐标。
[0169]
在一个示例中,根据参考矢量对应的解码块的位置信息,确定第一距离和所述第二距离中的最大值,将最大值作为参考矢量对应的解码块与所当前解码块之间的距离。
[0170]
例如,参考矢量对应的解码块与当前解码块之间的距离可以为max(|y2-y1|,|x2-x1|)。其中,(x2,y2)为参考矢量对应的解码块的第一顶点的坐标,(x1,y1)为当前解码块的第二顶点的坐标。
[0171]
在一个示例中,根据参考矢量对应的解码块的位置信息,确定第三距离,将第三距离作为参考矢量对应的解码块与当前解码块之间的距离,第三距离为第一距离或第二距离。
[0172]
例如,参考矢量对应的解码块与当前解码块之间的距离可以为(|t2-t1|)。其中,t为x或y,(x2,y2)为参考矢量对应的解码块的第一顶点的坐标,(x1,y1)为当前解码块的第二顶点的坐标。。
[0173]
在一个示例中,根据参考矢量对应的解码块的位置信息,确定第一距离和第二距离的和值,将该和值作为参考矢量对应的解码块与当前解码块之间的距离。
[0174]
例如,参考矢量对应的解码块与当前解码块之间的距离可以为(|y2-y1|+|x2-x1|),(x2,y2)为参考矢量对应的解码块的第一顶点的坐标,(x1,y1)为当前解码块的第二顶点的坐标。。
[0175]
步骤604:从n个候选矢量中,获取按照对应的编码块与当前编码块之间的距离顺序排列的k个候选矢量,该k个候选矢量对应的索引值与所述k个候选矢量的排列顺序呈正相关,0<k≤n。
[0176]
可选地,k个候选矢量按照对应的编码块与当前编码块之间的距离从小到大的顺序进行排列。
[0177]
可选地,按照对应的编码块与当前编码块之间的距离,对n个候选矢量进行排序,将排序结果作为顺序排列的k个候选矢量,k=n。比如,按照对应的编码块与当前编码块之间的距离从小到大的顺序,对n个候选矢量进行排序。
[0178]
可选地,按照对应的编码块与当前解码块之间的距离,对n个候选矢量进行分组,得到顺序排列的m组候选矢量,将顺序排列的m组候选矢量作为顺序排列的所述k个候选矢量,其中,每组候选矢量对应的编码块与当前解码块之间的距离处于同一距离区间内。
[0179]
可选地,m组候选矢量按照对应的距离区间递减,即m组候选矢量按照对应的距离
区间按照从小到大的顺序进行排序,1<m<n。
[0180]
可选地,对于n个候选矢量中的任意两个矢量,若该任意两个矢量对应的编码块与当前编码块之间的距离相等,则将该任意两个矢量中对应的编码块按照解码顺序排列最靠近当前编码块的矢量排序在前,将另一矢量排序在后。也即是,若距离相同,则编码顺序更靠近当前编码块的编码块的矢量具有更高的优先级。
[0181]
可选地,按照对应的编码块与当前编码块之间的距离,对n个候选矢量进行排序,从排序结果中选择排序在前的k个候选矢量,得到顺序排列的k个候选矢量,0<k<n。比如,按照对应的编码块与当前编码块之间的距离从小到大的顺序,对n个候选矢量进行排序。
[0182]
在基于上述各个实施例的可选实施例中,针对候选矢量的列表,当检测到有横轴相对坐标和纵轴相对坐标相同的冗余矢量时,根据以下之一对候选矢量的列表进行更新:
[0183]
将冗余矢量中宽度和高度的乘积较大的一组作为新的矢量保留在列表中;
[0184]
将冗余矢量中宽度和高度的和较大的一组作为新的矢量保留在列表中;
[0185]
将冗余矢量中宽度较大的一组作为新的矢量保留在列表中;和
[0186]
将冗余矢量中高度较大的一组作为新的矢量保留在列表中。
[0187]
在一个示例性的例子中,hbvp列表保存最近编码块的块矢量bv,宽w,高h,当有新的实例加入hbvp列表,进行冗余检查。假设有按顺序以ibc模式编码的三个编码块cb1,cb2,cb3,它们对应的bv,宽高记为bvx,wx,hx,x为对应的数字。
[0188]
当前hbvp列表是bv3_w3_h3,bv2_w2_h2,bv1_w1_h1;
[0189]
当存在有新实例bv4_w4_h4时,如果bv4与bv1的横纵坐标相同,视为冗余矢量。
[0190]
hbvp列表更新为bv4_wy_hy,bv2_w2_h2,bv1_w1_h1;
[0191]
wy,hy的可能为:
[0192]
1、w4*h4中w1*h1最大的一组w,h;
[0193]
2、w+h最大的;
[0194]
3、w最大的,或h最大的对应的一组w,h;
[0195]
4、也可以w,h分别更新,w为w4,w1的最大值,h为h4,h1中最大的;
[0196]
5、上述实例中也可能为最小值;
[0197]
6、按编码顺序,wy,hy为w4,h4。
[0198]
在基于上述各个实施例中的可选实施例中,针对候选矢量的列表,当检测到有横轴相对坐标和纵轴相对坐标相同的冗余矢量时,将新的矢量保留在列表时,保持新的矢量在列表中的位置不变。
[0199]
在一个示例性的例子中,当前hbvp列表是bv3,bv2,bv1,当存在有新实例bv4,bv4和bv1为冗余向量且保留bv4时,当前hbvp列表变成bv3,bv2,bv4。
[0200]
在基于上述各个实施例中的可选实施例中,针对候选矢量的列表,当检测到有横轴相对坐标和纵轴相对坐标相同的冗余矢量时,将新的矢量保留在列表时,在新的矢量中增加冗余次数值。
[0201]
在一个示例性的例子中,当前hbvp列表是bv3_cnt0,bv2_cnt0,bv1_cnt0,当存在有新实例bv4,bv4和bv1为冗余向量且保留bv4时,当前hbvp列表变成bv3_cnt0,bv2_cnt0,bv4_cnt1。cnt1表示冗余次数为1。
[0202]
图7是本申请一个示例性实施例提供的视频解码装置700的结构框图,以该装置应
用于解码端进行说明,该装置包括:第一获取模块710、第一确定模块720、第二获取模块730、解码模块740和第二确定模块750。
[0203]
第一获取模块710,用于获取当前解码块的n个候选矢量,所述候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数;
[0204]
第一确定模块720,用于确定所述n个矢量中每个矢量对应的解码块与所述当前解码块之间的距离;
[0205]
第二获取模块730,用于从所述n个候选矢量中,获取按照对应的解码块与所述当前解码块之间的距离顺序排列的k个候选矢量,所述k个候选矢量对应的索引值与所述所述k个候选矢量的排列顺序呈正相关,0<k≤n;
[0206]
解码模块740,用于对所述当前解码块的编码内容进行解码,得到所述当前解码块对应的索引值;
[0207]
第二确定模块750,用于从顺序排列的所述k个候选矢量中确定所述当前解码块的所述索引值对应的预测矢量,结合所述预测矢量得到所述当前解码块的解码结果。
[0208]
在一个可选的实施例中,所述第一获取模块710用于:
[0209]
根据解码顺序获取所述当前解码块之前的n个已解码解码块的矢量作为所述n个候选矢量;
[0210]
或,
[0211]
获取所述当前解码块的n个临近样点的矢量作为所述n个候选矢量,临近样点包括临近像素点和临近编码块中的至少一种;
[0212]
或,
[0213]
根据所述解码顺序获取所述当前解码块之前的p个已解码解码块的矢量,以及获取所述当前解码块的q个临近样点的矢量,将所述p个已解码解码块的矢量和所述q个临近样点的矢量作为所述n个候选矢量,其中,n为p与q之和,且p、q皆为正整数。
[0214]
在一个可选的实施例中,所述第一确定模块720包括:
[0215]
获取单元,用于获取所述n个候选矢量中每个候选矢量对应的解码块的位置信息;
[0216]
确定单元,用于根据每个候选矢量对应的解码块的位置信息,确定每个候选矢量对应的解码块与所述当前解码块之间的距离。
[0217]
在一个可选的实施例中,所述
[0218]
在一个可选的实施例中,所述获取单元用于:
[0219]
获取每个候选矢量对应的解码块的中心位置信息;
[0220]
和/或,
[0221]
获取每个候选矢量对应的解码块的预设顶点的位置信息和宽高信息,所述预设顶点包括左上角顶点、左下角顶点、右上角顶点或右下角顶点中的至少一种。
[0222]
在一个可选的实施例中,所述确定单元用于:
[0223]
对于所述n个候选矢量中的参考矢量,根据所述参考矢量对应的解码块的位置信息,确定所述参考矢量对应的编码块与所述当前编码块的中心距离,将所述中心距离作为所述参考矢量对应的解码块与所述当前解码块之间的距离,所述参考矢量为所述n个候选矢量中的任一个;
[0224]
或,
[0225]
根据所述参考矢量对应的解码块的位置信息,确定所述参考解码块的第一顶点与所述当前编码块的第二顶点之间的距离,将所述参考解码块的第一顶点与所述当前编码块的第二顶点之间的距离作为所述参考矢量对应的解码块与所述当前解码块之间的距离,所述第一顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点,所述第二顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点;
[0226]
或,
[0227]
根据所述参考矢量对应的解码块的位置信息,确定第一距离和第二距离中的最小值,将所述最小值作为所述参考矢量对应的解码块与所述当前解码块之间的距离;其中,所述第一距离是指所述参考矢量对应的解码块的第一顶点的x轴坐标值与所述当前解码块的所述第二顶点的x轴坐标值的差值的绝对值,所述第二距离是指所述参考矢量对应的解码块的所述第一顶点的y轴坐标值与所述当前解码块的所述第二顶点的y轴坐标值的差值的绝对值,所述预设顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点;
[0228]
或,
[0229]
根据所参考矢量对应的解码块的位置信息,确定所述第一距离和所述第二距离中的最大值,将所述最大值作为所述参考矢量对应的解码块与所述当前解码块之间的距离;
[0230]
或,
[0231]
根据所述参考矢量对应的解码块的位置信息,确定第三距离,将所述第三距离作为所述参考矢量对应的解码块与所述当前解码块之间的距离,所述第三距离为所述第一距离或所述第二距离;
[0232]
或,
[0233]
根据所述参考矢量对应的解码块的位置信息,确定所述第一距离和所述第二距离的和值,将所述和值作为所述参考矢量对应的解码块与所述当前解码块之间的距离。
[0234]
在一个可选实施例中,第二获取模块730用于:
[0235]
按照对应的解码块与所述当前解码块之间的距离,对所述n个候选矢量进行排序,将排序结果作为顺序排列的所述k个候选矢量,k=n;
[0236]
或,
[0237]
按照对应的编码块与所述当前解码块之间的距离,对所述n个候选矢量进行分组,得到顺序排列的m组候选矢量,将顺序排列的所述m组候选矢量作为顺序排列的所述k个候选矢量,其中,每组候选矢量对应的编码块与所述当前解码块之间的距离处于同一距离区间内,1<m<n;
[0238]
或,
[0239]
按照对应的解码块与所述当前解码块之间的距离,对所述n个候选矢量进行排序,从排序结果中选择排序在前的k个候选矢量,得到顺序排列的所述k个候选矢量,0<k<n。
[0240]
在一个可选实施例中,第二获取模块730用于:
[0241]
对于所述n个候选矢量中的任意两个矢量,若所述任意两个矢量对应的解码块与所述当前解码块之间的距离相等,则将所述任意两个矢量中对应的解码块按照解码顺序排列最靠近所述当前解码块的矢量排序在前,将另一矢量排序在后。
[0242]
在一个可选实施例中,所述装置还包括:冗余检测模块,用于当检测到有横轴相对坐标和纵轴相对坐标相同的冗余矢量时,根据以下之一对候选矢量的列表进行更新:
[0243]
将所述冗余矢量中宽度和高度的乘积较大的一组作为新的矢量保留在所述列表中;
[0244]
将所述冗余矢量中所述宽度和所述高度的和较大的一组作为新的矢量保留在所述列表中;
[0245]
将所述冗余矢量中所述宽度较大的一组作为新的矢量保留在所述列表中;和
[0246]
将所述冗余矢量中所述高度较大的一组作为新的矢量保留在所述列表中。
[0247]
在一个可选实施例中,所述冗余检测模块还用于:
[0248]
将所述新的矢量保留在所述列表时,保持所述新的矢量在所述列表中的位置不变。
[0249]
在一个可选实施例中,所述冗余检测模块还用于:
[0250]
将所述新的矢量保留在列表时,在所述新的矢量中增加冗余次数值。
[0251]
综上所述,本申请实施例提供的视频解码装置,通过在解码过程中,按照对应的解码块与当前解码块之间的距离对候选矢量进行排序,然后从按照距离排列的候选矢量中确定当前解码块的预测矢量,由于候选矢量是按照与当前解码块之间的距离进行排列,结合解码块的空间相关性,当前解码块的预测矢量位于按距离顺序排列的候选矢量前序的可能相对较大,则该预测矢量对应的索引值也较小,从而提高了视频的解码效率。
[0252]
图8是本申请一个示例性实施例提供的视频编码装置800的结构框图,以该装置应用于编码端进行说明,该装置包括:第一获取模块810、第一确定模块820、第二获取模块830、第二确定模块840和编码模块850。
[0253]
第一获取模块810,用于获取当前编码的n个候选矢量,所述候选矢量包括帧间编码的运动矢量或帧内块复制的块矢量,n为正整数;
[0254]
第一确定模块820,用于确定所述n个矢量中每个矢量对应的编码块与所述当前编码块之间的距离;
[0255]
第二获取模块830,用于从所述n个候选矢量中,获取按照对应的编码块与所述当前编码块之间的距离顺序排列的k个候选矢量,所述k个候选矢量对应的索引值与所述所述k个候选矢量的排列顺序呈正相关,0<k≤n;
[0256]
第二确定模块840,用于从顺序排列的所述k个候选矢量中确定所述当前编码块的预测矢量;
[0257]
编码模块850,用于结合所述预测矢量对应的索引值,对所述当前编码块进行编码。
[0258]
在一个可选的实施例中,所述第一获取模块810用于:
[0259]
根据编码顺序获取所述当前编码块之前的n个已编码编码块的矢量作为所述n个候选矢量;
[0260]
或,
[0261]
获取所述当前编码块的n个临近样点的矢量作为所述n个候选矢量,所述临近样点包括临近像素点和临近解码块中的至少一种;
[0262]
或,
[0263]
根据所述编码顺序获取所述当前编码块之前的p个已编码编码块的矢量,以及获取所述当前编码块的q个临近样点的矢量,将所述p个已编码编码块的矢量和所述q个临近
样点的矢量作为所述n个候选矢量,其中,n为p与q之和,且p、q皆为正整数。
[0264]
在一个可选的实施例中,所述第一确定模块820包括:
[0265]
获取单元,用于获取所述n个候选矢量中每个候选矢量对应的编码块的位置信息;
[0266]
确定单元,用于根据每个候选矢量对应的编码块的位置信息,确定每个候选矢量对应的编码块与所述当前编码块之间的距离。
[0267]
在一个可选的实施例中,所述
[0268]
在一个可选的实施例中,所述获取单元用于:
[0269]
获取每个候选矢量对应的编码块的中心位置信息;
[0270]
和/或,
[0271]
获取每个候选矢量对应的编码块的预设顶点的位置信息和宽高信息,所述预设顶点包括左上角顶点、左下角顶点、右上角顶点或右下角顶点中的至少一种。
[0272]
在一个可选的实施例中,所述确定单元用于:
[0273]
对于所述n个候选矢量中的参考矢量,根据所述参考矢量对应的编码块的位置信息,确定所述参考矢量对应的编码块与所述当前编码块的中心距离,将所述中心距离作为所述参考矢量对应的编码块与所述当前编码块之间的距离,所述参考矢量为所述n个候选矢量中的任一个;
[0274]
或,
[0275]
根据所述参考矢量对应的编码块的位置信息,确定所述参考编码块的第一顶点与所述当前编码块的第二顶点之间的距离,将所述参考编码块的第一顶点与所述当前编码块的第二顶点之间的距离作为所述参考矢量对应的编码块与所述当前编码块之间的距离,所述第一顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点,所述第二顶点为左上角顶点、左下角顶点、右上角顶点或右下角顶点;
[0276]
或,
[0277]
根据所述参考矢量对应的编码块的位置信息,确定第一距离和第二距离中的最小值,将所述最小值作为所述参考矢量对应的编码块与所述当前编码块之间的距离;其中,所述第一距离是指所述参考矢量对应的编码块的所述第一顶点的x轴坐标值与所述当前编码块的所述第二顶点的x轴坐标值的差值的绝对值,所述第二距离是指所述参考矢量对应的编码块的所述第一顶点的y轴坐标值与所述当前编码块的所述第二顶点的y轴坐标值的差值的绝对值;
[0278]
或,
[0279]
根据所参考矢量对应的编码块的位置信息,确定所述第一距离和所述第二距离中的最大值,将所述最大值作为所述参考矢量对应的编码块与所述当前编码块之间的距离;
[0280]
或,
[0281]
根据所述参考矢量对应的编码块的位置信息,确定第三距离,将所述第三距离作为所述参考矢量对应的编码块与所述当前编码块之间的距离,所述第三距离为所述第一距离或所述第二距离;
[0282]
或,
[0283]
根据所述参考矢量对应的编码块的位置信息,确定所述第一距离和所述第二距离的和值,将所述和值作为所述参考矢量对应的编码块与所述当前编码块之间的距离。
[0284]
在一个可选实施例中,第二获取模块830用于:
[0285]
按照对应的编码块与所述当前编码块之间的距离,对所述n个候选矢量进行排序,将排序结果作为顺序排列的所述k个候选矢量,k=n;
[0286]
或,
[0287]
按照对应的编码块与所述当前编码块之间的距离,对所述n个候选矢量进行分组,得到顺序排列的m组候选矢量,将顺序排列的所述m组候选矢量作为顺序排列的所述k个候选矢量,其中,每组候选矢量对应的编码块与所述当前编码块之间的距离处于同一距离区间内,1<m<n;
[0288]
或,
[0289]
按照对应的编码块与所述当前编码块之间的距离,对所述n个候选矢量进行排序,从排序结果中选择排序在前的k个候选矢量,得到顺序排列的所述k个候选矢量,0<k<n。
[0290]
在一个可选实施例中,第二获取模块830用于:
[0291]
对于所述n个候选矢量中的任意两个矢量,若所述任意两个矢量对应的编码块与所述当前编码块之间的距离相等,则将所述任意两个矢量中对应的编码块按照编码顺序排列最靠近所述当前编码块的矢量排序在前,将另一矢量排序在后。
[0292]
在一个可选实施例中,所述装置还包括:冗余检测模块,用于当检测到有横轴相对坐标和纵轴相对坐标相同的冗余矢量时,根据以下之一对候选矢量的列表进行更新:
[0293]
将所述冗余矢量中宽度和高度的乘积较大的一组作为新的矢量保留在所述列表中;
[0294]
将所述冗余矢量中所述宽度和所述高度的和较大的一组作为新的矢量保留在所述列表中;
[0295]
将所述冗余矢量中所述宽度较大的一组作为新的矢量保留在所述列表中;和
[0296]
将所述冗余矢量中所述高度较大的一组作为新的矢量保留在所述列表中。
[0297]
在一个可选实施例中,所述冗余检测模块还用于:
[0298]
将所述新的矢量保留在所述列表时,保持所述新的矢量在所述列表中的位置不变。
[0299]
在一个可选实施例中,所述冗余检测模块还用于:
[0300]
将所述新的矢量保留在列表时,在所述新的矢量中增加冗余次数值。
[0301]
本申请实施例中,通过在编码过程中,按照对应的编码块与当前编码块之间的距离对候选矢量进行排序,然后从按照距离排列的候选矢量中确定当前编码块的预测矢量,由于候选矢量是按照与当前编码块之间的距离进行排列,结合编码块的空间相关性,当前编码块的预测矢量位于按距离顺序排列的候选矢量前序的可能相对较大,则该预测矢量对应的索引值也较小,有助于减少编码预测矢量索引的比特数,从而提高了视频的编码效率。
[0302]
需要说明的是:上述实施例提供的视频编解装置(或视频解码装置)在进行编码(或解码)时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的视频编解装置(或视频解码装置)装置与视频编解装置(或视频解码装置)方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0303]
图9是本申请一个示例性的实施例提供的计算机设备900的结构框图。该计算机设备900可以是手机、平板电脑、智能电视、多媒体播放设备、可穿戴设备、台式电脑、服务器等电子设备。该计算机设备900可用于实施上述实施例中提供的视频编码方法或视频解码方法中的任意一种。
[0304]
通常,计算机设备900包括有:处理器901和存储器902。
[0305]
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用dsp(digital signal processing,数字信号处理)、fpga(field programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
[0306]
存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的视频编码方法或视频解码方法。
[0307]
在一些实施例中,计算机设备900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备可以包括:显示屏904、音频电路905、通信接口906和电源907中的至少一种。
[0308]
本领域技术人员可以理解,图9中示出的结构并不构成对计算机设备900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0309]
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述实施例中视频编码方法或视频解码方法。例如,所述计算机可读存储介质可以是rom、ram、cd-rom、磁带、软盘和光数据存储设备等。
[0310]
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
[0311]
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。
[0312]
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的视频编码方法或视频解码方法。
[0313]
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原
则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1