小波变换中的多贝西小波(DB小波函数)概述

这篇具有很好参考价值的文章主要介绍了小波变换中的多贝西小波(DB小波函数)概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内容均来源于维基百科对db小波函数的介绍

多贝西小波(英语:Daubechies Wavelet),是以比利时女性物理暨数学家英格丽·多贝西(Ingrid Daubechies)的名字命名之一种小波函数,当初英格丽·多贝西发现了一种具有阶层(hierarchy)性质的小波,便将此小波以她的名字命名。多贝西小波主要应用在离散型的小波转换,是最常使用到的小波转换,通常使用在数位信号分析、信号压缩跟噪声去除。

一般而言的离散小波转换通常是以正交小波(orthogonal wavelet)为基底,而多贝西小波也是一种正交小波。由于它很容易经由快速小波转换(fast wavelet transform(FWT))实现,所以常会放在数位信号处理的教科书中教学。

对于有限长度的小波,应用于快速小波转换(fast wavelet transform(FWT))时,会有两个实数组成的数列:一是作为高通滤波器的系数,称作小波滤波器(wavelet filter,也称为mother wavelet);二是低通滤波器的系数,称作调整滤波器(scaling filter,也称为father wavelet)。

我们则以滤波器的长度N来形容滤波器为DN,例如:N=2的多贝西小波写作D2、N=4的多贝西小波写作D4,以此类推(N为偶数)。实际上常用的多贝西小波为D2到D20。

  • 分类方式

    多贝西小波的分类是以消失动量(vanishing moment)的值A(亦为消失动量的个数)为依据(A称为tap),调整函式(scaling function)及小波函式(wavelet function)的平滑度(smoothness)皆会随着消失动量的值(tap)增加而增加:例如,当A=1时,多贝西小波即是哈尔小波(Haar wavelet),调整函式及小波函式都是不连续的;当A=2时,多贝西小波的调整函式及小波函式为不能平滑微分的连续函式;当A=3时,调整函式及小波函式已经是连续可微的函式了。以此类推,当A愈大时,多贝西小波的两个函式平滑度会愈来愈高。以下为多贝西小波跟不同A的调整及小波函式图:

  • 小波变换中的多贝西小波(DB小波函数)概述

  • 长度

    多贝西小波的长度为消失动量(vanishing moment)值A的两倍;所以当消失动量为A时,多贝西小波的小波滤波器(wavelet filter)及调整滤波器(scaling filter)长度皆为2A(N=2A)。一般而言,我们仍是以N来形容多贝西小波的长度:例如,当A=1时,有一个消失动量,多贝西小波写成D2,长度为2(也是Haar小波);当A=2时,有两个消失动量,多贝西小波写成D4,长度为4;以此类推。但是,在matlab的使用上是以dbA描述多贝西小波,以下则为调整滤波器的系数及A的关系表:

  • 小波变换中的多贝西小波(DB小波函数)概述                    

  • 小波变换中的多贝西小波(DB小波函数)概述

多贝西小波具有调整函式(低通滤波)及小波函式(高通滤波)两个函式。因此,我们需先建立调整函式及小波函式的系数:

首先,调整函数在多尺度分析(multi-resolution analysis)中的每一层皆可写为下列方程式:

小波变换中的多贝西小波(DB小波函数)概述

 小波变换中的多贝西小波(DB小波函数)概述

算法

以下为示范小波转换应用于影像压缩,压缩后为原本图片的四分之一。

假设输入的图片大小为M*N,让图片对高频和低频进行convolution。

对M的基数进行取样,这个结果会让两个维度都变成(M/2)*N。

把低频的图片放在上面,高频的放在下面,低频的图片会长的像原本的图片,高频的图片会是只有灰色的图片。

对新的图片再进行高频和低频的convolution,这时变成M*(N/2)的大小,低频放在左边,高频放在右边,

最后可以看到[0:M/2, 0:N/2]就会是原本压缩过后的图片。

因小波转换有良好的性质,经过多次压缩还是能保有原本的资讯。也就是说可以修改以下的程式码改成循环的方式,

进行多次小波转换,经过类似的模式再使用多次的反小波转换,还原出原本大小的图片。

import numpy as np
def subsampling(x, d):
    if d == 1:
        y = x[::2, :]
    elif d == 2:
        y = x[:, ::2]
    return y

def upsampling(x, d):
    s = x.shape
    if d == 1:
        y = np.zeros((p * s[0], s[1]))
        y[::2, :] = x
    elif d == 2:
        y = np.zeros((s[0], p * s[1]))
        y[:, ::2] = x
    return y
    
def cconv(x, h, d):
    if d == 2:
        return np.transpose(cconv(np.transpose(x), h, 1))
    y = np.zeros(x.shape)
    p = len(h)
    pc = int(round( float((p - 1) / 2 )))
    for i in range(0, p):
        y = y + h[i] * np.roll(x, i - pc, axis=0)
    return y
    
def DWT(image, h, g): # discrete wavelet transformation
    fW = image.copy()
    j = int(np.log2(image.shape[0])-1)
    A = fW[:2**(j+1):,:2**(j+1):]
    Coarse = subsampling(cconv(A,h,1),1)
    Detail = subsampling(cconv(A,g,1),1)
    A = np.concatenate( (Coarse, Detail), axis=0 )
    Coarse = subsampling(cconv(A,h,2),2)
    Detail = subsampling(cconv(A,g,2),2)
    A = np.concatenate( (Coarse, Detail), axis=1 )
    fW[:2**(j+1):,:2**(j+1):] = A
    return fW
    
