HEVC帧内重构预测的硬件架构设计与实现

  • 格式:pdf
  • 大小:1.85 MB
  • 文档页数:5

32《有线电视技术》 2019年第4期 总第352期1 引言随着视频质量的不断提升,高清、超高清视频逐渐应用于我们的生活,AVC 视频压缩技术越来越难以满足视频压缩的需求[1]。

新一代视频编码技术HEVC 的提出很好地解决了这个问题。

HEVC 是上一代视频编码标准AVC 的继承,与AVC 相比,在相同视频质量的情况下,HEVC 视频压缩技术能够节省大约50%的比特率。

然而HEVC 编码器的复杂程度要比上一代标准AVC 复杂多倍,导致HEVC 编码起的硬件实现困难倍增。

帧内预测作为新一代视频编码标准中重要的一环,其灵活的四叉树结构以及35种预测方向,对基于硬件的HEVC 帧内预测模块设计产生了很大的影响[5]。

近年来,针对快速帧内编码硬件实现的各种方法被相继提出。

参考文献[2]提出了针对帧内4×4预测块的高效预测VLSI 架构,但是它仅适用于4×4块大小的预测块。

参考文献[3]采用软硬件结合的方案,通过8个并行的硬件计算单元加速帧内预测处理速度,但是该架构仅支持4×4与8×8大小的块,并且无法对Plana 模式进行预测。

本文提出一种以16×16个像素点为基本块大小的帧内重构预测架构,适用于16×16及以下的TU (Transform Unit,变换单元)大小和所有35种模式。

为了使整个重构系统能实现流水线操作,该架构采用按行输出的方式,使后续的DCT 变换能实现流水操作;为实现该架构,本文通过观察预测时所需参考像素的位置之间的规律,并将该规律以及权重值分别存放于2个ROM 中,以减少选择电路与计算电路的面积。

本文提出了一种重构值存储的方案,以便于邻块TU 预测所需参考像素的获取;在进行参考像素的滤波时,本文采取根据模式和块大小选取出所需的参考像素后再滤波,减少滤波电路的面积。

2 重构帧内预测过程帧内重构预测过程,是已知TU 块的划分模式及TU 块的预测方向的情况下将当前TU 块左边和上面的重构像素作为参考像素进行的预测。

HEVC 的帧内重构预测过程包括参考像素的获取、参考像素的滤波以及预测值的计算。

2.1 获取参考像素由于HEVC 中TU 块的参考像素来自与当前块的左边与上面块的重构像素,若当前TU 处于图像的边界,或者条带(Slice)、矩形区域(Tile)的边界,则相邻参考像素可能会不存在或不可用。

当参考像素不存在或不可用时,HEVC 标准会使用最邻近的像素进行填充。

如图1所示,A、B、C、D、E 为重构当前块大小为N ×N 的TU 时所需的参考像素。

在某些情况下可能出现A 与E 所处的TU 块尚未完成重构,此时A、E 处的参考像素不可获取,则A 处的参考像素全部用B 的最HEVC 帧内重构预测的硬件架构设计与实现*陈界光 杨秀芝 郑静宜 福州大学摘要:新一代视频编码标准HEVC 在视频质量相同情况下,相较于上一代标准AVC 的压缩效率提高了50%,但同时带来的是算法复杂度的提高。

本文针对HEVC 帧内重构预测提出了一种新的硬件架构,该架构以16×16块大小为基本处理单元,支持TU(Transform Unit,变换单元)块大小为16×16、8×8、4×4的情况,并且35种预测模式都按行预测;同时提出了一种重构值存储的方案,方便下一块TU 预测时获取参考像素,减少了选择电路的面积。

本文提出的硬件架构面积较小,能够满足高清1080P 视频的实时显示要求。

关键词:视频编码 HEVC 帧内重构预测 硬件*本文受福建省重大科技项目资助,项目编号:2017H600933下方的像素值b 进行填充,E 处则用D 的最右边的像素值d 进行填充。

若A、B、C、D、E 处的参考像素都不可获取,则用固定值128来进行填充(针对8bit 序列)。

2.2 参考像素的滤波为了更好地利用邻近像素之间的相关性,提高预测精度,去除预测块之间的边界效应,HEVC 针对不同大小的TU 选择不同数量的模式进行滤波。

当TU 大小为4×4或者TU 选择的模式为DC 模式时,都无需进行参考像素的滤波。

当TU 大小为16×16时,除了9、10、11、25、26、27模式无需滤波外,其余模式都要滤波。

当TU 大小为8×8时,仅对2、18、34以及Plana 模式进行参考像素滤波。

滤波方式是使用3抽头系数分别为1/4、1/2、1/4的平滑滤波器进行滤波。

滤波方式如图2中公式(1)、公式(2)、公式(3)所示。

其中,x 代表该像素对应的列,y 代表该像素对应的行,x 和y 的取值在-1到2N-1之间,如图3所示。

2.3 预测值的计算HEVC 帧内预测预测值的计算包含了35种方向的预测,其中包括33种角度模式、DC 模式和Plana 模式。

HEVC 中的角度帧内预测旨在对通常存在于视频和图像内容中的不同方向结构进行有效地建模,当角度模式被选用时,则采用图2中公式(4)来计算TU 块中的预测像素值。

其中,Offset(Mode)是角度模式Mode 对应的角度偏移值,取值范围为{0、±2、±5、±9、±13、±17、±21、±26、±32},Idx 是指预测目前像素点所需参考像素在数组ref 中的索引。

