基于提升算法的二维53和97小波变换的MATLAB仿真与DSP实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于提升算法的二维5/3和9/7小波变换的MATLAB
仿真与DSP 实现
王靖琰,刘蒙
中国科学院上海应用物理研究所,上海 (201800)
E-mail :wjycas@
摘 要:本文讨论了基于提升算法的二维5/3和9/7小波的原理,对算法进行了MATLAB 仿真,并在浮点型DSP TMS320C6713B 上实现了图像的二维5/3、9/7小波提升变换和逆变换。实验结果证明了方法的有效性。
关键词:小波提升,二维9/7、5/3小波,MATLAB ,TMS320C6713B
1.引言
随着人们对多媒体信息需求的日益增长,数码相机、移动电话、MP4 等多媒体信息处理系统蓬勃发展。基于通用DSP 处理器的此类系统设计以灵活性强、扩展性好、可升级和易维护的优点成为系统开发的首选方案 [1]。
由于良好的时频局部特性和多分辨分析特性,小波已广泛应用于图像处理领域,并且被吸收进新的一些国际标准中成为了标准算法。文中在MATLAB 平台上对基于小波提升的二维离散5/3和9/7小波变换算法进行了仿真,并在浮点型DSP TMS320C6713B 上实现了算法,该程序运算速度快,可充分利用硬件资源,特别适用于嵌入式系统的需求。
2.小波变换提升算法基本原理
1994年Sweldens 提出了小波的提升算法,有效地解决传统的基于Mallat 的塔式分解小波变换算法计算量大、对存储空间的要求高的问题,从算法方面提高了小波变换的实现效率
[2]。
2.1 5/3小波提升格式
小波提升算法的基本思想是通过由基本小波(lazy wavelet)逐步构建出一个具有更加良好性质的新小波,其实现步骤有3个:分解(split)、预测(predict)和更新(update)。分解是将数据分为偶数序列和奇数序列2个部分,预测是用分解的偶数序列预测奇数序列,得到的预测误差为变换的高频分量,更新是由预测误差来更新偶数序列,得到变换的低频分量。在J PEG2000中,5/3提升小波变换的算法为[3]:
(2)(22)(21)(21)(1)2(21)(21)2(2)(2)(2)
4x n x n c n x n c n c n d n x n ++⎡⎤+=+−⎢⎥⎣⎦
−+++⎡⎤=+⎢⎥⎣⎦
由其正变换的反置即可得到逆变换的算法为 c(2n-1) + c(2n+1)+2x (2n) = d (2n) - (3)4x(2n)+x(2n+2)x(2n+1)=c(2n)+(4)
2⎡⎤⎢⎥⎣⎦
⎡⎤⎢⎥⎣⎦ 从算式可以得出,提升算法是原位计算,即进行小波变换时在原位计算各个系数,计算
的系数可以直接替代原始数据而不需要附加数据存储空间。
2.2 9/7小波提升格式
Daubechies 9 /7双正交小波基,具有线性相位,消失矩较大,能量集中性好等特性,在图像处理领域有广泛的应用。图像经过9 /7小波分解后的低频部分分辨率高,高频部分细节突出,便于后续的图像处理。图1为在J PEG2000中9 /7小波的提升方案[4]。
图1 9/7小波变提升方案
其中α= - 1.586134342,β= -0.0529801186,γ=01882911075,δ= 0.443506852, K = 1.230 174105为各部分提升域的变换算子。
9 /7小波提升格式由四个提升步骤和两个缩放步骤来实现,具体如下:
1) 预测1:
1c (2n + 1) = x (2n + 1) +[ x (2n) + x (2n + 2) ]
(5)α
2) 更新1: 111d (2n) = x (2n) +[ c (2n - 1) + c (2n + 1) ](6)β
3) 预测2: 2111c (2n + 1) = c (2n + 1) +[ d (2n) + d (2n + 2) ](7)γ
4) 更新2: 2111d (2n) = d (2n) +[ c (2n - 1) + c (2n + 1) ](8)δ
5) 系数缩放1: 32c (2n + 1) = (1 /K) c (2n + 1)(9)•
6) 系数缩放2: 32d (2n) = K d (2n)
(10)• 与通常的提升方法不同,9 /7小波增加了一个预测和更新环节,可以防止图像重建误差的扩大,提高系统稳定性,同时也保留了原位计算的特性,运算所需内存少,变换速度快。
2.3 二维离散小波变换
小波处理图像时需要进行二维离散小波变换。当采用提升算法时,可以采用两级一维提升算法级联进行,即把图像数据的N×N 矩阵先看作一N 行数组,采用提升算法, 进行行变换,输出的结果仍为N×N 矩阵,再将其看作N 列数组,进行列变换,从而完成二维变换,得到最终变换结果。
Xo(n)
c(n)
d(n)
3.二维9/7、5/3小波提升算法的仿真与实现
本文首先用MATLAB语言实现了算法,并针对图像进行了算法的仿真;然后在浮点型DSP芯片TMS320C6713B上用C++实现了算法,并在此平台上进行了图像的二维9/7、5/3小波提升算法的分解与重构实验。
3.1 算法开发平台的选择
对于软件仿真,本文选取MATLAB 6.5开发环境。MATLAB是一种由美国MathWorks 公司出品的商业数学软件,是一种优秀的数值计算环境和编程语言。
对于硬件平台的实现,选择TI公司的TMS320C6000 系列的TMS320C6713B (以下简称C6713B) 芯片。
TMS320C6000 系列DSP 是美国TI 公司于1997年推出的新一代高性能的数字信号处理芯片,具有很高的工作频率和极强的并行处理能力。片内有A、B两组共8个并行处理单元,每组内分为L 、M 、D 、S 四个单元,每组处理单元结合同侧的寄存器组和数据通道,构成了一个完整的数据处理单元。C6000 处理器的A、B两个完整的数据处理单元之间可以通过两条数据交叉通路进行数据交叉访问,所以这样的硬件结构非常适合实现数据的并行处理,利于实现数据实时处理。
本文采用以C6000系列的TMS320C6713B芯片为中心的TDS6713EVM开发板,此开发板是闻亭公司最新研制的高速语音信号(采集)处理平台,可作为专用语音信号编解码处理测试平台,也可用于各种对数据精度有特殊要求的浮点数字信号处理场合[5]。
选择CCS 2 ('C6000)作为DSP软件开发环境。
3.2 算法的MATLAB软件仿真
本文使用MATLAB实现了二维9/7、5/3小波提升算法,开发了一个二维9/7、5/3小波提升算法仿真系统,其仿真界面如图2所示。
(a)图像小波正变 (b)图像小波逆变
图2 9/7二维9/7、5/3小波提升算法的MATLAB仿真界面
MATLAB的仿真实现的重点是编写wav_Dwt2d函数:
function s=wav_Dwt2d(SourceImage,row,column,J2,w97,scale)
此函数实现对SourceImage进行scale级小波分解,s为输出。参数w97=1时,使用9/7