掌桥专利:专业的专利平台
掌桥专利
首页

视频编码运动搜索的加速方法、加速装置、计算设备以及存储介质

文献发布时间:2023-06-19 19:28:50


视频编码运动搜索的加速方法、加速装置、计算设备以及存储介质

技术领域

本发明是有关于一种视频编码技术中的运动搜索方法,且特别是有关于一种能够提高搜索速度的视频编码运动搜索的加速方法、加速装置、计算设备以及存储介质。

背景技术

随着网络科技和移动通信的发展,视频信息越来越多的被用户使用。

但是,视频信息中集成了大量的原始数据,直接对视频信息进行传输将占用大量的网络资源,因此,一般都会对视频信息进行编码压缩,减小视频信息的存储空间、提升视频信息的传输效率。

视频编码中运动搜索需要根据搜索形状计算每个位置数据块的SAD或SATD值,数据块本身比搜索形状大,因此会在搜索过程有大量的数据重叠,导致数据访问重复,性能下降。现有的视频编解码技术中,为了提升编解码效率,往往会采用对已有视频编解码标准(h.264/AVC或者h.265/AVC)中的算法进行优化,都是对现有标准的优化,使得符合相关标准的视频信息无法兼容。

因此,如何充分利用处理器的并行运算能力,在不改变现有视频编解码算法标准的前提下,通过索引表组织连续行数据并行进行向量化计算,提升运算效率,提高编解码效率实为需要解决的问题之一。

发明内容

本发明的实施例提供一种视频编码运动搜索的加速方法、加速装置、计算设备以及存储介质,通过增加搜索缓存块,将一次搜索过程用到的数据提前预取,并将计算分为行向量,并行化计算,减少数据访存与计算量,提升运算效率,进而提高编解码效率。

本发明一实施方式的视频编码运动搜索的加速方法,包括以下步骤:获取参考帧Fref以及编码树块Ci,所述编码树块包括M*N的像素矩阵,其中M为每一行具有的像素数量、N为每一列具有的像素数量;根据搜索算法确定预取点S;根据确定的所述预取点S,在所述参考帧Fref中获取搜索缓存块P;根据所述搜索算法,确定索引表T;根据所述搜索缓存块P与所述索引表T,并行的执行行向量计算。

上述的加速方法,其中,所述根据搜索算法确定预取点S的步骤进一步包括:

所述搜索算法起始时覆盖的矩形区域的第一个点确定为所述预取点S;其中

所述搜索算法包括钻石搜索、六边形搜索、非对称十字型多层次六边形格点搜索或全搜索。

上述的加速方法,其中,所述在所述参考帧Fref中获取所述搜索缓存块P的步骤进一步包括:

从所述预取点S位置开始,在所述参考帧Fref中取一个方形的所述搜索缓存块P,所述搜索缓存块P用于缓存一次搜索过程中所用到的参考帧数据,所述搜索缓存块的大小为P≥(M+1)*(N+t),其中1≥w-1,w为所述搜索算法中搜索形状的宽度,t≥h-1,h为所述搜索算法中搜索形状的高度。

上述的加速方法,其中,所述确定索引表T的步骤进一步包括:

根据所述搜索算法,确定每个搜索点的搜索顺序,按照所述搜索顺序保存所述每个搜索点在所述搜索缓存块P中的位置L(x,y),并将一次搜索过程中的所述位置L(x,y)保存在所述索引表T中;

直接从所述索引表T中获取编码树块Ci的起始位置,且所述索引表T在搜索结束前,于每次搜索过程中更新MVP的位置。

上述的加速方法,其中,所述并行的执行行向量计算的步骤进一步包括:

从所述索引表T按顺序取出一个搜索点的所述位置L(x,y)开始,取出一行或多行数据,用于与所述编码树块Ci计算SAD或SATD值,取出的第i行数据的向量为Vi[L(x,y)],则所述位置L(x,y)的SAD或SATD的值通过下式计算:

