优化搜索算法的视频数据压缩方法及装置
技术领域
本发明涉及视频压缩算法中的运动估计,特别地,涉及优化使用搜索模板的搜索算法的视频数据压缩方法及装置。
背景技术
目前的视频压缩算法大都是基于运动估计的,也就是根据前一帧的像素来预测当前帧的像素移动位置,产生的预测运动矢量和预测值与实际值的误差作为压缩后的数据进行处理并传输。在实际算法中一般有三种视频帧I、P、B。I帧是不进行运动补偿直接压缩,P帧是进行前向的运动估计,B帧通常在比较高的压缩层次中出现,是双向的预测帧。在一个视频压缩算法中计算量最大的就是运动估计,运动估计是最耗费时间的模块。
运动估计的核心思想就是要运算次数越少,收敛速度越快,找到和前一帧对应像素块匹配的位置。比较常用的搜索算法有三步法、梯度法、钻石法等。
三步法(TSS)是帧内编码运动估计时的搜索算法。为了减少搜索算法的计算复杂度并提高运动补偿的准确性,TSS采用9点正方形对目标块进行最优匹配,其基本思想是利用搜索模板的形状和大小对运动估计算法速度及精度产生重要影响的特性。在搜索最优匹配点时,选择小的搜索模板可能会陷入局部最优,选择大的搜索模板则可能无法找到最优点。
参照图1,图1是现有技术中三步法搜索模板的示意图。三步法的搜索过程如下:第一步,以目标块为中心,往四个方向扩展以一定步长取8个点,进行比较;第二步,将步长减半,以之前最优块为中心向四周扩展取8个点,进行比较;重复第一、第二步,直到步长小于1,得到最优点。
钻石搜索(DS,Diamond Search)法以搜索模板形状而得名,具有简单、鲁棒、高效的特点,是现有性能最优的快速搜索算法之一。DS算法针对视频图像中运动矢量的基本规律,选用了两种形状大小的搜索模板,一种为大钻石搜索模板(LDSP,Large Diamond SearchPattern),参照图2,图2是现有技术中大钻石搜索模板的示意图,它包含9个候选位置;另一种为小钻石搜索模板(SDSP,Small DiamondSearch Pattern),参照图3,图3是现有技术中小钻石搜索模板的示意图,它包含5个候选位置。
DS算法搜索过程如下:开始阶段先重复使用大钻石搜索模板,直到最佳匹配块落在大钻石中心。由于LDSP步长大,因而搜索范围广,可实现粗定位,使搜索不会陷于局部最小。当粗定位结束后,可认为最优点就在LDSP周围8个点所围菱形区域中。然后再使用小钻石搜索模板来实现最佳匹配块的准确定位,以不产生较大起伏,从而提高运动估计精度。
在三步搜索算法和DS搜索算法中,需要读取的匹配点的位置是变化的,这些位置在内存中是不连续的。而在***缓存内,数据的地址是连续的。因此操作***在进行缓存时,内存数据失效率增加,直接对内存的访问必然会引起访问失效,增加访问等待时间。
发明内容
本发明要解决的技术问题是,缩短处理器或硬件逻辑在进行搜索算法计算时因缓存失效而造成的额外等待时间。
根据本发明的第一方面,提供一种优化使用搜索模板的搜索算法的视频数据压缩方法,所述方法包括:根据搜索模板和搜索步长,确定搜索模板中其余各搜索块相对于当前搜索块的偏移地址;在搜索中,根据当前搜索块的起始地址和所述各偏移地址,计算其余各搜索块的起始地址;以及在进行匹配运算之前,将当前搜索块的视频数据和其余各搜索块的视频数据依次预读入缓存。
在第一方面中,优选地,所述使用搜索模板的搜索算法包括使用单一搜索模板的搜索算法。
优选地,所述使用单一搜索模板的搜索算法包括三步搜索算法。
优选地,所述使用搜索模板的搜索算法包括使用多级搜索模板的搜索算法。
优选地,所述使用多级搜索模板的搜索算法包括钻石搜索算法。
优选地,所述当前搜索块位于模板的中心。
根据本发明的第二方面,提供一种优化使用搜索模板的搜索算法的视频数据压缩装置,所述装置包括:偏移地址确定装置,用于根据搜索模板和搜索步长,确定搜索模板中其余各搜索块相对于当前搜索块的偏移地址;起始地址计算装置,在搜索中用于根据当前搜索块的起始地址和所述各偏移地址,计算其余各搜索块的起始地址;以及块数据预读装置,用于在进行匹配运算之前,将当前搜索块的视频数据和其余各搜索块的视频数据依次预读入缓存。
在第二方面中,优选地,所述使用搜索模板的算法包括使用单一搜索模板的搜索算法。
优选地,所述使用单一搜索模板的搜索算法包括三步搜索算法。
优选地,所述使用搜索模板的搜索算法包括使用多级搜索模板的搜索算法。
优选地,所述使用多级搜索模板的搜索算法包括钻石搜索算法。
优选地,所述当前搜索块位于模板的中心。
尽管搜索算法对块的读取是非连续的,但是根据本发明,可通过计算来确定数据块的地址,利用缓存预读技术改进单一的内存预读,从而提高内存缓存成功率,大量缩短处理器或硬件逻辑的额外等待时间。
附图说明
图1是现有技术中三步法搜索模板的示意图;
图2是现有技术中大钻石搜索模板的示意图;
图3是现有技术中小钻石搜索模板的示意图;
图4是根据本发明优化三步搜索算法的视频数据压缩方法的流程图;
图5是根据本发明优化钻石搜索算法的视频数据压缩方法的流程图。
为更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步说明。
具体实施方式
根据本发明,优化三步搜索算法的视频数据压缩方法的过程为:首先,偏移地址确定装置根据三步法的搜索模板和搜索步长,确定搜索模板中其余各搜索块相对于当前搜索块的偏移地址。可建立一张偏移地址对照表,对应搜索步长以及模板索引可得到其余各搜索块相对于当前搜索块的偏移地址,优选地,当前搜索块位于模板的中心。参照图1,对于三步法搜索模板,以当前搜索块为中心,从位于它左侧的搜索块起沿顺时针方向,各搜索块的偏移地址分别如下表所示,其中n是搜索步长,当前搜索块的偏移地址为(0,0)。
(0,0) |
(-n,0) |
(-n,n) |
(0,n) |
(n,n) |
(n,0) |
(n,-n) |
(0,-n) |
(-n,-n) |
|
其次,起始地址计算装置在搜索中根据当前搜索块的起始地址和各偏移地址,计算其余各搜索块的起始地址。如当前搜索块起始地址为(72,36),步长为4,那么对应的各个搜索块的起始地址分别为(72,36),(72-4,36),(72-4,36+4),依次类推。
最后,块数据预读装置在进行匹配运算之前,将当前搜索块的视频数据和其余各搜索块的视频数据依次预读入缓存。这里,匹配运算的常用匹配准则包括绝对误差和(SAD)、均方误差(MSE)及归一化互相关函数(NCCF),其中SAD不需要乘法运算,实现简单。确定了块的起始地址,因为块是8×8大小的像素块,就可以将块的视频数据读到缓存中。在嵌入式平台,如DSP和ARM平台上提供了专门对缓存进行处理的指令。使用处理器或DSP的专用指令,如ARM的PLD指令可将视频数据读取到缓存。这样,用缓存预读(Cache preload)在运算之前进行缓存,提高了***性能。
在三步法第一步前,先读取偏移地址对照表,将指定地址的数据读入缓存中。计算得到一个最优点时,根据新的步长,预先将指定地址的视频数据读入缓存,不断重复。参照图4,图4是根据本发明优化三步搜索算法的视频数据压缩方法的流程图。上述过程的具体步骤如下:1)建立一个TSS模板偏移地址对照表;2)读取参考帧中一个块数据;3)以对应的块地址为中心,从偏移地址对照表中依次得到每个块的起始地址;4)在***计算SAD时,将块数据读入缓存中,比较之前的结果保存较小的值,重复8次;5)如果中心点块的SAD值最小,那么本次搜索结束。否则,将中心点移到SAD值最小的那个块,将步长减半后,重复执行步骤3),直到步长小于1,得到最优值。
根据本发明,优化钻石搜索算法的视频数据压缩方法的过程为:首先,偏移地址确定装置根据DS搜索算法的两种模板,分别确定每一模板中其余各搜索块相对于当前搜索块的偏移地址。可建立两张偏移地址对照表,对应搜索步长以及模板索引可得到各搜索块相对于当前搜索块的偏移地址,优选地,当前搜索块位于模板的中心。参照图2、3,以当前搜索块为中心,从位于它左侧的搜索块起沿顺时针方向,大、小钻石搜索模板中各搜索块的偏移地址分别如LDSP表、SDSP表中所示,其中当前搜索块的偏移地址为(0,0),n是大模板的当前搜索步长,小模板的搜索步长为1。
LDSP |
(0,0) |
(-n,0) |
(-n/2,n/2) |
(0,n) |
(n/2,n/2) |
(n,0) |
(n/2,-n/2) |
(0,-n) |
(-n/2,-n/2) |
SDSP |
(0,0) |
(-1,0) |
(0,1) |
(1,0) |
(0,-1) |
|
|
|
|
其次,起始地址计算装置在搜索中根据当前搜索块的起始地址和各偏移地址,计算其余各搜索块的起始地址。如当前搜索块起始地址为(72,36),步长为2,那么对应的大模板中各个搜索块的起始地址分别为(72,36),(72-2,36),(72-2/2,36+2/2),依次类推。
最后,块数据预读装置在进行匹配运算之前,将当前搜索块的视频数据和其余各搜索块的视频数据依次预读入缓存。同样地,这里匹配运算的常用匹配准则也包括绝对误差和(SAD)、均方误差(MSE)及归一化互相关函数(NCCF)。仍可使用处理器或DSP的专用指令,如ARM的PLD指令将视频数据读取到缓存,同样利用缓存预读(Cachepreload)在运算之前进行缓存,提高了***性能。
参照图5,图5是根据本发明优化钻石搜索算法的视频数据压缩方法的流程图。上述过程的具体步骤为:1)读取一个参考帧的块数据;2)根据第一个块的起始地址,将第一块的数据读到缓存中,根据当前步长在LDSP表中确定其余各块的起始地址;3)在***进行SAD计算时,将第二个块读到缓存中,比较并保存较优值,重复8次;4)如果中心点块的SAD值最小,则进入小模板匹配环节,否则将中心点移到SAD最小的那个块,调整步长,重复执行步骤2);5)确定在SDSP表中第一个块的起始地址,将第一块的视频数据读到缓存中;6)在***进行当前块SAD计算时,将第二个块读到缓存中,比较并保存较优值,重复4次;7)如果中心点的SAD值最小,则当前块搜索结束,否则将中心点移到SAD值最小的那个块,重复执行步骤5),直至得到最优点。
上述优化三步搜索算法和钻石搜索算法的过程和具体步骤中,所述当前搜索块位于搜索模板的中心只是一个例子,这里当前搜索块也可以位于搜索模板中除中心以外的其他任何位置。
前文分别以优化使用单一搜索模板的三步法和优化使用两级搜索模板的DS算法为例,对本发明作了说明性的描述。除此之外,本发明还可优化使用其他单一搜索模板的搜索算法,以及优化使用其他多级搜索模板的搜索算法,如四步法、二维对数法等,这对本领域技术人员来讲是显然的。
显而易见,在此描述的本发明可以有许多变化,这种变化不能认为偏离本发明的精神和范围。因此,所有对本领域技术人员显而易见的改变,都包括在本权利要求书的涵盖范围之内。