新的静止图像压缩ISO/ITU-T标准JPEG2000提供了比以前的JPEG标准更好的编码效能。ADI公司在前期推出小波变换图像压缩芯片ADV611的基础上,率先推出了实现JPEG2000标准第一部分的专用芯片ADV202。本文给出了一种基于ADV202的JPEG2000图像压缩与解压缩系统的设计方案。
JPEG2000图像压缩标准
JPEG2000是JPEG2000工作组制定的静止图像压缩编码的国际标准,标准号为ISO/IEC 15444|ITU-T T.800。JPEG2000标准和其他标准一样,由多个部分组成。其中,第一部分为编码的核心部分,是公开并可免费使用的。它对于连续色调、二值的,灰度或彩色静止图像的编码定义了一组无损和有损的方法。其他部分则是辅助和扩展部分。ADV202支持除ROI以外的第一部分的所有特征。
JPEG2000采用了许多新的压缩编码技术。首先,变换方法采用离散小波变换(DWT)。其次,通过使用带中央“死区”的均匀量化器实现嵌入式量化。第三,对每一个比特层采用基于上下文的自适应二进制算术编码。第四,采用了经过优化的分割嵌入式块编码(EBCOT),由此得到最佳的嵌入式码流,改进抗误码能力。JPEG2000编解码器结构如图1所示。
图1 JPEG2000编解码器结构(a)编码器(b)解码器 |
JPEG2000专用芯片ADV202
ADV202是ADI公司新推出的一款单片实现JPEG2000编解码的ASIC。图2给出了ADV202结构图。ADV202集成了一个基于获得专利的空间高效递归滤波小波技术(简称SURFTM小波技术)的小波核。这个处理器支持达到6层分解的9/7和5/3小波变换。ADV202可编程的分块/图像尺寸,在三分量4:2:2交织模式下,宽度可达到2048个像素。在单分量的模式下,宽度可达到4096个像素。最大分块/图像高度为4096个像素。ADV202还集成了一个嵌入式32位RISC处理器。这个处理器用来配置,控制和管理ADV202内部的专用硬件,并且分析/产生符合用户设置的JPEG2000码流。由于熵编码在JPEG2000压缩/解压缩过程中是计算复杂度最高的操作,所以在ADV202中提供了三个专用的硬件熵编码器。ADV202的视频接口支持CCIR656,SMPTE125M PAL/ NTSC,SMPTE293M (525p),TU.R-BT1358 (625p)或者任何最大输入速率在非可逆模式下为65MSPS,在可逆模式下为40MSPS的视频格式。ADV202的内部DMA引擎为内部存储器之间、内部存储器和各个功能模块之间提供高速传输数据能力。
ADV202有两种工作模式,一种是编码模式,另一种是解码模式。在编码模式下,视频数据通过VDATA总线输入ADV202,由小波核对输入的数据进行小波变换,并把所有频率子带的小波系数存入ADV202内部的存储器。每一个子带根据ADV202编码参数的设置进一步分成编码子块,然后由熵编码器对编码子块执行内容建模和算术编码,运算的结果存入内部存储器。随后由内部DMA传输到CODE FIFO,通过HDATA总线把压缩数据流输出ADV202。在解码模式下,工作过程是编码模式的逆过程。
图2 ADV202结构图 |
系统实现方案
JPEG2000压缩子系统基本结构图如图3所示,它主要有四个部分。视频AD由ADV7189进行。ADV7189是多种制式的SDTV视频解码器。它集成了一个视频解码器,自动检测和转换标准模拟基带电视信号成符合CCIR601/CCIR656的4:2:2分量数字视频数据。FPGA作为整个系统的中枢,对系统中各个芯片的信号起桥接作用,并且合成一些控制信号。在FPGA里面还可以根据需要完成数据的初步处理以及信道编码。DSP是系统的主控者,由它完成对ADV202和ADV7189的初始化。DSP通过数据总线对ADV202进行初始化,而对ADV7189的初始化是通过I2C总线进行。
当系统开始工作后,由摄像头捕获到的模拟视频信号传送给ADV7189。ADV7189经过采样,量化后输出符合要求的数字视频数据。视频数据流通过FPGA的桥接送给ADV202进行压缩编码。为了提高压缩率,可以在视频数据流流过FPGA时,对数据进行丢场处理,以人为降低需要进行压缩编码的源数据速率。压缩好的数据再由ADV202传送给FPGA里面的接口控制器,由控制器按照规定接口协议输出压缩数据流。
JPEG2000解压缩子系统基本结构图如图4所示,它也主要有四个部分。视频DA由ADV7301进行。ADV7301是多种制式的SD,逐行/HDTV视频编码器。它包含了六个高速视频D/A转换器。在解压缩子系统中,FPGA也是对系统中各个芯片的信号起桥接作用。DSP是系统的主控者,由它来完成对ADV202和ADV7301的初始化。
图3 JPEG2000压缩系统结构图 |
图4 JPEG2000解压缩系统结构图 |
图5 压缩系统的FPGA软件模块结构图 |
图6 |
当系统开始工作后,压缩数据流先由接口控制器接收存入到FPGA里面的FIFO,然后由接口控制器控制把接收到的压缩数据流转送给ADV202进行解压缩操作。当在压缩子系统中,对输入的源视频数据进行了丢场处理,则在解压缩子系统需要进行补场处理。ADV202输出的数字视频数据通过FPGA送给ADV7301,由ADV7301进行视频编码得到模拟视频信号。模拟视频信号由监视器回放得到源端的图像。
系统的软件主要有两部分:一部分是FPGA里面的执行程序,另一部分是DSP程序。图5给出了压缩子系统的FPGA软件模块结构图。解压缩子系统和压缩子系统的FPGA内部功能模块结构基本相同,只需要改变一下信号的流向。由于ADV202和DSP的接口不是完全一致,所以需要FPGA完成一些接口信号的匹配工作。FPGA里面的模块和时序用VERILOG HDL编程实现。
在本系统中,DSP主要负责对芯片的初始化。它不参与到编解码过程中。DSP在执行完初始化后,就处于等待处理中断状态。DSP响应中断后就能够及时处理异常事件。
结语
本文提出了一种基于ADV202的JPEG2000图像压缩和解压缩系统的设计方案,该系统具有很大的灵活性和扩展性,可以在以最小代价修改设计的情况下开发出有较宽压缩率变化范围的图像压缩系统。在现有硬件条件下,还可以加入图像处理、图像识别程序,来增大该系统的应用范围。
作者:陶志锋/严小商
上海无线电设备研究所