其中,Vn(Ci,n)为所述编码树块Ci所对应的第n个向量行,i为所述搜索形状所具有的搜索点数;

遍历所述索引表T,对于每个所述位置L(x,y),计算所对应块的SAD或SATD值。

上述的加速方法,其中,所述加速方法进一步包括:

判断所有搜索点的SAD或SATD值是否都大于所述MVP点对应的SAD或SATD值;

如果是,搜索结束;

如果否,更新所述MVP点为SAD或SATD最小值的搜索点。

本发明一实施方式的视频编码运动搜索的加速装置,包括:一数据获取单元,用于获取参考帧Fref以及编码树块Ci,所述编码树块包括M*N的像素矩阵,其中M为每一行具有的像素数量、N为每一列具有的像素数量;一数据处理单元,用于根据搜索算法确定预取点S,根据确定的所述预取点S,在所述参考帧Fref中获取搜索缓存块P;一索引表创建单元,用于根据所述搜索算法,确定索引表T;一并行计算单元,用于根据所述搜索缓存块P与所述索引表T,并行的执行行向量计算。

上述的加速装置,其中,所述数据处理单元进一步包括:

一预取点确定单元,用于确定所述预取点S;其中,

所述预取点S根据所述搜索算法起始时覆盖的矩形区域的第一个点确定,所述搜索算法包括钻石搜索、六边形搜索、非对称十字型多层次六边形格点搜索或全搜索。

上述的加速装置,其中,所述数据处理单元进一步包括:

一搜索缓存块获取单元,用于从所述预取点S位置开始,在所述参考帧Fref中取一个方形的所述搜索缓存块P,所述搜索缓存块P用于缓存一次搜索过程中所用到的参考帧数据,所述搜索缓存块的大小为P≥(M+1)*(N+t),其中1≥w-1,w为所述搜索算法中搜索形状的宽度,t≥h-1,h为所述搜索算法中搜索形状的高度。

上述的加速装置,其中,所述索引表创建单元还用于根据所述搜索算法,确定每个搜索点的搜索顺序,按照所述搜索顺序保存所述每个搜索点在所述搜索缓存块P中的位置L(x,y),并将一次搜索过程中的所述位置L(x,y)保存在所述索引表T中。

上述的加速装置,其中,所述并行计算单元还用于:

从所述索引表T按顺序取出一个搜索点的所述位置L(x,y)开始,取出一行或多行数据,用于与所述编码树块Ci计算SAD或SATD值,取出的第i行数据的向量为Vi[L(x,y)],则所述位置L(x,y)的SAD或SATD的值通过下式计算:

其中,Vn(Ci,n)为所述编码树块Ci所对应的第n个向量行,i为所述搜索形状所具有的搜索点数;

遍历所述索引表T,对于每个所述位置L(x,y),计算所对应块的SAD或SATD值。

上述的加速装置,其中,所述加速装置进一步包括:

一判断单元,用于判断所有搜索点的SAD或SATD值是否都大于MVP点对应的SAD或SATD值;

一MVP点更新单元,当所有搜索点的SAD或SATD值不都大于所述MVP点对应的SAD或SATD值时,所述MVP点更新单元用于更新所述MVP点为SAD或SATD最小值的搜索点。

本发明一实施方式的计算设备,其中,所述计算设备包括至少一个如上所述的任意一种视频编码运动搜索的加速装置。

本发明一实施方式的存储介质,用于存储计算机程序,其中,所述计算机程序用于执行如上所述的任意一种视频编码运动搜索的加速方法。

以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。

附图说明

图1是本发明一实施例视频编码运动搜索的加速方法的流程示意图。

图2是本发明一实施例步骤S104的流程示意图。

图3是本发明一实施例步骤S105的流程示意图。

图4A是本发明一实施例六边形搜索中搜索缓存块P的范围示意图。

图4B是本发明一实施例钻石搜索中搜索缓存块P的范围示意图。

图5A是本发明一实施例六边形搜索中索引表的结构示意图。

