基于数据压缩与搜索范围预测的运动估计存储架构设计方法与流程

文档序号:16316617发布日期:2018-12-19 05:30阅读:300来源:国知局
基于数据压缩与搜索范围预测的运动估计存储架构设计方法与流程

本发明属于数字电视与数字视频处理领域,具体涉及一种基于数据压缩与搜索范围预测的运动估计存储架构设计方法。

背景技术

随着视频处理技术的不断发展与人们对视频显示质量要求的不断提高,高刷新率的超高清显示设备已经实现了广泛的普及和应用。运动估计作为视频处理技术的核心模块,负责追踪视频图像内所有物体的运动情况。其主要采用高效的块匹配模式,即将当前帧以一定粒度分割为互不交叠的数据宏块,并以这些宏块为基准,在其参考帧对应宏块位置的一定范围内寻找其最佳匹配块。块匹配方法主要有两种:全搜索与快速运动估计。全搜索需要遍历搜索范围内的所有位置来找到最匹配的运动向量,从而导致极大的计算量。因此诸多快速运动估计算法被提出来,通过一定的规则只比较一些关键的候选位置,从而极大的降低运算量。然而这些运动估计算法仅仅解决了计算量过大的问题,并没有涉及到片外存储器访问带宽和片上存储器消耗过大的问题。超高清分辨率(4k)视频又为运动估计带来更加严峻的片外存储器访问带宽和片上存储器消耗过大的挑战。

为了降低运动估计模块带宽过大的问题,通常各种设计均采用提高片上数据复用的做法。然而越高的数据复用意味着越大的片上存储器耗费,当数据复用最高时,即待处理图像中每一个像素数据均只需要被访问一次,其导致的片上存储消耗是不可接受的。因此大多数设计均采用较低等级的数据复用来兼顾带宽和片上存储。但随着图像分辨率的不断提高,运动估计搜索范围也相应的不断增长,这导致其片外存储器访问带宽和片上存储器消耗需要进一步地降低。



技术实现要素:

本发明的目的在于采用最高的数据复用策略来使运动估计仿存带宽最小的同时,提供了一种基于数据压缩与搜索范围预测的运动估计存储架构设计方法。

本发明采用如下技术方案来实现的:

基于数据压缩与搜索范围预测的运动估计存储架构设计方法,包括以下步骤:

1)主存储器视频数据加载

首先从片外存储器向主存储器中加载数据,加载的模式为modelb;

2)主存储器视频数据压缩

从片外存储器中加载得到的要存入主存储器中的视频数据块进行压缩之后再存入主存储器;

3)主存储器存储压缩后的视频数据

4)主存储器数据解压缩

当运动估计模块需要从主存储器中读取数据时,将数据进行解压缩;

5)利用主存储器中解压缩的数据进行运动估计

利用从主存储器中解压缩的数据进行运动估计,此时运动估计垂直方向的搜索范围为psrv;

6)判断最优运动估计结果是否超出垂直向搜索范围psrv

从主存储器中解压缩的数据当中得到在垂直向搜索范围为psrv的搜索区域中的最优运动估计,判断该局部最优运动估计是否为最终的最优运动估计,如果是则结束运动估计过程,如果不是则进入步骤7);

7)副存储器数据加载

副存储器的加载的模式为modela;

8)副存储器数据压缩

对于单次运动估计和两次运动估计中需要存入副存储器的视频数据进行压缩,压缩方式和步骤2)中的主存储器数据压缩方式一致;

9)副存储器存储压缩后的视频数据

将步骤8)中压缩之后的数据存入副存储器中,副存储器中dpram的行数为(srv-psrv),位宽大小由量化等级和压缩参数的调整决定;

10)副存储器数据解压缩

副存储器数据解压缩方式和步骤4)中的主存储器数据解压缩方式一致;

11)利用副存储器中解压缩的数据进行运动估计

12)判断最优运动估计结果是否出现在从副存储器中读取的数据之中

