视频编码的块匹配方法、装置、计算机设备和存储介质与流程

文档序号:17925949发布日期:2019-06-15 00:24阅读:139来源:国知局
视频编码的块匹配方法、装置、计算机设备和存储介质与流程

本申请涉及视频编解码技术领域,特别是涉及一种视频编码的块匹配方法、装置、计算机设备和存储介质。



背景技术:

视频编解码,是一种特定的视频压缩技术。原始视频中含有大量数据信息,如果直接进行传输将需要占据较大的带宽,因此可以在视频发送端对这些数据进行编码压缩,以减少其所占的内存空间,提升视频存储和传输的效率,在视频接收端再对已编码的视频数据进行解码获取原始视频。

在视频编码过程中简单有效的块匹配式的运动估计方法被广泛应用。在h.264标准的编码过程中,运动估计为1/4像素精度,因此需要对参考视频帧中的像素进行插值,即将原先的1个像素点拓展成4×4像素块,一共16个像素点。这其中包括两个步骤:半像素内插和线性内插,半像素内插得到水平和垂直方向的1/2像素点,线性内插得到1/4像素点。半像素内插和线性内插之后选出与当前待匹配像素块的残差最小的匹配块,这样保证编码的代价最小。

现有视频编码技术,在运动估计确定匹配块时,存在匹配块确定效率低,导致编码效率低的缺陷。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提升匹配块确定效率的视频编码的块匹配方法、装置、计算机设备和存储介质。

一种视频编码的块匹配方法,所述方法包括:

根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

根据亚像素估计坐标,确定索引值;获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块;

根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块。

在一个实施例中,根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,包括:

根据待匹配块左侧和上方已编码块的整像素运动估计确定的运动矢量,确定待匹配块的整像素估计坐标;根据待匹配块左侧和上方已编码块的亚像素运动估计确定的运动矢量,确定待匹配块的亚像素估计坐标。

在一个实施例中,并确定整像素实际坐标,包括:

计算整像素估计坐标和亚像素估计坐标之间的横坐标差;计算整像素估计坐标和亚像素估计坐标之间的纵坐标差;根据横坐标差和纵坐标差,从整像素估计坐标以及整像素估计坐标周围的多个整像素坐标中,确定整像素实际坐标。

在一个实施例中,在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块,包括:

以整像素估计坐标为顶点,确定对应的整像素块;对对应的整像素块进行边界扩展,得到扩展像素块;获取扩展像素块中包含的所有整像素点,并确定所有整像素点能够组成的多个整像素块;利用扩展像素块中包含的整像素点,通过半像素内插计算得到扩展像素块中的水平半像素点、垂直半像素点和对角半像素点;确定水平半像素点能够组成的多个水平半像素块,垂直半像素点能够组成的多个垂直半像素块,以及对角半像素点能够组成的多个对角半像素块。

在一个实施例中,根据亚像素估计坐标,确定索引值,包括:

获取亚像素估计坐标中横坐标的二进制值的末两位值,和纵坐标的二进制值的末两位值;将横坐标的末两位值和纵坐标的末两位值组合得到新的二进制值,并将新的二进制值换算成十进制数;将十进制数确定为索引值。

在一个实施例中,获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果,包括:

判断索引值与预设数值之间按位逻辑与得到的值是否为零;若为零,则获取索引值在预存的第一像素块查找表中的查询值作为查询结果;若不为零,则分别获取索引值在预存的第一像素块查找表中的查询值,以及索引值在预存的第二像素块查找表中的查询值,作为查询结果。

在一个实施例中,根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块,包括:

获取以整像素实际坐标为顶点确定的像素块中的各个像素点;从获取的各个像素点中,确定与查询结果匹配的像素点;从确定的整像素块、水平像素块、垂直像素块和对角像素块中,确定匹配的像素点对应的像素块,作为与查询结果匹配的像素块。

在一个实施例中,根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块,包括:

若索引值与预设数值之间按位逻辑与得到的值为零,则将与第一像素块查找表中的查询值匹配的像素块确定为匹配块;若索引值与预设数值之间按位逻辑与得到的值不为零,则对与第一像素块查找表中的查询值匹配的像素块,以及与第二像素块查找表中的查询值匹配的像素块进行线性内插得到匹配块。