图5B是本发明一实施例钻石搜索中索引表的结构示意图。

图6是本发明一实施例视频编码运动搜索的加速装置的结构示意图。

其中,附图标记:

100:视频编码运动搜索的加速方法

S101-S105、S1041-S1043、S1051-S1053:步骤

200:视频编码运动搜索的加速装置

201:数据获取单元

202:数据处理单元

2021:预取点确定单元

2022:搜索缓存块获取单元

203:索引表创建单元

204:并行计算单元

205:判断单元

206:MVP点更新单元

A-F:搜索点

MVP:MVP点

P:搜索缓存块

S:预取点

Fref:参考帧

具体实施方式

下面结合附图对本发明的结构原理和工作原理作具体的描述:

图1是本发明一实施例视频编码运动搜索的加速方法的流程示意图;图2是本发明一实施例步骤S104的流程示意图;图3是本发明一实施例步骤S105的流程示意图;图4A是本发明一实施例六边形搜索中搜索缓存块P的范围示意图;图4B是本发明一实施例钻石搜索中搜索缓存块P的范围示意图;图5A是本发明一实施例六边形搜索中索引表的结构示意图;图5B是本发明一实施例钻石搜索中索引表的结构示意图。

如图1所示,本发明的视频编码运动搜索的加速方法100包括以下步骤:

S101,获取参考帧以及待搜索编码树块。其中,于本发明中,每一待搜索编码树块Ci包括M*N的像素矩阵,其中M为每一行具有的像素数量、N为每一列具有的像素数量。M可以和N相同,也可以不同,根据不同的编码标准以及需要搜索的范围而定,本发明并不以此为限,以下以8*8为例进行具体说明。参考帧Fref可以是16*16的像素矩阵,也可以是例如16*32、32*16或64*64等其他大小的像素矩阵,本发明并不以此为限。

S102,确定预取点S。在现有的视频编码运动搜索中,常用的搜索算法包括钻石搜索、六边形搜索、非对称十字型多层次六边形格点搜索或全搜索。根据所使用的算法,确定预取点S,预取点S的选取通常为搜索算法起始时覆盖的矩形区域的第一个点确定为预取点S。

具体的,如图4A所示,在六边形搜索算法中,通常采用对搜索点A-B-C-D-E-F的搜索顺序,逐一进行搜索,由此构成一个六边形搜索形状。在六边形搜索算法中,一次搜索过程中覆盖所有搜索点A-F的矩形区域,也可以解释成搜索形状的宽度w为5、高度h为3,其中第一个点为如图所示的S点,将其确定为预取点S。当然,不同的搜索需要,搜索形状的宽度和高度也会不同,本发明并不以此为限。图4A中灰色阴影区域示出搜索点A与搜索点C所重合的数据块部分。

再如图4B所示,在钻石搜索算法中,同样采用对搜索点A-B-C-D-E-F的搜索顺序,逐一进行搜索,由此构成一钻石形搜索形状。一次搜索过程中覆盖所有搜索点A-F的矩形区域,也可以解释成搜索形状的宽度w为3、高度h为3,其中第一个点为如图所示的S点,将其确定为预取点S。当然,不同的搜索需要,搜索形状的宽度和高度也会不同,本发明并不以此为限。本发明仅以六边形搜索算法以及钻石形搜索算法为例进行说明,对于其他搜索算法,采用同样的方法确定预取点S,在此不再赘述。

S103,获取搜索缓存块。根据确定的所述预取点S,在参考帧Fref中获取搜索缓存块P,搜索缓存块P用于缓存一次搜索过程中所用到的所有参考帧数据。

具体的,如图4A所示,在六边形搜索算法中,从预取点S位置开始,在参考帧Fref中取一个方形的搜索缓存块P。为了确保搜索缓存块P能够覆盖一次搜索过程中用到的所有参考帧数据,可以将搜索缓存块P的宽度设定为M+1,高度设定为N+t。其中,1≥w-1,w为六边形搜索算法中搜索形状的宽度,例如w=5,t≥h-1,h为六边形搜索算法中搜索形状的高度,例如h=3。由此可以确定,在六边形搜索算法中,搜索缓存块P所包含的数据块大小至少为(M+4)*(N+2)。

