马玲玲,刘云飞,印辉云,周 阳
(南京林业大学信息科学技术学院,江苏南京210037)
数字图像是最重要的信息媒体之一,但是其巨大的数据量给图像的存储、传送和处理带来了很大困难,制约了数字化技术的进一步应用。图像压缩技术在解决此类问题中发挥了巨大作用。
大多数压缩算法的重点集中在有损压缩上,但在现实生活中,常需要进行无损压缩,使得重构所得图像的峰值信噪比(PSNR)无穷大,如处理医学图像、航空图像、环境监测图像等。传统的离散余弦变换(DCT变换)和小波变换对图像数据进行变换后产生的是浮点数,不能对图像进行完全的无损压缩[1]。提升小波变换,亦称为第二代小波变换,不仅具有传统小波变换多分辨率的优点,还实现了从整数到整数的变换,满足无损压缩的要求,且简化了运算,易于硬件的快速实现。现已提出不少利用小波压缩图像的方案。文献[2-4]均提出有效设计架构来实现二维小波变换,但采用片内存储单元存储图像数据,片上资源消耗量大。文献[5]提出基于设计工具DSP Builder实现提升小波变换的简化方案,但采用补零的边界处理结构,有损重构图像。且大多数文献的重心在优化二维提升小波变换的实现架构上,忽略了图像采集部分,不能直接应用在实际生活中。
本设计应用Altera公司的多媒体开发平台(DE2)及Terasic公司的数码相机开发套件(D5M)采集实时图像,并利用具有对称周期延拓结构的二维整数5/3提升小波变换对采集的图像进行压缩处理。另外,为减少片内资源的消耗,提高运算速度,利用DE2提供的存储器(SDRAM、SRAM)存储图像数据。最后,对Altera公司的Cyclone II系列EP2C35F672芯片进行适配,以验证系统的可靠性与实时性。
小波变换是空间和频域的局部变换,因而能有效地从信号中提取局部信息。通过伸缩和平移等运算,对函数和信号进行多尺度细化分析。小波提升算法放弃了用伸缩、平移一个母函数的方法来构造小波基,而采用通过一系列提升过程来构造小波基,是一种更为快速有效的小波变换方法。基于提升方法的第二代小波变换分为分裂、预测和更新3个步骤[3]。
(Ⅰ)分裂阶段:将原始数据s(j)={,k∈z}分裂成偶数样本和奇数样本
(Ⅱ)预测阶段:利用偶数样本s(j-1)预测奇数样本d(j-1),并用奇数样本与预测值之差代替奇数样本,即d(j-1)∶=d(j-1)-p(s(j-1)),式中p为预测算子。
(Ⅲ)更新阶段:构造一个算子u,作用于d(j-1)(高频信号)并叠加到偶数样本s(j-1)上,得到近似信号(低频信号),即
5/3提升小波变换作为JPEG2000标准中推荐使用的无损压缩算法[6],其整数变换形式如式(1)。从式(1)可以看出:计算某个奇数位置的系数时,只要该位置上的原有数据及2个相邻的偶数数据,计算的结果覆盖原来的数据,实现原位计算,有利于硬件的实现。
图像数据是有限长度的数据流,在小波变换时,须对原始信号进行边界处理。标准定义的边界处理方法是将数据周期对称延拓,以实现小波变换的完全重构,同时又不增加变换后的数据量[7],即若数据的范围是0~N,5/3提升小波整数变换形式见式(2)。
采用模块化设计,主要分为实时图像采集、图像预处理和图像压缩3个模块。
实时图像采集模块采用D5M数码相机采集图像,其中D5M通过DE2平台的通用输入/输出接口(GPIO接口)JP1与FPGA芯片相连。D5M的图像采集模块包括4个部分:互补金属氧化物半导体(CMOS)传感器设置、图像模式转换、动态随机存储器(SDRAM)读写控制、视频图形阵列(VGA)显示等。4个部分的时钟频率不同,传感器的采样频率远高于VGA显示的时钟频率,通过SDRAM缓冲图像数据,实现采样与显示的协调。
D5M工作时,CMOS传感器MT9P001[8]实时采集图像,通过使能帧有效、行有效及像素时钟3个同步信号,正确获取Bayer原始图像数据流。图像的模式转换利用行缓冲+流水线的处理方式,将原始图像数据实时转换成RGB数据。SDRAM以四端口模式(两个写端口+两个读端口)存取数据,像素时钟频率作为SDRAM的写时钟频率存储RGB数据,其中绿色数据被拆分为两部分,分别与蓝色、红色数据合并存入两个写端口。VGA的时钟频率作为SDRAM的读时钟频率,取两个读端口的数据,还原成RGB 数据,在 VGA 上显示[9]。
一个图像包含一个或几个分量,如一个灰度图像只有一个亮度分量,而一个RGB彩色图像有3个分量,分别代表红、绿、蓝彩色分量。为了在后端更好地处理和识别图像,必须先将彩色图像转换成灰度图像。今后在灰度图像中的各种变换操作,均可以推广到含有多个分量的彩色图像上。
应用ITU-RBT.601标准将RGB彩色图像转换为YUV图像,其转换如式(3)所示[10]。
式(3)中涉及到浮点运算,难以用硬件实现,且应用时会影响到系统的运行速度,妨碍实时图像的压缩。观察公式(3)中Y的值,发现G的权重几乎是R的2倍,是B的5倍,因而真正决定灰度值的是G,而R、B的影响则不显著,所以用G来代表灰度值作近似处理,这种方式最有利于硬件的实现。
从SDRAM两个读端口中分别读出绿色图像的两部分数据,合并为完整的绿色图像数据,实时写入SRAM,此即为后端处理的灰度图像数据。其中SRAM与SDRAM保持一致,均以帧为单位循环存储图像数据。
基于5/3提升小波变换的压缩模块是实时压缩处理的关键部件,其结构如图1所示。它包括SRAM读写控制、时钟二分频、奇偶序列的采样及行列变换等4个部分。
2.3.1 SRAM读写控制
考虑到实时存储在SRAM中的灰度图像,一个像素点对应一个数据,因而也对应了SRAM一个地址。提出通过控制SRAM的地址来控制数据的方法,简化整个设计的控制。
行变换时要求以行为单位读出存储在SRAM中的数据,设计采用对SRAM地址顺序加一的方法得到正确数据。列变换时要求以列为单位读出数据,即转置读出存储在SRAM中的行变换后的数据,设计采用对地址顺序加上图像行数的方法巧妙实现转置,并且读完一列后,地址指向下一列的首端。
压缩模块采用片外存储器SRAM循环覆盖存储图像数据,即经处理后的中间数据和最终数据都存储在SRAM中,但存储的地址范围不同,通过对片外SRAM的控制,可最大程度减少FPGA芯片的片上资源的使用,解决了传统方法中需设置多个内部RAM的繁琐和内存消耗问题。
2.3.2 二分频
为了得到同步奇数、偶数序列,提出对时钟进行二分频的方法,即以CLK为时钟频率输出SRAM中灰度图像数据,以CLK/2为时钟频率采样SRAM的输出数据。
2.3.3 奇偶序列的采样
正确的同步奇偶序列的获取需满足两个条件:一是奇偶序列的采样均以CLK/2为时钟频率,二是对数据进行间隔采样。为此提出在奇数序列采样模块前添加一个D触发器以调整时序,实现数据的间隔采样。
2.3.4 行列变换
应用MATLAB的Simulink工具箱中 Altera DSP Builder[11-12]中的模块对5/3提升小波变换进行图形化建模,通过Signal Complier将模型文件转换成超高速集成电路硬件描述语言(VHDL)代码,在Modelsim仿真软件中进行功能仿真,最后应用QuartusII 9.1编程,通过FPGA芯片进行硬件设计验证[13]。
5/3提升小波的FPGA设计依文献[5]所提出的结构作出两点改进:一是用“周期对称延拓”取代“边界补零”,消除由于边界补零引入多余的小波系数,从而在边界引起较大误差的问题,其中应用Multiplexer与Single Pulse对边界作周期对称延拓处理;二是用“Divider”取代“Barrel Shifter”实现式(2)中偶数序列的更新,解决当两高频分量之和为负值时,移位寄存器移位得到错误小波系数的问题。
为便于检验,假定数据流的长度为12,奇偶数据流的长度分别为6。使用Modelsim和QuartusII分别对生成的RTL级VHDL代码进行功能仿真和时序仿真,QuartusII仿真波形图如图2所示,Modelsim仿真波形图如图3所示。比较图2和图3可以看出:在Modelsim和QuartusII中的仿真是一致的,符合5/3小波变换的要求,因而可用作实时图像的无损压缩处理。5/3提升小波变换的硬件电路的模型化设计具有很强的灵活性,多次调用即可实现多级小波压缩。
图1 图像压缩模块结构
图2 QuartusII仿真波形图
图3 Modelsim仿真波形图
在QuartusII9.1下实现系统的编译、综合和仿真后,经Cyclone II系列EP2C35F672芯片进行适配。编译结果:Total logic element:796/33,216(2%);Total memory bits:8 240/483,840(2%),即逻辑资源与存储资源分别占用了2%。与文献[14]提出的二维提升小波变换实现架构占用50%左右的逻辑资源和存储资源相比,资源消耗大幅度降低,也解决了诸如文献[15]中因消耗资源量太大和FPGA芯片片上存储资源的限制而无法处理较大图片的缺陷。
测试结果:(1)D5M CMOS传感器MT9P001实时抓取图像(选取电子工业出版社出版的《小波分析及其应用》教材封面的一部分作为系统采集的原始图像)如图4所示,图像清晰,大小为400 pixel×320 pixel。(2)经第1级小波列变换后的图像如图5所示,大小为200 pixel×320 pixel;经第1级小波行变换后的图像大小为100 pixel×320 pixel;经第2级小波行变换后的图像如图6所示,大小为100 pixel×160 pixel。经两级压缩,压缩率为峰值信噪比
图4 D5M拍摄的原始图像
图5 第1级小波列压缩图像
图6 第2级小波行压缩图像
设计并完成了一整套从图像采集、预处理到无损压缩的实时图像处理系统,并从图片的处理效果、结构的灵活性及片上资源的节省3个方面对各个模块作出改进。在不影响图片特征和视觉效果的前提下,提出了用G(绿色)取代Y(亮度)的思想,克服了传统的彩色空间转换过程中浮点数计算硬件难以实现与运行速度低的缺点。针对5/3提升小波变换,提出了应用对称周期延拓结构取代边界补零的思路,弥补了边界补零结构带来多余小波系数的不足,改善了压缩图片的质量。整个系统实行模块化设计,多次调用压缩模块即可实现多级压缩处理,且完全由片外存储器存储图像采集和处理过程中的大容量数据,大大减轻了FPGA芯片的负荷。
[1]彭宁嵩,陈家新,韩建松,等.一种基于小波分析的图像压缩编码方法[J].河南科技大学学报:自然科学版,2001,22(3):53-56.
[2]季云松,郭成志,范璐璐,等.基于FPGA的小波图像实时处理方法[J].激光与红外,2009,39(10):1112-1114.
[3]卢春晖,王英健,陈丽.提升小波算法的FPGA硬件实现[J].微处理机,2010,33(2):39-41.
[4]李娜,刘艳滢.基于提升小波的图像去噪算法的FPGA设计[J].微计算机信息,2009,25(2):166-168.
[5]陈大科,韩久强.5/3提升小波变换及逆变换的FPGA设计方法[J].东南大学学报,2005,35(2):211-214.
[6]胡建,王黎.基于FPGA的小波提升变换实现[J].微计算机信息,2010,26(82):127-128.
[7]张延奎.小波分析及其应用[M].北京:机械工业出版社,2005:117.
[8]罗钧,吴克松,付丽.基于高分辨率CMOS传感器图像采集系统的实现[J].电子技术应用,2008(5):54-56.
[9]朱亦丹,方仪冰.基于FPGA的图像采集与VGA显示系统[J].计算机应用,2011,31(5):1258-1261.
[10]封岸松,战仕成,汪滢.基于FPGA的RGB到YCC颜色空间转换[J].现代电子技术,2010,33(10):122-124.
[11]丁亦农.Simulink与信号处理[M].北京:北京航空航天大学出版社,2010.
[12]彭滋霖,阳春华.Matlab/Simulink到VHDL代码的转换研究及其实验配置[J].现代电子技术,2007,31(4):186-188.
[13]袁博,宋万杰,吴顺君.基于FPGA的Matlab与Quartus联合设计技术研究[J].电子工程师,2007,33(1):6-8.
[14]崔巍,汶德胜,马涛.二维提升小波变换的FPGA结构设计[J].计算机工程,2007,33(15):261-263.
[15]林路易.JPEG2000中提升小波算法的FPGA实现[D].哈尔滨:哈尔滨工业大学,2006.