一种子像素全搜索方法及装置与流程

文档序号:14915035发布日期:2018-07-11 00:29阅读:215来源:国知局

本发明涉及视频编码技术领域,尤其涉及一种子像素全搜索方法及装置。



背景技术:

视频序列的相邻帧之间存在着很强的时间相关性即时间冗余,为了减小时间冗余,提高编码效率,在编码协议中采用了帧间预测技术。

帧间预测技术通过采用块匹配来减少视频帧之间的时间冗余信息。块匹配即为寻找当前帧的待编码块在参考帧中的最优像素块,所述最优像素块为与所述待编码块的匹配误差最小的像素块。块匹配包括整像素块匹配和子像素块匹配,整像素块匹配时的匹配误差可以通过绝对误差和(英文:Sum of absolute differences,简称:SAD)、或者均方差(英文:Mean Square Error,简称:MSE)或者绝对平均差(英文:Mean Absolute Difference,简称:MAD)等算法来计算。最优像素块中的左上顶点像素为最优整像素点。子像素块匹配时的匹配误差可以通过绝对误差和的哈德曼变换值(英文:Sum of Absolute Transformed Difference,简称:SATD)来计算。

编码协议遵循一种递归结构的编码方式,需要将一个16x16的宏块进一步划分为16x8、8x16、8x8、4x4的子块,最小的子块为4x4。进而可以将一个16x16的宏块看作是两个16x8或8x16的子块,或看作是4个8x8的子块,依此类推。子像素全搜索过程是先对16x16宏块进行搜索,然后是对16x8、8x16、8x8等子块的逐步细化搜索过程,最后通过比较匹配误差得到最优像素块。

由于子像素全搜索过程中,采用SATD来计算,而SATD在计算时不仅要计算编码块与预测块之间的残差还要对残差进行哈德曼变换,因此计算起来比较繁琐,并且计算量较大,计算复杂度较高,导致编码效率较低。



技术实现要素:

本发明实施例提供一种子像素全搜索方法及装置,用以解决现有技术中子像素全搜索过程存在的计算量较大,计算复杂度较高,导致编码效率较低的问题。

第一方面,本发明实施例提供了一种子像素全搜索方法,包括:

针对待编码帧中的第一待编码子块,在参考帧图像块中进行第一像素精度的搜索;

在搜索到预测块时,获取所述预测块在所述参考帧图像块中的位置信息;其中,所述预测块与所述第一待编码子块的大小相同;

在预存储的对应关系中查找到所述位置信息对应的匹配误差时,将所述匹配误差作为所述预测块与所述第一待编码子块之间的匹配误差;

其中,所述对应关系中存储的所述位置信息对应的匹配误差是:针对所述待编码帧中大于所述第一待编码子块的第二待编码子块,在参考帧图像块中进行第一像素精度的搜索时计算得到的,所述第二待编码子块包括所述第一待编码子块。

结合第一方面,在第一方面的第一种可能的实施方式中,所述方法还包括:

在预存储的对应关系中没有查找到所述位置信息对应的匹配误差时,确定所述预测块与所述第一待编码子块之间的匹配误差,并将获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中。

结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,确定所述预测块与所述第一待编码子块之间的匹配误差,并将获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中,包括:

将所述预测块分成多个第一子像素块,将所述第一待编码子块分成多个第二子像素块,所述第一子像素块与所述第二子像素块的大小相同;并分别获取每个所述第二子像素块与其对应的所述第一子像素块之间的绝对误差和的哈德曼变换值SATD;

确定每个所述第一子像素块在所述参考帧图像块中的所在位置,并基于确定的每个所述第一子像素块的所在位置将每个所述第一子像素块的SATD存储到所述对应关系中。

结合第一方面和第一方面的第一种可能的实施方式至第一方面的第二种可能的实施方式中的任一种可能的实施方式,在第一方面的第三种可能的实施方式中,所述对应关系以散列表方式存储。

结合第一方面和第一方面的第一种可能的实施方式至第一方面的第三种可能的实施方式中的任一种可能的实施方式,在第一方面的第四种可能的实施方式中,所述对应关系中还包括所述预测块的位置信息对应的标识信息,所述标识信息用于指示所述预测块的位置信息对应的SATD是否有效。