再图4B所示,在钻石搜索算法中,从预取点S位置开始,同样在参考帧Fref中取一个方形的搜索缓存块P。为了确保搜索缓存块P能够覆盖一次搜索过程中用到的所有参考帧数据,可以将搜索缓存块P的宽度设定为M+1,高度设定为N+t。其中,1≥w-1,w为钻石搜索算法中搜索形状的宽度,例如w=3,t≥h-1,h为六边形搜索算法中搜索形状的高度,例如h=3。由此可以确定,在钻石搜索算法中,搜索缓存块P所包含的数据块大小为(M+2)*(N+2)。

S104,确定索引表。如图2所示,步骤S104进一步包括:

S1041,确定搜索顺序。根据所采用的搜索算法,确定每个搜索点的搜索顺序。在如上所述的六边形搜索算法或钻石搜索算法中,搜索顺序均是自搜索点A至搜索点F的搜索顺序。

S1042,保存位置。按照搜索顺序保存每个搜索点A-F在搜索缓存块P中的位置L(x,y),并将一次搜索过程中所有搜索点A-F所对应的位置L(x,y)保存在索引表T中。如图4A所示,其中,位置L(x,y)的确定方式为:以预取点S的位置为L(0,0)开始,向右延伸的像素个数,则对应于位置中的y,向下延伸的像素个数,对应于位置中的x,以搜索点A为例,搜索点A相对于预取点S向右延伸一个像素,则y=1,搜索点A与预取点S位于同一行,未向下延伸,则x=0。同样的,可以得出其他搜索点的位置L(x,y)。

具体的,图5A示出六边形搜索算法索引表的具体结构,图5B示出钻石搜索算法索引表的具体结构,本发明仅以此为例进行说明,并不以此为限。

S1043,获取位置。在进行搜索时,直接从索引表T中获取编码树块Ci的起始位置,且索引表T在搜索结束前,于每次搜索过程中更新MVP的位置。

S105,并行行向量计算。根据搜索缓存块P与索引表T,并行的执行行向量计算。

具体的,如图3所示,步骤S105进一步包括:

S1051,取出行数据。从索引表T按顺序取出一个搜索点的位置L(x,y)开始,从搜索缓存块P中取出一行或多行数据。

S1052,计算SAD或SATD值。将取出的一行或多行数据用于与编码树块Ci计算SAD或SATD值,取出的第i行数据的向量为Vi[L(x,y)],则位置L(x,y)的SAD或SATD的值通过下式计算:

/>

其中,Vn(Ci,n)为编码树块Ci所对应的第n个向量行,i为搜索形状所具有的搜索点数,对于六边形搜索算法而言,i=6,对于钻石搜索算法来说,i同样等于6。只不过对于钻石搜索算法,搜索点F与MVP点重合,在搜索的时候可以跳过。

遍历整个索引表T,对于每个位置L(x,y),计算所对应块的SAD或SATD值。

S1053,判断所有搜索点的SAD或SATD值是否都大于MVP点对应的SAD或SATD值;如果是,则一次搜索过程结束。如果否,更新MVP点为SAD或SATD最小值的搜索点,返回到S1052,重新计算SAD或SATD值。

于本发明中,可以采用任何具有存储、并行计算能力的计算单元都可以采用此解决方案实现加速目标,其中典型的计算单元包括:

1:视频编解码codec或视频处理专用ASIC,利用视频编解码codec或视频处理专用ASIC中的缓存实现搜索缓存块P的存储,并通过并行单元执行行向量的并行运算;

2:使用FPGA作为加速单元,利用FPGA内部的RAM或外部DRAM实现搜索缓存块P的存储,并在逻辑单元中实现索引表T以及行向量的并行运算;

