视频编解码芯片设计原理----04 帧内预测
本系列主要介绍视频编解码芯片的设计,以HEVC视频编码标准为基础,简要介绍编解码芯片的整体硬件架构设计以及各核心模块的算法优化与硬件流水线设计。
本文首先给出了HEVC帧内预测的相关背景知识,接着分析了VLSI实现RMD过程所面临的一些限制条件并有针对地优化了RMD算法,然后分析并总结了上述算法在VLSI实现时所面临的实际问题,并有针对地提出了对应的VLSI结构。
帧内预测是视频编码的第一个处理过程,该过程通过对已经编码了的相邻像素进行某种预先设置的加权处理,从而得到对当前像素块的较佳估计,能有效地减小空间冗余度,提高压缩效率。
1概述
HEVC中的帧内预测引入了一些新的工具来提高编码效率:基于四叉树的块结构划分、自适应的参考像素滤波、包含33个方向的Angular预测、适用于平滑纹理的Planar预测等。
块划分
HEVC中引入四叉树划分提供了更灵活的块划分结构,标准将“当前像素块”称为预测单元(PU)。当最大编码单元(LCU)的大小是64×64时,帧内PU的大小可以是以下任意五种:4×4、8×8、16×16、32×32和64×64。
下图1给出了一种可能的PU划分方式。
图1
参考像素管理
HEVC中,帧内预测所参考的像素,除了类似于H.264/AVC中当前预测块上、左边、上方、右上的像素,还增加了左下的像素,如下图2所示。
图2
另外,对参考像素还增加了填充、滤波、投影处理。填充过程是为了保证之后各个图像块预测过程的统一性,使参考像素的有无不会改变具体的预测过程。滤波过程是采用三抽头滤波器([1 2 1]/4)对大于4×4的亮度块的参考像素进行滤波,并且HEVC可以根据块大小以及预测模式而选择性地对参考像素进行滤波,有效减轻了由于边界效应带来的轮廓伪像。投影处理是把二维的参考像素映射为一维形式,显著降低了预测的复杂度。
预测模式
在HEVC 标准中,“预先设置的加权处理”被称之为“预测模式”,包含了Planar、DC和33 种角度预测模式,以确保在各种允许的块大小的预测过程中,能更精确地表明当前块的纹理状况,确保预测的准确性,具体的预测模式如下图3所示。
图3
Planar 模式适用于相对平滑的PU,其预测像素为水平预测值和竖直预测值的线性平均。DC模式则用求平均的方式以单一值对整个像素块进行预测。HEVC 帧内预测中的Angular 模式是针对图像纹理的方向性预测,而预测方向的数目和角度则是权衡了编码复杂度和编码效率之后得到的一个折衷值。
2算法优化
HEVC采用RMD和MPM以加速判决过程,两者大大减轻了RDO的复杂度,然而,RMD仍然需要在5层四叉树中遍历35种预测模式,其计算量之大,难以用较低的硬件代价实时完成。对此,本文提出了以下优化算法。
计算失真优化
码率失真优化中的失真在本意上指的是重建像素和原始像素之间的差异。然而,由于重建环路的复杂度太高,我们并不能在RMD中获取当前块的重建像素。所以我们将码率失真优化中的失真调整成了预测像素与原始像素之间的差异,并采用了SATD代价对差异进行表征。
计算码流的优化
为了减少预测模式占用的码率,HEVC标准引入了MPM(Most Possible Mode,最可能模式)的概念。但由于硬件实现在信息获取上的限制,我们无法在RMD的过程中获取相邻PU的预测模式。但幸运的是SATD代价也能够体现残差系数所对应的码率代价。事实上,相比于失真,SATD代价对于码率的体现程度可能更高。因此,它被广泛地运用在RMD的过程中。
搜索模式的优化
与HM推荐的遍历算法不同,优化后的模式搜索方法是利用步长为3的层次化搜索对预测模式逐步收敛,从而得到备选集。具体而言,该搜索算法在每一轮排序后会逐渐减小搜索范围,如下图给出的一个具体例子。步骤1)中根据SATD值将初始列表中的角度模式进行排序,然后在较优模式[-2,2]的搜索范围内进行搜索。步骤2)将搜索范围缩小为[-1,1]。最后把DC和Planar模式合并到步骤3)排序后的列表中。若选用Ma策略,则直接将Planar和DC模式放在步骤3)产生的列表前;若选用Mb策略,则仍然搜索Planar和DC模式,按照SATD值排序。
图4
3 VLSI实现
01 VLSI实现概述
在实际的VLSI实现时,以下三个问题将会在很大程度上影响处理速度:准备参考像素的延迟、准备原始像素的延迟和当前搜索步骤与下一个搜索步骤的数据依赖。
准备参考像素的延迟是由不合理的存储方式带来的。在一般的实现中,参考像素是按照光栅的顺序存放在存储器中的,而这会导致很多问题,比如产生访问地址的逻辑较复杂、访问参考像素所需的周期较多,同时还造成了存储器中的空间浪费。
原始像素不合理的储存方式增加了准备原始像素的延迟。虽然光栅存储方式有利于像素从外存到内存的搬运,但对于基于块的后续处理,这样的存储方式会大大拖慢处理速度。
层次化搜索方式会导致当前搜索步骤与下一个搜索步骤产生数据依赖。对于每个PU来说,都需要进行步长为3的搜索,而下一步的搜索是依赖于上一步的结果的。因此,在不进行调度的情况下,该RMD引擎的时空图如下图5所示,其中字母P代表PU,S代表搜索步骤,M代表搜索模式。
图5
为了解决上述问题,本文提出了如下图6所示的VLSI架构。其中,行列存储器用于快速读入参考像素;并发存储器用于快速读入原始像素;预测引擎和SATD引擎分别用于执行预测和SATD计算的任务;搜索调度器用于执行搜索算法。
图6
02行列存储器
为了使准备参考像素的延迟变得不可见,架构采用了如下图7所示的行列存储器,并对其进行了优化。其中,行存储器用来存放所有横向排布的参考像素,即左上、上方和右上的参考像素;列像素用来存储所有纵向排布的参考像素,即左上、左方和左下的参考像素。
图7
行列存储器具有诸多优势。首先,横向分布和纵向分布的参考像素都分别被映射到了连续的地址中,简化了访问地址的产生。而且参考像素总是能够以每周期4像素的吞吐率被取出或更新,减少了访问的延迟。所有地址空间都存储了有意义的数据,消除了对于存储空间的浪费。最后,合理的存储方式也大大减少了访问所引入的功耗。
03并发存储器
为了使准备原始像素的延迟变得不可见,本文提出了如下图8所示的并发存储器。
图8
并发方式在增加少量功耗的代价下,大大提高了对于小块PU的访问速度,使得准备原始像素的时间对RMD引擎而言变得不可见。
04预测引擎
预测模式中的33种Angular模式本身具有共性,易于复用实现,而Angular、DC、Planar三种模式之间几乎没有什么相似性,所以整个预测引擎可以看成有三条预测的数据通路,如下图所示,分别代表Angular、DC、Planar三种预测模式,最后的输出结果会根据配置信号模式进行选择。
图9
整个预测引擎的输入信号是读入的参考像素,以及所有的配置信号,三条具体预测的数据通路则采用三级全流水的结构实现。因为采用全流水的结构,这样对于一个TU内的所有4×4块,因为其之间相互不存在数据相关性,所以可以流水线地完成帧内预测过程。
05搜索调度器
为了使当前搜索步骤与下一个搜索步骤间的数据依赖变得不可见,需要使用到“模式调度器”,其主要功能是将对于当前PU和下一个PU的搜索进行交织运作,如下图10所示。该调度器中集成了两组模式存储器及其对应的代价存储器,分别用于存储当前PU和下一个PU经排序后的模式列表及其对应的代价。
图10
06性能评估
我们选用HM作为参考对象,将优化算法移植到了HM-15.0版本中测试了若干标准序列,采用的配置为默认配置。下表1给出了本算法和及相关算法的B-D rate性能。
表1
X.Yu[1] |
J.Zhu[2] |
K.Miyazawa[3] |
Ours |
|
最小二输入与非门个数 (K) |
/ |
214.1 |
/ |
184.0 |
工作频率 (MHz) |
/ |
357 |
/ |
500 |
BD Rate 增量 (%) |
3.39 |
4.53 |
3 |
0.5 |
参考文献
[1] X. Yu, Z. Liu, J. Liu, Y. Gao and D.Wang.VLSI friendly fast CU/PU mode decision for HEVC intra encoding: Leveragingconvolution neural network[A].IEEE International Conference on ImageProcessing[C].IEEE, 2015:1285-1289.
[2] J. Zhu, Z. Liu, D. Wang, Q. Han and Y.Song.HDTV1080p HEVC Intra encoder with source texture based CU/PU modepre-decision[A].19th Asia and South Pacific Design AutomationConference[C].IEEE, 2014:367-372.
[3] K. Miyazawa et al.Real-time hardwareimplementation of HEVC video encoder for 1080p HD video[A].Picture CodingSymposium[C].IEEE, 2013:225-228.
- 点赞
- 收藏
- 关注作者
评论(0)