Plana 模式即模式0,适用于像素变化缓慢的区域,当前块的预测值可认为是两个线性预测的平均值。

当预测模式为Plana 模式时,则利用图2中公式(5)来计算预测像素值。

DC 模式用模式1表示,适用于平坦区域的预测。

当预测模式选择DC 模式时,TU 块中的预测值都用一个常量dcVal 来填充。

dcVal 的值如图4中公式(6)所示。

对于TU尺寸小于图1 重构TU所需的参考像素的位置图3 重构TU所需的参考像素的相对坐标图234《有线电视技术》 2019年第4期 总第352期32×32的亮度分量,预测块的左上角、第一行与第一列的像素需要进行滤波处理,如图4中公式(7)、公式(8)、公式(9)。

该部分产生的预测值与经过变换量化和反量化反变换后的残差值相加得到的重构像素值,将会成为下一个帧内TU 块的参考像素。

3 帧内重构硬件架构由于HEVC 中帧内预测的复杂度很高,导致该部分的硬件实现具有很大的挑战性,本文设计了一种能够以流水的方式工作并且周期数较少的帧内重构预测电路。

本文提出一种以16×16个像素点为基本块大小的帧内重构预测硬件架构,每个周期输出的预测值与残差值点数根据TU 块大小而定,支持16及以下的TU 块大小。

本文的帧内重构预测硬件架构主要包含四个模块:一是重构像素值存储模块,二是获取重构像素作为参考像素与参考像素填充模块,三是参考像素滤波模块,四是预测插值模块。

本文的硬件架构图如图5所示。

3.1 重构像素值的存储模块由于当前TU 块的预测时所需要的参考像素来自于该TU 块已重构的邻块,如图6所示,对当前TU 块进行帧内预测所需的参考像素来自左下方和左侧TU 的最后一列,上方和右上方TU 的最后一行以及左上方TU 的最后一个像素点。

所以要对已重构块的最右边一列和最下方一行的重构值进行存储,来用于下一TU 块的重构预测。

HEVC 中块划分是基于四叉树的结构,所以当前TU 块的左侧和上方的块可以是任何深度的任何大小。

但由于PU 块的最小尺寸为4×4,所以将尺寸为16×16的CTU 分割成16个尺寸为4×4的块,并按照Zig-Zag 的编码顺序对其进行0~15的编号,该编号用于说明TU 在CTU 中的位置索引(用idx 表示),本文提出了以4×4为基本块大小来存储图6中阴影部分已完成重构的重构像素,将其分别存图5 帧内重构预测硬件框架图435储在refx_RAM 与refy_RAM 中,其中refx_RAM 用于存储已重构TU 块的最后一行重构值,refy_RAM 用于存储已重构TU 块的最后一列重构值。

对于CTU,本文将该CTU 所需的左侧16个参考像素存在寄存器ctu_refy 中。

因为HEVC 中CTU 的重构编码顺序是按照光栅顺序的,所以该CTU 的左下方TU 一定还未完成重构,因此只需保存其左侧16个参考像素。

对于上方的参考像素与左上角的参考像素,本文将从存重构像素的RAM 读取后存入寄存器ctu_refx 中。

3.2 参考像素的获取与填充模块根据CTU 及TU 在CTU 中的位置,重构TU 时所需的参考像素,将从寄存器ctu_refx、ctu_refy 或者refx_RAM、refy_RAM 中获取。

为实现该模块电路的复用,将ctu_refx、ctu_refy、refx_RAM 与refy_RAM 作为模块的输入。

根据当前TU 的idx,推断出该TU 的上方参考像素、左侧参考像素和左上角参考像素所处的idx,并将其idx 分别作为地址送入refx_RAM 与refy_RAM 中,取得对应的参考像素值。

若其中有参考像素不存在则按照HEVC 中参考像素填充规则进行填充。

为了减小电路的面积减少选择器的使用。

同一个idx 可能对应不同的TU 尺寸,则按最大尺寸来获取参考像素。

例如idx=8,对应的TU 大小为4×4或者8×8,则按照8×8的TU 大小来获取参考像素,输出的上方与左侧参考像素都为(16×8)bit,其中16为参考像素个数,8为像素点的比特深度,由于模块的最终输出位(32×8)bit,所以其余的(16×8)bit 用0填充。

左上角的参考像素单独输出。

3.3 参考像素的滤波模块本文提出的滤波模块的设计,为减少滤波模块的面积,会根据TU 块的预测方向及块大小对所需要进行滤波的参考像素进行预处理。

如图7所示,预测当前N ×N 大小的TU 所需的参考像素的所在区域为Z0~Z4。

但在帧内角度预测过程中,不同的预测模式所需要的参考像素会略有差异。

模式2~9所需的参考像素只有Z0、Z3、Z4;模式27~34所需的参考像素只有Z0、Z1、Z2;模式10~26和0、1只会用到Z0、Z3、Z1的参考像素。

根据此特性,只需将特定区域的参考像素送入滤波模块,已达到节省电路面积的目的。

3.4 预测插值模块在预测插值前,首先应根据当前TU 块的方向信息从已滤波的参考像素中挑选出预测该TU 块所需的参考像素,即参考像素的投影过程。

若方向为正角度方向即模式2~10和模式26~34,则无需投影,直接将已滤波的参考像素存入ref_pr 中,因为滤波前已经挑选完成。

若方向为负角度方向,即模式11~25,则还需从已滤波的参考像素中挑选出预测该TU 所有行所需的参考像素并存入寄存器ref_pr 中。