小波变换基础

http://blog.csdn.net/GarfieldEr007/article/details/50151845

第十二章 小波变换

目录

1         引言

2         连续小波变换

3         二进小波变换

3.1      Haar变换

4         离散小波变换

4.1      多分辨率分析

4.2      快速小波变换算法

4.3      离散小波变换的设计

4.4      二维离散小波变换

4.5      双正交小波变换

5         Gabor变换

作业


1.  引言

   小波变换是近年来在图象处理中受到十分重视的新技术,面向图象压缩、特征检测以及纹理分析的许多新方法,如多分辨率分析、时频域分析、金字塔算法等,都最终归于小波变换(wavelet transforms)的范畴中。

   线性系统理论中的傅立叶变换是以在两个方向上都无限伸展的正弦曲线波作为正交基函数的。对于瞬态信号或高度局部化的信号(例如边缘),由于这些成分并不类似于任何一个傅立叶基函数,它们的变换系数(频谱)不是紧凑的,频谱上呈现出一幅相当混乱的构成。这种情况下,傅立叶变换是通过复杂的安排,以抵消一些正弦波的方式构造出在大部分区间都为零的函数而实现的。

   为了克服上述缺陷,使用有限宽度基函数的变换方法逐步发展起来了。这些基函数不仅在频率上而且在位置上是变化的,它们是有限宽度的波并被称为小波(wavelet)。基于它们的变换就是小波变换。

2.  连续小波变换(CWT)

   所有小波是通过对基本小波进行尺度伸缩和位移得到的。基本小波是一具有特殊性质的实值函数,它是震荡衰减的,而且通常衰减得很快,在数学上满足积分为零的条件:

 
 

即基本小波在频域也具有好的衰减性质。有些基本小波实际上在某个区间外是零,这是一类衰减最快的小波。

一组小波基函数是通过尺度因子和位移因子由基本小波来产生:

 
 

连续小波变换定义为:

 
 

连续小波变换也称为积分小波变换。

连续小波逆变换为:

 
 

二维连续小波定义为:

 
 

二维连续小波变换是:

 
 

二维连续小波逆变换为:

 
 

 

2.1 滤波器族解释

    这里将小波变换与一族带通线性(卷积)滤波器相联系,作为小波变换的一种解释。

首先定义尺度a上的一般小波基函数为

 
 

这是用a做尺度因子,并用a-1/2将模规范了的基本小波。若记其翻转共轭为

 
 


小波变换就可以表示成滤波器族

 


而且每个滤波器的输出分量再次滤波并适当伸缩后组合在一起可重构f(x)。

 

2.2 二维滤波器族

    在二维情况下,每一滤波器都是一个二维冲激响应,输入是图象上的带通滤波器,滤波后的图象的叠层组成了小波变换。

3.  二进小波变换

    通常在数值计算中,采用离散化的尺度及位移因子,特别地当取二进伸缩(以2的因子伸缩)和二进位移(每次移动k/2j)时,就形成二进小波。

正交小波定义为满足下列条件的小波:

 
 

 
 

上式是小波级数展开公式。

当进一步把f(x)和基本小波限制为在[0,1]区间外为零的函数时,上述正交小波函数族就成为紧致二进小波函数族,它可以用单一的索引n来确定:


3.1 Haar变换

  Haar基本小波函数定义在区间[0,1]上,如图所示:

 

 
 

                                              

 
 

该基本小波定义的小波变换称为Haar小波变换,是常用的小波变换中最简单的一种。

4.  离散小波变换(DWT)

    在数值计算中,需要对小波变换的尺度因子、位移因子进行离散化,一般采用如下的离散化方式:

 
 

4.1 多分辨率分析

    基本小波通过伸缩构成一组基函数,在大尺度上,膨胀的基函数搜索大的特征,而在较小的尺度上,它们则寻找细节信息。

4.1.1. 金字塔算法

    对于数字图象(以512x512为例),通过连续平均2x2的象素块并丢掉隔行隔列的象素,将得到缩小四倍的图象(256x256)(行列各缩小2倍)。这样迭代进行,直到得到1x1的图象为止。如果利用同样尺寸的边缘检测算子(如3x3的Sobel),在原始图象上则会得到小边缘,在256x256及更小的图象上会得到稍大及更大的边缘。

4.1.2. 拉普拉斯金字塔编码

    对原始图象f0(i,j)(NxN, N=2n)做高斯滤波,将图象分解为半分辨率的低频分量和整分辨率的高频分量。

 
 