第二方面,本发明实施例提供了一种子像素全搜索装置,包括:

搜索模块,用于针对待编码帧中的第一待编码子块,在参考帧图像块中进行第一像素精度的搜索;

获取模块,用于在所述搜索模块搜索到预测块时,获取所述预测块在所述参考帧图像块中的位置信息;其中,所述预测块与所述第一待编码子块的大小相同;

匹配模块,用于在预存储的对应关系中查找到所述获取模块获取的所述位置信息对应的匹配误差时,将所述匹配误差作为所述搜索模块搜索到的所述预测块与所述第一待编码子块之间的匹配误差;

其中,所述对应关系中存储的所述位置信息对应的匹配误差是:针对所述待编码帧中大于所述第一待编码子块的第二待编码子块,在参考帧图像块中进行第一像素精度的搜索时计算得到的,所述第二待编码子块包括所述第一待编码子块。

结合第二方面,在第二方面的第一种可能的实施方式中,所述匹配模块,还用于在预存储的对应关系中没有查找到所述获取模块获取的所述位置信息对应的匹配误差时,确定所述搜索模块搜索到的所述预测块与所述第一待编码子块之间的匹配误差;

所述装置还包括:

存储模块,用于将所述获取模块获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中。

结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述匹配模块,在确定所述搜索模块搜索到的所述预测块与所述第一待编码子块之间的匹配误差,并将所述获取模块获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中时,具体用于:

将所述搜索模块搜索到的所述预测块分成多个第一子像素块,将所述第一待编码子块分成多个第二子像素块,所述第一子像素块与所述第二子像素块的大小相同;并分别获取每个所述第二子像素块与其对应的所述第一子像素块之间的绝对误差和的哈德曼变换值SATD;

确定每个所述第一子像素块在所述参考帧图像块中的所在位置;

所述存储模块,具体用于基于所述匹配模块确定的每个所述第一子像素块的所在位置将每个所述第一子像素块的SATD存储到所述对应关系中。

结合第二方面和第二方面的第一种可能的实施方式至第二方面的第二种可能的实施方式中的任一种可能的实施方式,在第二方面的第三种可能的实施方式中,所述存储模块,具体用于以散列表方式存储所述对应关系。

结合第二方面和第二方面的第一种可能的实施方式至第二方面的第三种可能的实施方式中的任一种可能的实施方式,在第二方面的第四种可能的实施方式中,所述对应关系中还包括所述预测块的位置信息对应的标识信息,所述标识信息用于指示所述预测块的位置信息对应的SATD是否有效。

本发明实施例中,在针对待编码帧中的第一待编码子块在参考帧图像块中进行第一像素精度的搜索,并搜索到预测块时,获取预测块在所述参考帧图像块中的位置信息;在预存储的对应关系中查找到所述位置信息对应的匹配误差时,将所述匹配误差作为所述预测块与所述第一待编码子块之间的匹配误差;在预存储的对应关系中没有查找到所述位置信息对应的匹配误差时,确定所述预测块与所述第一待编码子块之间的匹配误差,并将查找到的所述位置信息确定的所述匹配误差存储到所述对应关系中。因此,在h.264的编码中针对待编码块进行子像素搜索时,数据可以重复使用,减少了计算量,提高了编码效率。

附图说明

图1为现有技术中的块匹配运动估计算法的示意图;

图2为现有技术中的整像素全搜索的示意图;

图3为现有技术中的亚像素插值算法的示意图;

图4为现有技术中的子像素全搜索的示意图;

图5为本发明实施例提供的一种子像素全搜索方法的流程图;

图6为本发明实施例提供的16×16像素的待编码块块匹配的流程图;

图7为本发明实施例提供的一种子像素全搜索装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

以下,对本申请中的所用到的算法进行解释说明,以便与本领域技术人员理解。

