齐鲁在线 > 资讯 > 科技 > 基于异步模式的HEVC运动搜索并行技术 > 正文

基于异步模式的HEVC运动搜索并行技术

2017-09-08 15:38:32 来源:网络 编辑:K027_小凯乐
基于异步模式的HEVC运动搜索并行技术
本发明专利技术公开了一种基于异步模式的HEVC运动搜索并行方法,主要解决HEVC编码复杂度高、实时性差的问题。其实现步骤为:1)将CPU划分为第一线程和第二线程;2)第一线程对GPU进行调度:首先根据运动矢量的情况将LCU划分为运动缓慢、中等、剧烈的三类,然后根据LCU的类型选择搜索模板并开辟GPU线程,再计算LCU的初始搜索点,完成对最大编码单元LCU内各个预测单元匹配块的并行计算:3)第二线程调用第一线程的结果数据完成编码。本发明专利技术通过GPU多线程实现了HEVC运动搜索的并行计算,并通过CPU多线程实现了CPU和GPU的异步模式,大幅度降低了编码时间,可用于对视频编码标准HEVC的优化。
 
基于异步模式的HEVC运动搜索并行方法本专利技术属于视频压缩编码领域,特别涉及一种运动搜索并行方法,可用于对视频编码标准HEVC的优化。随着视频应用的多样性和视频高清化趋势,对视频压缩效率的要求越来越高。2010年4月ITU-TVCEG和ISO/IECMPEG联合成立JCT-VC联合协作小组,着手开始制定了新一代的视频编码标准H.265/HEVC。并确定了HEVC的其核心目标是在H.264/AVCHighProfile的基础上,将压缩效率提高一倍,即在保证相同的视频图像质量的前提下,视频流的码率减少50%。随之带来的是编码复杂度的大幅度提升,普遍认为HEVC的编码复杂度是H.264/AVC的8倍以上。HEVC编码标准的高复杂度使得其编码时间大大提升,远不能达到实时编码,给其应用推广带来了巨大的挑战。为此,如何在不影响图像质量和码率的前提下实现快速编码成为亟待解决的问题。大连理工大学张维龙在2016年发表的硕士论文“HEVC关键模块并行算法的设计与基于GPU的实现”中,针对16x16的预测单元实现了HEVC运动搜索算法的CUDA优化,该方法在对TZSearch算法做并行优化的过程中,每次只对一个预测单元中的搜索点进行并行计算,而且在优化过程中存在很多分支判断,导致CUDA的并行计算量并不是很高。对于1080P的图像平均加速比只有11倍左右。
 
一种基于异步模式的HEVC运动搜索并行方法,其特征在于包括:(1)将CPU划分两个线程,即第一线程和第二线程;(2)第一线程对GPU进行调度,完成最大编码单元LCU内各个预测单元匹配块的并行计算:2a)获取第二线程在前一帧编码过程中计算的第i-1帧的第n个LCU块的所有预测单元运动矢量的平均值MVi-1(n)与第i-2帧的第n个LCU块的所有预测单元运动矢量的平均值MVi-2(n)的差值△(MVi-1(n)),其中i表示当前帧图像,i-1表示前一帧图像,i-2表示当前帧之前的第二帧图像;2b)根据差值△(MVi-1(n))的模长d(△(MVi-1(n))),将LCU划分为运动平缓,运动中等和运动剧烈的a,b,c三类,并为不同类别的LCU选择不同的搜索模板,根据LCU的搜索模板再划分GPU线程;2c)计算LCU搜索点的起始位置:2d)计算每个搜索位置的LCU块中每个4x4像素块的绝对误差和SAD4×4(x,y),其中,x、y分别是运动矢量的水平分量和垂直分量;2e)通过4x4像素块的绝对误差和SAD4×4(x,y)值,计算LCU中各个预测单元PU的绝对误差和SADM×N(x,y)值,其中M、N表示像素块的大小,M、N的取值范围从4到64变化;2f)将2e)的结果数据从GPU显存中拷贝到CPU内存,并存放到缓存队列中;(3)第二线程通过缓存队列调用第一线程的结果数据,完成编码器的编码。2.根据权利要求1所述的方法,其中步骤2a)中的差值△(MVi-1(n)),表示如下:△(MVi-1(n))=MVi-1(n)-MVi-2(n)。3.根据权利要求1所述的方法,其中步骤2b)中的模长d(△(MVi-1(n))),表示如下:d(△(MVi-1(n)))=|△(MVi-1(n)))|=|MVi-1(n)-MVi-2(n)|。4.根据权利要求1所述的方法,其中步骤2b)中将LCU划分为运动平缓,运动中等和运动剧烈的a,b,c三类,按如下条件划分:若d(△(MVi-1(n)))≥0且d(△(MVi-1(n)))<2,则将LCU划分为运动平缓类a;若d(△(MVi-1(n)))≥2且d(△(MVi-1...
 
 
一种基于异步模式的HEVC运动搜索并行方法,其特征在于包括:(1)将CPU划分两个线程,即第一线程和第二线程;(2)第一线程对GPU进行调度,完成最大编码单元LCU内各个预测单元匹配块的并行计算:2a)获取第二线程在前一帧编码过程中计算的第i‑1帧的第n个LCU块的所有预测单元运动矢量的平均值MVi‑1(n)与第i‑2帧的第n个LCU块的所有预测单元运动矢量的平均值MVi‑2(n)的差值△(MVi‑1(n)),其中i表示当前帧图像,i‑1表示前一帧图像,i‑2表示当前帧之前的第二帧图像;2b)根据差值△(MVi‑1(n))的模长d(△(MVi‑1(n))),将LCU划分为运动平缓,运动中等和运动剧烈的a,b,c三类,并为不同类别的LCU选择不同的搜索模板,根据LCU的搜索模板再划分GPU线程;2c)计算LCU搜索点的起始位置:

大家都在看

猜你喜欢