3:使用GPU作为加速单元,利用GPU内部cache或DRAM实现搜索缓存块P的存储,并在并行单元中实现索引表与行向量的并行运算;

4:使用CPU的向量化指令,利用CPU内部cache或DRAM实现搜索缓存块P的存储,CPU向量化指令实现索引表与行向量的并行运算。

图6是本发明一实施例视频编码运动搜索的加速装置的结构示意图。结合图4A至图5B,如图6所示,本发明的视频编码运动搜索的加速装置200包括数据获取单元201、数据处理单元202、索引表创建单元203以及并行计算单元204。

具体的,数据获取单元201用于获取参考帧Fref以及待搜索编码树块Ci。其中,于本发明中,每一待搜索编码树块Ci包括M*N的像素矩阵,其中M为每一行具有的像素数量、N为每一列具有的像素数量。M可以和N相同,也可以不同,根据不同的编码标准以及需要搜索的范围而定,本发明并不以此为限,以下以8*8为例进行具体说明。参考帧Fref可以是16*16的像素矩阵,也可以是例如16*32、32*16或64*64等其他大小的像素矩阵,本发明并不以此为限,以下以16*16进行具体说明。

在现有的视频编码运动搜索中,常用的搜索算法包括钻石搜索、六边形搜索、非对称十字型多层次六边形格点搜索或全搜索。在本实施例中,数据处理单元202进一步包括预取点确定单元2021以及搜索缓存块获取单元2022,根据所使用的算法,预取点确定单元2021用于确定预取点S,预取点S的选取通常为搜索算法起始时覆盖的矩形区域的第一个点确定为预取点S。

具体的,如图4A所示,在六边形搜索算法中,通常采用对搜索点A-B-C-D-E-F的搜索顺序,逐一进行搜索,由此构成一个六边形搜索形状。在六边形搜索算法中,一次搜索过程中覆盖所有搜索点A-F的矩形区域为一个5*3的矩形区域,也可以解释成搜索形状的宽度w为5、高度h为3,其中第一个点为如图所示的S点,将其确定为预取点S。

再如图4B所示,在钻石搜索算法中,同样采用对搜索点A-B-C-D-E-F的搜索顺序,逐一进行搜索,由此构成一钻石形搜索形状。一次搜索过程中覆盖所有搜索点A-F的矩形区域为一个3*3的矩形区域,也可以解释成搜索形状的宽度w为3、高度h为3,其中第一个点为如图所示的S点,将其确定为预取点S。本发明仅以六边形搜索算法以及钻石形搜索算法为例进行说明,对于其他搜索算法,采用同样的方法确定预取点S,在此不再赘述。

搜索缓存块获取单元2022用于获取搜索缓存块P。根据确定的预取点S,在参考帧Fref中获取搜索缓存块P,搜索缓存块P用于缓存一次搜索过程中所用到的所有参考帧数据。

具体的,如图4A所示,在六边形搜索算法中,从预取点S位置开始,在参考帧Fref中取一个方形的搜索缓存块P。为了确保搜索缓存块P能够覆盖一次搜索过程中用到的所有参考帧数据,可以将搜索缓存块P的宽度设定为M+1,高度设定为N+t。其中,1≥w-1,w为六边形搜索算法中搜索形状的宽度,例如w=5,t≥h-1,h为六边形搜索算法中搜索形状的高度,例如h=3。由此可以确定,在六边形搜索算法中,搜索缓存块P所包含的数据块大小至少为(M+4)*(N+2)。

再图4B所示,在钻石搜索算法中,从预取点S位置开始,同样在参考帧Fref中取一个方形的搜索缓存块P。为了确保搜索缓存块P能够覆盖一次搜索过程中用到的所有参考帧数据,可以将搜索缓存块P的宽度设定为M+1,高度设定为N+t。其中,1≥w-1,w为钻石搜索算法中搜索形状的宽度,例如w=3,t≥h-1,h为六边形搜索算法中搜索形状的高度,例如h=3。由此可以确定,在钻石搜索算法中,搜索缓存块P所包含的数据块大小为(M+2)*(N+2)。

