首页> 中国专利> 高效视频编码中的运动估计加速方法

高效视频编码中的运动估计加速方法

摘要

本发明公开了一种高效视频编码中的运动估计加速方法,主要解决现有高效视频编码技术中编码速度慢的问题。其步骤为:1)主处理器CPU将图像数据传输至协处理器GPU进行存储;2)GPU利用图像数据执行分层高级运动向量预测和整像素运动搜索,得出各层的整像素运动向量,并对图像数据中的参考图像进行分像素插值滤波,得出不同精度的插值图像;3)以各层的整像素运动向量为起点,在不同精度的插值图像上分别执行分像素运动搜索,得出各个块的分像素运动向量;4)GPU将整像素运动向量和分像素运动向量信息传输至CPU,CPU对这两种运动向量进行误差修正,完成运动估计。本发明显著提高了编码速度和效率,可应用于视频编解码。

著录项

  • 公开/公告号CN106878737A

    专利类型发明专利

  • 公开/公告日2017-06-20

    原文格式PDF

  • 申请/专利权人 西安电子科技大学;

    申请/专利号CN201710121042.4

  • 申请日2017-03-02

  • 分类号H04N19/436;H04N19/573;H04N19/80;H04N19/567;H04N19/56;

  • 代理机构陕西电子工业专利中心;

  • 代理人王品华

  • 地址 710071 陕西省西安市雁塔区太白南路2号

  • 入库时间 2023-06-19 02:38:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-08

    授权

    授权

  • 2017-07-14

    实质审查的生效 IPC(主分类):H04N19/436 申请日:20170302

    实质审查的生效

  • 2017-06-20

    公开

    公开

说明书

技术领域

本发明属于视频压缩编码技术领域,特别涉及一种运动估计加速方法,可用于在CPU+GPU平台下的高效视频编码HEVC。

背景技术

视频领域应用中有一项关键技术是视频编码,也称视频压缩,其目的是尽可能去除视频数据中的冗余成分,减少表征视频的数据量。从20世纪80年代起,国际组织开始对视频编解码建立国际标准。随着技术的不断改进,新一代视频编解码标准——H.265/HEVC于2013年11月25日发布。

与以往的视频编解码标准相比,H.265/HEVC的编码性能有了很大的提升,这是由于新增了许多技术,例如基于四叉树的灵活块分割结构、不同角度的帧内预测模式、帧间预测中自适应的高级运动向量预测技术AMVP、合并技术Merge、可变尺寸的离散余弦变换、性能更好的CABAC,以及新的样点自适应补偿滤波器等。

帧间预测主要用于去除图像间的时间相关性,通过将已经编码的图像作为当前帧的参考图像,来获取各个块的运动信息,从而去除时间冗余,提高压缩效率。在H.265/HEVC中引入了新的帧间预测技术,包括Merge、AMVP及基于Merge的Skip模式。Merge技术利用空域相关性和时域相关性来减少相邻块之间的运动参数冗余,具体就是取相邻PU的运动参数作为当前PU的运动参数。AMVP技术的作用与Merge技术类似,AMVP技术得到的运动矢量一方面为运动估计提供搜索起点,另一方面作为预测运动矢量使用。在运动搜索方面,快速搜索使用了TZSearch算法。

分像素插值及运动搜索是为了克服由运动的连贯性导致的运动以半像素、1/4像素为单位的情况,对图像信息进行滤波处理,并搜索出亚像素情况下的运动信息。现有标准H.264/AVC以及H.265/HEVC都使用1/4像素精度运动估计。

率失真是同时衡量压缩性能和失真情况的一个量度。率失真优化方法是最主要的编码参数选择优化技术。在H.265/HEVC中,率失真函数如下:

J=D+λ×Rrate

其中D表示失真,Rrate表示编码所消耗的比特数,λ为拉格朗日乘子。在视频编码中常采用平方误差和SSE、绝对误差和SAD、均方误差MSE等客观评价方法作为率失真函数中的失真D。

然而,优异的性能是通过高度的算法复杂度换取的,相比于H.264/AVC,H.265/HEVC编码速度大大降低,这导致了H.265/HEVC无法通过软件的方法得到实时编解码传输,所以提高编码速度的是亟待解决的问题。

提高编码速度的方法有很多种,目前常见的有改变编码策略、硬件加速和利用并行计算等。其中在并行计算方法中CUDA是一种通用的GPU计算产品,能够非常有效的利用GPU强大的并行计算能力以及充足的存储器带宽。相比一般的CPU而言,CUDA在各个领域取得了显著的成绩,尤其在图像处理方面中获得的加速倍数已经达到一到两个数量级。