def iDWT(image, fW, h, g): #image is original, fW is after DWT of that.
    f1 = fW.copy()
    j = int(np.log2(image.shape[0])-1)
    A = f1[:2**(j+1):,:2**(j+1):]
    Coarse = A[:2**j:,:]
    Detail = A[2**j:2**(j+1):,:]
    h1 = h[::-1]
    g1 = g[::-1]
    Coarse = cconv(upsampling(Coarse,1),h1,1)
    Detail = cconv(upsampling(Detail,1),g1,1)
    A = Coarse + Detail
    Coarse = A[:,:2**j:]
    Detail = A[:,2**j:2**(j+1):]
    Coarse = cconv(upsampling(Coarse,2),h1,2)
    Detail = cconv(upsampling(Detail,2),g1,2)
    A = Coarse + Detail
    f1[:2**(j+1):,:2**(j+1):] = A
    return f1

参考资料

  1. A first course in Wavelets with Fourier Analysis, A.Boggess, F.J. Narcowich, 2001

分类:​文章来源地址https://www.toymoban.com/news/detail-404967.html

  • 正交小波

到了这里,关于小波变换中的多贝西小波(DB小波函数)概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2.小波变换的类型

    0. 引言 观看本系列视频,了解基于小波的去噪和压缩等应用程序背后的基础知识,本节讨论两种小波变换的类型:连续小波变换和离散小波变换 参考学习:1.什么是小波变换 我们将重点介绍两种类型的小波变换, 连续小波变换 和 离散小波变换 。 连续小波分析 的关键应用

    2024年02月11日
    浏览(79)
  • 小波变换笔记

    突然变化的图像或信号 小波变换 高带宽? 放缩和时延 放缩因子和频率成正比 小波在频域中具有带通特性 Cf 中心频率 s 小波刻度 delta t 采样间隔 时延 我们需要移动小波,以便使其和信号中寻找的特征对齐 时频分析 时域频率成分滤波 连续小波变换 CWT 利用此变换 可以获得

    2024年02月11日
    浏览(34)
  • 小波变换(wavelet transform)

     小波变换跟时间有关,横坐标是时间,纵坐标是频率。 真实世界的数据或者信号经常表现出缓慢变化的趋势或因瞬态而出现的震荡,另一方面,图像具有被边缘中断或者对比度突然变化的平滑区域,傅里叶变换不能有效代表突然的变化,这是因为傅里叶变换将数据表示为未

    2024年02月07日
    浏览(40)
  • 图像处理01 小波变换

    连续小波分解,通过改变分析窗口大小,在时域上移动窗口和基信号相乘,最后在全时域上整合。通过离散化连续小波分解可以得到 伪离散小波分解, 这种离散化带有大量冗余信息且计算成本较高。 小波变换的公式如下: ​ ​​ ​​ ​ ​ 更直观的可以用下面的图片来表

    2024年02月05日
    浏览(38)
  • Matlab实现小波变换

    文章和代码以及样例图片等相关资源,已经归档至【Github仓库:digital-image-processing-matlab】或者公众号【AIShareLab】回复 数字图像处理 也可获取。 Haar、尺度和小波函数; 比较函数wavefast 和函数wavedec2 的执行时间; 小波的方向性和边缘检测。 Haar、尺度和小波函数 使用haar 滤波

    2024年02月07日
    浏览(46)
  • 从傅里叶变换到小波变换详细解释(含代码)

    傅里叶变换能够将一个信号从时域转换为频域,在转换后的频谱中,频谱的峰值越大越尖,表示对应频率的信号就强度就越大。 傅里叶变换能够处理不随时间变化的平稳信号,即它能告诉我们信号包含哪些频段,但是不能告诉我们这个频段是在信号的哪个时间段出现的。而生

    2024年01月21日
    浏览(47)
  • 基于小波变换的同步压缩变换原理和Matlab代码

    作为处理非平稳信号的有力工具,时频分析在时域和频域联合表征信号,是时间和频率的二元函数。传统的时频分析工具主要分为线性方法和二次方法。线性方法受到海森堡测不准原理的制约,二次方法存在交叉项的干扰。 为了提升时频聚集性,逼近理想的时频表示,时频重

    2024年02月16日
    浏览(42)
  • 基于小波变换的信号分离

    使用小波变换将信号进行分离。验证小波变换在信号处理中的有效性。 小波变换是一种非常重要的信号处理方法,可以将信号分解成不同频率的小波成分,从而进行信号的分析和处理。小波变换是一种具有局部性质的信号分析方法,它将信号分解成一组基函数,这些基函数是

    2024年02月11日
    浏览(39)
  • Matlab小波变换-音频去噪

    小波变换-音频去噪 使用小波变换进行音频去噪,实验环境:Matlab 推荐课程:数字信号处理(北京交通大学 陈后金) 第八章内容 B站链接:https://www.bilibili.com/video/BV1at411Q75D?p=101 (慕课上也有) 一、原音频加噪 二、sym8小波去噪 也不一定非选这个sym8,也可以选其他的小波,matl

    2024年02月11日
    浏览(80)
  • 小波变换之pycwt (python)

    PyCWT是用于连续小波谱分析的Python模块,它包括小波变换和FFT算法统计分析的常规操作的集合。此外,该模块还包括交叉小波变换、小波相干性测试和样例脚本。 该模块需要NumPy和SciPy,matplotlib模块。 pip安装: conda安装: 基于小波的时间谱分析 Time-series spectral analysis using w

    2024年04月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包