判断最优运动估计结果是否出现在从副存储器中读取的数据之中,如果存在则结束本次运动估计,如果不存在则继续在副存储器中加载数据,循环进行步骤7)至11),直到找到最终的最优运动估计或者到达极限搜索边界srv则结束本次运动估计。

本发明进一步的改进在于,步骤1)中,第一次加载的数据块大小为(psrv+n)*w,之后每次加载n*w大小的数据块,其中psrv为初始运动估计垂直向搜索范围的大小,w为整个图像的宽度,n为搜索宏块的垂直向尺寸;当从片外存储器中加载数据时,加载的数据是未进行帧压缩的原始视频数据,或者是帧压缩模块压缩后的视频数据,如果是帧压缩模块压缩后的视频数据,则读取之后要进行帧解压缩;加载的原始视频数据块和帧解压缩后的视频数据块都符合modelb模式,大小都为(psrv+n)*w或n*w。

本发明进一步的改进在于,步骤2)中,具体的压缩步骤为:

201)将视频数据块每一行中的每16个像素点作为一组;

202)对每一组中的16个像素点进行差分脉冲调制产生残差,根据dn=xn-x'n-1计算残差,其中dn是残差,xn是第n个被压缩的像素点,x'n-1是第n-1个像素点xn-1解压缩后的值;

203)将每一组中像素残差进行量化,量化等级可调,得到d'n;

204)使用指数哥伦布编码对量化后的残差进行编码,指数哥伦布编码的阶数为0;首先根据公式m=log2(d'n+1)得到m值,其中d'n是量化后待编码的残差,将m向下取整,即得到指数哥伦布的组号m,对得到的组号进行编码,连续写入m个0,最后写入一个1作为结束,至此即可得到d'n的第一部分编码;然后根据公式offset=d'n+1-2m得到指数哥伦布的组内偏移offset,取offset二进制形式的低m位作为d'n的第二部分编码;最后将第一部分编码和第二部分编码拼接,即可得到d'n的编码;

205)码字封装。

本发明进一步的改进在于,步骤3)中,将步骤2)中压缩之后的数据存入主存储器中,主存储器中dpram的行数为psrv+n,且dpram的位宽由量化等级和压缩参数的调整决定。

本发明进一步的改进在于,步骤4)中,具体实现步骤如下:

401)从片上存储器中读取搜索位置的压缩数据块进行码字识别;

402)对识别之后的数据进行指数哥伦布解码,其解码过程为:依次读入比特流,是0则继续读入,是1则停止,统计之前得到的0的个数,即可得到指数哥伦布编码的组号m,接着读入m位比特,得到指数哥伦布编码的offset,最后根据公式d”n=offset-1+2m即可解码得到量化后的残差;

403)d”n反向量化得到d”’n;

404)差分脉冲调制解码,根据公式x'n=d”’n+x'n-1,得到xn解压后的数据x'n。

本发明进一步的改进在于,步骤6)中,对于全搜索来说,全搜索能够得到:

a)在当前的垂直向搜索范围内最优运动估计的宏块匹配程度sad;

b)在当前的垂直向搜索范围内的最优运动估计mv;

c)当前宏块的左边、上边和右上宏块最终的最优运动估计mvleft、mvup及mvup_right;

d)当前宏块的左边、上边和右上宏块最终的最优运动估计宏块匹配程度sadleft、sadup及sadup_right;

将c)中周围宏块的最终最优运动估计和当前宏块运动估计的差距,d)中周围宏块的最终最优运动估计匹配程度和当前宏块运动估计匹配程度的差距,a)、b)中当前宏块的运动估计结果和匹配程度作为特征,训练一个决策模型/决策树就能够判断在当前的垂直向搜索范围内最优运动估计是否为最终的最优运动估计。

