jjzjj

小波变换(wavelet transform)

2^silence 2024-01-05 原文

Chapter1 什么是小波?

 小波变换跟时间有关,横坐标是时间,纵坐标是频率。

真实世界的数据或者信号经常表现出缓慢变化的趋势或因瞬态而出现的震荡,另一方面,图像具有被边缘中断或者对比度突然变化的平滑区域,傅里叶变换不能有效代表突然的变化,这是因为傅里叶变换将数据表示为未在时间或空间上定位的正弦波之和,这些正弦波永远震荡。

为了很好准确分析突然变化的信号和图像,我们需要使用在时间和频率上都很好定位的一类新功能,就是小波变换。

小波变换是快速衰减的波,例如震荡,均值为0,小波存在有限的持续时间。

一些知名的小波形状:

多种小波的可用性是小波分析的关键优势。

下面介绍两个重要的小波变换概念:

1.缩放(scaling)

假设信号完整性(si)为t,缩放比例是指及时拉伸或收缩信号的过程,可以用等式表示:

s是一个缩放系数,它是正值,对应于信号在时间上缩放了多少。比例因子与频率成反比

例如,将正弦波按比例缩放两个会导致其原始频率降低一半(或八度,八度就是一半的频率)

 对于小波,比例和频率之间存在比例关系恒定的倒数关系,这个比例常数称为小波的中心频率。(center frequency)。这是因为与正弦波不同,小波在频率中具有带通特性(只允许某一段频率通过)。在数学上,等效频率使用以下公式定义:

其中Cf是小波of的中心频率,是小波刻度,delta t 是采样间隔,因此将小波缩放2倍时,它会导致等效频率降低八度。

中心频率:通常定义为带通滤波器(或带阻滤波器)频率的几何平均值,在对数坐标下,即为两个3dB点之间的中点,一般用两个3dB点的算术平均来表示。滤波器通频带中间的频率,以中心频率为准,高于中心频率一直到频率电压衰减到0.707倍时为上边频,相反为下边频,上边频和下边频之间为通频带。

合成器中使用的滤波器通常有四种形式:低通、高通、带通、陷波。顾名思义低通就是让低频通过,滤掉高频;高通是让高频通过,滤掉低频;带通是让某一个范围的频率通过,滤除其余频率;陷波是滤除某一个范围的频率,让其余频率通过。

有几个常用的名词也顺便在这里介绍一下:被滤波器阻挡的频率范围称为禁带(Stopband);能顺利通过滤波器的频率范围称为通带(Passband);禁带的开始处称作半功率点(Half-power point)。滤波器允许或阻止一定的频率通过并不象刀切一样突然变化,而是有一个过渡,是一条斜线。斜线的倾斜程度用斜率(Slop)来表示。当输出信号下降3分贝时,就是半功率点,也叫负3分贝点,大家可能更加熟悉它的另一个称呼“截止频率”(Cutoff Frequency)。合成器中滤波器的截止频率经常是可以随便移动的。带通和陷波滤波器各自有两个半功率点,这两点的中心称为中心频率(Center Frequency)。

 

 这是中心频率为0.07赫兹的小波的[sim]与相同频率的正弦波对应的方式

较大的比例因子会导致拉伸的小波,对应于较低的频率,反之。

拉伸小波有助于捕获信号中缓慢变化的变化,压缩的小波有助于捕捉突变。

 

 可以构建与先前提到的等效频率成反比的不同比例

2.移位(shifting) 

移动小波只是意味着沿信号长度延迟或推进小波的开始,以表示的移位小波意味着小波被移位并以k为中心。我们需要移动小波使其与信号中寻找的特征对齐。

 小波分析中两个主要的变换是连续和离散小波变换,这些变换基于小波的缩放和移动方式而有所不同。

Chapter2 小波变换的类型

1.连续小波变换(CWT)

连续小波变换的关键应用是时频分析和时域频率成分滤波。

你可以使用此变换获得信号的同时时频分析,解析小波最适合时频分析,因为这些小波不具有负频率分量。