2015年,王涛在其申请的专利“HEVC并行运动补偿方法及装置”中提出了图像分块并行运动补偿和树形收敛的方法,201510647960.1[P].2016,01,13。该方法运用了小块合并为大块思想,但该方法的并行粒度只达到了tiles级别和CTU级别,没有充分发挥GPU的大规模运算能力。2013年,徐荣飞在其发表的论文“HEVC编解码算法的CUDA优化”中公开了一种基于整帧并行运动搜索和分像素插值的方法,北京邮电大学,2013,该方法利用合并SAD的方式避免了重复计算,同时利用重组参考帧的方式避免了数据的重复传输和重复的插值滤波。但为了易于实现并行化,该方法删除了AMVP模块,导致编码遇到快速运动物体时无法及时捕捉,编码后期图像帧的编码质量下降。2016年,张维龙在其发表的论文“HEVC关键模块并行算法的设计与基于GPU的实现”中公开了一种梯状并行执行运动估计的策略,大连理工大学,2016,该方法在保留了原始数据依赖性的同时保留了AMVP算法,但由于梯形编码的并行程度只能达到多个编码单元CU同时编码,降低了并行效率。

发明内容

本发明的目的在于针对上述已有技术的不足,提出一种高效视频编码中的运动估计加速方法,以避免编码后期的编码质量下降,实现对整幅图像级的并行计算,提高并行效率。

为实现上述目的,本发明的技术方案包括如下:

(1)利用主处理器CPU将图像数据传输至协处理器GPU进行存储,其中图像数据包括:编码图像、参考图像和参考帧运动向量信息表;

(2)GPU利用图像数据执行分层高级运动向量预测和整像素运动搜索,得出各层的整像素运动向量:

(2a)对64×64图像块的高级运动向量预测和整像素运动搜索:

(2a1)将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将(0,0)向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成第一候选列表;

(2a2)利用率失真准则选出第一候选列表中最优项,作为64×64图像块的运动搜索起始点;

(2a3)根据(2a2)确定的搜索起始点在参考图像上对大小为64×64图像块执行整像素运动搜索,得出64×64图像块的整像素运动向量;

(2b)分别对32×32图像块、32×64图像块和64×32图像块的高级运动向量预测和整像素运动搜索:

(2b1)将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将由步骤(2a3)得出的64×64图像块的整像素运动向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成第二候选列表;

(2b2)利用率失真准则选出第二候选列表中最优项,作为32×32图像块、32×64图像块和64×32图像块的运动搜索起始点;

(2b3)根据(2b2)确定的搜索起始点在参考图像上分别对32×32图像块、32×64图像块和64×32图像块执行运动搜索,分别得出32×32图像块、32×64图像块和64×32图像块的整像素运动向量;

(2c)分别对16×16图像块、16×32图像块、32×16图像块的高级运动向量预测和整像素运动搜索:

(2c1)将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将由步骤(2b3)得出的32×32图像块的整像素运动向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成第三候选列表;

(2c2)利用率失真准则选出第三候选列表中最优项,作为16×16图像块、16×32图像块和32×16图像块的运动搜索起始点;

(2c3)根据(2c2)确定的搜索起始点在参考图像上分别对16×16图像块、16×32图像块和32×16图像块执行运动搜索,分别得出16×16图像块、16×32图像块和32×16图像块的整像素运动向量;

(2d)分别对8×8图像块、8×16图像块和16×8图像块的高级运动向量预测和整像素运动搜索:

(2d1)将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将由步骤(2c3)得出的16×16图像块的整像素运动向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成第四候选列表;

(2d2)利用率失真准则选出第四候选列表中最优项,作为8×8图像块、8×16图像块和16×8图像的运动搜索起始点;

(2d3)根据(2d2)确定的搜索起始点在参考图像上分别对8×8图像块、8×16图像块和16×8图像块执行运动搜索,分别得出8×8图像块、8×16图像块和16×8图像块整像素运动向量;

(3)GPU对参考图像进行分像素插值滤波,得出不同精度的插值图像;

(4)以各层的整像素运动向量为起点,在不同精度的插值图像上分别执行分像素运动搜索过程,得出各个块的分像素运动向量;

(5)GPU将各个块的整像素运动向量和分像素运动向量传输至CPU,CPU对这俩这些运动向量进行误差修正,消除GPU计算带来的偏移误差,得出准确的运动向量,完成运动估计。

本发明与现有技术相比,具有如下优点:

首先,本发明根据GPU的特点改进了高级运动向量预测技术,设计出完备的候选列表选取方案,使得选取出了更加准确的运动搜索起始点,为后续的整像素运动搜索提供了良好的基础。

其次,本发明根据GPU特点改进了整像素运动搜索技术,以整幅图片为并行单位,大大加快了搜索的速度。

再次,本发明由于简化了分像素运动搜索,免去了复杂的逻辑判断,提高了搜索效率。

