关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于ADSP-BF533处理器的去方块滤波器的实现及优化

基于ADSP-BF533处理器的去方块滤波器的实现及优化

作者:时间:2008-03-20来源:网络收藏

  引言

  在已有的基于块的视频编解码系统中,当码率较低时都存在方块效应,新的视频编码标准H.264中亦是如此。产生这种方块效应的主要原因有两个:一是由于对变换后的残差系数进行的基于块的整数变换后,以大的量化步长对变换系数进行量化会使得解码后的重建图像的方块边缘出现不连续;二是在运动补偿中插值运算引起的误差使得编解码器反变换后的重建图像会出现方块效应。如果不进行处理,方块效应还会随着重构帧积累下去,从而严重地影响图像的质量和压缩效率。为了解决这一问题,H.264中的去方块滤波技术采用较为复杂的自适应来有效地去除这种方块效应。因此,如何在实时视频解码中优化去方块滤波算法,降低,提高重建图像质量,就成了H.264解码的一个关键问题。

  1 H.264的去方块滤波

  1.1 滤波原理

  大的量化步长会造成相对较大的量化误差,这就可能将原来相邻块“接壤”处像素间灰度的连续化变成了“台阶”变化,主观上就有”伪边缘”的方块效应。去方块效应的方法就是在保持图像总能量不变的条件下,把这些台阶状的阶跃重新复原成台阶很小或者近似连续的,同时还必须尽量减少对真实图像边缘的损伤。

  1.2 自适应滤波过程

  在H.264中,去方块是按照16×16像素的宏块为单位顺序进行的,在宏块中按照每个4×4之间的边缘以先垂直后水平的顺序进行,从而对整个重建图像中的所有边缘(图像边缘除外)进行滤波。具体的边缘示意图如图1所示。对于16×16像素的亮度宏块,共有4条垂直边缘,4条水平边缘,每条边缘又分为16条像素边缘。而对应8×8像素的色度宏块有垂直边缘和水平边缘各2条,每条边缘分为8条像素边缘。像素边缘是进行滤波的基本单元。

  

  

  1.2.1 在两个层次上的自适应性

  H.264中的去方块滤波所以有较好的滤波效果,是由于它在以下两个层次上的自适应性。

  1) 滤波器在4×4级别的自适应性

  滤波是基于各个中的像素边缘进行的,通过对每一条像素边缘定义一个参数BS()来自适应地调节滤波的强弱和涉及的像素点。色度块的像素与相应的亮度像素相同。假设P和Q为两个相邻的4×4子块,其中的像素边缘强度通过图2的步骤获得。BS的值越大,则对相应的边缘两侧进行的滤波越强,这是根据产生方块效应的原因来设定的,如采用帧内预测模式的子块的方块现象较明显,则对该子块中的对应边缘设定较大的像素边缘强度值来进行强滤波。

  

  

  2) 滤波器在像素点级别上的白适应性

  正确区分由于量化误差、运动补偿产生的虚假边缘和图像中的真实边界才能得到好的滤波效果。通常,真实边界两侧的像素梯度差值要比虚假边界两侧的像素梯度差值大,因此,滤波器通过对边缘两侧像素点的灰度值的梯度差值设定门限α、对同一侧的相邻像素点的灰度值的梯度差值设定门限β来进行真伪边界的判定。α和β的值主要与量化步长有关,当量化步长大时,量化误差也大,方块效应就明显,易产生虚假边界,因此门限值随之变大,放宽滤波条件。反之,量化步长小时门限值也变小,体现了自适应性。采样点的设置见图3。若条件都满足,则进开始滤波。

  

  

  除了这两种自适应性,还可以通过设置位于片级的系数LoopFilterAlphaC0Offset、LoopFilterBetaOffset来调整滤波

  的强度。例如当传输码率较低时,方块效应较明显,接收端想要主观质量相对较好的图像,则编码端可通过设置位于片头信息中的滤波偏移量LoopFil-terAlphaC0Offset,LoopFilterBetaOffset为正值,以此增大α和β来加强滤波,通过去除方块效应来提高图像主观质量。或者对于高分辨率的图像,可以通过传送负值偏移来减弱滤波,尽量保持图像的细节。

  1.2.2 依据各像素边缘BS值对相邻的像素滤波

  若当前像素边缘符合滤波条件,则根据其相应的BS值选取对应的滤波器进行滤波并且进行适当的剪切操作,以防止图像的模糊。

  当BS值是1,2,3时,采用一个4抽头的线性滤波器,对输入的P1、P0、Q0、Q1进行滤波调整得到新的Q0、P0,如果内部有虚假边界,则进一步调整Q1、P1的值。

  当BS值是4时,则对应的是采用帧内编码模式的宏块边缘,应采用较强的滤波以达到增强图像质量的目的。对于亮度分量,若条件(| P0~Q0 | ((α》2)+2))abs(P2-P0)成立,则选择5拙头滤波器对P0、P2进行滤波,使用较强的4抽头滤波器对P1进行滤波;若条件不成立,则只使用较弱的3抽头滤波器对P0进行滤波,而P1、P2的值保持不变。对于色度分量,若上述条件满足,则对P0进行3抽头滤波,若条件不满足,则所有的像素值都不修改。对Q0、Q1、Q2的滤波操作与P0、P1、P2的滤波操作相同。

  2 BF533的特点和结构

  我们的H.264去方块滤波是在ADI公司的Blackfin ADSP-BF533处理器上实现的。Blackfin系列DSP主要具有以下特点:

  a) 高度并行的计算单元。Blackfin系列DSP体系架构的核心是DAU(数据算术单元),包括2个16位的MAC(乘法累加器)、2个40位的(算术逻辑单元),1个40位单桶形的移位器,4个8位视频。每个MAC能在单一时钟周期内对4个独立的数据操作数执行16位乘16位的乘法运算。40位的可累加2个40位的数字或者4个16位的数字。这种体系架构可灵活地进行8值、16位、32位的数据运算。

  b) 动态电源管理。处理器可以通过改变电压和工作频率,消耗比其他DSP更少的功耗。Blackfin系列DSP体系架构的允许电压和频率独立调整,使得每一项任务的消耗能量最小,在性能和功耗间有较好的平衡,适合实时视频编/解码器的开发,特别是对功耗有严格要求的实时运动视频处理。

  c) 高性能的地址产生器。具有2个DAG(数据地址产生器

  ),用于产生支持高级DSP滤波运算的地址的复合装入或存储单元。支持位倒序寻址和循环缓冲以及其他多种寻址方式,提高了编程的灵活性。

  d) 分层结构的内存。分层结构的内存缩短了内核对内存的访问时间,以获得最大的数据吞吐量、较少的延迟和缩短的处理空载时间。

  e) 特有的视频操作指令。提供适合DCT(离散余弦变换)、霍夫曼编码等视频压缩标准中常用的操作指令,这些视频指令还消除了主处理器与一个独立的视频编解码器之间的复杂和易混和通信问题。这些特点有助于为终端应用缩短产品上市时间,同时降低了系统的总体成本。

  我们使用的ADSP-BF533可以实现600 MHz的持续工作,具有:4 GB的统一寻址空间;80 kB SRAM的L1指令指令存储器,其中16 kB可配置成4路的联合Cache;2个32 kB SRAM的L1数据存储器,其中一半可配置为Cache;集成丰富的外围设备和接口。

  3 基于BF533的H.264去方块滤波优化实现

  去方块滤波器在Blackfin BF533优化实现主要分为系统级别的优化、算法级别的优化、汇编级别的优化3个级别。

  3.1 系统级别的优化

  打开DSP平台中编译器的优化选项并将优化速度设置为最快,打开Automatic Inlining开关(自动内联开关)以及Interprocedural optimization开关(优化过程开关),通过以上的一些设置充分发挥Blackfin BF533的硬件性能。

  3.2 算法级别的优化

  将JM8.6参考模型中的去方块滤波部分进行适当的系统修改,移植到原有的基于Blackfin BF533的H.264基本挡次的解码器中,并通过图像序列对其进行耗时分析。选用码率为400 kbit/s左右的Paris.cif、Mobile.cif、Foreman.cif、Claire.cif序列,去方块滤波所耗费的时钟周期约为1 600 MHz~1 800 MHz,即使在经过系统优化后,仍然相当大,效率很低,对于Blackfin BF533处理器600 MHz的持续工作频率是相当大的负担。

  通过分析JM8.6中去方块滤波程序,其效率低下的主要原因是:


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