这一过程在间隔抽样后的图象上迭代进行,经过n次迭代得到一组hk(i,j)和最终的低频图象fn(i,j)(一个点)组成一个编码图象金字塔。

    图象的解码过程以相反的次序进行。从最后一幅fn(i,j)开始,对每一幅抽样图象fk(i,j)都进行一个增频采样并与g(i,j)卷积进行内插。增频采样是在采样点之间插入零的过程,所得结果被添加到下一幅(前一幅)图象fk-1(i,j)上,再对所得图象重复执行这一过程。这个过程能无误差地重建出原始图象。

    由于hk(i,j)图象在很大程度上降低了相关性和动态范围,因此可以使用较粗的量化等级,因而可以实现一个很大程度的图象压缩。

4.1.3. 子带编码和解码

    对于有限带宽信号,若将其分解为窄带分量,特别地当采用双通道子带时,对应带宽划分为两个分量(子带),例如低半带和高半带,构造子带编码,是一种时频域技术。

    双通道子带编码和解码具有如下形式:

 
 

4.2 快速小波变换算法(FWT, Mallat算法)

    利用双带子带编码迭代地自底向上建立小波变换。

    首先按照低半带和高半带进行子带编码后,对低半带再一次进行子带编码,得到一个N/2点的高半带信号和对应于区间[0,]的第一和第二个1/4区域的两个N/4点的子带信号。

    然后,连续进行上述过程,每一步都保留高半带信号并进一步编码低半带信号直到得到了一个仅有一个点的低半带信号为止。这样,小波变换系数就是这个低半带点再加上全部用子带编码的高半带信号。如下图所示。最前面的N/2个系数来自于F(s)的高半带,接下来的N/4个点来自于第二个四分之一带,依次类推。

   上述算法被称为快速小波变换(FastWavelet Transform),也因其形状而被称为Mallat的“鱼骨型算法”。其逆变换如下图所示。 

 4.3 离散小波变换的设计

    根据4.1节的子带编码重构公式,在频率域上有:


   

可见,设计一个离散小波变换的任务就是精心挑选低通滤波器。我们称符合这一条件的离散低通滤波器脉冲响应h0(k)为尺度向量,由它产生一个有关的函数称为尺度函数。尺度向量和尺度函数彼此互相确定。

例如,由尺度向量h0(k)到尺度函数的定义如下:


即它可以通过自身半尺度复制后的加权和来构造。另外它也能用带尺度的矩形脉冲函数卷积h0(k)利用数值计算方法得到:

 
 

    相反,由尺度函数开始,在它满足单位平移下正交归一条件时,尺度向量的计算方法如下:

 
 

 

4.4 二维离散小波变换

    为了将一维离散小波变换推广到二维,只考虑尺度函数是可分离的情况,即

 
 

4.4.1 正变换

    从一幅NxN的图象f1(x,y)开始,其中上标指示尺度并且N是2的幂。对于j=0, 尺度2j=20=1,也就是原图象的尺度。j值的每一次增大都使尺度加倍,而使分辨率减半。

    在变换的每一层次,图象都被分解为四个四分之一大小的图象,它们都是由原图与一个小波基图象的内积后,再经过在行和列方向进行2倍的间隔抽样而生成的。对于第一个层次(j=1),可写成

 
 

后续的层次(j>1),依次类推,形成如图所示的形式。

    若将内积改写成卷积形式则有:

 
 

    因为尺度函数和小波函数都是可分离的,所以每个卷积都可分解成行和列的一维卷积。例如,在第一层,首先用h0(-x)和h1(-x)分别与图象f1(x,y)的每行作卷积并丢弃奇数列(以最左列为第0列)。接着这个NxN/2阵列的每列再和h0(-x)和h1(-x)相卷积,丢弃奇数行(以最上行为第0行)。结果就是该层变换所要求的四个(N/2)x(N/2)的数组。

如下图所示:

4.4.2 逆变换

    逆变换与上述过程相似,在每一层,通过在每一列的左边插入一列零来增频采样前一层的四个阵列;接着用h0(x)和h1(x)来卷积各行,再成对地把这几个N/2xN的阵列加起来;然后通过在每行上面插入一行零来将刚才所得的两个阵列的增频采样为NxN;再用h0(x)和h1(x)与这两个阵列的每列卷积。这两个阵列的和就是这一层重建的结果。

4.5 双正交小波变换

    使用两个不同的小波基,一个用来分解(分析),另一个用来重建(合成),构成彼此对偶的双正交的小波基:

 
 

一维双正交小波变换通过四个离散滤波器实现,需要选择两个低通滤波器即尺度向量,使它们的传递函数满足

 
 

双正交小波变换的一个分解步骤和一个重建步骤如下图所示。

双正交小波为:

 
 

二维双正交小波变换由对应的小波基确定:

 
 

(演示:Matlab -->Examples and demos -->toolboxes-->Wavelets-->Wavelet2-D and GUI Wavlet2-D)

(图片来自Matlabdemo)

5.Gabor变换

