小波教程-part4-多分辨率分析:离散小波变换

1. 为什么需要离散小波变换

尽管离散连续小波变换可以通过计算机计算连续小波变换,但这并不是真正的离散变换。 实际上,小波序列只是CWT(连续小波变换)的一个采样版本,就信号的重构而言,它提供的信息是高度冗余的。 另一方面,这种冗余需要大量的计算时间和资源。 另一方面,离散小波变换(DWT)为原始信号的分析和合成提供了足够的信息,同时大大减少了计算时间。

与CWT相比,DWT易于实施。 DWT的基本概念以及它的属性和用于计算它的算法将在本节中介绍。 与前几章一样,提供了一些示例来帮助解释DWT。

2. 离散小波变换(DWT)

DWT的基础可以追溯到1976年,当时Croiser,Esteban和Galand设计了一种分解离散时间信号的技术。 同年,Crochiere,Weber和Flanagan在语音信号编码方面做了类似的工作。 他们将分析方案命名为子带编码。 1983年,伯特(Burt)定义了一种非常类似于子带编码的技术,并将其命名为金字塔编码,也称为多分辨率分析。 1989年晚些时候,Vetterli和Le Gall对子带编码方案进行了一些改进,消除了金字塔编码方案中现有的冗余。 下面说明子带编码。 有关离散小波变换和多分辨率分析理论的详细介绍,可以在该主题的许多文章和书籍中找到,这超出了本教程的范围。

3. 子带编码和多分辨率分析

主要思想与CWT中的思想相同。 使用数字滤波技术可获得数字信号的time-scale表示。 回想一下,CWT是小波在不同尺度上与信号之间的相关性,该scale(或频率)被用作相似性的度量。 通过更改分析窗口的scale,及时移动窗口,乘以信号以及对所有时间进行积分,可以计算出连续小波变换。 在离散情况下,使用不同截止频率的滤波器来分析不同scale的信号。 信号通过一系列高通滤波器以分析高频,并通过一系列低通滤波器以分析低频。

信号的分辨率(衡量信号中详细信息的数量)通过滤波操作进行更改,而scale则通过上采样和下采样(子采样)操作进行更改。 对信号进行二次采样对应于降低采样率或删除信号的某些采样。 例如,二次抽样是指将信号的每隔一个样本丢弃一次。 以因子n进行二次采样可将信号中的样本数量减少n次。

信号的上采样对应于通过向信号添加新的采样来增加信号的采样率。 例如,以2进行上采样是指在信号的每两个采样之间添加一个新的采样,通常为零或内插值。 对信号进行n倍的上采样会使信号中的样本数增加n倍。

尽管不是唯一的选择,但是DWT系数通常是在二元网格上从CWT采样的,即 s 0 = 2 s_0 = 2 s0=2 t 0 = 1 t_0 = 1 t0=1,产生 s = 2   j s = 2^{\, j} s=2j t = k ⋅ 2   j t = k \cdot 2^{\, j} t=k2j,如第3部分所述。由于信号是离散时间函数,因此在以下讨论中,术语函数和序列将互换使用。 该序列将由 x [ n ] x [n] x[n]表示,其中n是整数。

该过程开始于使该信号(序列)通过具有脉冲响应 h [ n ] h [n] h[n]的半带数字低通滤波器。 对信号进行滤波对应于信号的卷积与滤波器的脉冲响应的数学运算。 离散时间的卷积运算定义如下:

x [ n ] ∗ h [ n ] = ∑ k = − ∞ ∞ x [ k ] ⋅ h [ n − k ] x[n] * h[n] = \sum\limits_{k = -\infty}^\infty x[k] \cdot h[n - k] x[n]h[n]=k=x[k]h[nk]···················································(4.1)

半带低通滤波器可去除所有高于信号最高频率一半的频率。例如,如果信号最大具有1000 Hz分量,则半带低通滤波将去除500 Hz以上的所有频率。

此时,频率单位特别重要。在离散信号中,频率以弧度表示。因此,就径向频率而言,信号的采样频率等于2p弧度。因此,如果以奈奎斯特速率(是信号中最大频率的两倍)对信号进行采样,则信号中存在的最高频率分量将为p弧度。即,奈奎斯特速率对应于离散频域中的p rad / s。因此,使用Hz不适用于离散信号。但是,每当需要澄清讨论时都使用Hz,因为用Hz来考虑频率是很常见的。应始终记住,离散时间信号的频率单位为弧度。