索引表创建单元203用于确定索引表。根据所采用的搜索算法,确定每个搜索点的搜索顺序。在如上所述的六边形搜索算法或钻石搜索算法中,搜索顺序均是自搜索点A至搜索点F的搜索顺序。按照搜索顺序保存每个搜索点A-F在搜索缓存块P中的位置L(x,y),并将一次搜索过程中所有搜索点A-F所对应的位置L(x,y)保存在索引表T中。

具体的,图5A示出六边形搜索算法索引表的具体结构,图5B示出钻石搜索算法索引表的具体结构,本发明仅以此为例进行说明,并不以此为限。

在进行搜索时,直接从索引表T中获取编码树块Ci的起始位置,且索引表T在搜索结束前,于每次搜索过程中更新MVP的位置。

根据搜索缓存块P与索引表T,并行计算单元204并行的执行行向量计算。从索引表T按顺序取出一个搜索点的位置L(x,y)开始,从搜索缓存块P中取出一行或多行数据。将取出的一行或多行数据用于与编码树块Ci计算SAD或SATD值,取出的第i行数据的向量为Vi[L(x,y)],则位置L(x,y)的SAD或SATD的值通过下式计算:

其中,Vn(Ci,n)为编码树块Ci所对应的第n个向量行,i为搜索形状所具有的搜索点数,对于六边形搜索算法而言,i=6,对于钻石搜索算法来说,i同样等于6。只不过对于钻石搜索算法,搜索点F与MVP点重合,在搜索的时候可以跳过。

遍历整个索引表T,对于每个位置L(x,y),计算所对应块的SAD或SATD值。

本发明的加速装置200进一步包括判断单元205以及MVP点更新单元206。其中,判断单元205用于判断所有搜索点的SAD或SATD值是否都大于MVP点对应的SAD或SATD值;如果是,则一次搜索过程结束。如果否,MVP点更新单元206用于将MVP点更新为SAD或SATD最小值的搜索点,返回到S1052,重新计算SAD或SATD值。

于本发明中,并行计算单元204可以采用任何具有存储、并行计算能力的计算单元都可以采用此解决方案实现加速目标,其中典型的计算单元包括:

1:视频编解码codec或视频处理专用ASIC,利用视频编解码codec或视频处理专用ASIC中的缓存实现搜索缓存块P的存储,并通过并行单元执行行向量的并行运算;

2:使用FPGA作为加速单元,利用FPGA内部的RAM或外部DRAM实现搜索缓存块P的存储,并在逻辑单元中实现索引表T以及行向量的并行运算;

3:使用GPU作为加速单元,利用GPU内部cache或DRAM实现搜索缓存块P的存储,并在并行单元中实现索引表与行向量的并行运算;

4:使用CPU的向量化指令,利用CPU内部cache或DRAM实现搜索缓存块P的存储,CPU向量化指令实现索引表与行向量的并行运算。

本发明还提供一种计算设备,包括至少一个如上所述的加速装置。

当然,对于计算设备而言,计算设备还包括其他寄存器以及功能模块,本发明在此不再赘述。

本发明还提供一种存储介质,用于存储计算机程序,计算机程序用于执行如上所述的任意一种视频编码运动搜索的加速方法。

综上,本发明通过增加搜索缓存块,将一次搜索过程用到的数据提前预取,并将计算分为行向量,并行化计算,减少数据访存与计算量,提升运算效率,进而提高编解码效率。

当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

相关技术
  • 卷积神经网络计算的加速方法、装置、设备及存储介质
  • 视频编码方式的调整方法、装置、计算机存储介质及设备
  • 报表加速方法、系统、计算机设备和存储介质
  • 搜索方法、装置、计算机设备和存储介质
  • 对象搜索方法、装置、电子设备及计算机可读存储介质
  • 运动物体加速控制方法、装置、计算机设备以及存储介质
  • 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质
技术分类

06120115922028