(本节摘自GaborFilters.htm)

    Gabor滤波在图象处理中的特征提取、纹理分析和立体视差估计等方面有许多应用。它对应的冲激响应是将复指数振荡函数乘以高斯包络函数所得的结果。有研究说明神经细胞的感受野可以用Gabor 函数来表示。

    设图象坐标为 x=[x1 x2]T,则Gabor滤波的冲激响应为.

其中矩阵 A 确定该滤波器的带宽和方向选择性。

当调制频率向量 k0与包络的轴同方向时,则冲激响应的实部和虚部有如下的形状:

Gabor滤波的传递函数 G(k) 为:

其中 = [k1k2]T 是空间频率。为了建立多分辨率分析框架,图象可以用一组N个不同带宽和调制频率的Gabor 滤波来处理。假设调制频率为

且相应的所有滤波器取相同的带宽,图象被分解为8部分

Magnitude of a Gabor filter set for N=4 in direction of themodulation frequency

在上图中,滤波器的传递函数被选择在0.5处重叠。在这样的条件下,图象的直流分量(DCcomponent)和频域分量(frequency components)在两倍于调制频率外至少衰减-54dB。因此滤波输出信号可以按如下的比例重采样(sub-sampled),其走样影响(aliasing effects)可以忽略不计。

进一步,图象可以用调制成不同角度的Gabor滤波器分解为M通道的不同方向的分量。

Half-value plot ofthe Gabor filters in the frequency plane tuned todifferent frequencies and orientations (30 degree resolution)

    下图给出原始图片Lenna 和Gabor 滤波在不同采样因子下的结果。图片的左侧是原图(sub)和所有方向滤波的重叠结果,右侧是每个方向重采样的结果。

s = 4

s = 2

 

 s = 1

 

Subimages of the Lenna-picture and magnitudes of thecorresponding filter results

其它参考资料:

1.   网上小波资料:链接目录

Introductionto wavelets,

Wavelets,

DiscreteWavelet Transform

Gabor filtering

MathLab小波工具Wavlab

2.   [美]崔锦泰 (程正兴 译),小波分析导论,西安交通大学出版社,1995。

 

最新推荐的书籍:StéphaneMallat, Wavelet Tour of Signal Processing, 2nd Edition, Academic Press,1998

ASHORT PRESENTATION BY F. CHAPLAIS

Stéphane Mallat著 (杨力华 等译), 信号处理的小波导引(原书第2版),2003, 机械工业出版社 

本书以十分直观的近于谈话式的方法讲述了小波理论的问题和方法以及相关的数学证明及理论,使读者可以透过复杂的数学公式样来了解小波的精髓,又不会将小波带入纯数学的迷宫。本书是按研究生教材的要求编写的。对于应用数学系的的学生,本书可以让他们了解数学公式的工程意义,而对于电子工程系的学生,本书又会让他们了解工程问题的数学描述。

作业

1.   阅读并使用Matlab小波变换工具,观察小波变换的效果。

2.   用MS-VC编写图象的小波变换程序。


返回主目录 返回本章目录

清华大学计算机系 艾海舟

最近修改时间:2003年7月31日

出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core3.0使用gRPC

gRPC是什么gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备&am…

单链表逆向

转自:http://blog.csdn.net/heyabo/article/details/7610732 对于单链表的逆置有两种方法可以实现: (1)利用辅助指针 基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次…

中国.NET开发者峰会特别活动-基于k8s的微服务和CI/CD动手实践报名

2019.11.9 的中国.NET开发者峰会将在上海举办,到目前为止,大会的主题基本确定,这两天就会和大家会面,很多社区的同学基于对社区的信任在我们议题没有确定的情况下已经购票超过了300张,而且分享的主题都来自于社区&…

高斯混合模型学习

转自:http://blog.csdn.net/jojozhangju/article/details/19182013 1.高斯混合模型概述 高斯密度函数估计是一种参数化模型。高斯混合模型(Gaussian Mixture Model, GMM)是单一高斯概率密度函数的延伸,GMM能够平滑地近似任意形状的…

[工具]OFFICE插件管理工具-帮助更好地管理及使用电脑安装过的OFFICE插件

在OFFICE软件的世界中,除了由微软提供的OFFICE软件功能外,还有大量的功能由第三方开发者完成,市面上也存在大量的OFFICE插件供用户选择。使用场景有些插件仅在某个特定场景下才会使用,日常办公过程中,无需开启&#xf…

随机梯度下降的实现细节

http://www.miaoerduo.com/deep-learning/%E5%9F%BA%E4%BA%8Ecaffe%E7%9A%84deepid2%E5%AE%9E%E7%8E%B0%EF%BC%88%E4%B8%8A%EF%BC%89.html 最近看了一篇文章,详细说明了随机梯度下降中随机是在create_imagenet.sh中shuffle实现的。 相关资源: DeepID&am…

那位标榜技术驱动的开发者去哪了?