块匹配:块匹配运动估计算法如图1所示。在块匹配运动估计中,当前帧Ft被分割成大小相等的m×n像素块,假设m×n像素块中所有像素都作相同的平移运动(Translation),下标t为时间。m×n像素块在t和t-Δt间隔内的位移称作运动矢量MV(Motion vector)。Ft-Δt表示参考帧。

块匹配涉及整像素全搜索以及子像素全搜索。

整像素全搜索时的匹配误差可以通过绝对误差和(英文:Sum of absolute differences,简称:SAD)、或者均方差(英文:Mean Square Error,简称:MSE)或者绝对平均差(英文:Mean Absolute Difference,简称:MAD)等算法来计算。

以8×8像素的待编码块在参考帧内进行整像素全搜索为例,以8×8像素的窗口在参考帧内每移动一个像素确定一个预测块,从而计算预测块与待编码块之间的匹配误差,在参考帧内移动完成后,获取所有的匹配误差,从而从计算所有的匹配误差中确定最小的匹配误差,该最小的匹配误差对应的匹配块为最优像素块。

以整像素全搜索时的匹配误差为SAD为例,假设如图2所示为在参考帧搜索到的预测块,图2中1~64分别为一个整像素,分别计算预测块中1~64中每个像素点与待编码块对应的像素点的匹配误差。

以整像素全搜索时的匹配误差为SAD为例,SAD可以通过如下公式得到:

其中,SAD(dx1,dy1)表示待编码块与位移为(dx1,dy1)的预测块之间的SAD值,ft(x1,y1)表示待编码块中整像素点的坐标,ft-Δt(x-dx1,y-dy1)表示位移为(dx1,dy1)的预测块中的整像素点1~64的坐标,R为8×8的待编码块中整像素点的坐标集合。

在进行8×8整像素全搜素后,进行子像素全搜索。假设在进行整像素全搜索时,搜索到的最优像素块对应的运动矢量位置的像素点为36,像素点36即为最优整像素位置。

针对在整像素全搜索得到的最优整像素位置,通过在其与相邻像素之间插值得到1/2像素(半像素)、1/4像素以及1/8像素。

以最优整像素位置36与相邻像素之间插值得到1/2像素为例,对最优整像素位置与相邻像素之间插值得到1/2像素(半像素)、1/4像素以及1/8像素的过程具体说明。

如图3所示,为亚像素插值算法的的示意图。其中,可以利用最优整像素位置36以及与其水平、垂直和对角线相邻的整像素位置37、44、45,通过以下公式(1-1)、(1-2)以及(1-3)确定与最优整像素位置36相对应的水平半像素位置B、垂直半像素位置A及对角线半像素位置E:

p(B)=(p(36)+p(38)+1-roundi ng_control)/2 (1-1)

p(A)=(p(36)+p(A)+1-rounding_control)/2 (1-2)

p(E)=(p(36)+p(B)+p(A)+p(E)+2-rounding_control)/4 (1-3)

其中,p(B)表示半像素B的位置,p(36)表示最优整像素36的位置,p(38)表示整像素38的位置,p(A)表示半像素A的位置,p(E)表示半像素E的位置,rounding_control为预设的舍去控制值。

如图4所示,为子像素全搜索的示意图,图4中A~H分别为一个半像素,a-h分别为一个1/4像素,子像素全搜索的具体过程为:

在进行整像素全搜索确定最优整像素位置36后,先对最优整像素位置36周围的半像素即位置A~H进行搜索,每搜索一次获取一次半像素匹配误差。然后,比较所有获取的半像素匹配误差确定其中最小的半像素匹配误差,最小的半像素匹配误差对应的位置,假设为A,即为待编码块在参考帧中的最优半像素位置。然后对最优半像素位置A周围的1/4像素即位置a-h进行搜索,每搜索一次获取一次1/4像素匹配误差。然后,比较所有获取的1/4像素匹配误差确定其中最小的1/4像素匹配误差,最小的1/4像素匹配误差对应的位置,假设为f,即为待编码块在参考帧中的最优1/4像素位置。若不继续再进行1/8像素搜索,则f像素为最优矢量位置。