在一个实施例中,第一像素块查找表如下式所示:

pixel0={0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1};

第二像素块查找表如下式所示:

pixel1={0,0,0,0,2,2,3,2,2,2,3,2,2,2,3,2};

其中,pixel0代表第一像素块查找表中的查询值,pixel1代表第二像素块查找表中的查询值,取值o代表整像素块,取值1代表水平半像素块,取值2代表垂直半像素块,取值3代表对角半像素块。

一种视频编码的块匹配装置,所述装置包括:

坐标确定模块,用于根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

像素块确定模块,用于在参考视频帧中以所述整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

索引查询模块,用于根据所述亚像素估计坐标,确定索引值;获取所述索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

索引像素块确定模块,用于根据所述查询结果以及所述整像素实际坐标,从所述确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与所述查询结果匹配的像素块;

匹配块确定模块,用于根据所述匹配的像素块,确定所述待匹配块在参考视频帧中的匹配块。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

根据亚像素估计坐标,确定索引值;获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块;

根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

根据亚像素估计坐标,确定索引值;获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块;

根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块。

上述视频编码的块匹配方法、装置、计算机设备和存储介质,先确定整像素点的整像素块,再半像素内插运算得到水平半像素块、垂直半像素块和对角半像素块。根据当前视频帧中待匹配块周围的已编码块确定的整像素估计坐标和亚像素估计坐标,利用索引值直接在预存的第一像素块查找表和第二像素块查找表中的查询结果以确定待匹配块在参考视频帧中残差最小的匹配块。有效简化了实际运行过程中的运算量,减小硬件开销,提升了视频编码过程中块匹配的速率,继而提高了视频编码效率。

附图说明

图1为一个实施例中视频编码的块匹配方法的应用环境图;

图2为一个实施例中视频编码的块匹配方法的流程示意图;

图3为一个实施例中半像素点与整像素点的位置关系的示意图;

图4为一个实施例中水平半像素点与整像素点的位置关系示意图;

图5为一个实施例中垂直半像素点与整像素点的位置关系示意图;

图6为一个实施例中对角半像素点与整像素点的位置关系示意图;

图7为一个实施例中以整像素实际坐标为顶点确定的像素块的示意图;

图8为一个实施例中视频编码的块匹配装置的结构框图;

图9为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的视频编码的块匹配方法,可以应用于如图1所示的终端102中。其中,终端102可以但不限于是各种高清电视机、个人计算机、笔记本电脑、智能手机和平板电脑等,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种视频编码的块匹配方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:

s210,根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

其中,当前视频帧是指当前待编码的视频帧,例如可以通过图像记录仪来采集当前视频帧。当前待匹配块为当前视频帧中提取的需要匹配的像素块。本申请实施例中的待匹配块,基于h.264标准,在对当前视频帧进行编码时,以宏块为单位进行,一个宏块的大小为16×16个像素点组成的像素块,每个16×16的像素块作为当前的待匹配块。

其中,待匹配块周围的已编码像素块,可以根据实际需要选择。例如在实际应用中,当前视频帧中的块是由左上向右下逐块进行编码的,因此待匹配块的左侧、上方和左上方均为已编码的像素块,因此,终端可以选择例如左侧和上方的像素块,或者选择左侧、上方和左上方的像素块,根据这些像素块的编码信息预测当前像素块的整像素估计坐标和亚像素估计坐标。

在根据待编码像素块周围的已编码像素块确定了当前像素块的整像素估计坐标后,确定的整像素估计坐标可能并不是实际的整像素坐标,实际的整像素坐标一般应当为该整像素估计坐标所在周围区域内的某一整像素坐标。因此,在步骤s210中确定了整像素估计坐标后,终端还需要根据整像素估计坐标和亚像素估计坐标之间的位置关系,从整像素估计坐标所在区域内选取并确定整像素实际坐标。

s220,在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