使信号通过半带低通滤波器后,根据奈奎斯特规则,可以消除一半采样,因为信号现在的最高频率为 p 2 \frac {p} {2} 2p弧度,而不是p弧度。简单地丢弃所有其他采样将对信号进行二次采样,信号的点数将减半。现在,信号的大小增加了一倍。请注意,低通滤波会删除高频信息,但不会改变音阶。仅子采样过程会更改比例。另一方面,分辨率与信号中的信息量有关,因此,它受滤波操作的影响。半带低通滤波消除了一半的频率,这可以解释为丢失了一半的信息。因此,在滤波操作之后,分辨率降低了一半。但是请注意,滤波后的二次采样操作不会影响分辨率,因为从信号中删除一半的频谱分量仍然会使一半的样本数量成为多余。可以丢弃一半样本,而不会丢失任何信息。总之,低通滤波将分辨率减半,但比例不变。由于样本数量的一半是冗余的,因此该信号将被2二次采样。这使规模翻倍。

该过程可以用数学表示为:

y [ n ] = ∑ k = − ∞ ∞ h [ k ] ⋅ x [ 2 n − k ] y[n] = \sum\limits_{k = -\infty}^\infty h[k] \cdot x[2n - k] y[n]=k=h[k]x[2nk]·························································(4.2)