子像素全搜索时的匹配误差可以通过绝对误差和的哈德曼变换值(英文:Sum of Absolute Transformed Difference,简称:SATD)来计算。

需要说明的是,SATD为4×4像素块的SAD的哈德玛变换值,通过如下公式得到:

其中,SAD通过如下公式得到:

其中,SAD(dx2,dy2)表示待编码块与位移为(dx2,dy2)的预测块之间的SAD值,ft(x2,y2)表示待编码块中整像素点的坐标,ft-Δt(x2-dx2,y2-dy2)表示预测块中相对于待编码块中整像素点的位移为(dx2,dy2)的像素点的坐标,例如,在待编码块在参考帧中进行1/2像素搜索过程中计算SATD时,ft-Δt(x2-dx2,y2-dy2)表示预测块中相对于待编码块中整像素点的位移为(dx2,dy2)的半像素点的坐标;在待编码块在参考帧中进行1/4像素搜索过程中计算SATD时,ft-Δt(x2-dx2,y2-dy2)表示预测块中相对于待编码块中整像素点的位移为(dx2,dy2)的1/4像素点的坐标。R为8×8的待编码块中整像素点的坐标集合。

因此,待编码块与预测块之间的SATD值为待编码块中所有4×4像素块的SATD之和。

经过申请人大量的测试观察,视频编码符合程序局部性规律,也就是说,一个16x16的搜索路径大致跟16x8的搜索路径相同,也跟8x16,8x8的搜索路径大致相同,既然一个16x16块与预测块之间的SATD值是其所有的4x4块SATD值之和,那么16x16的搜索结果可能大量被16x8,8x16块重用,而以上三种子块的搜索结果也可以被8x8块重用。

对于一个待编码子块,比如16x8待编码子块,如果当前搜索位置在16x16块搜索中已经经过计算,那么其SATD就不必再计算,可以直接重用。而子像素的SATD值计算是比较耗时间的,因为它不仅要计算与预测块之间的残差,还要对残差进行一次hadamart变换,所以这个计算结果一旦可以重用,将极大的节省CPU计算量。

基于此,本发明实施例提供一种子像素全搜索方法及装置,用以解决现有技术中子像素全搜索过程存在的计算量较大,计算复杂度较高,导致编码效率较低的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

下面结合附图对本发明优选的实施方式进行详细说明。

参阅图5所示,为本发明实施例提供的一种子像素全搜索方法的流程图,具体可以包括如下:

S501,针对待编码帧中的第一待编码子块,在参考帧图像块中进行第一像素精度的搜索;

需要说明的是,所述第一像素精度可以为1/2n像素精度,n为正整数,比如1/2像素精度、1/4像素精度以及1/8像素精度等,本发明实施例在这里不做具体限定。

S502,搜索到预测块时,获取所述预测块在所述参考帧图像块中的位置信息;其中,所述预测块与所述第一待编码子块的大小相同;

可选的,在针对待编码帧中的第一待编码子块,在参考帧图像块中进行第一像素精度的搜索之前,对所述参考帧进行子像素预计算。

所述子像素预计算为对所述参考帧中的所有整像素点进行1/2插值计算,1/4插值计算或1/8插值计算等,确定所述参考帧中每个整像素点周围的半像素、1/4像素或1/8像素。

S503,在预存储的对应关系中查找到所述位置信息对应的匹配误差时,将所述匹配误差作为所述预测块与所述第一待编码子块之间的匹配误差。

其中,所述对应关系中存储的所述位置信息对应的匹配误差是:针对所述待编码帧中大于所述第一待编码子块的第二待编码子块,在参考帧图像块中进行第一像素精度的搜索时计算得到的,所述第二待编码子块包括所述第一待编码子块。

本发明实施例中,通过将待编码块的第二待编码子块在进行第一像素精度搜索时得到的匹配误差存储在预存储的对应关系中,相比于现有技术中在待编码块的每个待编码子块在进行1/2n像素精度搜索时每搜索一次计算一次匹配误差,在待编码块的第一待编码子块进行1/2n像素精度搜索时,可以调用所述预存储的对应关系中存储的有效的匹配误差,减少了计算量,提高了编码效率。

可选的,所述方法还包括:

在预存储的对应关系中没有查找到所述位置信息对应的匹配误差时,确定所述预测块与所述第一待编码子块之间的匹配误差,并将获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中。

在一种可能的实现方式中,在确定所述预测块与所述第一待编码子块之间的匹配误差,并将获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中时,可以通过如下方式实现:

将所述预测块分成多个第一子像素块,将所述第一待编码子块分成多个第二子像素块,所述第一子像素块与所述第二子像素块的大小相同;并分别获取每个所述第二子像素块与其对应的所述第一子像素块之间的绝对误差和的哈德曼变换值SATD;

确定每个所述第一子像素块在所述参考帧图像块中的所在位置,并基于确定的每个所述第一子像素块的所在位置将每个所述第一子像素块的SATD存储到所述对应关系中。

具体的,所述确定每个所述第一子像素块在所述参考帧图像块中的所在位置,并基于确定的每个所述第一子像素块的所在位置将每个所述第一子像素块的SATD存储到所述对应关系中,可以通过如下两种方式中的任一种方式实现:

第一种实现方式:

A1,将所述预测块分成M个4×4像素的第一子像素块,并基于所述预测块的所述位置信息确定每个所述第一子像素块在所述参考帧图像块中的子位置信息,M为正整数;以及将所述第一待编码子块分成M个4×4像素的第二子像素块。

A2,分别获取第i个所述第二子像素块与其对应的第i个所述第一子像素块之间的SATD,将获取的第i个SATD与所述第一子像素块的所述子位置信息对应存储到所述对应关系中,i取遍不大于M的正整数。

第二种实现方式:

B1,将所述预测块分成N个4×4像素的第三子像素块,并将所述第一待编码子块分成N个4×4像素的第四子像素块,N为正整数。

B2,分别获取第j个所述第三子像素块与其对应的第j个所述第四子像素块之间的SATD,j取遍不大于N的正整数。

B3,将N个所述第四子像素块的SATD与所述预测块的所述位置信息对应存储到所述对应关系中。

可选的,所述对应关系以散列表方式存储。

具体的,所述对应关系以散列表方式存储时,将所述预测块的所述位置信息作为散列表中键值,并且在散列表中所述键值对应的存储位置中存储所述待编码子块中所有4×4像素块的SATD。

可选的,所述对应关系中还包括所述预测块的位置信息对应的标识信息,所述标识信息用于指示所述预测块的位置信息对应的SATD是否有效。

具体的,所述对应关系以散列表方式存储时,将所述预测块的所述位置信息作为散列表中键值,并且在散列表中所述键值对应的存储位置中存储所述待编码子块中所有4×4像素块的SATD,以及每个4×4像素块的SATD的标识信息。

例如:针对一个散列表中是否包括SATD值,设置25位标识。第0位:SATD_16用于表示散列表中是否包括16×16像素块对应的SATD值。如果记录为1则表示散列表中包括16×16像素块对应的SATD值,如果记录为0,则表示散列表中不包括16×16像素块对应的SATD值。[1..2]:SATD_16x8用于标识是否包括两个16×8对应的SATD值,第一位用于标识散列表中是否包括一个16×16像素块中上面的16×8像素块对应的SATD值,第二位表示散列表中是否包括一个16×16像素块中下面的16×8像素块对应的SATD值。同理,[3..4]:SATD_8x16用于标识是否包括两个8x16像素块对应的SATD值,[5..8]:SATD_8x8用于标识是否包括4个8x8像素块对应的SATD值,[9..16]:SATD_8x4用于标识是否包括8个8x4像素块对应的SATD值,[17..24]:SATD_4x8用于标识是否包括8个4x8像素块对应的SATD值。

本发明实施例中,所述键值可以但不仅限于通过以下公式确定:

y*Width+x<<14+iRef<<10+y1<<7+x1<<4;

其中,其中y表示待编码块左上顶点的整像素点的纵向坐标;Width表示图像的宽度;x表示待编码块左上顶点的整像素点的横向坐标;iRef表示参考帧号;y1为预测块对应的运动矢量位置的像素点的纵向位置,例如,在待编码块在参考帧中进行1/2像素搜索时,y1为预测块左上顶点的半像素点的纵向位置;在待编码块在参考帧中进行1/4像素搜索时,y1为预测块左上顶点的1/4像素点的纵向位置;x1为预测块对应的运动矢量位置的像素点的横向位置,例如,在待编码块在参考帧中进行1/2像素搜索时,x1为预测块左上顶点的半像素点的纵向位置;在待编码块在参考帧中进行1/4像素搜索时,x1为预测块左上顶点的1/4像素点的纵向位置;<<为左移运算符,表示把一个整型数的所有位向左移动指定的位数,左移运算的两个操作数中第一个操作数是要进行移位操作的数,第二个操作数为指定第一个操作数移动的位数。

为了更好地理解本发明实施例,以下给出具体应用场景,以16×16像素的待编码块为例,具体详细描述。

针对所述16×16像素的待编码块在参考帧中进行块匹配的过程,具体如图6所示。

S201,将16×16像素的待编码子块在参考帧中进行整像素全搜索;执行S202。

S202,基于整像素全搜索的结果获取16×16像素的待编码子块在参考帧中的最优整像素位置;执行S203。

S203,将16×16像素的待编码子块在最优整像素位置周围进行1/2像素搜索;执行S204。

S204,将16×16像素的待编码子块进行1/2像素搜索时得到的匹配误差存储到散列表中;执行S205。

S205,基于1/2像素搜索得到的匹配误差获取16×16像素的待编码子块在参考帧中的最优半像素位置,并确定所述最优半像素位置对应的最小匹配误差;执行S206。

需要说明的是,步骤S204和S205并没有严格的先后顺序,可以先执行S204,再执行S205,也可以先执行S205再执行S204,本发明实施例在这里不做具体限定。

可选的,在将16×16像素的待编码子块进行1/2像素搜索之后,还可以进行1/4像素搜索、1/8像素搜索等,具体搜索过程参阅16×16像素的待编码子块的1/2像素搜索过程,本发明实施例在这里不做重复说明。

S206,将16×16像素的待编码块分成两个16×8像素的待编码子块;执行S207。

针对两个16×8像素的待编码子块分别执行如下步骤S207至S214:

S207,将16×8像素的待编码子块在参考帧中进行整像素全搜索;执行S208。

S208,基于整像素全搜索得到的匹配误差获取16×8像素的待编码子块在参考帧中的最优整像素位置;执行S209。

S209,将16×8像素的待编码子块在最优整像素位置周围进行1/2像素搜索;执行S210。

S210,获取16×8像素的待编码子块在参考帧中对应预测块的位置信息的键值;执行S211。

S211,基于所述键值中的标识信息查询散列表中有效的SATD中是否包括16×8像素的待编码子块中所有4×4像素块的SATD;若是,执行S212;若否,执行S213。

S212,将散列表中包括的16×8像素的待编码子块中所有4×4像素块的SATD之和作为16×8像素的待编码子块与对应预测块的匹配误差;执行S214。

S213,计算16×8像素的待编码子块中散列表中不包括的4×4像素块的SATD,将计算的16×8像素的待编码子块中散列表中不包括的4×4像素块的SATD存储到所述键值对应的存储位置中,并将16×8像素的待编码子块中散列表中包括的4×4像素块的SATD和16×8像素的待编码子块中散列表中不包括的4×4像素块的SATD之和作为16×8像素的待编码子块与对应预测块的匹配误差;执行S214。

S214,基于1/2像素搜索得到的匹配误差获取16×8像素的待编码子块在参考帧中的最优半像素位置,并确定所述最优半像素位置对应的最小匹配误差;执行S215。

可选的,在将16×8像素的待编码子块进行1/2像素搜索之后,还可以进行1/4像素搜索、1/8像素搜索等,具体搜索过程参阅16×8像素的待编码子块的1/2像素搜索过程,本发明实施例在这里不做重复说明。

S215,计算两个16×8像素的待编码子块的最小匹配误差之和。