本发明进一步的改进在于,步骤7)中,第一次加载的数据块大小为(srh+n)*(srv-psrv)/grading,其中srh为运动估计水平向搜索范围,psrv为初始的运动估计垂直向搜索范围,srv是极限的垂直向搜索范围,所有运动估计的垂直向搜索范围都不超过srv,n为搜索宏块的横向尺寸,grading是在一次运动估计中加载到副存储器中的数据粒度,grading是一个大于1的整数值;在一次运动估计中,副存储器中的数据是一个逐渐加载的过程,每次加载的数据量为(srh+n)*(srv-psrv)/grading,在数据加载的过程中同步进行运动估计的计算,当判定已得到最终的最优运动估计或已经到达垂直向极限搜索范围srv,则停止数据加载;

在两次运动估计之间进行数据加载时,根据modela模式进行加载,每次加载的数据块最小为n*(srv-psrv)/grading,最大为(srh+n)*(srv-psrv)/grading,当加载的数据块是最小的情况时,两次运动估计之间实现完全的modela等级的数据复用,并且后一次运动估计只加载了一次数据就找到了最终的最优运动估计。

本发明具有如下有益的技术效果:

本发明提供的基于数据压缩与搜索范围预测的运动估计存储架构设计方法,该方法可以将运动估计的片外存储器访问带宽和片上存储器消耗降低到一个比较低的可接受的范围。相对于modela和modelb级别的常规运动估计数据复用策略,modela级别的数据复用策略片上存储器消耗较少,但是其产生的片外存储器访问带宽是不可接受的,尤其对于超高清视频(4k)更是如此。modelb级别的数据复用策略片外存储器访问带宽较小,但是它所需要的片上存储器消耗太大,尤其对于超高清视频(4k)来说它对片上存储器的消耗是不可接受的。为了权衡片外存储器访问带宽和片上存储器消耗的问题,本发明的主体架构是基于modelb的数据复用策略,但如之前所说modelb的片上存储器消耗太大,为了降低modelb策略下的片上存储器消耗,本发明首先对modelb策略下加载进入片上存储器中的数据进行压缩,这样片上存储中只存储压缩后的数据,就可以降低modelb策略下的片上存储器消耗。为了进一步降低modelb策略下的片上存储器消耗,本发明中又提出垂直方向搜索范围预测,在主体存储器是modelb的前提下,增加一块额外的片上存储作为副存储,副存储的数据复用策略为modela。将modelb复用策略中主体片上存储中的不常用的数据存入到副存储中,并且这些不常用的数据并不会像主存储器中的数据一样在每次运动估计中都进行加载,而是在需要加载的时候才从片外存储器中加载到副存储器中。由于增加了副存储器来存储主存储器中不常用的数据,副存储器又是采用modela级别的数据复用,所以副存储器的大小远远小于主存储器中存储不常用数据的片上存储器大小,这样剔除主存储器中存储不常用数据的存储器,增加副存储器来存储这些不常用数据,总体而言片上存储器耗费进一步降低。由于副存储器采用的是modela级别的数据复用,所以这样做会增加一点点片外存储器带宽,但是增加的带宽相对于主体为modelb级别的数据复用所节省的带宽是微乎其微的。

进一步,主存储器采用modelb数据复用,所以主存储器所产生的片外存储器带宽是在一个最低的水平。

进一步,对数据进行压缩之后再存入主存储器和副存储器,这样就可以同时降低主存储器和副存储器的消耗,进而降低了整体的片上存储器消耗。

进一步,本发明认为超出垂直向搜索范围psrv的数据是不常用数据,将这些数据在需要的时候才存入副存储器中,避免了主存储器以modelb模式存储不常用数据。剔除存储不常用数据的主存储器单元,这样就进一步降低了整体的片上存储器消耗。但产生了一定的额外带宽,由于只是存储不常用数据,所以这些额外的带宽,相对于权利要求1的从属权利要求1)所节省的带宽来说是微乎其微的。

进一步,副存储器中数据加载是按照一定的粒度进行加载的,当判断得到最终的最优运动估计时,就停止数据加载,这样减少了无用数据的加载,又节省了一定的带宽。

