图像的二维提升小波变换的FPGA实现

2011-07-07 13:58:29来源: 互联网
    小波分析理论以其良好的时频区域性和多分辨率分析能力,开辟了图像处理的崭新领域。小波变换是一种很好的图像分解方法,非常适合于分析突变信号而用于静止图像边缘的提取和压缩。高阶小波变化还可以用于实时处理视频图像信号,在减少编码时间、提高压缩比和降低失真度方面,都有很好的效果。因此,小波变换在图像处理中具有十分优越的性能。

  国际标准化组织和国际电子技术联盟联合推出的新一代静止图像压缩标准JPEG2000采用了基于提升算法的离散小波变换。JPEG2000标准中用到了两种方式来提升小波:一种是可逆的整数型5/3小波变换,主要用于实现无损图像压缩,也可用于有损图像压缩;另一种是浮点型9/7小波变换,用于高质量的有损图像压缩。其中整数5/3小波变换在很多领域有着重要应用,如医学图像、卫星传输图像等。本文将实现基于FPGA的图像二维5/3提升小波变换,采用FPGA芯片实现计算量十分复杂的二维提升小波变换,可以大大提高图像压缩运算速度,保证系统的实时性要求。

  1 5/3提升小波变换算法原理

  小波提升算法的基本思想是通过基本小波(lazy wavelet)逐步构建出一个具有更加良好性质的新小波,它的实现步骤有三个:分裂(split)、预测(predict)和更新(update)。分裂是将输入数据分为偶数序列和奇数序列二个部分;预测是用分裂的偶数序列预测奇数序列,得到的预测误差为变换的高频分量;更新是由预测误差来更新偶数序列,得到变换的低频分量。典型的单步小波提升结构如图1所示。

  

典型的单步小波提升结构

 

  在JPEG2000中,5/3提升小波变换的算法为:

  

公式

 

  相应的原理框图如图2所示。

  

相应的原理框图

 

  [page]

 

   

  在提升算法的实现中,它的系数分布存在的特点,可以简化设计的实现。

  (1)对输入数据的处理,只牵涉到了两两相邻的数据(圆圈中的数字表示执行的时钟序号),数据相关性图如图3所示。对图像数据进行行/列变换时,只需要得到该数据以及同一行(列)的相邻两个数据,就可以进行当前数据的行/列变换,而与其他数据无关,其本质是将奇序列数据与偶序列数据顺次逐一输入。因此,对数据输入部分的处理可以通过构建两个地址生成模块,实现对奇偶地址数据的读取。

  

数据相关性图

 

  (2)提升算法具有原位计算的特点,因此计算的系数可以直接替代原始数据而不需要附加数据存储空间。对于它的行、列变换都可以只使用同一个存储器RAM进行原始数据、中间数据和变换后数据的存储。由图4可以清楚地看到,二维提升小波变换后的系数在存储空间的分布情况。原位存储的特点大大地节省了片上资源,最有效地提高了系统利用率。

  

二维提升小波变换后的系数在存储空间的分布情况

 

  (3)行方向与列方向的提升小波变换是一样的,因此可以将一维提升小波变换设计成一个独立的模块,之后对它进行反复调用。这也是简化系统的有效途径之一。

  3 图像的二维提升小波变换的总体设计

  一维小波变换是二维小波变换的前提,对于它的FPGA实现,由图2可以看出,5/3提升小波变换中主要计算是加、减运算,而除法运算是除以2和除以4,这在硬件实现中可通过“右移”操作实现快速运算。因此在设计中只需将图2中的乘法器模块用相应的移位操作模块代替。而图2中乘以-1/2模块被替代为右移1位模块之后,便少了一个负号,因此再将此乘法器后面的加法器模块改为减法器,同样达到了乘以-1/2的效果。这样的改进还简化了负数在硬件电路中的运算。改进后的硬件实现框图如图5所示。

  

