由JPEG工作组制定的新一代静止图像压缩标准JPEG2000" title="JPEG2000">JPEG2000,引入了小波变换和EBCOT编码的全新设计结构,使得JPEG2000拥有压缩比高、支持有损和无损压缩、码流随机存取及处理、逐渐传输显示解码等优点。由于受实现复杂度高、成本控制困难等因数制约,未能得到广泛应用。据统计,JPEG2000实现复杂度约是目前主流JPEG实现的30倍。因此,一种廉价、有效、实时的解决方案,对于JPEG2000的推广应用较为有利。本文针对JPEG2000解码系统中核心处理模块——离散小波逆变换" title="小波逆变换">小波逆变换(IDWT),采用提升小波算法,提出了一种双路并行的实现结构,并基于Xilinx公司低功耗的xc2v3000" title="xc2v3000">xc2v3000-4-fg676芯片进行布局布线仿真验证表明,该方案是一种高速、实时的硬件解决方案,能较好地解决JPEG200 0解码系统中对于小波逆变换实时处理的瓶颈。
1 离散小波变换
1.1 离散小波变换
小波理论是在调和分析的数学理论上发展起来的一个新的应用数学分支,它和傅里叶变换(Fourier)分析具有密切联系,但却克服了Fo-urier在时域里局部分析能力的缺陷,能够同时提供较精确的时域定位和较精确的频域定位,是一种可变分辨率分析。小波分析在时域和频域同时具有良好的局部化性质,是处理非平稳信号的有力工具。它的多分辨率分析是JPEG2000标准中进行渐进式压缩的基础。
离散小波变换(Discrete Wavelet Transform,DWT)由连续小波ψu,s(t)对尺度参数s和位置参数u离散化得到,即取,m,n∈Z,从而得到离散小波
在实际应用中,为了方便计算机处理,在式(1)的基础上,取a0=2,b0=1,从而得到二进小波
在实际应用中,采用传统卷积方式实现的第一代小波存在一些明显缺点:
(1)信号经过小波变换后产生的浮点数不能由有限字长的计算机精确地重构。
(2)图像的尺寸大小有限制,并不能对所有尺寸的图像进行变换处理。
(3)对内存需求量大,不适宜DSP、FPGA等硬件实现。
为了克服这些问题并将小波普适化,目前工程应用中主要借用提升算法(Lifting Scheme)直接在空间域上计算小波系数的方式来构造。提升方法既保持了原有的小波特性,又克服平移伸缩不变性所带来的局限,而且还能摆脱传统的滤波器和傅里叶的频域概念,保证在高倍数据压缩情况时的图像质量。
1.2 CDF9/7小波提升算法
JPEG2000标准给出两种双正交小波滤波器,即有损压缩和无损压缩,前者采用CDF9/7小波,后者采用5/3小波。CDF9/7小波是图像压缩的首选滤波器,自然图像压缩性能好于5/3小波。因此本论文选择CDF9/7小波进行提升格式小波变换硬件设计,其提升结构和实现步骤分别如图1所示。
对于CDF9/7小波,取(α,β,γ,δ,ζ)=(1.586 134 342,0.052 980 118,0.882 811 076,0.443 506 852,1.149 604 398)。
2 CDF9/7小波逆变换的VLSI实现
2.1 整体方案分析
离散小波逆变换模块处于JPEG2000解码系统最后一级,它负责将前端EBCOT解码得到的数据进行小波逆变换处理以获得重构图像信息。由于逆变换模块的数据并不如正变换模块一样直接来自外部数据总线,而是来自前端的EBCOT解码数据,因此既不能用协议的方式规定输入数据的顺序,也不能保证EBCOT解码数据等时间间隔均匀输出,所以在前端EBCOT模块和离散小波反变换模块之间需要使用存储器进行缓存。
由于连续小波基能够消除图像的方块效应,因此为了降低高倍压缩时各编码块之间的边际效应,在满足工程实现要求的同时提高压缩质量,一般需要选择尽可能大的图像块进行处理。显然,这受限于原始图像本身的大小和存储器的大小。为避免小波变换的图像尺寸受存储器的大小限制,同时避免使用昂贵的大内存FPGA芯片,本设计中选择使用片外存储器缓存接收到的数据帧。
2.2 整体方案设计
小波逆变换需要在接收到完整的一帧数据之后才能启动,而且对于N个像素点的图像,完成JPEG2000解码系统中的3层小波逆变换处理,需要M=N/16+N/16+N/4+N/4+N+N=2.625N个时钟周期。为了降低系统功耗,本设计并不采用倍频实现,而提出了一种双路并行的实现结构,其整体方案粗略结构如图2所示。
图2中箭头指示数据流向,箭头中的数字表示数据宽度,2对片外存储器采用乒乓方式轮询切换。本方案首先使用两路并行的核心计算单元(ILWC1和ILWC2)完成前3列2行逆变换处理(第3层小波逆变换、第2层小波逆变换和第1层小波列逆变换),这期间的数据交替的在IRAM1和IR-AM3或者IRAM2和IRAM4之间存取;然后再使用第3个独立的核心计算单元(ILWC3)完成剩余的最后一次小波逆变换处理(第一层小波行逆变换),处理完毕的数据。由于单个小波系数位宽为18 bit(4 bit小数位确保精度要求),因此片外存储器每个36 bit的存储单元中可以同时存放两个小波系数。在前3列2行逆变换处理过程中,每次读取的2个小波系数可以分别提供给ILWC1和ILWC2并行处理,在第一层小波行逆变换时则由一个二通道选择器(MUX2)对数据的高、低18 bit位进行选择分时提供给ILWC3。数据组织模块(Iogz)的功能就是将ILWC1和ILWC2这两个处理模块完成的行、列变换数据进行合并重组,以便对片外RAM进行读写的36 bit外部总线数据总是由两个18bit小波系数分别以总线数据的高18bit和低18 bit的形式组合而成。
基于以上实现方案,对于N个像素点的图像,首先由ILWC1和ILWC2完成3列2行逆变换需要M1=N/32+N/32+N/8+N/8+N/2=0.812 5N个时钟周期,然后由ILWC3独立最后一层行变换需要M2=N个时钟周期。因此,两个处理过程所需的总时间M=M1+M2=1.812 5N不超出允许的存储器占用上限(2N),能够保证对连续输入的小波系数进行实时的处理。4个存储器轮询状态和FPGA的功能状态参见图3。
2.3 核心计算单元ILWC设计
由图4所示,核心计算单元对高低频系数的伸缩扩展共用一个乘法器,因此平均每个小波系数所需进行的乘法和加法次数分别为5次和8次,相对于卷积运算的9次和14次,计算复杂度显然是降低了很多。
3 软件及硬件资源的选用
3.1 工作环境
本设计基于Xilinx公司ISE 9.1开发平台之上,使用VHDL语言(93版本)编程实现。系统采用Synplify8.1进行综合,使用Modelsim SE 6.0d进行仿真验证。在没有添加任何约束的情况下,其性能参数如表1所示。
选用Virtex-Ⅱ" title="Virtex-Ⅱ">Virtex-Ⅱ系列的芯片原因在于:(1)软件开发工具友好,开发容易,性价比高;(2)低功耗、低工作电压,满足实时设备的要求;(3)仿真可靠,几乎完全接近实际情况;(4)可重复擦写型FPGA,设计灵活,适用于方案改进。
3.2 实验结果
本系统采用8位64×4 096的原始图像经过3层定点化小波处理所得的14位小波系数为测试数据,实验处理结果与VC软件定点化逆小波处理结果一致,表明本系统能正确的满足应用要求,图5为本系统工作整体仿真图。系统在同步信号Syn低电平有效期间,根据切换信号Exg的高、低电平选择片外存储器进行乒乓操作。首先数据由Data输入到片外存储器,作为逆变换的测试数据,处理完成之后由Result端输出,并以一个高电平脉冲信号Endn标记处理完毕。
4 结束语
本文讨论下JPEG2000解码系统中的CDF9/7小波逆变换模块的设计要求,借助提升算法原位操作的特点,所提出的双路并行的实时处理方案无需任何内部存储空间,而外部存储空间的大小完全取决于处理图像块尺寸的大小。在视频及卫星遥感图像这类实时性要求非常强的图像处理中,本系统能很好地满足应用需求。