作者:邹溪源,长沙资深互联网从业者,架构师社区合伙人!一他是一位曾经标榜技术驱动世界的开发者,在他年轻的时候,一段独特的经历,让他对技术充满了兴趣,并在技术这条道路上走了很远很…

图像PCA方法

http://blog.csdn.net/lifeng_math/article/details/50014073 http://blog.csdn.net/lifeng_math/article/details/49993763#旋转不变的-lbp 引言 PCA是Principal Component Analysis的缩写,也就是主成分分析。也是用于降维常用的一中方法。PCA 主要用于数据降维&a…

.NET实时2D渲染入门·动态时钟

前言说来这是个我和我老婆的爱情故事。从小以来“坦克大战”、“魂斗罗”等游戏总令我魂牵梦绕。这些游戏的基础就是 2D实时渲染,以前没意识,直到后来找到了 Direct2D。我的 2D实时渲染入门,是从这个 动态时钟开始的。本文将使用我写的“准游…

ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

.NET Core 3.1 Preview 1现在可用。此版本主要侧重于错误修复,但同时也包含一些新功能。对Razor components的部分类支持将参数传递给顶级组件在HttpSysServer中支持共享队列在SameSite cookies的重大更改除了.NET Core 3.1 Preview版本发布之外,我们还发…

小波变换学习(1)

转自:https://www.zhihu.com/question/22864189/answer/40772083从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常…

.NET Core 3.0 新 JSON API - JsonDocument

JsonDocument类 JsonDocument是基于Utf8JsonReader 构建的。JsonDocument 可分析 JSON 数据并生成只读文档对象模型 (DOM),可对模型进行查询,以支持随机访问和枚举。使用 JsonDocument 分析常规 JSON 有效负载并访问其所有成员比使用 Json.NET 快 2-3 倍…

微软推出 Microsoft.Data.SqlClient,替代 System.Data.SqlClient

背景在 .NET 创建之初,System.Data 框架是一个重要的组件。它为创建 .NET 数据库驱动程序提供了一种方式,类似 Visual Basic 的 ActiveX Data Objects。虽然 API 不一样,但重用了它的名称,所以才有了 ADO .NET 这个绰号。ADO 和 A…

C++ 从文件夹中读取文件

OpenCV从文件夹中读取内含文件方法 参考&#xff1a;http://www.2cto.com/kf/201407/316515.html http://www.it610.com/article/5126146.htm http://blog.csdn.net/adong76/article/details/39432467 windows平台代码&#xff1a; [cpp] view plaincopy #include <io.h&…

你必须知道的容器监控 (1) Docker自带子命令与Weave Scope

本篇已加入《》&#xff0c;可以点击查看更多容器化技术相关系列文章。本篇会介绍几个目前比较常用且流行的容器监控工具&#xff0c;首先我们来看看Docker自带的几个监控子命令&#xff1a;ps、top以及stats&#xff0c;然后是一个功能更强的开源监控工具Weave Scope。# 实验环…

char *与char []

由于指针的灵活性&#xff0c;导致指针能代替数组使用&#xff0c;或者混合使用&#xff0c;这些导致了许多指针和数组的迷惑&#xff0c;因此&#xff0c;刻意再次深入探究了指针和数组这玩意儿&#xff0c;其他类型的数组比较简单&#xff0c;容易混淆的是字符数组和字符指针…

.NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响

介绍最近一直在使用PetapocoEntity Framework Core结合开发一套系统。使用EFCore进行Code First编码&#xff0c;使用使用Petapoco进行数据库的常规操作。并且结合PetaPoco.SqlKata的使用&#xff0c;减少了编写SQL语句的工作量&#xff0c;对提升开发效率有很大的帮助。Petapo…

.Net Core 3.0 IdentityServer4 快速入门

一、简介IdentityServer4是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。将IdentityServer4部署到您的应用中具备如下特点&#xff1a;1&#xff09;、认证服务2&#xff09;、单点登陆3&#xff09;、API访问控制4&#xff09;、联合网关5&#xff09;、专注于定制6&…

.NET Core3.0创建Worker Services

.NET CORE 3.0新增了Worker Services的新项目模板&#xff0c;可以编写长时间运行的后台服务&#xff0c;并且能轻松的部署成windows服务或linux守护程序。如果安装的vs2019是中文版本&#xff0c;Worker Services变成了辅助角色服务。Worker Services 咱也不知道怎么翻译成了这…

OpenCV Mat数据类型像素操作

转自&#xff1a;http://blog.csdn.net/skeeee/article/details/13297457 OpenCV图像像素操作及效率分析 在计算机视觉应用中&#xff0c;对于图像内容的读取分析是第一步&#xff0c;所以学习高效的处理图像是很有用的。一个图像有可能包含数以万计的像素&#xff0c;从根本上…