数字图像处理第7章——小波和多分辨率处理
有点难,先学小波的基本概念吧~~~
7.小波和多分辨率处理
在第四章提到了傅里叶变换,它是基于正弦函数的一种变换,并且傅里叶变换是对整幅图像进行处理,并不能对图像中的局部区域进行处理;而本章需要介绍的一种变换是基于一些小型波,称为小波变换(简称小波),小波可以只对图像中局部区域的信息进行处理,使得压缩、传输和分析图像变得更为容易。
7.1背景
如果物体的尺寸较小或对比度较低,通常会用较高的分辨率来研究它们
如果物体的尺寸较大或对比度较高,通常只要求粗略的观察
如果较小和较大的物体同时存在,则需要以不同的分辨率对它们进行研究
7.1.1 小波变换的定义和特点
- 即小区域的波,是一种特殊的长度有限、平均值为0的波形
- 特点(局部分析)
- 傅立叶分析所用的正弦波在时间上没有限制,从负无穷到正无穷,但小波倾向于不规则与不对称。
- 傅里叶变换将信号分解成一系列不同频率正弦波的叠加,小波分析是将信号分解成一系列小波函数的叠加。而这些小波函数都是由一个母小波函数经过平移与尺度伸缩得来的。
- 用不规则的小波函数来逼近尖锐变化的信号显然要比光滑的正弦曲线要好,同样,信号局部的特性用小波函数来逼近显然要比光滑的正弦函数来逼近要好。
-
连续小波变换的定义:
- 假设信号 f ( t ) ∈ L 2 ( R ) ,则它的连续小波变换定义为: ( W φ f ) ( a , b ) = ∣ a ∣ − 1 / 2 ∫ − ∞ + ∞ f ( t ) φ ‾ ( t − b a ) d t ∣ a ∣ − 1 / 2 为归一化因子, t − b a 为 时间平移参数 尺度伸缩参数 φ ( t ) : 小波原型或母小波或基本小波 φ a , b ( t ) = ∣ a ∣ − 1 / 2 φ ( t − b a ) , a ∈ R , a ≠ 0 ; b ∈ R : 小波函数 相当于通过设置 a 和 b ,调整小波函数的位置: b 相当于在水平轴进行移动, a 相当于垂直方向的收紧程度 一般可以简记为: ( W φ f ) ( a , b ) = ∫ − ∞ + ∞ f ( t ) φ ‾ a , b ( t ) d t 假设信号f(t)\in L^2(R),则它的连续小波变换定义为:\\ (W_\varphi f)(a,b)=|a|^{-1/2}\int_{-\infty}^{+\infty} {f(t)\overline{\varphi}(\frac{t-b}{a})} \,{\rm d}t\\ |a|^{-1/2}为归一化因子,\frac{t-b}{a}为\frac{时间平移参数}{尺度伸缩参数}\\ \varphi(t):小波原型或母小波或基本小波\\ \varphi_{a,b}(t)=|a|^{-1/2}\varphi(\frac{t-b}{a}),a\in R,a\neq0;b\in R:小波函数\\ 相当于通过设置a和b,调整小波函数的位置:b相当于在水平轴进行移动,a相当于垂直方向的收紧程度\\ 一般可以简记为:\\ (W_\varphi f)(a,b)=\int_{-\infty}^{+\infty} {f(t)\overline{\varphi}_{a,b}(t)} \,{\rm d}t 假设信号f(t)∈L2(R),则它的连续小波变换定义为:(Wφf)(a,b)=∣a∣−1/2∫−∞+∞f(t)φ(at−b)dt∣a∣−1/2为归一化因子,at−b为尺度伸缩参数时间平移参数φ(t):小波原型或母小波或基本小波φa,b(t)=∣a∣−1/2φ(at−b),a∈R,a=0;b∈R:小波函数相当于通过设置a和b,调整小波函数的位置:b相当于在水平轴进行移动,a相当于垂直方向的收紧程度一般可以简记为:(Wφf)(a,b)=∫−∞+∞f(t)φa,b(t)dt
-
小波变换的物理意义
- 小波变换通过平移母小波可获得信号的时间信息,而通过缩放小波的宽度(或者叫做尺度)可获得信号的频率特性。对母小波的缩放和平移操作是为了计算小波的系数,这些系数代表小波和局部信号之间的相似度。
7.1.2 小波变换的步骤
-
步骤一:取一个小波与信号的最前面部分进行比较
-
步骤二:计算相关因子C,C代表小波和这段数据的相关性(C越大,两者越相似)
相关因子等于母小波和信号进行对应点相乘,并将相乘结果进行累加
-
步骤三:移动小波,重复步骤一和二,一直遍历整个数据
-
步骤四:对小波进行缩放,重复步骤一到三
-
步骤五:在所有小波尺度下,重复上述步骤
7.1.3 小波尺度和频率的关系
- 小波尺度和信号频率的关系
小尺度a->压缩的小波->快速变换的细节->高频部分
大尺度a->拉伸的小波->缓慢变换的细节->低频部分
7.2 图像金字塔
金字塔的底部是待处理图像的高分辨率表示,而顶部则包含一个低分辨率近似。
当向金字塔的上层移动时,尺寸和分辨率降低,所以过多的分辨率级数并没有价值,一般会把金字塔截断到P+1级。
基础级
J
的大小为
2
J
×
2
J
或者
N
×
N
,其中
J
=
l
o
g
2
N
基础级J的大小为2^J\times 2^J或者N\times N,其中J=log_2^N
基础级J的大小为2J×2J或者N×N,其中J=log2N
下图显示了一个构建两个密切联系的图像金字塔的简单系统。当把第j级图像输入后,第j级预测残差输出用于构建一个补充的预测残差金字塔。
对上图某些术语进行解释
上采样:图像放大,并且是放大两倍
给定一个整数变量n和一维取样序列f(n),则上采样序列定义如下:
f 2 ↑ = { f ( n / 2 ) , n 为偶数 0 , 其他 其中,如下标表示的那样,上采样以 2 为因数。 f_{2↑}= \begin{cases} f(n/2), & n为偶数 \\ 0, & 其他 \\ \end{cases}\\ 其中,如下标表示的那样,上采样以2为因数。 f2↑={f(n/2),0,n为偶数其他其中,如下标表示的那样,上采样以2为因数。
下采样:图像缩小,并且是缩小两倍
基2的下采样的互补操作定义为:
f 2 ↓ = f ( 2 n ) f_{2↓}=f(2n) f2↓=f(2n)
- 高斯金字塔(图中使用低通高斯平滑滤波器产生金字塔)
原图为512 * 512的分辨率,对应的金字塔级数为9,因为
l
o
g
2
512
=
9
log_2{512}=9
log2512=9
接着是3个低分辨率的近似(256 * 256,128 * 128,64 * 64)
对应的P=3,所以产生的金字塔为4层,即第9级、第8级、第7级、第6级。
- 预测残差金字塔(图中使用双线性内插滤波器产生金字塔)
用来从金字塔低层图像重建上层未采样图像,可以对图像进行最大程度的还原
如下图,我们用第0级的图像开始,来预测第1级的近似图像(通过上采样和滤波实现),并与高斯金字塔中第1级相减,得到预测残差,重复使用这个过程来计算近似图像,直到生成近似的原图像,即第2级。
- 近似和预测残差金字塔都以一种迭代方式进行计算
- 步骤一:计算第j级输入图像降低的分辨率近似,将得到的近似放在近似金字塔的第j-1级
- 步骤二:由步骤1中产生的降低的分辨率近似创建第j级输入图像的一个估计,得到的预测图象与第j级输入图像的维数相同。
- 计算步骤2的预测图像和步骤1的输入之间的差,把得到的结果放在预测残差金字塔的第j级。
近似滤波技术 金字塔 邻域平均 平均金字塔 低通高斯滤波 高斯金字塔 不滤波 取样金字塔 \begin{array}{c|c} \text{近似滤波技术} & \text{金字塔} \\ \hline 邻域平均 & 平均金字塔 \\ 低通高斯滤波 & 高斯金字塔 \\ 不滤波 & 取样金字塔 \\ \end{array} 近似滤波技术邻域平均低通高斯滤波不滤波金字塔平均金字塔高斯金字塔取样金字塔
7.3 子带编码
在子带编码中,一幅图像被分解为一组频带受限的分量,称为子带。之后子带又可以重构回到原始图像。
-
数字滤波器
-
-
图中由三个基本部件组成:延迟单元、乘法器和加法器
-
沿滤波器的顶部,延迟单元依次连接以建立输入序列f(n)的K-1延迟的形式
例如延迟序列f(n-2)为
f ( n − 2 ) = { . . . f ( 0 ) , n = 2 f ( 1 ) , n = 2 + 1 = 3 . . . f(n-2)= \begin{cases} ...\\ f(0), & n=2 \\ f(1), & n=2+1=3 \\ ... \end{cases} f(n−2)=⎩ ⎨ ⎧...f(0),f(1),...n=2n=2+1=3
-
将图中的式子进行累加求和:
f
^
(
n
)
=
∑
k
=
−
∞
+
∞
h
(
k
)
f
(
n
−
k
)
=
f
(
n
)
★
h
(
n
)
★代表卷积,
K
为滤波系数
\hat f(n)=\sum_{k=-\infty}^{+\infty}h(k)f(n-k)=f(n)★h(n)\\ ★代表卷积,K为滤波系数
f^(n)=k=−∞∑+∞h(k)f(n−k)=f(n)★h(n)★代表卷积,K为滤波系数
如果输入序列是下图这种形式:
则式子变为:
f
^
(
n
)
=
∑
k
=
−
∞
+
∞
h
(
k
)
δ
(
n
−
k
)
=
h
(
n
)
\hat f(n)=\sum_{k=-\infty}^{+\infty}h(k)\delta(n-k)=h(n)
f^(n)=k=−∞∑+∞h(k)δ(n−k)=h(n)
冲激响应是定义该滤波器的滤波器系数的K元素序列,即:
h
(
0
)
、
h
(
1
)
、
h
(
2
)
、
.
.
.
、
h
(
K
−
1
)
h(0)、h(1)、h(2)、...、h(K-1)
h(0)、h(1)、h(2)、...、h(K−1)
7.4 离散小波变换
-
在计算连续小波变换时,实际,上也是用离散的数据进行计算的只是所用的缩放因子和平移参数比较小而已。不难想象,连续小波变换的计算量是惊人的。
-
为了解决计算量的问题,缩放因子和平移参数都选择2 ^j( j>0的整数)的倍数。
-
使用这样的缩放因子和平移参数的小波变换叫做双尺度小波变换,它是离散小波变换(DWT)的一种形 式。
-
尺度函数
( W φ f ) ( a , b ) = ∣ a ∣ − 1 / 2 ∫ − ∞ + ∞ f ( t ) φ ‾ ( t − b a ) d t a = 2 − j φ j , k ( x ) = 2 j / 2 φ ( 2 j x − k ) , j ∈ z , k ∈ z (W_\varphi f)(a,b)=|a|^{-1/2}\int_{-\infty}^{+\infty} {f(t)\overline{\varphi}(\frac{t-b}{a})} \,{\rm d}t\\ a=2^{-j}\\ \varphi_{j,k}(x)=2^{j/2}\varphi(2^jx-k),j\in z,k\in z (Wφf)(a,b)=∣a∣−1/2∫−∞+∞f(t)φ(at−b)dta=2−jφj,k(x)=2j/2φ(2jx−k),j∈z,k∈z设 φ ( x ) 是平方可积函数,即 φ ( x ) ∈ L 2 ( R ) , 则集合 { φ j , k ( x ) } 是 φ ( x ) 的展开函数集。 k 决定了 φ j , k ( x ) 在 x 轴的位置, j 决定了 φ j , k ( x ) 的宽度,即沿 x 轴的宽或窄的程度 ( 也可以说是频率 ) , 而 2 j / 2 控制其高度或幅度。 由于 φ j , k ( x ) 的形状随 j 发生变化, φ ( x ) 被称为尺度函数 设\varphi(x)是平方可积函数,即\varphi(x)∈L^2(R),\\ 则集合\{\varphi_{j,k}(x)\}是\varphi(x)的展开函数集。\\ k决定了\varphi_{j,k}(x)在x轴的位置,j决定了\varphi_{j,k}(x)的宽度,即沿x轴的宽或窄的程度(也可以说是频率),\\ 而2^{j/2}控制其高度或幅度。\\ 由于\varphi_{j,k}(x)的形状随j发生变化,\varphi(x)被称为尺度函数 设φ(x)是平方可积函数,即φ(x)∈L2(R),则集合{φj,k(x)}是φ(x)的展开函数集。k决定了φj,k(x)在x轴的位置,j决定了φj,k(x)的宽度,即沿x轴的宽或窄的程度(也可以说是频率),而2j/2控制其高度或幅度。由于φj,k(x)的形状随j发生变化,φ(x)被称为尺度函数
j越大则频率越大,j最大高分辨率图(原图)
- 小波变换的实际计算模式
- 由于连续函数下的小波变换步长过小,造成计算量比较大,所以在离散小波下,决定频率的参数a的变化步长变为2^j,而决定平移的参数b的步长取决于原函数的离散步长,原因在于参数b的作用就是为了通过平移遍历整个原始信号,而与其相乘相加。
- 我们把原函数展开后的小波函数重新归类,根据不同的尺度j来归类,把具有相同的尺度j和不同的平移值b的函数归为一类,写为不同的行。
- 如此一来,我们就换个角度来看待小波展开式,我们不再考虑原函数与许多小波函数之间的关系式。采用数学上的递推公式的概念,考虑相邻的两个尺度上的函数之间的关系,考虑高分辨率行上的函数是如何用下一层低分辨率函数来组合表达?而原函数f(t)是最高分辨率的函数,也是由下一层次高分辨率上的函数来表达的,以此类推。
但是单单靠上一层的尺度来生成下一层的尺度是做不到的(也就是并不能使用低频来生成高频),所有就需要在上一层的尺度(低频)基础上,融入一些下一层的尺度(高频)
把同一频率下,不同位置的尺度函数划分成一个空间,称为尺度空间,表示为:
V
j
=
s
p
a
n
k
{
φ
j
,
k
(
x
)
}
‾
j
增加
−
>
a
减小
(
a
=
2
−
j
)
−
>
频率增大
(
因为
a
相当于垂直方向的收紧程度
)
,
x
变化变小
如果
f
(
t
)
∈
V
j
,那么
f
(
t
)
可以表示为
:
f
(
t
)
=
∑
k
a
k
φ
(
2
j
t
+
k
)
也就是说
,
f
(
t
)
可以通过
V
j
空间的一组基底表示出来
,
并且这个基底是可以设置的。
j
越大
,
分辨率越高。
V_j=\overline{span_k\{\varphi_{j,k}(x)\}}\\ j增加->a减小(a=2^{-j})->频率增大(因为a相当于垂直方向的收紧程度),x变化变小\\ 如果f(t)\in V_j,那么f(t)可以表示为:\\ f(t)=\sum_k a_k\varphi(2^jt+k)\\ 也就是说, f(t)可以通过V_j空间的一组基底表示出来,并且这个基底是可以设置的。j越大,分辨率越高。
Vj=spank{φj,k(x)}j增加−>a减小(a=2−j)−>频率增大(因为a相当于垂直方向的收紧程度),x变化变小如果f(t)∈Vj,那么f(t)可以表示为:f(t)=k∑akφ(2jt+k)也就是说,f(t)可以通过Vj空间的一组基底表示出来,并且这个基底是可以设置的。j越大,分辨率越高。
图中,我们把低频部分叫做尺度函数,高频部分叫做小波函数
我们将上图用公式进行表示:
V
j
+
1
=
V
j
⨁
W
j
其中,
⨁
表示空间的并集。
V_{j+1}=V_j\bigoplus W_j\\ 其中,\bigoplus表示空间的并集。
Vj+1=Vj⨁Wj其中,⨁表示空间的并集。