其中,参考视频帧可以是当前视频帧的前一帧视频帧或者后一帧视频帧。当前视频帧需要以参考视频帧作为参照进行编码。参考视频帧中以整像素估计坐标为顶点的像素块,可以是以该整像素估计坐标为左上角顶点的16×16的像素块,而以整像素估计坐标为顶点的扩展像素块,则可以是在该16×16的像素块的上下左右各多取若干行或列的像素点形成的扩展像素块,例如可以是在该16×16的像素块边界的上下各多取3行,以及左右各多取3列组成的22×22像素块。而整像素块、水平半像素块、垂直半像素块和对角半像素块的大小则与宏块保持一致,例如可以是16×16大小的像素块。

s230,根据亚像素估计坐标,确定索引值;获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

本步骤中,在获取了亚像素估计坐标后,亚像素估计坐标代表的像素块即为所需要确定的匹配像素块。其中,第一像素块查找表以及第二像素块查找表中,均预存有不同的索引值与匹配块类型之间的对应关系。这些对应关系可以根据传统的运动搜索例如菱形搜索确定的匹配块与过程参数之间的经验关系总结得出,第一像素块查找表和第二像素块查找表预存在终端中,在实际编码过程中,直接查表即可以根据查找表中的对应关系获取到相应的。根据亚像素估计坐标计算的索引值与查询第一像素块查找表和/或第二像素块查找表的查询结果,就可以确定最终的匹配块是由什么类型的像素块决定。

s240,根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块;

本步骤中,在步骤s230查询获取了查询表的查询结果后,可以以整像素实际坐标作为参照点,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的一个或多个像素块。

s250,根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块。

本步骤中,可以根据步骤s240中得到的与查询结果匹配的一个或多个像素块,确定待匹配块在参考视频帧中最优的匹配块。

相较于传统的块匹配方法需要进行运动估计搜索,运动搜索过程需要占用较多的运算资源,搜索匹配块的效率较低,本申请的上述视频编码的块匹配方法,先确定整像素点的整像素块,再半像素内插运算得到水平半像素块、垂直半像素块和对角半像素块。根据当前视频帧中待匹配块周围的已编码块确定的整像素估计坐标和亚像素估计坐标,利用索引值直接在预存的第一像素块查找表和第二像素块查找表中的查询结果以确定待匹配块在参考视频帧中残差最小的匹配块。有效简化了实际运行过程中的运算量,减小硬件开销,提升了视频编码过程中块匹配的速率,继而提高了视频编码效率。

在一个实施例中,s210中根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,包括:根据待匹配块左侧和上方已编码块的整像素运动估计确定的运动矢量,确定待匹配块的整像素估计坐标;根据待匹配块左侧和上方已编码块的亚像素运动估计确定的运动矢量,确定待匹配块的亚像素估计坐标。

作为示例地,在步骤s210中,帧间预测提前判断打开时,该宏块类型可能是skip块,而该skip块可能是mvp点决定的,此时假设该skip块是由mvp点决定,则开始运动估计时,由运动估计得到整像素估计坐标[a,b],作为预估的整像素点所在位置的坐标,继而根据待编码块周围的已编码块估测亚像素精度匹配块的坐标。具体地,可以根据左边已编码块在编码过程中整像素运动估计得到的运动矢量,计算得到整像素估计坐标[a,b],再根据左边已编码块在编码过程中亚像素运动估计得到的运动矢量,计算得到亚像素估计坐标[a1,b1]。

在一个实施例中,s210中并确定整像素实际坐标,包括:计算整像素估计坐标和亚像素估计坐标之间的横坐标差;计算整像素估计坐标和亚像素估计坐标之间的纵坐标差;根据横坐标差和纵坐标差,从整像素估计坐标以及整像素估计坐标周围的多个整像素坐标中,确定整像素实际坐标。

作为示例地,以整像素估计坐标为[a,b],亚像素估计坐标为[a1,b1]为例,则可以依据下述公式分别计算得到整像素估计坐标和亚像素估计坐标之间低四位的横坐标差和纵坐标差:

diff_x=a1[3:0]-a[3:0]

diff_y=b1[3:0]-b[3:0]