仿真结果表明,本发明在不影响编码质量的情况下,大幅提升了运动估计过程的速度,对于部分测试用例,在加速的同时能获得更好的编码质量。

附图说明

图1是本发明的实现总框架示意图;

图2是本发明中分层高级运动向量预测和整像素运动搜索的子流程图;

图3是本发明中高级运动向量预测的时域候选向量分布图;

图4是本发明中整像素运动搜索模板分布图;

图5是本发明中分像素运动搜索示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式做进一步的详细说明。实施例用于说明本发明,但不用来限制本发明的范围。

参照图1,本发明的实现步骤如下:

步骤1,数据传输。

利用主处理器CPU将图像数据传输至协处理器GPU中,这些图像数据包括:编码图像、参考图像和参考帧运动向量信息表;

GPU将这些图像数据分别进行存储,即将编码图像和参考图像保存至GPU的纹理存储器中,将参考帧运动向量信息表保存至GPU的全局内存中。

步骤2,GPU利用存储的图像数据进行分层高级运动向量预测和整像素运动搜索,得出各层的整像素运动向量。

分层高级运动向量预测和整像素运动是基于不同尺寸的图像块进行的,不同尺寸的图像块中的任意一个尺寸的图像块是由整幅编码图像均匀划分得出的若干个图像块。不同尺寸的图像块按一定的顺序执行不同的操作,划分图像块的顺序依次为:先划分为64×64图像块、再划分为32×32图像块、32×64图像块和64×32图像块,再次划分为16×16图像块、16×32图像块和32×16图像块,最后划分为8×8图像块、8×16图像块和16×8图像块。对于同一尺寸的图像块,并行度为整帧图像。

参照图2,本步骤对不同图像块进行分层高级运动向量预测和整像素运动搜索具体步骤如下:

2a)对64×64图像块进行高级运动向量预测和整像素运动搜索:

2a1)对每个64×64图像块,将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将(0,0)向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成每个64×64图像块的第一候选列表;这里所说的对应位置,是指编码图像块的坐标位置对应于参考帧运动向量信息表中相同坐标的位置,其包含图像块左上方、图像块上方、图像块右上方、图像块左方、图像块右方、图像块左下方、图像块下方、图像块右下方以及图像块心点左上角这9个位置,如图3所示;

2a2)利用率失真准则选出第一候选列表中最优项,将最优项保存至GPU的共享内存,并将最优项作为64×64图像块的运动搜索起始点;

2a3)从GPU的全局内存里读取第一候选列表中最优项,将最优项作为搜索起始点,在参考图像上对64×64图像块执行整像素运动搜索,得出64×64图像块的整像素运动向量,存储至全局内存;

所述整像素运动搜索的实现步骤如下:

首先,以整幅图像为并行单位,以运动搜索起始点为起点,以85个点的钻石型搜索模板指定的位置为搜索位置进行搜索,如图4所示,图中白点组成的模板即为85个点的钻石型搜索模板,求出每个搜索位置的绝对误差和SAD,并通过计算选出绝对误差和SAD最小的搜索位置,再将该搜索位置的运动向量设为次优的运动向量;

然后,以整幅图像为并行单位,以次优运动向量为起点,以21个点的加强模板型搜索模板指定的位置为搜索位置进行搜索,如图4所示,图中阴影点组成的模板即为21个点的加强模板型搜索模板,求出每个搜索位置的绝对误差和SAD,通过计算选出绝对误差和SAD最小的搜索位置,将该搜索位置的运动向量设为最优的运动向量,该优运动向量即为整像素运动向量。

最后,将整像素运动向量保存至GPU的全局内存中。

2b)分别对32×32图像块、32×64图像块和64×32图像块的高级运动向量预测和整像素运动搜索:

2b1)对以上32×32图像块、32×64图像块和64×32图像块的每个图像块,分别将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将从GPU的全局内存中读取的64×64图像块的整像素运动向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成这些块各自的第二候选列表;

2b2)利用率失真准则选出第二候选列表中最优项,将最优项保存至GPU的全局内存,并将最优项作为32×32图像块、32×64图像块和64×32图像块的运动搜索起始点;

2b3)从GPU的全局内存中读取第二候选列表中最优项,将最优项作为搜索起始点,在参考图像上分别对32×32图像块、32×64图像块和64×32图像块执行整像素运动搜索,分别得出32×32图像块、32×64图像块和64×32图像块的整像素运动向量,存储至全局内存,其中整像素运动搜索的实现与步骤2a3)中的描述一致;

2c)分别对16×16图像块、16×32图像块、32×16图像块的高级运动向量预测和整像素运动搜索:

2c1)对以上16×16图像块、16×32图像块、32×16图像块的每个图像块,分别将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将从GPU的全局内存中读取的32×32图像块的整像素运动向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成第三候选列表;

2c2)利用率失真准则选出第三候选列表中最优项,将最优项保存至GPU的全局内存,并将最优项作为16×16图像块、16×32图像块和32×16图像块的运动搜索起始点;

2c3)从GPU的全局内存中读取第三候选列表中最优项,将最优项作为搜索起始点,在参考图像上分别对16×16图像块、16×32图像块和32×16图像块执行整像素运动搜索,分别得出16×16图像块、16×32图像块和32×16图像块的整像素运动向量,存储至全局内存,其中整像素运动搜索的实现与步骤2a3)中描述一致;

2d)分别对8×8图像块、8×16图像块和16×8图像块的高级运动向量预测和整像素运动搜索:

2d1)分别对以上8×8图像块、8×16图像块和16×8图像块的每个图像块,分别将参考帧运动向量信息表中对应位置的运动向量作为时域候选,将从GPU的全局内存中读取的的16×16图像块的整像素运动向量设为空域候选,并对该时域候选和空域候选进行合并,剔除重复项,生成第四候选列表;

2d2)利用率失真准则选出第四候选列表中最优项,将最优项保存至GPU的全局内存,并将最优项作为8×8图像块、8×16图像块和16×8图像的运动搜索起始点;

2d3)从GPU的全局内存中读取第三候选列表中最优项,将最优项作为搜索起始点,在参考图像上分别对8×8图像块、8×16图像块和16×8图像块执行整像素运动搜索,分别得出8×8图像块、8×16图像块和16×8图像块整像素运动向量,存储至全局内存,其中整像素运动搜索的实现与步骤2a3)中描述一致。

步骤3,分像素插值滤波。

GPU对参考图像进行分像素插值滤波,得出若干个不同精度的插值图像。

分像素插值滤波插值滤波是指将整幅图像利用插值滤波系数做类加权平均计算,所用的插值滤波系数如下表:

位置插值滤波系数1/4{-1,4,-10,58,17,-5,1}2/4{-1,4,-11,40,40,-11,4,-1}3/4{1,-5,17,58,-10,4,-1}

经过插值滤波得出3幅1/2精度插值图像和12幅1/4精度插值图像;由于数据依赖关系,分像素插值滤波计算的具体执行顺序如下:

3a)求出整像素所在行的1/2像素点和1/4像素点;

3b)求出整像素所在列的1/2像素点和1/4像素点;

3c)根据整像素所在行的1/2像素点和1/4像素点求出整像素右下角处的1/2像素点和1/4像素点;

步骤4,分像素运动搜索。

从GPU的全局内存中读取各层的整像素运动向量,以各层的整像素运动向量为起点,在不同精度的插值图像上分别执行分像素运动搜索过程,得出各个块的分像素运动向量,保存至GPU的全局内存中。

分像素运动搜索的实现步骤如下:

4a)将分像素插值滤波所得的15个插值图像映射为49个不同相位的图像,并从49个不同相位的图像中选出靠近整像素位置的25个不同相位的图像,如图5所示,灰色位置为15个插值图像,黑色直线方框内的图像为49个不同相位的图像,黑色虚线方框内的图像为25个不同相位的图像;

4b)在选出的25个不同相位图像中,利用率失真准则搜索出最优的运动向量作为分像素运动向量,将得出的分像素运动向量保存至全局内存。

步骤5,运动向量误差修正。

GPU将各个块的整像素运动向量和分像素运动向量传输至CPU,CPU对像素运动向量和分像素运动向量进行如下误差修正:

5a)将GPU所得运动向量转化为绝对坐标基准下的运动向量;

5b)用转化为绝对坐标的运动向量减去CPU在前期编码产生的偏移量,得出CPU相对坐标基准下的运动向量,即运动估计最终结果;

通过误差修正,消除GPU计算带来的偏移误差,得出准确的运动向量,完成运动估计。

本发明的效果可以通过下述仿真实验进行进一步的说明:

1.仿真条件

硬件环境为:GeForce GTX960显卡,其拥有8个流多处理器SM,总共8192个流处理器SP,Intel四核CPU i3-3200,4G内存;软件环境为Microsoft Visual Studio 2010,NVIDIA CUDA Toolkit 7.5,设测试模型HM的运行模式为low_delay_P。

2.仿真内容

在上述仿真条件下,用本发明方法对通用测试视频序列中的部分视频序列进行测试,测试结果如表一。

表一 通用测试视频序列中的部分视频序列测试结果

根据表一测试得到的数据可见:测试模型HM编码增速比平均约为1.8,码率变化不超过5%,峰值信噪比PSNR降低不超过0.15,对部分测试序列峰值信噪比有0.01~0.02的提高。由此可以得出结论:本发明在不影响编码质量的情况下,大幅提升了运动估计过程的速度,对于部分测试用例,在加速的同时能获得更好的编码质量。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号