分别针对16×16像素的待编码块分成的2个8×16像素的待编码子块,以及分成的4个8×8像素的待编码子块、以及分成的16个4×4像素的待编码子块进行1/2像素搜索、1/4像素搜索、1/8像素搜索等,具体搜索过程参阅16×16像素的待编码块分成的2个16×8像素的待编码子块的1/2像素搜索过程,本发明实施例在这里不做重复说明。

将16×16像素的待编码子块的最小匹配误差、2个16×8像素的待编码子块的最小匹配误差之和、2个8×16像素的待编码子块的最小匹配误差之和、4个8×8像素的待编码子块的最小匹配误差之和以及16个4×4像素的待编码子块的最小匹配误差之和进行比较,确定其中最小的匹配误差。

本发明实施例中,通过将待编码块的第二待编码子块在进行第一像素精度搜索时得到的匹配误差存储在预存储的对应关系中,相比于现有技术中在待编码块的每个待编码子块在进行1/2n像素精度搜索时每搜索一次计算一次匹配误差,在待编码块的第一待编码子块进行1/2n像素精度搜索时,可以调用所述预存储的对应关系中存储的有效的匹配误差,减少了计算量,提高了编码效率。

基于与图5对应的方法实施例的同一发明构思,本发明实施例提供一种子像素全搜索装置70,该装置的结构如图7所示,包括搜索模块71、获取模块72和匹配模块73,其中:

搜索模块71,用于针对待编码帧中的第一待编码子块,在参考帧图像块中进行第一像素精度的搜索;

获取模块72,用于在所述搜索模块71搜索到预测块时,获取所述预测块在所述参考帧图像块中的位置信息;其中,所述预测块与所述第一待编码子块的大小相同;

匹配模块73,用于在预存储的对应关系中查找到所述获取模块72获取的所述位置信息对应的匹配误差时,将所述匹配误差作为所述搜索模块71搜索到的所述预测块与所述第一待编码子块之间的匹配误差;

其中,所述对应关系中存储的所述位置信息对应的匹配误差是:针对所述待编码帧中大于所述第一待编码子块的第二待编码子块,在参考帧图像块中进行第一像素精度的搜索时计算得到的,所述第二待编码子块包括所述第一待编码子块。

可选的,所述匹配模块73,还用于在预存储的对应关系中没有查找到所述获取模块72获取的所述位置信息对应的匹配误差时,确定所述搜索模块71搜索到的所述预测块与所述第一待编码子块之间的匹配误差;

所述装置还包括:

存储模块74,用于将所述获取模块72获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中。

可选的,所述匹配模块73,在确定所述搜索模块71搜索到的所述预测块与所述第一待编码子块之间的匹配误差,并将所述获取模块72获取的所述位置信息和确定的所述匹配误差存储到所述对应关系中时,具体用于:

将所述搜索模块71搜索到的所述预测块分成多个第一子像素块,将所述第一待编码子块分成多个第二子像素块,所述第一子像素块与所述第二子像素块的大小相同;并分别获取每个所述第二子像素块与其对应的所述第一子像素块之间的绝对误差和的哈德曼变换值SATD;

确定每个所述第一子像素块在所述参考帧图像块中的所在位置;

所述存储模块74,具体用于基于所述匹配模块73确定的每个所述第一子像素块的所在位置将每个所述第一子像素块的SATD存储到所述对应关系中。

可选的,所述存储模块74,具体用于以散列表方式存储所述对应关系。

可选的,所述对应关系中还包括所述预测块的位置信息对应的标识信息,所述标识信息用于指示所述预测块的位置信息对应的SATD是否有效。

本发明实施例中,通过将待编码块的第二待编码子块在进行第一像素精度搜索时得到的匹配误差存储在预存储的对应关系中,相比于现有技术中在待编码块的每个待编码子块在进行1/2n像素精度搜索时每搜索一次计算一次匹配误差,在待编码块的第一待编码子块进行1/2n像素精度搜索时,可以调用所述预存储的对应关系中存储的有效的匹配误差,减少了计算量,提高了编码效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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