数据重用技术一般被应用在全搜索块匹配(full search block-matching ,FSBM中)。目的是避免在搜索过程中从外存中取出同一区域的像素,冗余仿存因子Ra是用来衡量FSBM 仿存效率的参数。
Ra = 运动估计中的总仿存数量 / 运动估计中的总像素数
在Tuan等和Chen等的工作中,根据视频编码器的数据重用率,将数据复用分为4个级别,即Level A~ level D,Level越高Level 最高,代表数据复用的级别越高,数据复用率越高,所需要的仿存带宽要求越小。
视频编码器的仿存带宽于视频的帧率,图像的尺寸和搜索范围有关,如果到数据重用,那么仿存带宽还应该与冗余仿存因子Ra有关。前3参数取决于视频应用,是固定无法改变的参数,如果想要满足编码器仿存带宽的需求,只能通过优化视频编码器的架构改变Ra的数值来达到目的。因此,对于FSBM来说,Ra的大小特别重要。
值得注意的是,提高编码器的仿存效率会不可避免的增加片上存储器的面积,因此在设计视频编码器的硬件架构的时候,必须权衡好编码器的仿存效率和片上存储器的面积。
假设编码器当前块的大小为NxN,搜索范围为横向[-Ph,Ph] 纵向[-Pv,Pv]的矩形,当前块的对应的搜索范围如图5-6所示。
其中,SRh = 2Ph,SRv = 2Pv 可以发现,搜索每个块所需要的参考帧的范围为
(SRh + N - 1)x(SRv + N - 1)的矩形,因此相邻块之间必定有重合的搜索范围。
下面介绍数据重用的4种等级。
LevelA
在LevelA中,只有每个LCU的相邻块之间存在数据复用,且只复用相邻块在水平方向上的(N-1)XN大小重叠区域的像素,如图5-7所示。
1) LevelA 的冗余访问因子Ra如式(5-5)所示,片上存储器的大小如式 所示,其中W和H分别是图像的宽度和高度。
2)LevelB
与LevelA一样,LevelB只有每个LCU中的相邻块之间存在数据复用,但是LevelB除了复用相邻块水平方向上的参考像素,还复用相邻块垂直方向上的参考像素,如图5-8所示。
LevelB的Ra计算方法如式5-7所示,LMS如式5-8所示
Ra = W/N X H/N x(N + SRy - 1) x (N + SRh - 1)/WxH = (1 + SRv/N)x(1 + SRh/N)
3 ) LevelC
与LevelA和LevelB不同,LevelC的可以复用相邻两个LCU之间的搜索范围,但是LevelC只能复用相邻LCU水平方向上重叠的搜索区域,如图5-9所示,其中,SR 0代表LCU 0的搜索范围,SR1 代表LCU 1的搜索范围。
Chen 等提出一种LevelC+ 级别的数据重用方案,通过将垂直方向上的若干LCU组合在一起,他们在搜索区域可以被一起载入片上存储器中。
假如n个LCU组合在一起,那么所需要载入的搜索区域大小为Nx(SRv + nXN - 1) 图5-10展示的是n = 2时Level C的示意图,其中SR0,1代表了LCU 0和LCU 1组合在一起时候搜索区域,SR 2,3 代表了LCU2 和LCU 3组合在一起时搜索区域。
LevelC+的Ra计算方法如式(5-11)所示,LMS的计算方法如式5-12所示。
Ra = Nx(nN + SRv - 1)/NxnN ~ (1 + SRv/nN)
LMS = (N + SRh - 1)x(nN + SRv - 1)
- Level D
Level D可以完全复用水平和垂直方向上的搜索范围,但是同时也会使得片上存储器的用量相对较大,图5-11 是LevelD的示意图。
SRv + N - 1 高
SRh 宽
LCU0 | LCU2 |
LCU1 | LCU3 |
Level D的Ra计算方式如式5-13所示,LMS如式5-14所示
Ra = WxH/WxH = 1
LMS = (W + SRh - 1) x (SRv - 1)
5.1.2 现有成果
HEVC整像素运动估计模块的算法设计难点主要涉及分块过多,且搜索窗过大,搜索的计算复杂度过高。因此,很多工作都对这个问题提出了不同的解决方案。
Yang等,Yoo等和Shen等在整像素运动估计的过程中引入了提前终止的机制,即搜索的结果在满足设定的某个条件之后便会结束搜索,这个方法可以大大减少候选点的数目,从而减少不必要的搜索古城。但是,这种方法搜索过程的随机性很大,因而不适合于硬件实现。
Tsutake等提出了一种新的仿射运动估计的模型,该方案的主要优势在于针对编码器基于块的特性进行了优化,因此适用于主流的各种编码器,但是该运动估计的模块存在计算复杂度过高的问题。
Zhou等提出了一种两步搜索方案,该工作首先对一些视频序列进行搜索操作并分析最佳运动矢量的分布,发现运动矢量的水平分量大于垂直分量,且大部分运动矢量都是水平或者垂直方向的,对角线方向的较少。因此,Zhou等将搜索窗设置为水平+-211 垂直 +-106的菱形,适用于动态较大的视频场景,首先以菱形方式粗搜,而后以全搜索方式进一步精搜,但是,这种复杂的搜索模式会导致非常大的的仿存带宽。
Hu等同样采用了两步搜索方案。在粗糙过程中,仅在搜索起点附近中心区域对每个候选点进行搜索,而在其他区域,采用了降采样搜索。因此,该方案可以减少搜索点数目,大幅缩短搜索时间。
Dung等提出了一种双搜索窗 DSW 的方案,相较于Zhou等的设计,该方案引入了第二个可选参考窗,可以大幅减少仿存带宽。
Jiang 等提出了一种基于1/4 CTU,搜索范围为+-64 的搜索方案,将每个CTU划分为4个同等大小的QCTU,每个QCTU内的所有PU共享同一个搜索窗,且采用相同的搜索模式。
Paul改良了传统的SAD代价函数,将二维的图像块映射为一维矢量,这种方法可以大幅减少参考块匹配时的计算复杂度。
Kim等首先分析了 不同尺寸分块的最佳运动矢量分布,发现大块的运动矢量与其下小块的运动矢量的大小非常相似,因此该方案只对尺寸小于或者等于16x16的块做运动估计,而对尺寸大于16x16的块直接取左上角16x16块的MV作为其最佳MV。