CWT的输出是系数,它是比例(scale)或频率和时间的函数。

 现在讨论构造不同小波尺度的过程:

使用CWT,您可以在每个八度音阶中的中间尺度上分析信号时增强灵活性,此参数称为八度音阶的音阶数,每个八度音阶的音阶数越多,音阶离散化越好。

此参数的典型值为10,12,16,32,比例乘以信号的采样间隔以获得物理意义。

左边是一个凹凸小波的音阶示例,每个八度音阶有32个音阶,每7微秒对信号进行一次采样,右边是比例尺等效频率的对应图。实际比例值是指数的。

 现在每个尺度小波在整个信号长度上随时间移动,并与原始信号进行比较,对所有比例尺重复此过程,得到的系数是小波比例尺和位移参数的函数。一个具有1000个样本的信号(以20个标度进行分析),会得出20000个系数。

 这样,您可以通过连续小波变换更好地表征信号中的振荡行为

2.离散小波变换(DWT)

离散小波分析的关键应用是信号和图像的去噪和压缩

因为它有助于表示许多自然产生的信号和具有较少系数的图像,这样就可以表示稀疏。

 DWT中的基本比例设置为2,通过将此基本比例提升为以下图1这种方式表示的整数值,可以获得不同比例。平移以该方程式表示的整数倍发生,此过程通常称为二进位缩放和平移(dyadic scaling and shifting)。这种采样消除了系数的冗余,变换地输出产生与输入信号长度相同数量的系数,因此需要更少内存。

离散小波变换过程等效于将信号与离散多速率滤波器组进行比较。总概念上讲,给定信号s,首先使用特殊的低通和高通滤波器对信号进行滤波,以产生低通和高通子带,将它们称为a1和d1,根据奈奎斯特准则,过滤后丢弃一半样本,滤波器通常具有少量系数,并具有良好的计算性能,这些滤波器还具有重构子带的能力,同时消除下采样而引起的任何混叠。对于下一级的分解,低通子带a1通过相同技术进行迭代滤波,以产生较窄的子带a2和d2,以此类推。

每个子带的系数长度是前一级系数数的一半。通过这种方式,DWT有助于以不同的分辨率分析逐渐变窄的子带上的信号,有助于去噪和压缩信号。

 Chapter3 离散小波变换的一个应用示例

 下图是增加的噪声的信号,我们使用离散小波变换对噪声信号进行去噪。

步骤:

1.获得近似系数和细节系数:通过执行多级小波分解来做到。

离散小波变换将信号分成低通子带,也称为近似水平,高通子带也称为细节等级,你可以分解多个级别或比例的近似子带,以进行精细比例分析。

我们将使用相同的六个小波并将噪声信号分为五个级别,函数输出第五级逼近函数和一到五级细节函数。

第一级细节系数捕获信号的高频,大部分高频成分由信号中的噪声组成,但是高频的一部分是由信号的突然变化组成的,有时候这些突然的变化带有意义,您可能希望在消除噪声的同时保留此信息。

这里是原始信号以及1至5级绘制的细节,注意随着规模或级别的增加,详细信息中的活动急剧减少,因此我们暂时先专注于1级细节,忽略其他。

 我们的目标是在消除噪音的同时保留急剧变化,一种方法是通过细节系数按阈值缩放。

2.分析细节并确定合适的阈值技术

两种阈值操作:软阈值和硬阈值。在这两种情况下,幅度小于阈值的系数都设置为0,这两种阈值技术的区别在于如何处理幅度大于阈值的系数。

在软阈值的情况下,通过从系数值中减去阈值,将幅度大于阈值的系数缩小为0。

 而在硬阈值中,幅度大于阈值的系数保持不变

3.设置细节系数阈值并重建信号

下图为去噪后的结果

 

性能比较:小波变换去噪最好,虽然看起来滑动平均去噪效果更好但是丢失了很多突变信号,所以信噪比(SNR)变小了。

 小哥微微一笑~~~~~

 Chapter4 连续小波变换的一个应用示例

 可以看到将噪声与地震信号分离是多么困难!!!许多自然信号都有这样的特征,它们由缓慢的变化组成,并散布着突然变化,通常被掩埋在噪音中,小波在分析这类信号非常有用!!!

