文章目录
1 傅里叶变换与小波分析
1.1 傅里叶变换
傅里叶变换可以将信号分解为无限数量的正弦和余弦波。信号傅里叶频谱的时间信息丢失了,我们得到的是一张只有频率和振幅的图,对两个信号,如果只是时间顺序上发生变化,两个信号的频谱很有可能是非常相似的。
可以看出,虽然信号不同,但它们的频谱是一样的。那我们碰到这样一个频谱,需要对其进行傅里叶逆变换时,逆变换的结果是无法确定的。为了处理这个问题,短时傅里叶变换被提了出来。
1.2 短时傅里叶变换(STFT)
设定一个窗函数,只对窗函数范围内的信息进行分析。
其公式为:
X
(
n
,
w
)
=
∑
m
=
−
∞
∞
x
(
m
)
w
(
n
−
m
)
e
−
j
w
m
X(n,w)=\sum\limits^{\infty}_{m=-\infty}x(m)w(n-m)e^{-jwm}
X(n,w)=m=−∞∑∞x(m)w(n−m)e−jwm
其中
x
(
m
)
x(m)
x(m)为输入信号,
w
(
m
)
w(m)
w(m)是窗函数。
在短时傅里叶变换的结果中,频率时间和振幅三个信息都被包含在内。但在这种变换中,一旦选定了窗口大小,整个信号分析过程中都是不变的。那么如果选择的窗口是比较窄的,我们可以捕捉到短时间发生的事件,但同时,我们在频域中得到的响应就会非常平坦(频率分辨率差)。如果我们选择的窗口比较宽,我们就无法捕捉到小事件(时间分辨率差)。在这种情况下,我们如果想要时间分辨率和频率分辨率都比较高,是无法实现的。
2 多分辨率展开
2.1 级数展开
一个信号或函数可以展开为函数的线性组合:
f
(
x
)
=
∑
k
α
k
φ
k
(
x
)
f(x)=\sum\limits_k\alpha _{k}\varphi _{k}(x)
f(x)=k∑αkφk(x)
其中,k是有限或无限和的整数下标,
α
k
\alpha _{k}
αk是具有实数值的展开系数,
φ
k
(
x
)
\varphi _{k}(x)
φk(x)是具有实数值的展开函数.
如果展开方式唯一,即任何指定的f (x)只有一个
α
k
\alpha _{k}
αk序列与之相对应,则
φ
k
(
x
)
\varphi _{k}(x)
φk(x)称为基函数,展开序列
φ
k
(
x
)
{\varphi _{k}(x)}
φk(x)称为可表示这一类函数的基。
2.2 尺度函数
对由平方可积的实函数φ(x)通过整数平移和二值尺度可构成函数集合
φ
j
,
k
(
x
)
=
2
j
2
φ
(
2
j
x
−
k
)
φ_{j,k}(x)=2^{\frac{j}{2}}φ(2^jx-k)
φj,k(x)=22jφ(2jx−k)
从公式我们可以发现,j决定了
φ
j
,
k
(
x
)
φ_{j,k}(x)
φj,k(x)的宽度和高度,即
φ
j
,
k
(
x
)
φ_{j,k}(x)
φj,k(x)的形状随着j变化,因此我们称φ(x)为尺度函数
3 小波变换
3.1小波
小波是指小区域、长度有限、均值为0的波形。小是指信号具有衰减性,波指信号具有波动性。
其函数可写为:
φ
a
,
b
(
t
)
=
1
a
φ
(
t
−
b
a
)
φ_a,_b(t)=\frac{1}{\sqrt a}φ(\frac{t-b}{a})
φa,b(t)=a1φ(at−b)
其中,a被称为缩放参数,b被称为移动或位置参数。从公式可以看出,小波主要进行缩放和平移两个操作。
缩放:压缩或伸展基本小波,缩放系数越小,小波越窄
平移:小波的延迟或超前
小波的缩放因子越小,小波越窄,信号的频率越高,度量信号的细节变化。
小波的缩放因子越大,小波越宽,信号的频率越低,度量信号的粗糙程度。
3.2 小波变换
与傅里叶变换不同,小波变换的主要要素是不同缩放和不同位置的小波。通过缩放母小波的宽度来获得信号的频率信息,通过平移母小波的位置来获得信号的时间信息。
缩放和平移操作是为了计算小波系数。大的缩放因子计算的系数称为信号的近似值,表示信号的低频分量。小的缩放因子计算的系数称为信号的细节值,表示信号的高频分量
3.2.1 连续小波变换
连续小波变换可以通过公式
C
W
T
(
a
,
b
)
=
1
a
∫
−
∞
∞
f
(
t
)
φ
∗
(
t
−
b
a
)
d
t
CWT(a,b)=\frac{1}{\sqrt a}\int\limits^{\infty}_{-\infty} f(t)φ^*(\frac{t-b}{a})dt
CWT(a,b)=a1−∞∫∞f(t)φ∗(at−b)dt 来表示。
3.2.2 离散小波变换
在连续小波变换中,a和b是连续参数,我们在变换时就会生成大量小波选项,数据量非常庞大。在此情况下,如果我们选择离散的参数,降低采样数,我们就可以达到减少数据量的目的。a和b的离散值的选择方法有两种:
(1)冗余小波变换
冗余小波变换中,
a
=
a
0
m
,
b
=
n
b
0
a
0
m
a=a_0^m,b=nb_0a_0^m
a=a0m,b=nb0a0m,其中,
a
0
a_0
a0为一个常数。通过变化n,m就可以得到不同宽度,位置的小波。将
a
,
b
a,b
a,b得值代入公式,我们就可以得到离散小波函数及离散小波变换公式:
φ
m
,
n
(
k
)
=
a
0
−
m
2
φ
(
a
0
−
m
(
k
−
n
b
0
a
0
m
)
)
φ_m,_n(k)=a_0^{-\frac{m}{2}}φ(a_0^{-m}(k-nb_0a_0^m))
φm,n(k)=a0−2mφ(a0−m(k−nb0a0m))
D
W
T
(
m
,
n
)
=
a
0
−
m
2
∑
−
∞
∞
f
(
k
)
φ
∗
(
a
0
−
m
(
k
−
n
b
0
a
0
m
)
DWT(m,n)=a_0^{-\frac{m}{2}}\sum\limits^{\infty}_{-\infty}f(k)φ^*(a_0^{-m}(k-nb_0a_0^m)
DWT(m,n)=a0−2m−∞∑∞f(k)φ∗(a0−m(k−nb0a0m)
(2)多解析度分析
在多解析度分析中,a和b的值均为2的整数次幂。公式就变为:
φ
m
,
n
(
k
)
=
2
−
m
2
φ
(
2
−
m
(
k
−
n
2
m
)
)
φ_m,_n(k)=2^{-\frac{m}{2}}φ(2^{-m}(k-n2^m))
φm,n(k)=2−2mφ(2−m(k−n2m))
D
W
T
(
m
,
n
)
=
2
−
m
2
∑
−
∞
∞
f
(
k
)
φ
∗
(
2
−
m
(
k
−
n
2
m
)
DWT(m,n)=2^{-\frac{m}{2}}\sum\limits^{\infty}_{-\infty}f(k)φ^*(2^{-m}(k-n2^m)
DWT(m,n)=2−2m−∞∑∞f(k)φ∗(2−m(k−n2m)
3.3 滤波组原理
让信号通过高通滤波器,然后进行下采样,可以得到信号的高频分量(细节系数),让信号通过低通滤波器,然后进行下采样,可以得到信号的低频分量(近似系数)。
在小波中,我们有多层次的分解,如果想进一步分解信号,近似系数会被进一步分解,而细节系数一般不再进行分解。
故有时我们认为小波变换可以表示为低通滤波器和高通滤波器的和。
3.4 小波重构
小波重构是指利用小波分解的系数还原出原始信号,它是分解的逆过程。将系数进行插值后传输到重构滤波器,并将结果相加,就可以得到原信号。
4 小波变换应用
小波变换的应用有很多,如:信号压缩、降噪、边界探测、图像融合、图像增强等,其中,比较重要的应用是信号压缩及降噪。
4.1 信号压缩
DWT系数非常小,可以被清零,那么清零后,很明显信号的大小会被缩减,故DWT常被用于信号压缩。
I=imread('coins.png');
subplot(221); imshow(I);
title('原始图像');
[c,s]=wavedec2(I,2,'bior3.7');%对小波进行分解
cal=appcoef2(c,s,'bior3.7',1);%提取小波近似系数
%提取小波细节系数
ch1=detcoef2('h',c,s,1); %水平方向
cv1=detcoef2('v',c,s,1); %垂直方向
cd1=detcoef2('d',c,s,1); %斜线方向
a1=wrcoef2('a',c,s,'bior3.7',1);%小波重构
h1=wrcoef2('h',c,s,'bior3.7',1);
v1=wrcoef2('v',c,s,'bior3.7',1);
d1=wrcoef2('d',c,s,'bior3.7',1);
c1=[a1,h1;v1,d1];
subplot(222),imshow(c1,[]);
title ('分解后低频和高频信息');
ca1=appcoef2(c,s,'bior3.7',1);%提取近似系数
ca1=wcodemat(ca1,440,'mat',0);%量化编码
%改变图像高度并显示
ca1=0.5*ca1;
subplot(223);imshow(cal,[]);
title('压缩图像');
ca2=appcoef2(c,s,'bior3.7',2);
ca2=wcodemat(ca2,440,'mat',0);
ca2=0.25*ca2;
subplot(224);imshow(ca2,[]);
title('第二次压缩图像');
第一次压缩图像后,图像的色彩发生了明显的变化,但其他的信息基本保留了下来,进行了二次压缩后,图像变得非常模糊,留下了的信息不多了。
4.2 小波去噪
使用小波分析可以将原始信号分为一系列的近似分量和细节分量,信号的噪声主要集中在信号的细节分量上,使用一定的阈值处理细节分量后,在经过小波重构就可以得到平滑的信号。
在阈值处理时,常用的门限有硬门限和软门限两种。
硬门限:当数据的绝对值小于给定的门限时,令其为0,其他数据值不变
软门限:当数据的绝对值小于给定的门限值时,令其为0,然后把其他数据点向0收缩
clear
x=imread('coins.png');
x=imnoise(x,'salt & pepper',0.02);
subplot(1,2,1);imshow(x);
[c,s] = wavedec2(x,2,'bior3.7');
n = [1,2];
p = [10.12,23.28];%设置阈值
nc = wthcoef2('h',c,s,n,p,'s');
nc = wthcoef2('v',nc,s,n,p,'s');
nc = wthcoef2('d',nc,s,n,p,'s');
x1=wrcoef2('a',c,s,'bior3.7',1);%小波重构
subplot(1,2,2);imshow(x1,[]);
title('去噪后');
可以看出,去噪后图像的成像效果好了很多,已经不影响我们观察,如果感觉图像还是模糊的话我们可以对阈值进行调整,也可以进行二次降噪。
5 总结
本章我们首先了解了一下傅里叶变换和短时傅里叶变换的缺点,然后由此引出了小波变换。学习了小波及小波变换的概念及小波变换的方法,然后学习了小波重构。最后,利用小波变换对图像进行压缩、降噪等处理,得到了不错的效果。