摘 要: JPEG2000和MPEG-4标准代表了多媒体压缩算法的最新发展方向。在标准化过程中对这些标准所需要的存储器、传输和计算要求进行了大量评估,现在则已经进入了实施应用阶段。在最近的技术发展方面,芯片逻辑门密度和嵌入式功能的极大提高为多媒体处理设计提供了新的设计可能性。本文将考察多媒体压缩系统的要求并评估多媒体压缩处理系统的设计复杂性。然后将研究提供多媒体处理设计所需要的抽象水平所需要的设计流程。最后将考察新兴压缩标准JPEG2000和MPEG-4,以及如何利用FPGA技术实现实时多媒体系统。
多媒体压缩应用的要求
随着从无线应用到医疗图像以及数码相机等多个市场的迅速发展,数字多媒体通信的增长速度也很快。多媒体压缩技术允许高效率地使用可用的存储容量和带宽,从而在数字多媒体通信中扮演了关键的基础性角色。这一领域的基础性工作,即JPEG、MPEG-1和MPEG-2标准的制定工作,在上个世纪80年代晚期到90年代中期就开始了。而且,国际标准化组织(ISO)在这一领域的标准化努力仍在继续,ISO目前的工作主要在完成和完善JPEG2000以及MPEG-4标准。今天,ISO的工作主要集中在支持新标准的三种空间和可分层视频技术。数字音频和视频技术为什么不断演化?答案在于开发算法所依赖的计算系统所提供的能力。随着新的半导体制造工艺带来越来越强的计算能力、更多的存储器资源和更大的存储器带宽,压缩算法的选择余地变得更大,原来很难实现的替代算法也变得可行了。
数字图像压缩方面的最初努力都体现在JPEG和MPEG-1标准中。数字图像压缩的基本内容主要体现在三种主要算法中,即变换、量化和源编码。JPEG标准中应用最广泛的是其基线(baseline)形式,其中采用了8
8的离散余弦变换(DCT)。其量化步骤包括零DCT系数,通常认为其视觉影响不太大。但如果量化阈值太高,那么在解压缩后的图像中就会出现块状伪迹(即马赛克)。对于JPEG来说,这通常出现在压缩比大于30:1的情况下。基线JPEG采用的源编码技术是哈夫曼编码,这是一种无损压缩算法。对于静止图像,软件实现的基线JPEG一般能够满足压缩和解压缩的响应奔湟蟆5辈捎迷硕疛PEG格式来存储图像序列时,比如医疗图像或视频监控,那么就需要每秒30帧的实时处理能力。这时,需要在33毫秒内完成DCT计算、量化和哈夫曼编码才能保证所需要的帧速率。
JPEG标准的最新进展是JPEG2000标准。JPEG2000标准采用了完全不同的技术,如离散小波变换(DWT)、位平面编码和算法编码。在高压缩率时,JPEG2000没有采用JPEG时的马赛克现象,但在边缘会出现飞蚊效应(mosquito
effect)。对于同样的图像,JPEG2000在50:1的压缩比时获得的图像质量与采用JPEG时 30:1的质量差不多。JPEG2000有一些非常有吸引力的新特性,例如:
1.优异的低位速率性能:可平滑地过渡到更低的位速率。
2.嵌入式码流:JPEG2000提供了"嵌入式"码流功能,例如,在码流中加入更多的位逐渐提高图像质量。
3.更好的容错性:JPEG2000中增加了一系列容错特性。
4.有损和无损压缩:JPEG2000可同时支持有损和无损压缩。
5.开放式免费结构:JPEG2000标准的第I部分对任何人都免费,不需要交纳使用费或版权费。
对于实时运动JPEG2000图像序列,就计算所需要的MOPS、存储器资源大小以及存储器带宽来说,DWT、位编码器和算法编码器的计算复杂度要高一个量级。
视频压缩标准化活动主要由国际电信联盟(ITU)和ISO MPEG组织负责。这些标准扩展了帧内算法,在保持块内DCT变换算法和可变长度源编码算法的同时,增加了去除时间冗余信息的功能。包括MPEG-1、
MPEG-2 (H.262)、MPEG-4 版本2和MPEG-4 第10部分(AVC, H.264) 在内的这一组标准通常被称为基于DCT的运动预测补偿视频压缩技术。在视频压缩技术中,希望获得固定的位速率,因此常用此作为压缩性能的指示,而不采用压缩比。视频编码解码器的性能一般通过速率失真曲线来评估,速率失真曲线给出了峰值信噪比(PSNR)与位速率的关系。视频编码解码器的开发目标就是在保证图像质量的情况下降低位速率。在开发视频编码解码器时必须考虑到计算、存储器资源和存储器带宽的复杂性。在MPEG编码解码器的设计中,编码器的设计复杂性要比解码器高一个量级,因此就设计复杂性而言,两者是不对称的。这一有意安排的非对称设计主要是为了在开始时提供低成本的解码器。随着MPEG-4扩展到包括双向通信的应用环境,MPEG-4的实时编码问题就突出出来了。
为实现实时多媒体压缩,这里将探讨所需要的MOPS、存储器资源以及存储器带宽。这些问题考虑好了,就可考虑利用适当的硬件器件来实现所需要的应用。对于计算能力(以相应的MOPS数值表示),图1给出了目前可供选择的一些器件的情况。对许多DSP应用,有多种选择,即有通用型的DSP器件,也有专用型的。视频和音频处理等多媒体应用属于计算复杂性较高的应用。通常,单独的处理或计算要求总可利用某种处理器来满足,但大多数系统中往往包括一系列视频处理要求,有些情况下还需要处理多个通道。在下一部分将可以看到,即使对于CIF分辨率的相对容易的类,而且在不仔细考虑算法所采用的运动预测功能的情况下,MPEG-4编码所需要的计算能力都可超过7000
MOPS。
图1 各种硅芯片的计算能力(略)
图2 MPEG-4 MOPS归一化基准对编码器为15000,对解码器为700(略)
对于不同平台间的对比来说,尽管计算能力是非常关键的因素,但考虑一下许多其它设计方面的因素会提供更为全面情况。表1列出了在设计过程中需要考虑的一些其它方面的因素,包括:设计投入、设计结构灵活性、运行时间灵活性、最高速度和能量效率。尽管通用处理器(GPP)、数字信号处理器(DSP)和专用信号处理器(ASSP)提供了一个相对容易的算法开发平台,但其灵活性和处理能力对于许多高端嵌入式应用却显得不足。另一方面,ASIC提供了优异的计算处理能力和能量效率,但前期NRE成本变得越来越高昂,除非极大批量的应用,否则无法承受。能够进行软件/硬件协同设计的平台,如现场可编程门阵列(FPGA)可提供巨大的计算处理潜力,因为可充分利用并行机制设计一个可编程的高端计算平台。从图1可以明显地看出,如果FPGA中的计算潜力被充分利用,那么就可提供一个非常有吸引力的高端解决方案。
多媒体压缩设计复杂性
要充分理解采用MPEG-4标准的视频压缩系统的设计复杂性,就必须认识到通过定义不同的类和级,MPEG-4标准定义了多种不同的工作点。MPEG中的类(Profile)规定了使用的技术,如DCT或可变长度源编码。MPEG中的级(Level)则定义了如何处理有关参数以获得一致性,如每秒需要处理的宏块(MacroBlock)数。理解整个标准工作方式的另一个重要的与压缩相关的概念是一致性(compliancy)。严格说来,解码器都是专用的,而编码器必须生成解码器能够理解的兼容位流,然而,标准本身对于编码器并没有做出具体的规定。就对应用所需要的计算能力(MOPS)的进行评估来说,根据目标应用所适合的类和级,标准定义了多种工作点。此外,对于编码器的设计来说,根据应用的不同,需要行矶嘤肷杓聘丛有韵喙氐恼壑院推胶狻>」躆PEG编码器的设计复杂性要高一个量级,但也有一个优点,那就是它们仅需要能够创建一种兼容位流就可以了,而MPEG解码器则必须根据设计要求兼容所需要的类和级。图2示出了MPEG-4标准规定的不同类和级所需要的相对计算能力(MOPS数值),可以看到它们的差别有两个量级之大。需要的最大存储器数量和存储器带宽也与所处理的类和级相关。例如,在MPEG-4编码器的情况下,典型情况下需要3至10M字节的存储器,而解码器只需要1至3M字节。根据应用所实现的特殊结构,可能会需要额外的存储器带宽。
表1 多媒体平台对比(略)
根据最终应用不同,运动图像JPEG2000应用需要的计算能力变化范围很大。例如,一个分辨率640 480每秒30帧的JPLEG2000视频监控应用视频流大约需要4200
MOPS,而分辨率1024 1024 每秒 60帧的医疗图像无失真码流在采用JPEG2000标准编码时则需要29000 MOPS,同时采用JPEG2000标准的4096
2048分辨率24 帧每秒的数码电影则需要93000 MOPS。使计算需求分析问题变得更为复杂的是,所需要的MOPS数值并不是固定值,而是与图像内容和顺序相关。对于JPEG和MPEG标准来说,每帧所需要的实际MOPS数值并非固定值,根据具体的应用,这一数值是随时间变化的。对于MPEG帧内预测来说,需要完成与帧间运动预测时完全不同的操作。这样,设计结构必须有一定的可扩展能力才能处理和适应应用复杂性的变化。视频编码解码器的一个重要参数是保持目标帧速率的能力。因此,设计结构仅仅能够应付平均MOPS要求是不行的,还必须能够在最坏的情况下支持估计的峰值MOPS要求。
多媒体压缩设计流程
为高效地设计和实现多媒体系统,必须采用利用C语言编写的标准代码。即使并不打算遵循前面的这些压缩标准,利用C代码来描述最初的设计也有很大优势,因为算法开发人员可利用C代码来清楚地表达所需要的功能并生成测试数据。当然C代码并没有包含怎样实现编码器或解码器实时工作的最优化方法。为了理解实现实时工作所需要的步骤,这里将整个流程分为四个部分:算法输入、结构确定、设计实现以及硬件实施。
目前用于在通用处理器、DSP处理器和媒体处理器等器件上实现多媒体压缩的代码和编译方法有其优点,即设计流程比较熟悉,而最初所需要的技能仅仅是良好的编程实践。然而,当利用基于传统处理器的技术实现实时流式媒体处理时,就出现了新的问题。无论处理器提供的是一个还是多个处理单元,问题是,在压缩算法执行过程中,实时流媒体数据都必须多次通过处理单元。这一流式处理瓶颈导致设计人员必须充分理解并应用针对流式媒体处理而设计的专用指令,并非常仔细地优化处理器所提供的几个处理单元的使用。
在设计硬件方面,还有FPGA和ASIC设计流程可供选择。FPGA和ASIC提供了获得实时性能所需要的并行处理机制。然而,为通过并行机制获得这一超高性能,必须付出的代价就是编程设计流程效率不那么高。传统FPGA和ASIC设计流程要求设计人员采用硬件描述语言(HDL)进行设计,然后再通过综合工具适配到目标硅器件中。由于目标器件采用的即不是诺依曼计算机结构,也非哈佛计算机架构,因此设计的自由度很大。首先,用户必须决定采用什么结构,然后,用户还必须决定在算法中如何实现结构间的通信。采用FPGA和ASIC进行设计所需要的技术远远超出基本的编程技能,经常会需要设计人员掌握目标器件有关的知识。使事件更为复杂的是,最近几年来,在FPGA和ASIC中集成嵌入式处理器变得很普遍。这导致前述两种设计方式的融合,然后却缺少相应的设计工具提供足够的易用性或系统设计划分能力。
对于多媒体压缩物设计流程来说,开始的设计输入阶段包括了算法的输入和生成,从而为在的结构确定阶段确定支持流式数据流的最佳结构提供了支持。由于了解目标是要获得实时工作性能(30帧/秒,5940宏块/秒),因此最初输入的顺序C代码在编写时就可考虑到功能数据流。在设计流程的结构确定阶段,希望能够尽早地估算出在考虑到功能并行机制的情况下,第一阶段所生成代码的性能。例如,可能会发现JPEG2000算术编码器需要20000
MOPS的性能,因此决定在这一阶段就采取初步的粗线条的并行机制来达到系统级性能参数要求。在设计流程的设计实现阶段,可以就选择什么样的计算硬件器件和存储器器件做出最后的决定。在这一阶段,对功能单元间的通信进行改进是必须的,这样才能获得更好的性能估计。例如,可能会发现,由于需要随机寻址特性,所选择的运动预测算法不太适合所选择的存储器类型。设计流程的最后是硬件实施阶段,需要确保硬件拥有足够的资源,并精细调整处理单元以达到实时性能。
多媒体压缩算法的硬件实施
要在硬件中实现针对实时系统应用的压缩算法,需要深入了解算法本身以及所选用的硬件器件。例如,可能需要能够修改运动预测算法,从而实现压缩质量与实施成本之间的平衡。根据适用的硬件类型,这方面的应用可分为两类:1)即可采用处理器(通用处理器、DSP、媒体处理器),也可采用FPGA和ASIC器件;2)只能选择FPGA和ASIC器件。对于第一类应用,设计流程方面的考虑通常扮演了重要角色,设计工具的易用性意味着设计过程比较通畅,因此通常会选择成本较高且功耗大的处理器器件来获得实时性能。当然,FPGA解决方案也可提供成本经济的解决方案,但由于FPGA设计所需要的技能以及目前FPGA设计流程的现状,出于产品上市时间方面的考虑,在此类应用中通常不会选择FPGA。对于ASIC,考虑的主要因素主要是批量和NRE成本。因此,FPGA器件主要用来实现高端应用,如果设计流程问题得到解决的话,也可用于低端和中端应用。对于采用FPGA的多媒体压缩设计来说,要想使设计流程更方便,最好选择这样的器件结构,处理单元(PE)分布在数据通道上,从而流式媒体数据可顺畅地通过FPGA器件。
图3 推荐的多媒体工具流程(略)
图4的给出了一个视频流水线结构实例,该流水线结构由配有局部存储器的功能处理单元组成,这些处理单元在一个通用处理单元的控制之下。通用处理单元即提供对数据流经流水线的过程进行控制的能力,也提供以帧为单位进行参数设置和修改的能力。例如,如果需要实现实时位速率控制,软件控制系统在接到来自网络的请求以后在处理单元完成量化的过程中可修改相应的参数。需要明确的是,这一结构并非固定的,而是可编程的。并且这儿给出的仅是存储器处理单元和软件控制方式中的一种可能。为通用FPGA结构增加一些结构和约束能够提供很大的优点,这样可通过更高级抽象使系统级工程师在设计早期阶段与具体的FPGA细节隔离开,直流设计流程的后期再考虑FPGA器件的特殊性。
结论
本文讨论了多媒体压缩技术,重点是揭示实现实时多媒体压缩系统时所面临的一些问题。讨论了多媒体压缩要求、设计复杂性以及推荐的设计流程。在最后指出,为了高效地驾御拥有数百万门的器件,越来越需要在硬件设计过程中使用更高级的抽象。
|