概括来说,本发明具有如下优点:

1、本发明通过提高运动估计算法的数据复用来最小化片外存储的仿存带宽。

2、本发明通过在水平方向进行图像数据压缩来降低片上存储器的用量。为了减小数据压缩算法引入的计算量和复杂度,本发明采用以行内小数据块为单位的压缩。并使用硬件实现难度较小的差分脉冲调制与指数哥伦布编码结合的压缩技术。

3、本发明利用垂直方向运动过大物体较少的特性,将搜索范围分为主范围和副范围两部分,而对于大部分宏块在主范围内即可找到其最佳运动矢量。并且,主范围内的数据采用modelb的数据复用,实现最小的带宽损耗。副范围对应于运动较大的宏块,当主范围无法满足需求时会将所需数据从外部存储读入。副范围内的数据采用modela的数据复用,实现相对较低的带宽损耗。

综上所述,本发明针对以上混合数据复用的策略,在片上存储架构中采用两层次的结构,从而进一步的减小为实现最小的仿存带宽导致的片上存储器耗费。

附图说明

图1为本发明的系统架构;

图2为数据复用等级的示意图;

图3为数据压缩模块的算法框图;

图4为垂直方向搜索范围预测示意图。

具体实施方式

下面结合附图对本发明做进一步详细的说明。

本发明被分为两个部分:一是从片外存储器上读取数据到片上存储器时对水平方向的视频数据进行压缩;二是把片上存储器分为主存储器和副存储器,首先将一定范围内的视频数据从片外存储器中读入片上的主存储器并在其数据中进行运动估计,当最优的运动估计无法在主存储器中找到时,就进一步在副存储器中继续完成运动估计,找到最优匹配位置后即停止数据加载。

如图1所示,本发明提供的基于数据压缩与搜索范围预测的运动估计存储架构设计方法,包括以下步骤:

1)主存储器视频数据加载

首先从片外存储器向主存储器中加载数据,如图2所示,加载的模式为modelb。第一次加载的数据块大小为(psrv+n)*w,之后每次加载n*w大小的数据块,其中psrv为初始运动估计垂直向搜索范围的大小,w为整个图像的宽度,n为搜索宏块的垂直向尺寸。当从片外存储器中加载数据时,加载的数据可以是未进行帧压缩的原始视频数据,也可以是图1中帧压缩模块压缩后的视频数据,如果是帧压缩模块压缩后的视频数据,则读取之后要进行帧解压缩。加载的原始视频数据块和帧解压缩后的视频数据块都符合modelb模式,大小都为(psrv+n)*w或n*w。

2)主存储器视频数据压缩

从片外存储器中加载得到的要存入主存储器中的视频数据块需要进行压缩之后再存入主存储器。如图3所示,具体的压缩步骤为:

201)将视频数据块每一行中的每16个像素点作为一组。

202)对每一组中的16个像素点进行差分脉冲调制产生残差。根据dn=xn-x'n-1计算残差,其中dn是残差,xn是第n个被压缩的像素点,x'n-1是第n-1个像素点xn-1解压缩后的值。

203)将每一组中像素残差进行量化,量化等级可调,得到d'n。

204)使用指数哥伦布编码对量化后的残差进行编码。指数哥伦布编码的阶数为0。首先根据公式m=log2(d'n+1)得到m值,其中d'n是量化后待编码的残差,将m向下取整,即得到指数哥伦布的组号m,对得到的组号进行编码,连续写入m个0,最后写入一个1作为结束,至此即可得到d'n的第一部分编码。然后根据公式offset=d'n+1-2m得到指数哥伦布的组内偏移offset,取offset二进制形式的低m位作为d'n的第二部分编码。将第一部分编码和第二部分编码拼接,即可得到d'n的编码。

205)码字封装。

3)主存储器存储压缩后的视频数据

