zoukankan      html  css  js  c++  java
  • 小波变换二

    在上一次的博客中我们介绍了短时傅里叶变换,小波函数,尺度函数,离散小波变换.详情请看:

    小波变换(一)

    这次我们把把整个变换说完,顺便介绍一下他的硬件实现(一维)

    尺度函数族

    众所周知,小波变换的双正交基就来自与小波函数和尺度函数,而他们通过scale和平移来得到的小波函数族和尺度函数族正正表示了不同小波(尺度)函数的分辨率,下面来用公式回顾一下:

    小波函数定义

    小波函数族psi_{j,k}(t)定义为:
    psi_{j,k}(t) = 2^{j/2}psi(2^jt-k);quad j,kin Z

    尺度函数定义

    尺度函数族varphi_{j,k}(t)定义为:
    varphi_{j,k}(t) = 2^{j/2}varphi(2^jt-k);quad j,kin Z

    尺度函数分辨率沿拓

    事实上,尺度函数族中的尺度 j 决定着不同的时间分辨率


     
    1

    而实际上(证明请看参考资料),高时间分辨率的尺度函数必然可以代表低时间分辨率的尺度函数,如上图的三角尺度函数可以表示为:


     
    2

    多分辨分析(MRA)方程

    尺度函数的MRA方程

    有了上面的铺垫,这里就比较简单了,因为我们知道,低分辨率信号可以由高分辨率信号线性表达,所以我们可以看出,高分辨率信号所张成的空间必然包含低分辨率张成的空间:


     
    3

    图中越外围的代表越高分辨率的尺度函数,而L^2为平方可积空间,即:
    int_{tin R}|x(t)|^2 dt < infty
    学过信号与系统的应该都知道积分式的定义吧...

    所以在这个基础上我们引出尺度函数的多分辨分析方程(用以映射用高分辨率信号来表示低分辨率信号之间的关系)
    varphi(t)=sum_{k} h_{0}[k] cdot sqrt{2} varphi(2 t-k)
    其中h_0[k]是尺度函数系数,也可以说成尺度滤波器的单位脉冲响应,到后面这个是重点.

    小波函数的MRA方程

    讲小波函数的MRA方程之前,我们不妨来回顾一下IDWT的定义:
    x(t) = sum_nc_0[k]varphi_{0,k}(t) + sum_nd_0[k]psi_{0,k}(t) + sum_nd_1[k]psi_{1,k}(t) +cdots

    我们可以看到上面的IDWT中,我们给定了小波函数varphi_{0,k}(t)的尺度j=0 ,以此为基底,再用不同分辨率的尺度函数来描述整个x(t).

    实际上,我们可以重构上式:
    x(t)=sum_{k} c_{j_{0}, k} varphi_{j_{0}, k}(t)+sum_{j=j_{0}}^{infty} sum_{k} d_{j, k} psi_{j, k}(t)

    假设,此时他的信号空间由小波函数族张成的V_{j_0}和尺度函数族张成的W_{j_0}oplus W_{j_0 +1} oplus W_{j_0 +2} oplus W_{j_0+3} oplus cdots

    L^2空间可表示为:
    L^2 = V_{j_0} oplus W_{j_0}oplus W_{j_0 +1} oplus W_{j_0 +2} oplus W_{j_0+3} oplus cdots

    而事实上,小波函数和尺度函数满足一下关系:
    egin{array}{l}{V_{1}=V_{0} oplus W_{0}} \ {x_{1}(t)=C_{0}(t)+D_{0}(t)}end{array}

    所以上上式中可以将V_{j_0}无限递归分解为小波信号张成的信号空间,即:
    egin{array}{c}{L^{2}=cdots oplus W_{-2} oplus W_{-1} oplus W_{0} oplus W_{1} oplus W_{2} oplus cdots} \ {x(t)=sum_{k} sum_{j=-infty}^{infty} d_{j, k} psi_{j, k}(t)}end{array}

    所以从这个角度去考虑的话,我们就知道为什么c_j [k]表示的是信号的粗略(coarse)信息,而d_j [k] 表示的是信号的精细(detail)信息,当然,这只是其中一种理解,还有一种比较有意思的想法就是从差分的角度出发来考虑两种系数之间的意义,详见孙延奎教授的《小波分析及其应用》

    结合尺度函数的MRA方程中的信号空间的图,我们可以看出,其实每一圈V_j所包含的就是低一维的尺度函数族张成的信号空间(V_{j-1})在加上低一维的小波函数张成的信号空间(W_{j-1}),即:

     
    4

    自然而然,我们可以知道小波函数的MRA方程的递归意义是更为重要的,所以有:
    psi(t)=sum_{k} h_{1}[k] cdot sqrt{2} varphi(2 t-k)
    其中h_1[k]称为小波函数系数

    由于篇幅关系,这里没办法进一步讨论信号空间映射,小波函数系数和尺度函数系数的关系还有对称性,看情况会再作一篇博客讨论.

    离散小波变换的分解算法

    有了MRA方程的概念,想必这里会比较简单,其实分解算法很简单,就是围绕着
    egin{array}{l}{V_{1}=V_{0} oplus W_{0}} \ {x_{1}(t)=C_{0}(t)+D_{0}(t)}end{array}
    这个方程来进行分解,这里不给出证明过程(其实很简单,但是篇幅过长,详见参考资料),直接给出算法框图:
    DWT的一级分解算法框图:

     
    5

    再将C_j [k] 进行分解,可得DWT的二级分解算法框图:

     
    6

    所以多级的大家也会求了吧...

    可以简单地看出,信号经过小波函数系数(尺度函数系数)之后还需要经过一个抽取的过程,这个的话自己看看小波函数和尺度函数的定义式就可以了

    离散小波变换的重构算法

    这里是相似的,而且由于懒的原因我没有做重构,所以也直接放图:


     
     

     
     

    可以简单地看出,信号经过小波函数系数(尺度函数系数)之后还需要经过一个内插的过程,这个的话自己看看小波函数和尺度函数的定义式就可以了.

    需要注意的是,可以先抽取再滤波,但是不能先滤波后内插,见上图,(常识)

    小波变换(DWT)的FPGA实现

    总所周知,这次我们要实现的算法框图是这个:


     
    ffd

    多相结构模型

    本来我是直接按照算法流程实现了DWT,然后讲抽取和滤波对调了位置(为了提高系统的性能)

    后来从网上仅有的资料中查看到别人做了多相分解,后面我想了想,如果不用多相结构的话,相当于原信号的先经过了一次抽取,也是极大地浪费了信号.
    又有:
    H_0(z) = H_{0e} (z^2) +z^{-1} H_{0o}(z^2)
    H_1(z) = H_{1e} (z^2) +z^{-1} H_{1o}(z^2)




    链接:https://www.jianshu.com/p/950fd9c20a1d

    人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。
  • 相关阅读:
    SpringMVC快速使用——基于注解
    SpringMVC快速使用——基于XML配置和Servlet3.0
    Logback
    软件设计原则
    常用软件官方网站和下载地址记录
    刚刚开通的博客
    Layui 上传附件前条件判断
    js 重置input内容的两种情况
    Java 集合与数组相互转换
    使用Freemarker输出word文档到浏览器与本地
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/14395288.html
Copyright © 2011-2022 走看看