1、matlab 练习程序(图像 Haar 小波变换)学院:机械工程学院 姓名:谢胜龙 学号:1014201079小波分析属于时频分析的一种,传统的信号分析是建立在傅立叶变换的基础上的,由于傅立叶分析使用的是一种全局的变换,要么完全在时域,要么完全在时域,要么完全在频域,因此无法表述信号的时频局域性质,而这种性质恰恰是非平稳信号最根本和最关键的性质。为了分析和处理非平稳信号,人们对傅立叶分析进行了推广乃至根本性的革命,提出并发展了一系列新的信号分析理论:短时傅立叶变换、Gabor 变换、时频分析、小波变换、分数阶傅立叶变换、线调频小波变换、循环统计量理论和调幅-调频信号分析等。其中,短时傅立叶变换
2、和小波变换也是应传统的傅立叶变换不能够满足信号处理的要求而产生的。短时傅立叶变换分析的基本思想是:假定非平稳信号在分析窗函数 g(t)的一个短时间间隔内是平稳(伪平稳)的,并移动分析窗函数,使 f(t)g(t-)在不同的有限时间宽度内是平稳信号,从而计算出各个不同时刻的功率谱。但从本质上讲,短时傅立叶变换是一种单一分辨率的信号分析方法,因为它使用一个固定的短时窗函数。因而短时傅立叶变换在信号分析上还是存在着不可逾越的缺陷。小波变换是一种信号的时间尺度分析方法,它具有多分辨率分析的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变但其形状可改变,时间窗和频率窗都可以改变的时
3、频局部化分析方法。即在低频部分具有较高的频率分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很适合于探测正常信号中夹带的瞬态反常现象并展示其成分,所以被誉为分析信号的显微镜,利用连续小波变换进行动态系统故障检测与诊断具有良好的效果。小波变换步骤:1.将小波 w(t)和原函数 f(t)的开始部分进行比较,计算系数 C。系数 C 表示该部分函数与小波的相似程度;2.将小波向右移 k 单位,得到小波 w(t-k),重复 1。重复该部知道函数 f 结束;3.扩展小波 w(t),得到小波 w(t/2),重复步骤 1,2;4.不断扩展小波,重复 1,2,3。这里使用 haar 小波,缩放函数是
4、1 1,小波函数是1 -1。尺度为 2 的全分解小波包:Matlab 代码如下:main.mclear all;close all;clc;img=double(imread(test.jpg);m n=size(img);LL LH HL HH=haar_dwt2D(img);img=LL LH;HL HH; %一层分解imgn=zeros(m,n);for i=0:m/2:m/2for j=0:n/2:n/2LL LH HL HH=haar_dwt2D(img(i+1:i+m/2,j+1:j+n/2); %对一层分解后的四个图像分别再分解imgn(i+1:i+m/2,j+1:j+n/2)=
5、LL LH;HL HH; endendimshow(imgn)haar_dwt2D.mfunction LL LH HL HH=haar_dwt2D(img)m n=size(img);for i=1:m %每一行进行分解L H=haar_dwt(img(i,:);img(i,:)=L H;endfor j=1:n %每一列进行分解L H=haar_dwt(img(:,j);img(:,j)=L H;endLL=mat2gray(img(1:m/2,1:n/2); %行列都是低频 LH=mat2gray(img(1:m/2,n/2+1:n); %行低频列高频HL=mat2gray(img(m/2+1:m,1:n/2); %行高频列低频HH=mat2gray(img(m/2+1:m,n/2+1:n); %行列都是高频Endhaar_dwt.mfunction L H=haar_dwt(f)n=length(f);n=n/2;L=zeros(1,n); %低频分量H=zeros(1,n); %高频分量for i=1:nL(i)=(f(2*i-1)+f(2*i)/sqrt(2);H(i)=(f(2*i-1)-f(2*i)/sqrt(2);endend