将步骤2)中压缩之后的数据存入主存储器中,如图1所示,主存储器中dpram(双端口ram)的行数为psrv+n,且dpram的位宽由量化等级和压缩参数的调整决定。

4)主存储器数据解压缩

当运动估计模块需要从主存储器中读取数据时,需要将数据进行解压缩如图3所示,主要步骤为:

401)从片上存储器中读取搜索位置的压缩数据块进行码字识别。

402)对识别之后的数据进行指数哥伦布解码。其解码过程为:依次读入比特流,是0则继续读入,是1则停止,统计之前得到的0的个数,即可得到指数哥伦布编码的组号m,接着读入m位比特,得到指数哥伦布编码的offset,最后根据公式d”n=offset-1+2m即可解码得到量化后的残差。

403)d”n反向量化得到d”’n。

404)差分脉冲调制解码,根据公式x'n=d”’n+x'n-1,得到xn解压后的数据x'n。

5)利用主存储器中解压缩的数据进行运动估计

利用从主存储器中解压缩的数据进行运动估计,此时运动估计垂直方向的搜索范围为psrv。

6)判断最优运动估计结果是否超出垂直向搜索范围psrv

从主存储器中解压缩的数据当中得到在垂直向搜索范围为psrv的搜索区域中的最优运动估计,判断该局部最优运动估计是否为最终的最优运动估计,如果是则结束运动估计过程,如果不是则进入步骤7)。具体的判断过程对于快速运动估计(四步法、菱形搜索等)来说,算法本身带有判定条件即当前搜索位置的宏块匹配程度比以该搜索位置为中心的一个正方形或菱形边界上等间距分布的八个搜索位置都好,则认为找到了最优的运动估计。对于全搜索来说,如图4所示,全搜索可以得到:

a)在当前的垂直向搜索范围内最优运动估计的宏块匹配程度sad。

b)在当前的垂直向搜索范围内的最优运动估计mv。

c)当前宏块的左边、上边和右上宏块最终的最优运动估计mvleft、mvup及mvup_right。

d)当前宏块的左边、上边和右上宏块最终的最优运动估计宏块匹配程度sadleft、sadup及sadup_right。

将c)中周围宏块的最终最优运动估计和当前宏块运动估计的差距,d)中周围宏块的最终最优运动估计匹配程度和当前宏块运动估计匹配程度的差距、a)、b)中当前宏块的运动估计结果和匹配程度作为特征,训练一个决策模型(决策树)就可以判断在当前的垂直向搜索范围内最优运动估计是否为最终的最优运动估计。

7)副存储器数据加载

如图2所示,副存储器的加载的模式为modela。第一次加载的数据块大小为(srh+n)*(srv-psrv)/grading,其中srh为运动估计水平向搜索范围,psrv为初始的运动估计垂直向搜索范围,srv是极限的垂直向搜索范围,所有运动估计的垂直向搜索范围都不超过srv,n为搜索宏块的横向尺寸,grading是在一次运动估计中加载到副存储器中的数据粒度,grading是一个大于1的整数值。在一次运动估计中,副存储器中的数据是一个逐渐加载的过程,每次加载的数据量为(srh+n)*(srv-psrv)/grading,在数据加载的过程中同步进行运动估计的计算,当判定已得到最终的最优运动估计(判断过程和步骤6)相同)或已经到达垂直向极限搜索范围srv,则停止数据加载。在两次运动估计之间进行数据加载时,根据modela模式进行加载,每次加载的数据块最小为n*(srv-psrv)/grading,最大为(srh+n)*(srv-psrv)/grading,当加载的数据块是最小的情况时,两次运动估计之间可以实现完全的modela等级的数据复用,并且后一次运动估计只加载了一次数据就找到了最终的最优运动估计。

8)副存储器数据压缩

对于单次运动估计和两次运动估计中需要存入副存储器的视频数据都要进行压缩,压缩方式和步骤2)中的主存储器数据压缩方式一致。

9)副存储器存储压缩后的视频数据

将步骤8)中压缩之后的数据存入副存储器中,如图3所示,副存储器中dpram的行数为(srv-psrv),位宽大小由量化等级和压缩参数的调整决定。

10)副存储器数据解压缩

副存储器数据解压缩方式和步骤4)中的主存储器数据解压缩方式一致。

11)利用副存储器中解压缩的数据进行运动估计

12)判断最优运动估计结果是否出现在从副存储器中读取的数据之中

判断最优运动估计结果是否出现在从副存储器中读取的数据之中,如果存在则结束本次运动估计,如果不存在则继续在副存储器中加载数据,循环进行步骤7)至11),直到找到最终的最优运动估计或者到达极限搜索边界srv则结束本次运动估计。

为了对本发明进一步的了解,现对其进一步说明如下:

数据复用策略:使用modela与modelb的混合数据复用策略,实现较少的片上存储耗费以达到最低的片外存储访问带宽。其主要特点是:

针对于分辨率大小为w×h(w为图像宽度,h为图像高度)的视频图像,在运动估计算法中,对于每一个大小为n×n的宏块均需要从片外存储器中读取(srh+n)×(srv+n)(其中srv为极限垂直方向搜索范围大小,srh为横向搜索范围大小)的像素数据来完成运动估计的搜索与匹配。考虑到相邻匹配块与搜索范围之间的数据重复情况,在本发明中的运动估计中采用较高的数据复用策略modela和modelb,其中:

1)modela:相同搜索方向内相邻搜索范围之间的数据复用,复用数据量为srh×srv。数据复用较高,带宽较小,片上存储器使用量较大。

2)modelb:相同搜索方向相邻搜索行之间的数据复用,复用数据量为w×srv。数据复用最高,带宽最小,片上存储器使用量最大。

水平方向数据压缩:运动估计模块所需数据从片外存储器中基于modelb的数据复用策略被缓存进入片上存储器中,并在每一行宏块完成运动匹配之后进行更新。数据进入片上存储器前对所有像素数据进行压缩,从而减少片上存储器的使用量。相应地,这些数据从片上存储器中读出之前需要进行解码处理。具体编码过程包含:差分脉冲调制产生像素残差、像素残差量化、指数哥伦布编码和码字封装。具体解码过程包含:码字识别、指数哥伦布解码、反向量化和像素输出。

垂直方向搜索范围预测:运动估计首先在垂直方向psrv(初始的垂直方向搜索范围)<srv的范围内进行,当该范围的数据可以找到最优匹配位置时,当前块的运动估计结束。如无法得到最优匹配位置,则psrv以外但不超过srv的数据会被从外部存储器中获取,继续运动估计直到获得最优匹配位置。需要注意的是,需要额外读取的数据将以一定的粒度按需求分批次的提前读入。因此,搜索到达srv边界之前,总是有一定的数据提前读入等待使用。如果某一次搜索得到了最佳匹配结果,则运动估计结束,该次提前读入的数据则为无用数据。最优匹配位置的判断与各种运动估计算法相关,例如菱形搜索与四步法,是否需要额外的数据进行进一步的搜索取决于这些算法自身的决策结果。如果是全搜索则根据该次搜索范围内的一些运动估计结果和周围宏块的运动估计结果采用决策模型(决策树)来进行决策。

两层次片上存储结构:根据运动估计系统采用混合数据复用策略与垂直方向搜索范围预测的技术方案,片上存储器架构设计为主副两层次的结构:srammajor(主片上存储)和sramminor(副片上存储)。其中srammajor用来存储所有基于modelb复用且垂直搜索范围为psrv的像素数据,这些数据可以满足大多数宏块运动估计需求,并找到最佳匹配位置。sramminor分为两块,分别用来存储psrv以外srv以内的上方和下方的额外数据。这些数据用来满足无法在psrv内部找到最佳匹配位置的宏块。sramminor内的数据满足modela级别的数据复用。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

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