HEVC帧内预测快速算法研究

2021-03-01 22:53张毅敏
科学与财富 2021年30期
关键词:模式选择

摘 要:HEVC (High Efficiency Video Coding)于2010年由JCT-VC制定,并于2013年正式发布。相比H.264/AVC,在相同图像质量下HEVC相比AVC能得到更高的压缩率,但是同时也带来了编码工具复杂度的提升。以帧内预测为例,AVC帧内预测包括9种4x4和4种16x16共13种帧内预测。HEVC每一个预测单元存在35个预测方向。因此降低帧内预测算法的复杂度成为HEVC编码研究的热点。本文主要针对HEVC粗略模式选择(RMD,Rough Mode Decision)和率失真优化计算(RDO,Rate Distortion Optimization)过程中候选模式个数较多的问题进行研究与优化,在保证压缩率的前提下尽量减少计算量。

关键词:HEVC;帧内预测;模式选择

1.引言

方向预测(angular intra prediction)因其较低的实现复杂度以及相对高效的编码增益,成为多项国际视频标准(如H.264/AVC,VP9,AVS1,HEVC,VVC等)中的关键编码技术。HEVC作为新一代视频编码标准,具备更好的视频压缩性能、能够满足更多的应用场景。HEVC相比AVC能提升大约50%的压缩率[1]。但同时由于编码工具复杂度的提升也带来了算法实时性与算法计算量之间的巨大矛盾,特别是算法复杂度的提升,极大的提高了SOC设计的成本。在帧内预测方面,每个预测单元存在35个预测方向,且CU向下划分以后,每个CU又有35个预测方向,因此对整体计算量的优化有着迫切的需求。

HEVC的帧内预测从预测模式上包括了0~34一共35个预测模式。其中0表示Planar模式,1表示DC模式,2~34表示33个方向预测模式[2]。

HEVC的帧内预测的CU尺寸和个数可以简单的描述如下:一个64x64的CU,如果进行深度为四的划分的话,一共会形成4^0+4^1+4^2+4^3=85个CU,深度遍历四叉树的每个节点,对四叉树上每个节点的CU进行帧内预测,计算总量相当庞大。

2 普通的帧内预测方法

HEVC普通帧内预测方法,是在每个CU内,先对35个预测模式进行粗搜,粗搜索结果选择N(N一般选2~3)个模式,然后进行精搜,确定当前CU的最佳编码模式。

粗搜结果一般采用SAD或者SATD作为评价标准。在每个CU遍历35个预测模式,每个模式根据帧内预测的公式计算预测值,然后计算预测值与原始像素的差值的平方和(SAD),或者计算预测值与原始像素的差值先进行hadamard变换后再绝对值求和得到SATD。当SAD或者SATD越大,表示预测与原始像素之间的差异越大,所以最终选用SAD或者SATD最小的N个模式作为粗选的结果。SAD和SATD的区别是,SAD作为评价标准的优点是计算量较小,但仅仅反映残差空域差异,影响PSNR值,不能有效反映码流的大小。SATD计算量相对SAD较大,但是作为一种简单的二维变换,SATD不但体现了空域差异,而且反映了频率的差异。所以其值在一定程度上可以比SAD更能反映生成码流的大小。

精搜一般采用率失真计算,除了考虑PSNR,还需要考虑预测方向存储和CU的四叉树划分时候需要消耗的bit,也就是考虑了整体的压缩率。

普通的帧内预测的缺点:粗搜需要遍历35种模式,如果是单通道计算一个模式,计算总时长太长,实时性较难得到满足。如果并行35个模式进行计算,所需要的硬件成本较大。总而言之计算量太大,不利于工程实现。

3 改进的帧内预测方法

鉴于普通的帧内预测方法天然的存在计算量太大的不足,难以在工程中实现,有必要针对性的改进上述方法。本文在上述方法的基础上,提出了两点改进方案,第一,在粗搜之前增加一级预搜索,粗略估计预测模式,可以把粗搜所需要计算的模式从35个减少到12个。第二,在进行粗搜的时候,如果CU尺寸为64x64,32x32或者16x16的时候,可以采用下采样后再粗搜的方式,进行粗搜。8x8和4x4的由于原始CU尺寸太小,不适合进行下采样。两种方式结合,粗搜计算量可以减少到原先的10%。經过仿真该改进方案对压缩率影响有限。