改进后的硬件实现框图

 

  二维小波变换的硬件原理结构如图6所示,其工作原理如下:采用RAM1功能模块来实现图像数据的存储;通过地址生成模块来实现对存储器中奇偶地址数据的分裂操作,先进行行方向的奇偶序列地址分裂,并做一维小波变换;行方向的操作一结束,立即进行列方向的奇偶序列地址分裂,并做一维小波变换。以上两步反复进行,便可完成图像的多级二维小波变换,最终的小波变换系数将被存储在RAM2中。

  

二维小波变换的硬件原理结构

 

  4 二维5/3提升小波变换的FPGA实现

  4.1 主要功能模块的设计

  (1)RAM模块。要实现对同一个数据块的双输出,以便进行一维提升小波变换,因此选择了具备双端口功能的宏模块,用来存储行小波变换系数和存储列小波变换系数,这样的结构能更加清晰地反映算法的实现流程,能够实现算法中对奇偶地址数据的同时读取。

  (2)行方向奇地址发生模块和行方向偶地址发生模块。行方向奇地址发生模块实现功能是在每个时钟周期内,依次输出如图7所示的白色圆圈所示存储器行方向奇数单元的地址,这实际上是一个计数功能。行方向偶地址发生模块实现的功能与行方向奇地址发生模块类似,不同的是在每个时钟周期内按行输出图7所示的灰色圆圈的序号。

  

行方向地址排列图

 

  (3)列方向奇地址发生模块和列方向偶地址发生模块。在计数结束时,列方向奇地址发生模块在每个时钟周期内依次输出如图8所示的白色圆圈所示的存储器列方向奇数单元的地址。列方向偶地址发生模块实现的功能与列方向奇地址发生模块类似,不同的是在每个时钟周期内按列输出图8所示的灰色圆圈的序号。

  

列方向地址排列图

 

  [page]

 

   

  系统顶层原理如图9所示(图中略去了时钟信号控制线)。在系统结构中添加delay延时寄存器,从调整系统的时序;RAM1、RAM2是没有被放入初始化文件的两个相同的存储器;sel1、sel2、sel3是三类相似功能的数据选择器,完成整个结构的基本控制功能。sel1实现的功能是当行变换结束后,切换RAM1的地址输入为列方向地址;sel2实现的功能是当行变换结束后,将“小波变换”模块的输入数据从行变换地址寻址得到的数据切换到列变换地址寻址得到的数据;sel3实现的功能是通过行变换标志信号和列变换标志信号来实现对RAM2的读写控制,当系统进行列变换时,RAM2模块写无效;当系统进行列变换时,RAM2模块写有效;当列变换完成时,RAM2模块再次写无效,此时RAM2中已经写入数据。

  

系统顶层原理

 

  系统工作过程如下:首先是行方向一维小波变换:图像的灰度值数据预存在“Video RAM”模块中,时钟信号一来,便立即启动水平奇地址模块和水平偶地址模块,开始奇偶地址分裂,进行行方向的一维小波变换,同时将行变换的数据存到RAM1中。其次再进行行、列变换切换时控制:当一次行方向地址奇偶分裂一结束,水平奇地址模块和水平偶地址模块将发出一个结束的标志信号,它将启动sel1、sel2、sel3开始工作。最后再进行列变换的过程,RAM2中存储列变换的结果数据。此时即完成了图像二维提升小波变换。

  采用QuartusⅡ软件对系统进行了综合、仿真,系统在FPGA芯片中(EP2C70F672C6)实现,结果显示系统耗时为163.85μs。完全能够保证图像压缩系统的实时性要求,它的值正是二维小波系数。

  本文分析了提升算法的系数分布存在的特点,提出了5/3二维提升小波变换硬件实现的简化方案,并在FPGA芯片中实现了对图像的5/3二维提升小波变换。采用FPGA芯片实现计算量十分复杂的二维提升小波变换,可以大大提高图像压缩的运算速度,保证系统的实时性要求。本方法在很多领域的图像处理中有着广阔的应用前景。

关键字:小波变换  图像  二维

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0707/article_2280.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
小波变换
图像
二维

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved