Haar小波变换

Haar小波变换1 哈尔基函数最简单的基函数是哈尔基函数 Haarbasisfun 哈尔基函数在 1909 年提出 它是由一组分段常值函数组成的函数集 这个函数集定义在半开区间 0 1 上 每一个分段常值函数的数值在一个小范围里是 1 其他地方为 0 现以图像为例并使用线性代数中的矢量空间来说明哈尔基函数 如果一幅图像仅由 2 0 1 个像素组成 这幅图像在整个 0 1 区间

1.哈尔基函数
       最简单的基函数是哈尔基函数(Haar basis function)。哈尔基函数在1909年提出,它是由一组分段常值函数组成的函数集。这个函数集定义在半开区间[0,1)上,每一个分段常值函数的数值在一个小范围里是1,其他地方为0,现以图像为例并使用线性代数中的矢量空间来说明哈尔基函数。
       如果一幅图像仅由2^0=1个像素组成,这幅图像在整个[0,1) 区间中就是一个常值函数。用q_00(x)表示这个常值函数,用V0表示由这个常值函数生成的矢量空间,即V0:q_00(x)=1(0<=x<1)或0(其它),它是构成矢量空间V0的基。
       如果一幅图像由2^1=2个像素组成,这幅图像在[0,1) 区间中有两个等间隔的子区间:[0,1/2) 和[1/2,1) ,每一个区间中各有1个常值函数,分别用q_10(x) q_11(x)表示。用V1表示由2个子区间中的常值函数生成的矢量空间,即V1: q_10(x)  =1(0<=x<1/2)或0(其它); q_11(x)=1(1/2<=x<1)或0(其它).这2个常值函数就是构成矢量空间V1的基。
       如果一幅图像由2^2= 4个像素组成,这幅图像在[0,1)区间中被分成4个等间隔的子区间:[0,1/4),[1/4,1/2),[1/2,3/4)和[3/4,1),它们的常值函数分别用q_20(x) q_21(x) q_22(x) q_23(x)表示,用V2表示由4个子区间中的常值函数生成的矢量空间,即V2:q_20(x)=1(0<=x<1/4)或0(其它); q_21(x)=1(1/4<=x<1/2)或0(其它); q_22(x) =1(1/2<=x<3/4)或0(其它); q_23(x)=1(3/4<=x<1)或0(其它).这4个常值函数就是构成矢量空间V2的基。
        我们可以按照这种方法继续定义基函数和由它生成的矢量空间。总而言之,为了表示矢量空间中的矢量,每一个矢量空间V_i都需要定义一个基(basis)。为生成矢量空间V_i而定义的基函数也叫做尺度函数,这种函数通常用符号q_ij(x)表示。哈尔基函数定义为q(x)=1(0<=x<1)或0(其它),哈尔尺度函数q_ij(x)定义为q_ij(x)=q(2^i·x-j),j=0,1,…, 2^i-1其中,i为尺度因子,改变i使函数图形缩小或者放大,j为平移参数,改变j使函数沿x轴方向平移。
        空间矢量V_i定义为V_i=span{ q_ij(x)},j=0,1,…, 2^i-1.由于定义了基和矢量空间,我们就可以把由2^i个像素组成的一维图像看成为矢量空间V_i中的矢量。由于这些矢量都是在单位区间[0,1)上定义的函数,所以在V_i矢量空间中的每一个矢量也被包含在V_i+1矢量空间中,即V0∈V1∈…∈V_i∈V_i+1.





2.哈尔小波函数
     小波函数通常用Ψ_ij(x)表示。与哈尔基函数相对应的小波称为基本哈尔小波函数,并由下式定义:Ψ(x)=1(0<=x<1/2)或-1(1/2<=x<1)或0(其它); 哈尔小波尺度函数Ψ_ij(x)定义为Ψ_ij(x)= Ψ(2^i·x-j),j=0,1,…, 2^i-1.用小波函数构成的矢量空间Wi表示,Wi=span{Ψ_ij(x)}, j=0,1,…, 2^i-1
     根据哈尔小波函数的定义,可以写出生成W0,W1和W2等矢量空间的小波函数。
     生成矢量空间W0的哈尔小波:Ψ_00(x)=1(0<=x<1/2)或-1(1/2<=x<1)或0(其它) 
     生成矢量空间W1的哈尔小波:Ψ_10(x)=1(0<=x<1/4)或-1(1/4<=x<1/2)或0(其它);
                                                        Ψ_11(x)=1(1/2<=x<3/4)或-1(3/4<=x<1)或0(其它).
     生成矢量空间W2的哈尔小波: Ψ_20(x)=1(0<=x<1/8)或-1(1/8<=x<2/8)或0(其它);
                                                        Ψ_21(x)=1(2/8<=x<3/8)或-1(3/8<=x<4/8)或0(其它);
                                                        Ψ_22(x)=1(4/8<=x<5/8)或-1(5/8<=x<6/8)或0(其它);
                                                        Ψ_23(x)=1(6/8<=x<7/8)或-1(7/8<=x<1)或0(其它).
哈尔基和哈尔小波分别使用下面两个式子进行规范化
                                                        q_ij(x)=2^(i/2)·q(2^i·x-j),
                                                        Ψ_ij(x)= 2^(i/2)·Ψ(2^i·x-j),
3.哈尔基的结构
        使用哈尔基函数 q_ij(x)和哈尔小波函数Ψ_ij(x)生成的矢量空间Vi和Wi具有下面的性质,V_i+1=V_i⊕W_i。这就是说,在矢量空间V_i+1中,矢量空间W_i中的小波可用来表示一个函数在矢量空间V_i 中不能表示的部分。因此,小波可定义为生成矢量空间W_i的一组线性无关的函数Ψ_ij(x)的集合。
4.哈尔小波变换
      小波变换的基本思想是用一组小波函数或者基函数表示一个函数或者信号,例如图像信号。为了理解什么是小波变换,下面用一个具体的例子来说明小波变换的过程。假设有一幅分辨率只有4个像素的一维图像,对应的像素值分别为[9 7 3 5]
     计算它的哈尔小波变换系数: 
      (1).求均值(averaging)。计算相邻像素对的平均值,得到一幅分辨率比较低的新图像,它的像素数目变成了2个,即新的图像的分辨率是原来的1/2,相应的像素值为:[8 4]
     (2).求差值(dierencing)。很明显,用2个像素表示这幅图像时,图像的信息已经部分丢失。为了能够从由2个像素组成的图像重构出由4个像素组成的原始图像,就需要存储一些图像的细节系数,以便在重构时找回丢失的信息。方法是把像素对的第一个像素值减去这个像素对的平均值,或者使用这个像素对的差值除以2。在这个例子中,第一个细节系数是(9-8)=1,因为计算得到的平均值是8,它比9小1而比7大1,存储这个细节系数就可以恢复原始图像的前两个像素值。使用同样的方法,第二个细节系数是(3-4)=-1,存储这个细节系数就可以恢复后2个像素值。因此,原始图像就可以用下面的两个平均值和两个细节系数表示[8 4 1 -1]
      (3).重复第1,2步,把由第一步分解得到的图像进一步分解成分辨率更低的图像[6 2 1 -1].
      由此可见,通过上述分解就把由4像素组成的一幅图像用一个平均像素值和三个细节系数表示,这个过程就叫做哈尔小波变换,也称哈尔小波分解(Haar wavelet decomposition)。这个概念可以推广到使用其他小波基的变换。在这个例子中我们可以看到,




















      ①变换过程中没有丢失信息,因为能够从所记录的数据中重构出原始图像。

      ②对这个给定的变换,我们可以从所记录的数据中重构出各种分辨率的图像。例如,在分辨率为1的图像基础上重构出分辨率为2的图像,在分辨率为2的图像基础上重构出分辨率为4的图像。

[64  2   3   61  60  6   7   5

9   55  54  12  13  51  50  16

17  47  46  20  21  43  42  24

40  26  27  37  36  30  31  33

32  34  35  29  28  38  39  25

41  23  22  44  45  19  18  48

49  15  14  52  53  11  10  56

8   58   59  5  4   62   63  1]

[32.5  0   0.5   0.5   31  -29  27   -25

32.5  0  -0.5  -0.5  -23   21  -19   17

32.5  0  -0.5  -0.5  -15   13  -11    9

32.5  0   0.5   0.5   7   -5    3   -1

32.5  0   0.5   0.5  -1    3   -5    7

32.5  0  -0.5  -0.5   9   -11   13   -15

32.5  0  -0.5  -0.5   17  -19   21   -23

32.5  0   0.5   0.5  -25  27   -29   31]

其中,每一行的第一个元素是该行像素值的平均值,其余的是这行的细节系数。使用同样的方法,对A’的每一列进行计算,得到A’’

[32.5   0  0   0    0     0    0  0

    0   0  0   0    0     0    0  0

    0   0  0   0    4    -4   4  -4

    0   0  0   0    4    -4   4  -4

    0   0 0.5  0.5  27   -25  23 -21

    0   0 -0.5 -0.5  -11  9   -7  5

    0   0 0.5  0.5  -5    7   -9 11

    0   0 -0.5 -0.5  21  -23  25 -27]

其中,左上角的元素表示整个图像块的像素值的平均值,其余是该图像块的细节系数。根据这个事实,如果从矩阵中去掉表示图像的某些细节系数,事实证明重构的图像质量仍然可以接受。具体做法是设置一个阈值d,例如d>=5的细节系数就把它当作“0”看待,这样经过变换之后的矩阵就变成A’’’

[32.5   0  0  0    0   0    0  0

    0   0  0  0    0   0    0  0

    0   0  0  0    0   0    0  0

    0   0  0  0    0   0    0  0

    0   0  0  0   27  -25  23  -21

    0   0  0  0   -11  9   -7  0

    0   0  0  0   0   7   -9  11

    0   0  0  0   21  -23  25 -27]

“0”的数目增加了18个,也就是去掉了18个细节系数。这样做的好处是可提高编码的效率。对A’’’矩阵进行逆变换,得到了重构的近似矩阵AA

[59.5   5.5  7.5  57.5  55.5  9.5  11.5   53.5

5.5   59.5  57.5  7.5  9.5   55.5  53.5  11.5

21.5  43.5  41.5  23.5  25.5  39.5  32.5  32.5

43.5  21.5  23.5  41.5  39.5  25.5  32.5  32.5

32.5  32.5  39.5  25.5  23.5  41.5  43.5  21.5

32.5  32.5  25.5  39.5  41.5  23.5  21.5  43.5

53.5  11.5  9.5  55.5  57.5   7.5   5.5   59.5

11.5  53.5  55.5  9.5  7.5   57.5   59.5   5.5]

如果矩阵A的数据与矩阵AA的数据用图表示,原图和重构图差别不是很大。

转自:https://blog.csdn.net/kezunhai/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207620.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:27
下一篇 2026年3月19日 下午1:28


相关推荐

  • 二维数组a[3][4]_树状数组和线段树的区别

    二维数组a[3][4]_树状数组和线段树的区别原题链接堆栈是一种经典的后进先出的线性结构,相关的操作主要有“入栈”(在堆栈顶插入一个元素)和“出栈”(将栈顶元素返回并从堆栈中删除)。本题要求你实现另一个附加的操作:“取中值”——即返回所有堆栈中元素键值的中值。给定 N 个元素,如果 N 是偶数,则中值定义为第 N/2 小元;若是奇数,则为第 (N+1)/2 小元。输入格式:输入的第一行是正整数 N(≤10​5​​ )。随后 N 行,每行给出一句指令,为以下 3 种之一:Push keyPopPeekMedian其中 key 是不超过

    2022年8月8日
    6
  • 科大讯飞(002230):经营质量加速改善 讯飞星火商业化进程稳步推进

    科大讯飞(002230):经营质量加速改善 讯飞星火商业化进程稳步推进

    2026年3月14日
    3
  • node.js linux安装_node安装及环境配置

    node.js linux安装_node安装及环境配置版本:node-v10.16.0-linux-x64.tar.xzwgethttps://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz1、上传到服务器目录:/usr/local/soft2、解压安装包cd/usr/local/softtarzxvfnode-v8.9.1-linux-x64.tar.gz…

    2025年11月2日
    8
  • flowable流程详解

    flowable流程详解flowable图例解释请假流程bpmn20.xml文件请假流程示例图例解释开始事件:图中用细线圆圈来表示,是流程实例的开始点箭头:表示节点之间的流转指向。用户任务:在图中用左上角有人的圆角矩形表示,这些是需要用户来操作的节点。图中有两个,第一个表示需要经理进行审批来同意或拒绝,第二个表示用户来确认销假。排它网关:用叉形符号填充的菱形表示,从该图中出来的箭头往往有多个,但只有一个满足条件,流程会沿着满足条件的方向流转。自动化任务:左上角有齿轮形状的的圆角矩形,表示自动执行的节点。图中

    2022年5月11日
    318
  • awr报告 解读_关于AWR报告的解析

    awr报告 解读_关于AWR报告的解析其实 网上关于 AWR 的解析已经足够多了 但总觉得通过收集资料 再加工写出来的资料能便于自己理解其中的各项内容 因此我对 AWR 进行一篇详尽的解析 希望能分几次完成从 AWR 报告的第一部分包含了数据库的名称 数据库的 ID 号 实例名 实例数 启动的时间 数据库版本和是否为 RAC 此外也包含了系统的部分信息 该部分最关键的内容是第三个模块 里面记录了 snapshot 的开始时间和结束时间 以及数据库运行时间和

    2026年3月17日
    2
  • sdn网络技术简介(DID通信业务)

    一、SDN网络数据中心最重要的是要完善和建设10Gb、40Gb甚至是100Gb以太网的设施基础。软件定义网络(SDN)一直都是网络领域里的热门话题。SDN的最大好处是有可能节约网络的总拥有成本,并使网络基础设施能够弹性、灵活地支持业务。SDN将这种传统的、离散方法转变成了一种新的全局方法。SDN是一种网络架构,它能够通过动态编程网络设备来控制或”界…

    2022年4月14日
    121

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号