话虽如此,我们现在看一下DWT的实际计算方法:DWT通过将信号分解为粗略的近似值和详细信息来分析具有不同分辨率的不同频带上的信号。 DWT使用两组函数,分别称为缩放函数和小波函数,分别与低通和高通滤波器关联。 通过对时域信号进行连续的高通和低通滤波,可以简单地将信号分解为不同的频带。 原始信号 x [ n ] x [n] x[n]首先通过半带高通滤波器 g [ n g [n g[n]和低通滤波器 h [ n ] h [n] h[n]。 滤波之后,根据奈奎斯特规则可以消除一半样本,因为信号现在的最高频率为 p 2 \frac {p} {2} 2p弧度,而不是p。 因此,只需丢弃其他所有采样,即可对信号进行2采样。 这构成了一个分解级别,可以用数学方式表示为:

y h i g h [ k ] = ∑ n x [ n ] ⋅ g [ 2 k − n ] y_{high}[k] = \sum\limits_{n} x[n] \cdot g[2k - n] yhigh[k]=nx[n]g[2kn]

y l o w [ k ] = ∑ n x [ n ] ⋅ h [ 2 k − n ] y_{low}[k] = \sum\limits_{n} x[n] \cdot h[2k - n] ylow[k]=nx[n]h[2kn]························································(4.3)

其中 y h i g h [ k ] y_ {high} [k] yhigh[k] y l o w [ k ] y_ {low} [k] ylow[k]分别是二次采样后的高通和低通滤波器的输出。

这种分解将时间分辨率减半,因为现在只有一半数量的样本可以表征整个信号。 但是,此操作使频率分辨率提高了一倍,因为信号的频带现在仅跨越先前频带的一半,从而有效地将频率的不确定性降低了一半。 可以重复上述过程,也称为子带编码,以进行进一步分解。 在每个级别上,滤波和二次采样将导致样本数量减少一半(因此时间分辨率减少一半),跨度频段减少一半(频率分辨率增加一倍)。 图4.1说明了此过程,其中 x [ n ] x [n] x[n]是要分解的原始信号, h [ n ] h [n] h[n] g [ n ] g [n] g[n]分别是低通和高通滤波器。 每个级别的信号带宽在图中标记为“ f f f”。

在这里插入图片描述例如,假设原始信号 x [ n ] x [n] x[n]具有512个采样点,跨越零到p rad / s的频带。在第一个分解级别上,信号通过高通和低通滤波器,然后通过2进行二次采样。高通滤波器的输出具有256个点(因此是时间分辨率的一半),但仅跨越 p 2 \frac {p } {2} 2p至rad / s(因此频率分辨率翻倍)。这256个样本构成DWT系数的第一级。低通滤波器的输出也有256个采样,但是它跨越了频带的另一半,频率从0到 p 2 r a d / s \frac {p} {2} rad / s 2prad/s。然后,该信号通过相同的低通和高通滤波器进行进一步分解。第二个低通滤波器的输出随后进行二次采样,采样范围为0到 p 4 r a d / s \frac {p} {4} rad / s 4prad/s,范围为128个采样,第二个高通滤波器的输出之后进行二次采样,采样范围为128个采样范围 p 4 \frac {p} {4} 4p p 2 r a d / s \frac {p} {2} rad / s 2prad/s的范围。第二高通滤波信号构成第二级DWT系数。该信号的时间分辨率为第一级信号的一半,但频率分辨率为第一级信号的两倍。换句话说,与原始信号相比,时间分辨率降低了4倍,而频率分辨率提高了4倍。然后再次对低通滤波器的输出进行滤波以进行进一步分解。这个过程一直持续到剩下两个样本为止。对于此特定示例,将有8个分解级别,每个分解级别具有前一个级别的样本数量的一半。然后,通过合并从最后一个分解级别开始的所有系数(在这种情况下为两个样本),获得原始信号的DWT。然后,DWT将具有与原始信号相同数量的系数。

在原始信号中最突出的频率将在包含那些特定频率的DWT信号区域中显示为高振幅。 该变换与傅立叶变换的区别在于,这些频率的时间定位不会丢失。 但是,时间本地化将具有取决于它们出现在哪个级别的分辨率。 如果信号的主要信息位于高频(这是最常见的情况),则这些频率的时间定位将更加精确,因为它们具有更多的样本数量。 如果主要信息仅位于非常低的频率,则时间定位将不是很精确,因为很少有样本用于表示这些频率的信号。 该过程实际上在高频下提供了良好的时间分辨率,而在低频下提供了良好的频率分辨率。 遇到的大多数实际信号都是这种类型的。

在原始信号中不是很突出的频带将具有非常低的幅度,并且可以丢弃DWT信号的那部分而不会造成任何重大信息损失,从而可以减少数据。图4.2说明了DWT信号的外观以及如何提供数据缩减的示例。图4.2_a显示了典型的512采样信号,已将其标准化为单位幅度。水平轴是样本数,而垂直轴是归一化幅度。图4.2_b显示了图4.2_a中信号的8级DWT。此信号中的最后256个采样对应于信号中的最高频段,前128个采样对应于第二个最高频段,依此类推。应当注意,仅对应于较低分析频率的前64个样本携带相关信息,而该信号的其余部分实际上没有信息。因此,除了前64个样本外,所有其他样本都可以丢弃,而不会丢失任何信息。这就是DWT如何提供一种非常有效的数据缩减方案。

在这里插入图片描述
我们将重温该示例,因为它为如何解释DWT提供了重要的见解。 但是,在此之前,我们需要结束对DWT的数学分析。

离散小波变换的一个重要特性是高通和低通滤波器的脉冲响应之间的关系。 高通和低通滤波器不是彼此独立的,它们之间的关系是:

g [ L − 1 − n ] = ( − 1 ) n ⋅ h [ n ] g[L - 1 - n] = (-1)^n \cdot h[n] g[L1n]=(1)nh[n]··································································(4.4)

其中g [n]是高通滤波器,h [n]是低通滤波器,L是滤波器长度(以点数为单位)。 请注意,这两个过滤器是彼此的奇数索引交替反向版本。 从低通到高通的转换由(-1)n项提供。 满足此条件的滤波器通常用于信号处理,它们被称为正交镜像滤波器(QMF)。 这两个滤波和二次采样操作可以表示为:

y h i g h [ k ] = ∑ n x [ n ] ⋅ g [ − n + 2 k ] y_{high}[k] = \sum\limits_{n} x[n] \cdot g[-n + 2k] yhigh[k]=nx[n]g[n+2k]

y l o w [ k ] = ∑ n x [ n ] ⋅ h [ − n + 2 k ] y_{low}[k] = \sum\limits_{n} x[n] \cdot h[-n + 2k] ylow[k]=nx[n]h[n+2k]···························································(4.5)

由于半带滤波器形成正交基,因此这种情况下的重建非常容易。 以相反的顺序执行上述过程以进行重建。 每个级别的信号均被上采样两次,并通过合成滤波器g [n]和h [n](分别为高通和低通),然后相加。 这里有趣的一点是,除了时间反转外,分析和合成过滤器彼此相同。 因此,重建公式变为(对于每一层)

x [ n ] = ∑ k = − ∞ ∞ (   y h i g h [ k ] ⋅ g [ − n + 2 k ]   ) + (   y l o w [ k ] ⋅ h [ − n + 2 k ]   ) x[n] = \sum\limits_{k = -\infty}^\infty \left( \, y_{high}[k] \cdot g[-n + 2k] \, \right) + \left( \, y_{low}[k] \cdot h[-n + 2k] \, \right) x[n]=k=(yhigh[k]g[n+2k])+(ylow[k]h[n+2k])··········(4.6)

但是,如果滤波器不是理想的半带,则无法实现完美的重构。 尽管不可能实现理想的滤波器,但在某些条件下仍可以找到提供完美重构的滤波器。 最著名的是Ingrid Daubechies开发的那些,被称为Daubechies的小波。

注意,由于连续的2次二次采样,信号长度必须是2的幂,或者至少是2的幂的倍数,以便该方案有效。 信号的长度决定了信号可以分解为的电平数。 例如,如果信号长度为1024,则可能有十个分解级别。

解释DWT系数有时可能会很困难,因为DWT系数的表示方式非常特殊。 为了使真实情况更短,将每个级别的DWT系数从最后一个级别开始进行级联。 为了阐明这个概念,可以举一个例子:

假设我们在10 MHZ处采样了256个样本的长信号,我们希望获得其DWT系数。由于信号以10 MHz采样,因此信号中存在的最高频率分量为5 MHz。在第一级,信号通过低通滤波器h [n]和高通滤波器g [n],其输出被二次采样。高通滤波器的输出为第一级DWT系数。其中有128个,它们代表[2.5 5] MHz范围内的信号。这128个样本是最后绘制的128个样本。低通滤波器输出(也具有128个采样点,但跨越[0 2.5] MHz频带)将通过使它们通过相同的h [n]和g [n]进一步分解。第二个高通滤波器的输出是2级DWT系数,并且这64个样本位于图中的128个1级系数之前。通过再次使第二低通滤波器的输出经过滤波器h [n]和g [n],进一步分解它。第三个高通滤波器的输出为3级DWT系数。这32个样本位于图中的2级DWT系数之前。

该过程继续进行,直到在级别9只能计算1个DWT系数为止。这个系数是DWT图中第一个绘制的系数。随后是2个8级系数,4个7级系数,8个6级系数,16个5级系数,32个4级系数,64个3级系数,128个2级系数,最后是256个1级系数。注意,在较低频率下使用的样本数量越来越少,因此,时间分辨率随着频率的降低而降低,但是由于频率间隔在低频时也会降低,因此频率分辨率会提高。显然,仅仅由于时间分辨率大大降低,前几个系数将不会携带大量信息。为了说明这种丰富而奇怪的DWT表示,让我们看一下现实世界中的信号。我们的原始信号是一个256样本长的超声信号,它以25 MHz的频率采样。该信号最初是使用2.25 MHz传感器产生的,因此信号的主要频谱成分为2.25 MHz。最后的128个样本对应[6.25 12.5] MHz范围。从图中可以看出,这里没有可用的信息,因此可以丢弃这些样本而不会丢失任何信息。前面的64个样本表示[3.12 6.25] MHz范围内的信号,该信号也不携带任何重要信息。小故障可能对应于信号中的高频噪声。前32个样本代表[1.5 3.1] MHz范围内的信号。如您所见,正如我们预期的那样,信号的大部分能量集中在这32个样本上。前16个采样对应[0.75 1.5] MHz,在此级别看到的峰值可能表示信号的较低频率包络。先前的样本可能未包含任何其他重要信息。可以肯定地说,我们可以使用第三级和第四级系数,也就是说,我们可以用16 + 32 = 48个样本来表示这个256个样本的长信号,这大大减少了数据量,这会使您的计算机非常满意。

从小波变换的这一特殊属性中受益最大的领域是图像处理。如您所知,图像,尤其是高分辨率图像占用大量磁盘空间。实际上,如果本教程要花很长时间下载,那主要是由于图像。 DWT可用于减小图像尺寸,而不会损失很多分辨率。方法如下:

对于给定的图像,您可以计算每行的DWT,并丢弃DWT中所有小于某个阈值的值。然后,我们仅保存那些高于每行阈值的DWT系数,并且当我们需要重建原始图像时,我们只需为每行填充与所丢弃系数数量一样多的零,并使用反DWT来重建每行原始图像的行。我们还可以分析不同频带的图像,并仅使用特定频带的系数来重建原始图像。我将尝试尽快放入示例图像,以说明这一点。

越来越受到关注的另一个问题是不仅在低通侧而且在两侧都进行分解(子带编码)。换句话说,分别放大信号的低频带和高频带。可以将其可视化为具有图4.1的树结构的两侧。结果就是所谓的小波包。我们不会在此讨论小波包,因为它不在本教程的讨论范围之内。任何对小波包感兴趣的人,或者对DWT有更多了解的人,都可以在市场上任何可用的文本中找到该信息。

到此,我们的迷你系列小波教程结束了。如果我可以帮助那些努力理解小波的人,那么我将考虑花费在本教程上的时间和精力。我想提醒一下,本教程既不是小波变换的完整也不是完整的介绍。它只是小波概念的概述,旨在为那些发现小波可用文本相当复杂的人提供第一个参考。可能存在许多结构和/或技术错误,如果您能向我指出这些错误,我将不胜感激。您的反馈对于本教程的成功至关重要。

非常感谢您对Wavelet教程的关注。

  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 小波融合算法是一种将多个不同分辨率的图像或信号进行融合的方法,主要应用于图像处理领域。而MATLAB作为一种强大的科学计算环境和编程语言,提供了丰富的工具箱和函数,能够实现小波融合算法。 MATLAB中实现小波融合算法的一般步骤如下: 1. 读取输入图像或信号,并进行预处理。预处理可以包括调整图像尺寸、灰度化、降噪等操作,以便后续的小波变换。 2. 对输入图像或信号进行小波变换。MATLAB提供了多种小波变换函数,例如快速小波变换(FWT)和离散小波变换DWT),可以根据具体需求选择合适的函数。 3. 对小波变换后得到的系数进行融合。常见的融合方法有最大值融合、最小值融合、平均值融合等。MATLAB提供了相应的函数,如max、min、mean等,可以方便地进行融合操作。 4. 对融合后的系数进行逆小波变换,得到最终的融合图像或信号。同样地,MATLAB提供了逆小波变换的函数,如逆离散小波变换(IDWT)或逆快速小波变换(IFWT)。 5. 对最终的融合结果进行后续处理,如图像增强、调整亮度和对比度等。 需要注意的是,小波融合算法的具体实现还与应用场景和需求密切相关。因此,在使用MATLAB实现小波融合算法时,需要根据具体情况调整参数和算法细节,以获得最佳的融合效果。同时,MATLAB还提供了丰富的可视化功能,可以对融合结果进行展示和评估,以帮助调试和验证算法的有效性和稳定性。 ### 回答2: 小波融合算法是一种应用于信号和图像处理的数学方法,通过将小波变换与融合技术相结合,可以将多个信号或图像合并为一个更完整且质量更高的结果。 在MATLAB中,小波融合算法可以通过Wavelet Toolbox工具箱来实现。该工具箱提供了一系列函数用于进行小波变换和融合操作。具体步骤如下: 1. 读取并加载需要融合的信号或图像。 2. 对每个信号或图像进行小波分解,得到各个尺度的小波系数。 3. 对相同位置的小波系数进行加权融合。加权可以根据不同的融合方法进行选择,如最大值融合、平均值融合等。 4. 对各个尺度进行小波重构,并得到融合后的信号或图像。 5. 对融合结果进行后处理,如去噪、增强等。 在MATLAB中,可以使用wavelet函数进行小波变换和小波重构操作,使用wextend函数进行边缘处理,使用wkeep函数进行小波系数的保留或截断操作。此外,Wavelet Toolbox还提供了一些特定的融合函数,如wmaxlev和wdencmp,用于确定小波分解的层数和进行小波系数融合。 通过以上步骤,可以在MATLAB中实现小波融合算法,并对信号或图像进行融合处理,以达到信号或图像质量的提高。 ### 回答3: 小波融合是一种用于图像合成的信号处理技术,它通过将图像转换为小波域,然后对小波系数进行加权融合,最后通过逆小波变换将融合后的图像恢复到空域中。 Matlab是一个强大的数学计算和数据可视化软件,提供了丰富的工具和函数,可以用于实现小波融合算法。 在Matlab中,可以使用Wavelet Toolbox中所提供的函数和工具实现小波变换和融合算法。首先,可以使用`wavedec2`函数将输入的图像进行二维小波分解,得到各个尺度下的小波系数。然后,可以使用`wthresh`函数对小波系数进行阈值处理,将较小的系数设为0,保留较大的系数用于融合。接下来,可以使用`wenergy`函数计算小波系数的能量,用于确定融合权重。最后,可以使用`waverec2`函数对融合后的小波系数进行逆小波变换,得到融合后的图像。 除了Wavelet Toolbox中提供的函数外,还可以使用Matlab的图像处理函数,如`imread`读取图像、`imshow`显示图像等,对图像进行前后处理。 总之,使用Matlab可以方便地实现小波融合算法,通过调用相应的函数和工具,可以对输入的图像进行小波变换、阈值处理和逆小波变换,从而实现图像的融合。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值