上式中,diff_x是整像素估计坐标和亚像素估计坐标之间的横坐标差,diff_y是指整像素估计坐标和亚像素估计坐标之间的纵坐标差。

在本实施例中,相邻整像素点的对应的x和y坐标分别相差4,而根据传统运动估计方法得到的经验数据可以得知,亚像素估计坐标与实际的整像素坐标之间的横坐标差和纵坐标差应当在某一合理范围内,如果运算得到的整像素估计坐标与亚像素估计坐标之间的横坐标差或纵坐标差超出这一合理范围,则说明当前整像素估计坐标并不是实际的整像素坐标。则需要从该整像素估计坐标周围的整像素坐标中确定整像素实际坐标。具体地,可以在该整像素估计坐标,以及以该整像素估计坐标为中心,加上该整像素估计坐标上下两个整像素点,以及左右两个整像素点组成的整像素点群中,确定一个满足合理范围的最优整像素点的坐标为整像素实际坐标。

在一个实施例中,s220中在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块,包括:以整像素估计坐标为顶点,确定对应的整像素块;对对应的整像素块进行边界扩展,得到扩展像素块;获取扩展像素块中包含的所有整像素点,并确定所有整像素点能够组成的多个整像素块;利用扩展像素块中包含的整像素点,通过半像素内插计算得到扩展像素块中的水平半像素点、垂直半像素点和对角半像素点;确定水平半像素点能够组成的多个水平半像素块,垂直半像素点能够组成的多个垂直半像素块,以及对角半像素点能够组成的多个对角半像素块。

作为示例地,在本实施例中,可以以整像素估计坐标为左上角顶点确定16×16的整像素块,进而以该16×16的整像素块的上下左右各多取若干行或列的整像素点形成的扩展像素块,例如可以是在该16×16的整像素块边界的上下各多取3行整像素点,以及左右各多取3列整像素点组成的22×22的扩展像素块。

在该22×22的扩展像素块中,包括22×22个整像素点,这些整像素点又可以组成多个16×16的整像素块。此外,以这些整像素点为基础,通过半像素内插运算,可以得到该22×22像素块的区域范围中,包含的水平半像素点、垂直半像素点和对角半像素点。以每个水平半像素点为左上角顶点,可以确定一个16×16的水平半像素块,以每个垂直半像素点为左上角顶点,可以确定一个16×16的垂直半像素块,而以每个对角半像素点为左上角顶点,可以确定一个16×16的对角半像素块。从而得到该22×22的扩展像素块中确定的多个整像素块、水平半像素块、垂直半像素块和对角半像素块。

本申请实施例中,半像素点与整像素点的位置关系,可以参考图3所示,其中灰色方块代表整像素点,白色方块代表半像素点或者亚像素点。其中a、b、c、d、e、f、g、h、i、j、k为整像素点,a、b、c、d、e、f为垂直半像素点,g、h、i、j、k、l为水平半像素点,ii为对角半像素点,m、n、o、q、v、x、p、r、s、u、w、y为亚像素点。

其中,根据整像素点坐标内插计算半像素点坐标的插值公式如下:

i=round((g-5h+20c+20i-5j+k)/32)

上式中,g、h、c、i、j、k分别代表如图3中所示的整像素点,i代表插值计算得到的水平半像素点。

根据半像素点坐标内插计算亚像素点坐标的插值公式如下:

o=round((c+i)/2)

上式中,c代表如图3中所示的整像素点,i代表水平半像素点,o代表插值计算得到的亚像素点。

半像素点与整像素点的位置关系可以参考图4-图6所示,其中图4为水平半像素点与整像素点的位置关系示意图,图5为垂直半像素点与整像素点的位置关系示意图,图6为对角半像素点与整像素点的位置关系示意图,图4-图6中灰色方块代表整像素点,白色方块代表半像素点。

在一个实施例中,为了提升数据的读取和使用效率,可以将上述实施例中运算得到的整像素块、水平半像素块、垂直半像素块和对角半像素块存储于寄存器中,以便后续在确定匹配块时对所需像素块的调取。例如,可以将所有整像素块存储于寄存器src1中,将所有水平半像素块存储于寄存器src2中,将所有垂直半像素块存储于寄存器src3中,并将所有对角半像素块存储于寄存器src4中。

