摘要:提出了一种适用于AVS的高性能整像素运动估计的硬件设计。该设计采用了二维内置SAD加法树计算阵列结构,通过合理的安排片上存储,极大地降低了1/0带宽;运用了加1电路选择进位加法器,进一步缩小了结构面积,提高了处理速度。实验表明,使用SMIC 0.18 μm CMOS工艺库在250 MHz频率下综合,所提出的声构只需102 K门,满足对AVS高清视频实时处理的要求。
音视频编码标准(AVS)是我国具有知识产权的第二代信源编码标准。近年来,AVS解码器发展较为成熟,已有较多的国内外企业生产解码芯片。但是,AVS编码器还未发展到令人满意的程度,在一定程度上限制了AVS的推广。运动估计在AVS编码器中主要用于消除时间冗余,以使视频编码达到更高的压缩率。然而,其运算量巨大,占整个视频编码的60%左右。所以,在面积和功耗限制下设计专门的运动估计硬件结构成为当前研究热点。
AVS整像素运动估计的搜索算法很多,其中全搜索块匹配算法因数据流规则匹配率高并且没有复杂的动态反馈和决策逻辑,最适合可变块大小运动估计,故本文选择全搜索块匹配算法。现有的全搜索块匹配算法运动估计硬件结构在面积及处理速度上已做了很多努力,如参考文献[2-5]提出的实现方案:参考文献[2]利用像素截断的方法,将像素低位截断,在保证图像信噪比降低不多的情况下大大减少了运算量;参考文献[3]提出了二维intra-Level SAD计算阵列的运动估计结构,在列方向上数据重用率可达到100%;参考文献[4]和[5]提出的结构能够实现100%的硬件处理器利用率,但是均存在1/0带宽大的缺点。本文根据AVS整像素运动估计的特点,采用二维内置SAD加法树计算阵列,通过合理安排片上存储,极大地降低了1/0带宽;运用了加1电路选择进位加法器,进一步缩小了结构面积,提高了处理速度,实现了适用于AVS的高性能整像素运动估计硬件设计。
1 AVS运动估计算法
1.1可变块运动估计
基于块的运动估计,即找到当前帧的块在参考帧中一定范围内最匹配的块所在的相对位置,这个相对位置称为运动矢量。AVS标准中规定将16x16的宏块进一步划分为8x16,16x8,8x8的子块,如图1所示,这样能够提供更加精确的运动矢量预测。可变块运动估计需要对每个宏块的所有子块进行块匹配,即进行9次计算。本文采用如图2所示的加法树结构,所有的大块由小块简单相加即可,大大减少了计算量。
1.2匹配准则
运动估计需依据一定的判断准则,并在选定搜索算法所遍历的点中寻找最优的匹配点。在众多的匹配准则中,绝对误差和(SAD)的计算复杂度最低,利于硬件实现,故选择SAD作为匹配准则。令(-p, p)表示搜索范围,C(a,b)表示当前帧在相对坐标(a,b)位置的像素值,S(a,b)表示参考帧在相对坐标为(a, b)处的像素值,则:
其中,MxN为子块大小,(m, n)表示参考块相对于当前块的偏移量,SAD (m, n)表示参考块在偏移量为(m, n)时与当前块的偏差值。而块匹配算法的结果为如下运动向量
MV={(μ,ν)ISAD(μ,ν)≤SAD (m,n) I;-p <m,n<p} (2)
对全搜索块匹配算法而言,搜索范围通常只支持到(-16,16)。对于更大的搜索范围,则适合快速算法实现。本文选择(-16,16)作为搜索窗大小,搜索块一共47x47个像素。