论文部分内容阅读
随着视频技术的不断发展,人们对视频图像的分辨率和清晰度的要求也越来越高,为了满足这一需求,HEVC(High Efficiency Video Coding)作为最新一代视频编码标准,于2013年1月正式发布。HEVC相较于上一代视频编码标准H.264/AVC,可以在获得相同的视频编码质量下节省约50%的码率,但也使其编码过程的计算复杂度会显著增加,这便给实时编码带来了巨大的挑战。因此,设计高效快速的编码方法对于视频技术的发展具有重要的意义。近年来,GPU的发展取得了很大的进展,其众核性能广泛应用于高性能计算领域。考虑到HEVC较高的计算复杂度,只利用一个普通的CPU无法实现实时编码的目的。本文将CPU与GPU相结合,基于CPU+GPU异构平台,分别对HEVC的各个环节设计了高效的并行算法并加以实现,显著地提升了编码器的计算效率。HEVC编码环节包括帧内预测、帧间预测、变换、量化、率失真优化、反量化、反变换、滤波(去方块滤波和样点自适应补偿滤波)、图像重构及熵编码等环节。为了确定最优的编码参数,HEVC采用率失真优化技术作为择优准则。其中,除去熵编码环节,其他环节可以通过对所涉及的数据进行有效地划分而设计出高效的并行处理方法,再通过采用GPU多线程技术对其进行并行计算,可以显著提升这些环节的计算效率。而熵编码采用的是基于上下文的自适应二进制算术编码方法CABAC(Context-based Adaptive Binary Arithmetic Coding),需要按照各个数据的前后顺序依次串行地处理,而不能像其他环节那样通过数据划分来进行大规模并行处理。为此,本文设计了CPU双线程与GPU多线程相结合的算法。该方法将整帧图像的最终熵编码环节和预测、变换、量化等其它全部环节一起进行并行处理,同步运行,由此能够节省掉最终熵编码所需的计算时间,从而显著提升HEVC整体编码器的计算效率,达到实时编码的目的。由于视频中通常会包含镜头切换的相关内容,将视频镜头切换检测同视频编码相结合,可以自适应选择图像组GOP(Group of Pictures)的大小,提高视频的编码质量。本文利用编码过程中产生的中间量SAD(Sum of Absolute Difference)对视频镜头切换进行检测,在基本不增加额外计算量的前提下,进一步提高了视频编码的质量以及计算效率。实验结果表明,在CPU Intel?Core?i7-7700+GPU GTX1080平台上对高清视频序列进行编码,本文提出的算法整体可以达到28左右的加速比,帧率达到25帧/秒以上,能够满足实时编码的要求。