在一个实施例中,s230中根据亚像素估计坐标,确定索引值,包括:获取亚像素估计坐标中横坐标的二进制值的末两位值,和纵坐标的二进制值的末两位值;将横坐标的末两位值和纵坐标的末两位值组合得到新的二进制值,并将新的二进制值换算成十进制数;将十进制数确定为索引值。

作为示例地,以亚像素估计坐标为[a1,b1]为例,可以依照如下公式计算得到亚像素估计坐标确定的索引值:

idx=b1[1:0]<<2+a1[1:0]

上式中,idx为索引值,b1[1:0]<<2表示将b1[1:0]以2的补码整数表示的形式向右移2位。右移运算移入最高有效位(msb)的位应该等于移位运算前b1[1:0]的msb的值。

在一个实施例中,s230中获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果,包括:判断索引值与预设数值之间按位逻辑与得到的值是否为零;若为零,则获取索引值在预存的第一像素块查找表中的查询值作为查询结果;若不为零,则分别获取索引值在预存的第一像素块查找表中的查询值,以及索引值在预存的第二像素块查找表中的查询值,作为查询结果。

在一个实施例中,根据菱形搜索运动估计块匹配过程中得到的经验数据确定的第一像素块查找表如下式所示:

pixel0={0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1};

在一个实施例中,根据菱形搜索运动估计块匹配过程中得到的经验数据确定的第二像素块查找表如下式所示:

pixel1={0,0,0,0,2,2,3,2,2,2,3,2,2,2,3,2};

其中,pixel0代表第一像素块查找表中的查询值,pixel1代表第二像素块查找表中的查询值,取值o代表整像素块,取值1代表水平半像素块,取值2代表垂直半像素块,取值3代表对角半像素块。

以预设数值取5为例,在上述实施例中,可以依据idx&5的值是否等于零,判断需不需要取pixel1代表的另一个像素点与pixel0代表的像素点进行插值。其中&代表按位“与”运算,在对整数进行按位“与”运算时,以整数的二进制补码形式进行操作。如果两个二进制运算数中一个位数小于另外一个,则较短的运算数高位加0补齐。

当idx&5==0时,仅需要将查询pixel0得到的查询值作为查询结果。具体地,可以用idx在pixel0中查询对应个数的值得到相应的查询结果,其中idx可取值0~15,分别对应查询表中的第一至第十六个数的值。例如若idx=2,则idx&5==0,查询{0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1}中的第三个数值为1,代表水平半像素块。

当idx&5!=0时,则需要查询pixel0和pixel1共同得到查询结果。具体地,可以用idx在pixel0中查询对应个数的值得到相应的查询值,用idx在pixel1中查询对应个数的值得到相应的查询值,将两个查询值共同作为查询结果。例如若idx=5,则idx&5!=0,查询{0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1}中的第六个数值为1,代表水平半像素块,查询{0,0,0,0,2,2,3,2,2,2,3,2,2,2,3,2}中的第六个数值为2,代表垂直半像素块。

在一个实施例中,s240中根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块,包括:获取以整像素实际坐标为顶点确定的像素块中的各个像素点;从获取的各个像素点中,确定与查询结果匹配的像素点;从确定的整像素块、水平像素块、垂直像素块和对角像素块中,确定匹配的像素点对应的像素块,作为与查询结果匹配的像素块。

本实施例中,作为示例地,可以在22×22的扩展像素块中,确定以整像素实际坐标为左上角顶点确定的4×4像素块,在该4×4像素块中,根据索引值的查询结果确定对应的像素点代表的像素块。

在一个实施例中,s250中根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块,包括:若索引值与预设数值之间按位逻辑与得到的值为零,则将与第一像素块查找表中的查询值匹配的像素块确定为匹配块;若索引值与预设数值之间按位逻辑与得到的值不为零,则对与第一像素块查找表中的查询值匹配的像素块,以及与第二像素块查找表中的查询值匹配的像素块进行线性内插得到匹配块。