采用傅里叶变换来产生时频可视化,可以看到两个地震活动实例无法区分。

 我们看到的只是一个信号分布在0.05赫兹附近,但定位不完全.让我们尝试通过减少频谱图中使用的窗口大小来本地化事件时会发生什么。通过减小窗口的大小,我们可以在30和33分钟左右看到一些亮点,但两个事件并没有很好的分开,事件的频率和事件不确定仍然很高,减小窗口大小不是很有帮助。

 我们需要以某种方式定位这两个事件的频率信息,这次使用小波。使用连续小波变换有助于获得地震数据的联合时频分析,未指定小波默认使用Moore小波。CWT函数根据小波能量散布自动确定分析的最小和最大尺度,函数返回的小波系数大小用颜色编码,白色虚线表示影响锥,在该区域内小波系数估计是可靠的。我们可以看到两次活动明显分开,这两个事件在时间和频率上都很好定位了。

Chapter5 机器学习和深度学习中的小波变换

有关小波变换(wavelet transform)的更多相关文章

  1. ruby - 从文件中提取快速傅里叶变换数据 - 2

    我正在构建一个应该在服务器上运行并分析声音文件的工具。我想在Ruby中执行此操作,因为我的所有其他工具也是用Ruby编写的。但我很难找到完成此任务的好方法。我发现的很多例子都是在做可视化和图形化的东西。我只需要FFT数据,仅此而已。我既需要获取音频数据,又需要对其进行FFT。我的最终目标是计算一些东西,例如所有频率(加权幅度)的均值/中值/众数、第25个百分位数和第75个百分位数、BPM,也许还有其他一些好的特性,以便以后能够将相似的声音聚集在一起.首先,我尝试使用ruby-audio和fftw3,但我从未将两者真正结合使用。文档也不好,所以我真的不知道有什么数据被洗牌了。接下来,我尝

  2. 图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标) - 2

    1.变换1.1什么是变换?变换(Transform)是计算机图形学中非常重要的一部分。变换包含模型变换(Modelingtransform)以及视图变换(Viewtransform)。模型变换指的是变换模型(被拍摄物体)的位置,大小和角度;视图变换指的是变换照相机的位置和角度。从相对运动的角度来看,两种变换是可以相互转化的。1.2模型变换1.2.1二维变换缩放变换缩放变换(Scale)中,如果一个图片以原点(0,0)为中心缩放𝑠倍。那么点(𝑥,𝑦)变换后数学形式可以表示为写成矩阵形式为:当然,我们也可以给x轴和y轴不同的缩放倍数𝑠𝑥和𝑠𝑦。在非均匀情况下,缩放变换的矩阵形式为反射变换反射变换(

  3. javascript - CSS 3D变换以制作给定边长的梯形 - 2

    我有一个给定尺寸(比如100x300像素)的元素,它位于高度相同且宽度可变的容器中,我想使用rotateX围绕-webkit-transform-进行转换origin:topcenter;在选择容器的-webkit-perspective时,图像的底线看起来保持在原处,但只会扩展以填充整个容器。哇,这听起来令人困惑。这是一张照片:基本上,我想创建一个上部宽度固定、下部宽度可变的梯形。但是我不能完全弄清楚关系背后的数学......欢迎使用Javascript。以下示例适用于正文宽度为600像素的情况:http://jsfiddle.net/24qrQ/现在的任务是随着body的宽度不断改

  4. 坐标变换与坐标系变换 - 2

            在slam中,经常充斥着坐标变换,坐标系变换等等知识,经常把我们搞得头大。这篇文章稍微记录一些我个人的一些心得体会,给同是困惑的人一些参考。       在我看来,坐标系变换与坐标变换在虽然是听起来差不多的两个名词,但其实表达的是两个基本相反的内容。比如坐标系A到坐标系B的坐标系变换主要还是强调坐标系A如何通过这个变换矩阵变到坐标系B,在这里,转动的是坐标系A的相关坐标轴,就好像字面意思那样,起始位置在A(就好像把A当做参考系一样)。坐标变换在slam中其实是针对某些具体点来讲的(比如某些静止不动的地图点),我们需要对这些静止不动的点做一些坐标转换,比如将点的坐标从激光雷达坐标

  5. javascript - 变换矩阵线性组合的旋转动画导致放大缩小 - 2

    我有一个3x3矩阵(startMatrix),它表示图像的实际View(平移、旋转和缩放)。现在我创建一个新矩阵(endMatrix),它有一个恒等矩阵、新的x和y坐标、新的Angular和新的比例,例如:endMatrix=translate(identityMatrix,-x,-y);endMatrix=rotate(endMatrix,angle);endMatrix=scale(endMatrix,scale);endMatrix=translate(endMatrix,(screen.width/2)/scale,screen.height/2)/scale);和功能(标准的

  6. javascript - 应用所有变换矩阵 - 2

    我正在寻找一种可能快速的方法来应用给定svg图形的所有变换矩阵。换句话说:该算法应该去除所有“变换”属性并将图形的所有坐标变换为绝对坐标。他们是否有任何库可以做到这一点,或者他们是否有任何SVGDomInterface方法可以做到这一点?编辑::如果我这样调用合并方法:$.each(svg.find('path'),function(i){this.transform.baseVal.consolidate();});没有任何反应,如果我这样调用它:$.each(svg.find('path'),function(i){this.transform.animVal.consolidat

  7. javascript - d3.js - 变换和过渡,多行 - 2

    我已按照以下说明进行操作:http://bost.ocks.org/mike/path/用于使用单行创建和动画化单个图形。并且,弄清楚了如何在图表中创建多条线:DrawingMultipleLinesinD3.js主要问题:在将新数据移动并插入我的数据阵列后,我很难转换多行。我创建了N行:(时间:纪元时间,向前迈进)varseriesData=[[{time:1335972631000,value:23},{time:1335972631500,value:42},...],[{time:1335972631000,value:45},{time:1335972631500,value

  8. javascript - 3D CSS 变换 : translateZ causes elements to disappear in Chrome - 2

    我正在使用Javascript在Chrome中操作CSS转换,我注意到当translateZ值变得太低(很远)时,元素将会消失。这似乎只有在有大量元素时才会发生。这似乎与元素的z-index有关。这是问题的一个例子:http://jsbin.com/iZAYaRI/26/edit将鼠标悬停在输出上以查看问题。有人知道为什么会这样吗?更新:看起来该元素并没有真正消失,而是移动了一千个像素左右。 最佳答案 在我的例子中,z平移属性大约为零。将我的零翻译从0更改为1解决了我的问题。在safari中运行的原始代码:transform:sca

  9. javascript - 如何计算元素旋转的变换平移(x,y)补偿? - 2

    我正在制作个人资料图片裁剪编辑器,它允许在区域内拖动、缩放和旋转图像。图片的拖动是通过捕捉区域的mousedown和mousemove事件,计算区域内游标开始和停止的x/y坐标,得到游标移动的距离。然后将此值添加到图像的当前内联样式转换translate(x,y)值或从中减去(取决于方向)。vardragArea=document.getElementById('drag-area');varphotoImg=document.getElementById('photo');varcropCircle=document.getElementById('crop-circle');var

  10. javascript - 使用 KineticJS 变换(移动/缩放/旋转)形状 - 2

    我正在尝试为KineticJS构建一个转换管理器,它将构建一个边界框并允许用户在他们的Canvas上缩放、移动和旋转图像。我被anchor的逻辑绊倒了。http://jsfiddle.net/mharrisn/whK2M/我只想让用户从任何Angular落按比例缩放他们的图像,并在按住并拖动anchor时旋转。谁能帮我指明正确的方向?谢谢! 最佳答案 这是我制作的旋转控件的概念证明:http://codepen.io/ArtemGr/pen/ociAD当控件被拖动时,dragBoundFunc用于旋转旁边的内容:controlGro

随机推荐