datasheet

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

2008-03-20来源: 我爱研发网 电子工程师 关键字:实现算法  子块  滤波器  局部变量  边缘强度  计算复杂度  ALU  指令周期  灰度变

  引言

  在已有的基于块的视频编解码系统中,当码率较低时都存在方块效应,新的视频编码标准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位的ALU(算术逻辑单元),1个40位单桶形的移位器,4个8位视频ALU。每个MAC能在单一时钟周期内对4个独立的数据操作数执行16位乘16位的乘法运算。40位的ALU可累加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中去方块滤波程序,其效率低下的主要原因是:

  a) 算法中的函数逻辑关系复杂,判断、跳转、函数调用等情况特别多;

  b) 最耗时的部分,即函数循环的内部存在大量的重复计算,造成计算复杂度剧增;

  c) 算法中用到的不少数据,例如运动矢量、图像的亮度和色度数据等存放在速度较慢的片外SDRAM中,但在滤波过程中的频繁调用,使数据搬运时间剧增。

  针对耗时的原因,对算法进行了以下改进:

  3.2.1 将原程序中复杂的函数及循环简单化

  指令长度和运算速度是相互制约的,往往将代码通过条件判断可以进行高度精简,但由于增加了机器的判断工作量而使得速度变慢;反之,将代码中的判断去除,程序进行展开,往往可以减少耗费的指令周期,但代码长度会增加。JM8.6中的去方块滤波代码较短,将其中的函数间关系简单化,以代码长度增加换取执行速度的增加。

  对于系统运行最耗时的循环体,采取适当改写循环形式、多重循环体展开等方法有效地减少运算的复杂度。此外,减少调用函数次数,改写if-else语句也是有效的优化手段。

  3.2.2 去除参考代码中的大量冗余代码和重复计算

a) 因为使用的参考代码是JM8.6中的去方块滤波模块,该模块可以对H.264的各种挡次和级别的码流进行滤波,而解码器是基于基本挡次的,

[1] [2]

关键字:实现算法  子块  滤波器  局部变量  边缘强度  计算复杂度  ALU  指令周期  灰度变

编辑:ssb 引用地址:http://www.eeworld.com.cn/afdz/2008/0320/article_559.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:高速DSP系统PCB板的可靠性设计
下一篇:FPGA与DSP的高速通信接口设计与实现

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

采用AVR单片机汇编语言实现AES加密算法及其优化

    AES是美国高级加密标准算法,将在未来几十年里代替DES在各个领域中得到广泛应用。本文在研究分析AES加密算法原理的基础上,着重说明算法的实现步骤,并结合AVR汇编语言完整地实现AES加密和解密。根据AES原理,提出几种列变化的优化算法,并根据实验结果分析和比较它们的优缺点。     随着对称密码的发展,DES数据加密标准算法由于密钥长度较小(56位),已经不适应当今分布式开放网络对数据加密安全性的要求,因此1997年NIST公开征集新的数据加密标准,即AES[1]。经过三轮的筛选,比利时Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议
发表于 2018-03-19
采用AVR单片机汇编语言实现AES加密算法及其优化

采用ARM9微控制器实现上层控制算法解析方案

  引言  在很多嵌入式控制系统中,系统既要完成大量的信息采集和复杂的算法,又要实现精确的控制功能。采用运行有嵌入式Linux操作系统的ARM9微控制器完成信号采集及实现上层控制算法,并向DSP芯片发送上层算法得到控制参数,DSP芯片根据获得的参数和下层控制算法实现精确、可靠的闭环控制。  1 多机系统组成  该多机控制系统以ARM9微控制器s3c2440为核心,采用I2C总线挂载多个DSP芯片TMS320F28015作为协控制器,构成整个控制系统的核心。  1.1 S3C2440及TMS320F28015简介  Samsung公司的处理器S3C2440是内部集成了ARM公司ARM920T处理器内核的32位微控制器,资源丰富
发表于 2018-02-19
采用ARM9微控制器实现上层控制算法解析方案

单片机实现数字滤波的算法

    单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。下面主要是介绍如何用单片机实现数字滤波。    在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。    采用数字滤波算法克服随机干扰
发表于 2017-11-18

单片机采用RLE算法实现液晶屏显示图片

由于需要用到液晶屏(320*240)显示图片,而且图片的数量比较多(好几百张),并且图片要求保存到16M的SPI FLASH里面,显然如果不处理 16M的FLASH明显是放不下去。后来同事说可以用压缩算法RLE,并且用C#给我做了个小的软件,压缩图片得到RLE压缩后的数据。点击打开链接  ---------- 详细的RLE算法可以参考次连接http://blog.csdn.net/orbit/article/details/7062218这个算法的缺点是  如果图片颜色复杂就不好,所以颜色尽量单调些。1、RLE算法小工具的使用2、我使用的RLE和上面连接的区别(改进)3、单片机里面实现的方法1、RLE算法小工具
发表于 2017-09-11
单片机采用RLE算法实现液晶屏显示图片

音频信号采集与AGC算法的DSP实现

实现方法具有实现简便、程序可移植行强、处理速度快等优点,特别是TI公司TMS320C54X系列在音频处理方面有很好的性价比,能够解决复杂的算法设计和满足系统的实时性要求,在许多领域得到广泛应用。在DSP的基础上对音频信号做AGC算法处理可以使输出电平保持在一定范围内,能够解决不同节目音频不均衡等问题。  音频信号采集  TI公司DSP芯片TMS320V  C5402具有独特的6总线哈佛结构,使其能够6条流水线同时工作,工作频率达到100MHz。利用VC5402的2个多通道缓冲串行口(McBSP0和McBSP1)来实现与AIC23的无缝连接。VC5402的多通道带缓冲的串行口在标准串口的基础上加了一个2K的缓冲区。每次串口发送数据时,CPU
发表于 2017-09-05
音频信号采集与AGC算法的DSP实现

通过这个神奇的算法,就能实现提供医疗级可穿戴产品方案

监测。CT404SG1模块基于TI AFE4404,包括AFE、MCU、G-sensor,iCareTech公司TrueSpO2/TrueHR专利算法且内置在模块中。它的尺寸仅为6mmx6mmx1.6mm功耗极低,PD/LED配置灵活,而且具有医疗级别的测量精度。大联大友尚借此还进一步推出了具备基于反射式血糖测量模块的,TI AFE4404的混合信号模块---ICT404SG1的个人健康智能手环解决方案。该方案具有连续脉率测量和连续血氧监测功能,可实现Led反射式血氧饱和度(SpO2)和脉率(PR)测量。其C+专利血氧心率算法提供了医疗级测量结果;凭借着大容量电池和超低功耗,该方案具有超长工作时间;通过蓝牙,配合云卫康手机APP
发表于 2017-04-19
通过这个神奇的算法,就能实现提供医疗级可穿戴产品方案

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 视频监控 智能卡 防盗报警 智能管理 处理器 传感器 其他技术 综合资讯 安防论坛

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">