参考图7所示,图7中示出了一个实施例中以整像素实际坐标(对应图7中整像素点a)为左上角顶点确定的4×4像素块的示意图。其中a、b、c、d为整像素点,a、b为垂直半像素点,c、d、e为水平半像素点,其余为亚像素点。则作为示例地,上述各个实施例中不同idx取值情况下查询确定的最佳匹配块可以如下所示:

当idx=2时,相应的pixel0=1,idx&5==0,不需要查询pixel1的像素块,最佳匹配块即为查询pixel0确定的水平半像块。最佳匹配块为以c为顶点的水平亚像素块,大小为16×16。

当idx=3时,相应的pixel0=1,idx&5!=0,则poxel1=0,最佳匹配块则由查询pixel0确定的水平半像素块和查询pixel1确定的整像素块线性内插得到,最佳匹配块为ii为顶点的亚像素块,大小为16×16,其中ii点由c和b线性内插得到。

当idx=5时,相应的pixel0=1,idx&5!=0,则poxel1=2,最佳匹配块则由查询pixel0确定的水平半像素块和查询pixel1确定的垂直半像素块线性内插得到,最佳匹配块为dd为顶点的亚像素块,大小为16×16,其中dd点由c和a线性内插得到。

当idx=6时,相应的pixel0=1,idx&5!=0,则poxel1=3,最佳匹配块则由查询pixel0确定的水平半像素块和查询pixel1确定的对角半像素块线性内插得到,最佳匹配块为gg为顶点的亚像素块,大小为16×16,其中gg点由c和d线性内插得到。

当idx=13时,相应的pixel0=1,idx&5!=0,则poxel1=2,最佳匹配块则由查询pixel0确定的水平半像素块和查询pixel1确定的垂直半像素块线性内插得到,最佳匹配块为ff为顶点的亚像素块,大小为16×16,其中ff点由a和e线性内插得到。

当idx=15时,相应的pixel0=1,idx&5!=0,则poxel1=2,最佳匹配块则由查询pixel0确定的水平半像素块和查询pixel1确定的垂直半像素块线性内插得到,最佳匹配块为ll为顶点的亚像素块,大小为16×16,其中ll点由e和b线性内插得到。

上述各个实施例中,在第一像素块查找表和第二像素块查找表中预存有不同亚像素估计坐标确定的索引值对应匹配块的经验信息,在实际应用的视频编码过程中,可以根据周围已编码块估算的当前待编码块的整像素估计坐标和亚像素估计坐标,直接查表得到对应的匹配块的相关信息,以快速确定待匹配块在参考视频帧中的匹配块。

应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图8所示,提供了一种视频编码的块匹配装置800,包括:坐标确定模块810、像素块确定模块820、索引查询模块830、索引像素块确定模块840和匹配块确定模块850,其中:

坐标确定模块810,用于根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

像素块确定模块820,用于在参考视频帧中以所述整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

索引查询模块830,用于根据所述亚像素估计坐标,确定索引值;获取所述索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

索引像素块确定模块840,用于根据所述查询结果以及所述整像素实际坐标,从所述确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与所述查询结果匹配的像素块;

匹配块确定模块850,用于根据所述匹配的像素块,确定所述待匹配块在参考视频帧中的匹配块。

在一个实施例中,坐标确定模块810包括:

整像素估计坐标确定模块,用于根据待匹配块左侧和上方已编码块的整像素运动估计确定的运动矢量,确定待匹配块的整像素估计坐标;

亚像素估计坐标确定模块,用于根据待匹配块左侧和上方已编码块的亚像素运动估计确定的运动矢量,确定待匹配块的亚像素估计坐标。

在一个实施例中,坐标确定模块810还包括:

整像素实际坐标确定模块,用于计算整像素估计坐标和亚像素估计坐标之间的横坐标差;计算整像素估计坐标和亚像素估计坐标之间的纵坐标差;根据横坐标差和纵坐标差,从整像素估计坐标以及整像素估计坐标周围的多个整像素坐标中,确定整像素实际坐标。

在一个实施例中,像素块确定模块820包括:

扩展像素块获取模块,用于以整像素估计坐标为顶点,确定对应的整像素块;对对应的整像素块进行边界扩展,得到扩展像素块;

整像素块确定模块,用于获取扩展像素块中包含的所有整像素点,并确定所有整像素点能够组成的多个整像素块;

半像素块确定模块,用于利用扩展像素块中包含的整像素点,通过半像素内插计算得到扩展像素块中的水平半像素点、垂直半像素点和对角半像素点;确定水平半像素点能够组成的多个水平半像素块,垂直半像素点能够组成的多个垂直半像素块,以及对角半像素点能够组成的多个对角半像素块。

在一个实施例中,索引查询模块830包括:

索引值计算模块,用于获取亚像素估计坐标中横坐标的二进制值的末两位值,和纵坐标的二进制值的末两位值;将横坐标的末两位值和纵坐标的末两位值组合得到新的二进制值,并将新的二进制值换算成十进制数;将十进制数确定为索引值。

在一个实施例中,索引查询模块830还包括:

索引值判断模块,用于判断索引值与预设数值之间按位逻辑与得到的值是否为零;

第一查询结果获取模块,用于若为零,则获取索引值在预存的第一像素块查找表中的查询值作为查询结果;

第二查询结果获取模块,用于若不为零,则分别获取索引值在预存的第一像素块查找表中的查询值,以及索引值在预存的第二像素块查找表中的查询值,作为查询结果。

在一个实施例中,索引像素块确定模块840包括:

查询结果像素点匹配模块,用于获取以整像素实际坐标为顶点确定的像素块中的各个像素点;从获取的各个像素点中,确定与查询结果匹配的像素点;

查询结果像素块匹配模块,用于从确定的整像素块、水平像素块、垂直像素块和对角像素块中,确定匹配的像素点对应的像素块,作为与查询结果匹配的像素块。

在一个实施例中,匹配块确定模块850包括:

第一匹配块确定模块,用于若索引值与预设数值之间按位逻辑与得到的值为零,则将与第一像素块查找表中的查询值匹配的像素块确定为匹配块;

第二匹配块确定模块,用于若索引值与预设数值之间按位逻辑与得到的值不为零,则对与第一像素块查找表中的查询值匹配的像素块,以及与第二像素块查找表中的查询值匹配的像素块进行线性内插得到匹配块。

在一个实施例中,第一像素块查找表如下式所示:

pixel0={0,1,1,1,0,1,1,1,2,3,3,3,0,1,1,1};

在一个实施例中,第二像素块查找表如下式所示:

pixel1={0,0,0,0,2,2,3,2,2,2,3,2,2,2,3,2};

其中,pixel0代表第一像素块查找表中的查询值,pixel1代表第二像素块查找表中的查询值,取值o代表整像素块,取值1代表水平半像素块,取值2代表垂直半像素块,取值3代表对角半像素块。

关于视频编码的块匹配装置的具体限定可以参见上文中对于视频编码的块匹配方法的限定,在此不再赘述。上述视频编码的块匹配装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种视频编码的块匹配方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

根据亚像素估计坐标,确定索引值;获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块;

根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块。

在其它实施例中,处理器执行计算机程序时还实现如上任意实施例的视频编码的块匹配方法的步骤,并具备相应的有益效果。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

根据当前视频帧中待匹配块周围的已编码块,确定待匹配块在参考视频帧中的整像素估计坐标和亚像素估计坐标,并确定整像素实际坐标;

在参考视频帧中以整像素估计坐标为顶点的扩展像素块中,确定整像素块、水平半像素块、垂直半像素块和对角半像素块;

根据亚像素估计坐标,确定索引值;获取索引值在预存的第一像素块查找表和第二像素块查找表中的查询结果;

根据查询结果以及整像素实际坐标,从确定的整像素块、水平像素块、垂直像素块和对角像素块中获取与查询结果匹配的像素块;

根据匹配的像素块,确定待匹配块在参考视频帧中的匹配块。

在其它实施例中,计算机程序被处理器执行时还实现如上任意实施例的视频编码的块匹配方法的步骤,并具备相应的有益效果。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1