预搜索的原理如下描述:采用的预搜索算法是基于图像内容的搜索,采用梯度算子对图像数据进行处理,得到帧内预测的大致方向,然后增加DC和Plannar模式,组成粗搜列表进行粗搜。梯度算子可以采用Sobel算子。Sobel算子是一种一阶的微分算子,可以用于图像的线的检测,通常用于图像边缘检测中。

对一幅图像分别用3x3的Sobel算子进行卷积,所用的Sobel算子如图1所示:

以一个8x8的CU的计算为例。假设8x8的CU原始图像如图2所示,图中深蓝色的数据a00~a77表示当前需要计算的CU,旁边一圈表示该CU的邻边的CU的原始图像数据。如果CU处于图像边界,邻边数据可以用当前CU的原始边界数据填充。b表示上边界,c表示左边界的数据,d表示右边界的数据,e表示下边界,f,g,h,k分别表示左上,右上,左下,右下的CU的边界数据。

当前CU经过矩阵计算的规则描述如下,以a11像素计算为例,a11与矩阵C计算结果的像素表示为aC11,aC11 = a01+2*a02-a10+a12-2* a20-a21。

计算后得到矩阵aC如图3所示。将矩阵aC每个像素绝对值累加求和得到abs(aC),相同的计算方法可以得到abs(aA), abs(aB)和abs(aD)。找出这4个值中最小的两个值,如果夹角是90°,则可以得到预搜索的结果,如果夹角是180°,则证明这个CU不能得到准确的结果,采用一组默认的模式作为预搜索的结果。

预搜索结果如表1所示:

当矩阵A和矩阵C的结果最小的时候,选中模式2的主要原因是,上文所述的计算虽然考虑了方向,但是由于最终用绝对值进行评测,因此对180°的角度是模糊的,为了避免计算误差导致的错误,增加了模式2。同理,在矩阵B和矩阵C的结果最小的时候,也增加了模式34。当绝对值累加最小的两个矩阵所代表夹角是180°的时候,表示计算结果不够理想,输出的候选模式采用每3个角度选择1个角度。另外每组都增加模式0和模式1。粗选的结果控制在12个模式以内。

CU16X16,CU32X32和CU64X64的计算方法相似。

粗搜索的优化方法如下描述:以一个CU32X32为例,CU32在水平和垂直方向都进行2抽1的抽取(均值滤波),结果得到一个8X8的矩阵。矩阵中的每个值由原来CU32X32中2X2的4个像素均值下采样得到。根据CU32X32的边数据得到8X8矩阵所需要的边数据,对8X8矩阵进行帧内预测,并计算相应的SAD或者SATD。预搜索的12个模式可以通过粗搜索选择较好的2~3个模式进行最终的精搜索。优化前的粗搜索示意图如图4所示。优化后的粗搜索示意图如图5所示。

图5中的像素值计算方法如下:

矩阵N采用预搜索的模式进行预测,并计算SAD或者SATD可以得到用于精搜索的模式。

4 改进前后的整体效果仿真

改进前后的编码效果及其压缩率的仿真测试方法如下:采用10个标准测试片源[3][4],用QP30 QP35 QP40 QP45进行仿真,测试输出码流的PSNR与码流的大小,拟合PSNR的曲线如图6所示:

从图中可以看出,改进后由于精简了计算量,整体效果跟改进前相比差了一点点。但是跟优化的计算量相比,这部分性能差距是可以接受的。

5 结束语

本文通过对帧内预测的一些算法的改进,达到了减少帧内预测复杂度,达到帧内预测算法的实时性的要求。后续可以考虑其他梯度算子或者下采样方法评估计算性能。甚至可以采用5阶的梯度算子,把预搜索的模式的角度限制在23°以内(45°的一半),可以更加有效的减少粗搜索的模式。

参考文献

[1]吴明.关于HEVC帧内预测快速模式选择算法的研究.南京理工大学.2014.

[2]万帅 杨付正.新一代高效视频编解码 H.265/HEVC:原理、标准与实现.电子工业出版设.2014

[3]https://media.xiph.org/video/derf/

[4]http://trace.eas.asu.edu/yuv/index.html

作者简介:张毅敏,男,1981年生,硕士,主要研究领域为视频编解码。

猜你喜欢
模式选择
浅析中小企业物流管理模式选择研究
县域基础设施建设公私合作的项目与模式选择
新常态下小微企业协同创新机制与模式选择
我国中小企业财务管理模式研究
黑龙江省高校职工住宅小区管理模式选择研究