JPEG2000中5/3离散小波多层变换FPGA实现

模拟技术

2414人已加入

描述

 

  随着多媒体应用领域的快速发展,新一代静止图像压缩标准JPEG 2000己在2000年11月完成了标准的制定。与原有的JPEG标准相比,JPEG 2000具有许多优势。例如更高的压缩性能,支持单分量或者多分量的有损和无损压缩,可以提供质量和分辨率渐进传输,以及感兴趣区域编码等。典型的JPEG 2000编码中的传统的离散小波变换由卷积完成,因此在实现中需要巨大的计算和存储量。I.Daubechies和W.Sweldens等人提出的提升算法解决了这些问题,该算法采用采用移位-相加操作代替卷积操作,大大降低了DWT运算硬件实现的难度,因此JPEG 2000采用基于提升的DWT作为图像压缩的第一步。JPEG 2000推荐5/3及9/7小波分别用于无损和有损压缩,本文针对5/3滤波器,提出了一种高效高速的二维三层小波变换的硬件平台,整体结构采用流水操作。

  1 离散小波提升算法

  离散小波提升算法主要有三个步骤:分裂(Split)、预测(Predict)和更新(Update)。分裂是把输入信号x(n)分成奇偶两个子信号集,即由其采样后的偶序列子信号组成xe=x(2n),奇序列子信号组成x0=x(2n+1)。预测是偶序列信号乘上一个预测参数P,来预测奇信号,原来的奇序列信号与预测值的差即为高频系数d(n)。更新是高频系数乘以更新系数Q与偶序列信号的和,获得低频系数s(n)。

  5/3双正交小波对应的提升方法如图1所示,用于JPEG 2000中的无损压缩过程,硬件实现可分为两步,如式(1),式(2)所示:

  

JPEG2000

 

  2 5/3小波内嵌延拓提升算法

  由式(1)和式(2)可以看出,在图像边界处进行小波变换时需要进行延拓处理,否则无法正确进行小波变换,对原始图像边界数据的处理通常使用对称周期延拓方式,5/3小波变换的延拓需要在序列前延拓两个数据,在序列后延拓一个数据,图2为5/3小波变换时8点数据序列周期对称延拓示意图。

  

JPEG2000

 

  本文是通过双端口RAM的读/写实现分裂过程,在小波变换过程中通过对读地址的操作实现对称周期性数据延拓:用对计数器的计算操作实现边界数据延拓和生成读取地址与写入地址,从原图像中读取,经变换后写入相应的地址,以8×8图像为例,行方向上延拓后的读取地址顺序应该是2,1,0,1,2,3,4,5,6,7,6,10,9,8,9,10,…;列方向上延拓后读取地址顺序是16,8,0,8,16,24,32,40,48,56,48,17,9,…。

  3 硬件设计

  3.1 总体结构框图

  二维DWT实质上相当于先对图像数据做一维行方向小波变换,再对变换后的结果进行一维列方向上的小波变换,总体结构如图3所示。输入的图像数据是在原始RAM上存储,通过行地址模块生成的行变换地址读出图像数据,通过一维行向量的小波变换模块处理,将中间数据放入中间RAM中,再通过列地址模块生成的列变换地址读出中间图像数据,通过一维列向量的小波变换模块处理,最后将输出的小波分解系数写入外部存储器,然后由控制单元判断是否进行下一级小波分解,如果需要做下一层分解的话,将在上一层小波变换的结果中取出LL低频子带进行下一个循环,每对图像进行一次二维小波变换,产生的结果同样存储在外部存储器IM—RAM上,即下一级的小波变换结果覆盖在上一级的LL子带上。

  

JPEG2000

 

  3.2 地址生成模块的设计

  对于做三层的离散小波变换,每层对RAM的(行/列)读/写地址都不相同,所以在地址生成模块中分别做了三层各自的地址模块,每个单层地址模块产生2路读地址信号、2路写地址信号和1路写地址使能信号。首先产生行变换的读/写地址,在行变换完成之后产生列变换的读/写地址,在列变换完成之后,给出一个EndOfBlock信号返回给图4中的Control模块。由Control模块控制分层地址模块的使能以及Select模块选择有效地址信号输出,并且通过对读地址计算算法的调度,实现分裂和边界延拓功能,不需要另外设计单独的处理模块,地址生成模块的总体框图如图4所示。

  4 功能仿真及FPGA测试验证

  该设计采用了流水线技术即通过插入寄存器,使得一组输入数据的计算分布在同一个时钟周期中,从而提高资源利用率,增加电路的数据处理量,提高了性能,在此用Verilog HDL描述实现。

  4.1 功能仿真

  在ModelSim的测试模块中设置时钟为100MHz,图5为部分仿真结果,输入数据在经过3个时钟周期后计算出LH分量输出。由此可见,一维小波变换模块的设计符合JPEG 2000标准规定,结果正确。

  

JPEG2000

 

  二维小波变换结果就是,在行变换结束之后对于行方向上面的LH分量再做列方向上的小波变换,得到LL,HL,LH,HH分量,对于多层小波变换就是在前一层变换的结果上对LL子带再进行二维DWT变换,多层小波变换的示意图如图6所示。

  

JPEG2000

 

  4.2 FPGA测试验证

  该设计的FPGA验证采用Altera的DE2开发板平台,开发板采用CycloneⅡEP2C35作为主FPGA芯片,具有丰富的I/O接口与显示存储设备,可以满足该设计的验证工作。

  本次FPGA的验证中使用Altera的SignalTapⅡ嵌入式逻辑分析仪。SignalTapⅡ嵌入式逻辑分析仪集成到QuartusⅡ设计软件中,能够捕获和显示设计中实时信号的状态,这样开发者就可以在整个设计过程中以系统级速度观察硬件和软件的交互作用。它支持多达1 024个通道,采样深度达128Kb,每个分析仪均有10级触发输入/输出,使用SignalTapⅡ无需额外的逻辑分析设备,只需将一根JTAG接口的下载电缆连接到要调试的FPGA器件即可。

  下载验证结果如图7所示,整个系统时钟可以达到156MHz,速度很快,耗用资源相对较少,运算结果正确。

  

JPEG2000

 

  5 结语

  本文提出了一种快速、有效的JPEG 2000 5/3小波变换的VLSI设计结构,该结构将数据的奇偶分裂、边界延拓嵌入到地址产生单元对双端口RAM的操作中,不需要额外的计算单元,采用移位-相加操作代替卷积操作,通过Verilog编写RTL级代码并进行功能仿真,最后完成了在FPGA上的验证,最高时钟频率达到156MHz,整体性能优越。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分