小波去噪及其 MATLAB 中的函数 小波去噪及其 MATLAB 中的函数 一 小波去噪中信号阈值的估算 一 小波去噪中信号阈值的估算 信号去噪是信号处理领域的经典问题之一 传统的去噪方法主要包括线性滤 波方法和非线性滤波方法 如中值滤波和 wiener 滤波等 传统去噪方法的不是 在于使信号变换后的熵增高 无法刻画信号的非平稳特性并且无法得到信号的相 关性 为了克服上述缺点 人们开始使用小波变换解决信号去噪问题 小波变换具有下列良好特性 1 低熵性 小波系数的稀疏分布 使信号变换后的熵降低 2 多分辨率特性 可以非常妤地刻画信号的非平稳特性 如边缘 尖峰 断点等 3 去相关性 可取出信号的相关性 且噪声在小波变换后有白化趋势 所 以比时域更利于去噪 4 选基灵活性 由于小波变换可以灵活选择基函数 因此可根据信号特点 和去噪要求选择适合小波 小波在信号去噪领域已得到越来越广泛的应用 阈值去噪方法是一种实现简 单 效果较好的小波去噪方法 阈值去噪方法的思想就是对小波分解后的各层系 数中模大于和小于某阈值的系数分别处理 然后对处理完的小波系数再进行反变 换 重构出经过去噪后的信号 下面从阈值函数和阈值估计两方面对阈值去噪方 法进行介绍 1 阈值函数 1 阈值函数 常用的阈值函数主要是硬阈值函数和软阈值函数 1 硬阈值函数 表达式为 TwwIw 如图 4 18 所示 其中横坐标 表示信号的原始小波系数 纵坐标表示阈值化后的小波系数 2 软阈值函数 表达式为 sgn TwITwww 如图 4 19 所示 其中横坐标表示信号的原始小波系数 纵坐标表示阈值化后的小波系数 一般来说 硬阈值方法可以很好地保留信号边缘等局部特征 软阈值处理相 对要平滑 但会造成边缘模糊等失真现象 为了克服上述缺陷 最近提出了一种 半软阈值函数 如图 4 20 所示 它可以兼顾软阈值和硬阈值方法的优点 其表 达式为 sgn 221 12 12 TwwITwTI TT TwT ww 其中 21 0TT 在软阈值的基础上 可以对其改进使其具有更高阶 如图 4 21 所示 可以 看出它在噪声 小波系数 与有用信号 小波系数 之间存在一个平滑过渡区 更符 合自然信号 图像的连续特性 其表达式为 Tw k T Tw 12 Tw k T Tw Tww Tk w k k 12 12 1 12 2 2 阈值估计 2 阈值估计 Donoho 在 1994 年提出了 VisuShrink 方法 或称统一阈值去噪方法 它是 态变量联合分布 在维数趋向无穷时得出的结论 在最小最大估 针对多维独立正 计的限制下得出的最优阈值 阈值的选择满足 NT n ln2 其中 n 是噪声标准方差 N 是信号的长度 Donoho 给出了证明这种估计在信 号属于 Besov 集时 在大量风险函数下获得近似理想的去噪风险 Donoho 的统 一阈值方法在实际应用中效果欠理想 产生过扼杀现象 1997 年 Janse 提出了 基于无偏估计的阈值计算法 风险函数定义为 NfftR 2 由于小波变换的正交性 风险函数可 NXYtR t 2 以同样在小波域中写成形式 设NYYtR t 2 则 YXXYYXXYE N YVE N tERYY N tET tt tnt 2 1 2 1 22 2 2 最后可得到风险函数的表达式 tYI N tY N tYI N tETtER i N i n ni N i i N i n n 2 1 2 1 2 2 2 1 1 2 2 其中是示性函数 I为两数取小 于是 最佳的阈值选择可以通过最小化风险 函数得到 即 minarg 0 tERt t MATLAB 中实现了信号的阈值去噪 主要包括阈值获取和阈值去噪两方而 下面对它们进行说明 二 小波去噪在 MATLAB 中的函数 二 小波去噪在 MATLAB 中的函数 1 阈值获取 1 阈值获取 MATLAB 中实现信号阈值获取的函数有 ddencmp thselect wbmpen 和 wdcbm 下面对它们的用法进行简单的说明 Ddencmp 的调用格式有以下三种 1 THR SORH KEEPAPP CRIT ddencmp IN1 IN2 X 2 THR SORH KEEPAPP CRIT ddencmp IN1 wp X 3 THR SORH KEEPAPP ddencmp IN1 wv X 函数 ddencmp 用于获取在消噪或压缩过程中的默认阈值 输入参数 X 为一维 或二维信号 IN1 取值为 den 或 crop den 表示进行去噪 crop 表示进行压 缩 IN2 取值为 wv 或 wp wv 表示选择小波 wp 表示选择小波包 返回值 THR 是返回的阈值 SORH 是软阈值或硬阈值选择参数 KEEPAPP 表示保存低频信号 CRIT 是熵名 只在选择小波包时用 函数 thselect 的调用格式如下 THR thselect X TPTR THR thselect X TPTR 根据字符串 TPTR 定义的阈值选择规则来选择信号 X 的自适应阈值 自适应阈值选择规则包括下面四种 TPTR rigrsure 自适应阈值选择使用 Stein 的无偏风险估计原理 TPTR heursure 使用启发式阈值选择 TPTR sqtwolog 阈值等于 sqrt 2 log 1ength X TPTR minimaxi 用极大极小原理选择阈值 阈值选择规则基于模型etfy 是高斯 A 噪声 N O 1 e 函数 wbmpen 的调用格式如下 THR wbmpen C L SIGMA ALPHA THR wbmpen C L SIGMA ALPHA 返回去噪的全局阈值 THR THR 通过给定 的一种小波系数选择规则计算得到 小波系数选择规则使用 Birge Massart 的处 罚算法 C L 是进行去噪的信号或图像的小波分解结构 SIGMA 是零均值的高 斯白噪声的标准偏差 ALPHA 用于处罚的调整参数 它必须是一个大于 1 的实数 一股取 ALPHA 2 设 t 是 crit t sum c k 2 k t 2 SIGMA 2 t ALPHA log n t 的最 小值 其中 c k 是按绝对值从大到小排列的小波包系数 n 是系数的个数 则 THR c t wbmpen C L SIGMA ALPHA ARG 计算阈值并画出三条曲线 2 SIGMA 2 t ALPHA 10g n t Sum c k 2 k t crit t 函数 wdcbm 的调用格式有以下两种 1 THR NKEEP wdcbm C L ALPHA 2 THR NKEEP wdcbm C L ALPHA M 函数 wdcbm 用于使用 Birge Massart 算法获取一维小波变换的阈值 返回值 THR 是与尺度无关的阈值 NKEEP 是系数的个数 C L 是要进行消噪或压缩的 信号在 j length L 2 层的分解结构 ALPHA 和 M 必须是大于 1 的实数 THR 是 关于 j 的向量 THR i 是第 i 层的阈值 NKEEP 也是关于 j 的向量 NKEEP i 是 i 层的系数个数 一般压缩时 ALPHA 取 1 5 去噪时 ALPHA 取 3 2 信号的阈值去噪 2 信号的阈值去噪 MATLAB 中实现信号的阈值去噪的函数有 wden wdencmp wthresh wthcoef wpthcoef 以及 wpdencmp 下面对它们的用法进行简单的介绍 函数 wden 的调用格式有以下两种 1 XD CXD LXD wden X TPTR SORH SCAL N wname 2 XD CXD LXD wden C L TPTR SORH SCAL N wname 函数 wden 用于一维信号的自动消噪 X 为原始信号 C L 为信号的小波 分解 N 为小波分解的层数 TPTR 为阈值选择规则 TPTR 的取值有以下四种 TPTR rigrsure 采用 Stein 无偏似然估计 TPTR heursure 采用启发式阈值选择 TPTR sqtwolog 取通用阈值 log 2 TPTR minimaxi 采用极大极小值进行阈值选择 SORH 是软阈值或硬阈值的选择 分别对应 s 和 h SCAL 指所使用的阈值是否需要重新调整 包含下而三种 SCAL one 不调整 SCAL sln 根据第一层的系数进行噪声层的估计来调整阈值 SCAL mln 根据不同层的噪声估计来调整阈值 XD 为消噪后的信号 CXD LXD 为消噪后信号的小波分解结构 格式 1 返 回对信号 X 经过 N 层分解后的小波系数进行阈值处理后的消噪信号 XD 和信号 XD 的小波分解结构 CXD LXD 格式 2 返回参数与格式 1 相同 但其结构是由直 接对信号的小波分解结构 C L 进行阈值处理得到的 函数 wdencmp 的调用格式有下面三种 1 XC CXC LXC PERF0 PERFL2 wdenemp gbl X wname N THR SORH KEEPAPP 2 XC CXC LXC PERF0 PERFL2 wdencmp 1vd X wname N THR SORH 3 XC CXC LXC PERF0 PERFL2 wdencmp 1vd C L wname N THR SORH 函数 wdencmp 用于一维或二维信号的消噪或压缩 wname 是所用的小波函数 gbl global 的缩写 表示每层都采用同一个阈值进行处理 lvd 表示每层用不同 的阈值进行处理 N 表示小波分解的层数 THR 为阈值向量 对于格式 2 和 3 每层部要求有一个阈值 因此阈值向量 THR 的长度为 N SORH 表示选择软阈值或 硬阈值 分别取值为 s 和 h 参数 KEEPAPP 取值为 1 时 则低频系数不进行阈 值量化 反之 则低频系数要进行阈值量化 XC是消噪或压缩后的信号 CXC LXC 是 XC 的小波分解结构 PERF0 和 PERFL2 是恢复和压缩的范数百分比 如果 C L 是 X 的小波分解结构 则 PERFL2 100 CXC 向量的范数 C 向量的范数 2 如果 X 是一维信号 小波 wname 是一个正交小波 则 PERFL2 2 L 22 100XXC 函数 wthresh 的调用格式如下 Y wthresh X SORH T Y wthresh X SORH T 返回输入向量或矩阵 X 经软阈值 如果 SORH s 或 硬阈值 如果 SORH h 处理后的信号 T 是阈值 Y wthresh X s T 返回的是 Y TXXSING 即把信号的绝对 值与阈值进行比较 小于或等于阈值的点变为 0 大于阈值的点变为该点值与阈 值的差值 Y wthresh X h T 返回的是 Y 1 TX X 即把信号的绝对值与阈值比 较 小于或等于阈值的点变为 0 大于阈值的点保持不变 一股来说 用硬阈值 处理后的信号比软阈值处理后的信号更粗糙 函数 wpthcoef 的调用格式如下 T wpthcoef T KEEPAPP SORH THR NT wpthcoef T KEEPAPP SORH THR 通过对小波包树 T 的系数进行阈值处 理后返回一个新的小波包树 NT 如果 KEEPAPP 1 则细节信号的系数不进行阈值 处理 否则 就要进行阈值处理 如果 SORH s 使用软阈值 如果 SORH h 则使用硬阈值 THR 是阈值 函数 wthcoef 的调用格式有下面四种 1 NC wthcoef d C L N P 2 NC wthcoef d C L N 3 NC wthcoef a C L 4 NC wthcoef t C L N T SORH 函数 wthcoef 用于一维信号小波系数的阈值处理 格式 1 返回小波分解结构 C L 经向量 N 和 P 定义的压缩率处理后的新的 小波分解向量 NC NC L 即构成一个新的小波分解结构 N 包含要被压缩的细 节向量 P 是把较小系数置 0 的百分比信息的向量 N 和 P 的长度必须相同 向 量 N 必须满足 1 N i length L 2 格式 2 返回小波分解结构 C L 经过将向量 N 中指定的细节系数置 0 后的 小波分解向量 NC 格式 3 返回小波分解结构 C L 经过近似系数置 0 后的小波分解向量 NC 格式 4 返回小波分解结构 C L 经过将向量 N 作阈值处理后的小波向量 NC 如果 SORH s 则为软阈值 如果 SORH h 则为硬阈值 N 包含细节的尺度 向量 T 是 N 相对应的阈值向量 N 和 T 的长度必须相等 函数 wpdencmp 的调用格式有下面两种 1 XD TREED PERF0 PERFL2 wpdencmp X SORH N wname CRIT PAR KEEPAPP 2 XD TREED PERF0 PERFL2 wpdencmp TREE SORH CRIT PAR KEEPAPP 函数 wpdencmp 用于使用小波包变换进行信号的压缩或去噪 格式 1 返回输入信号 X 一维和二维 的去噪或压缩后的信号 XD 输出参数 TREED 是 XD 的最佳小波包分解树 PERFL2 和 PERF0 是恢复和压缩 L2 的能量百分 比 PERFL2 100 XD 的小波包系数范数 X 的小波包系数 2 如果 X 是一维信号 wname 是正交小波 则 PERFL2 22 100XXC SORH 的取值为 s 或 h 表示 是软阈值或硬阈值 输入参数 N 是小波包分解的层数 wname 是包含小波名的字符串 函数使用 由字符串 CRIT 定义的熵标准和阈值参数 PAR 实现最佳分解 如果 KEEPAPP 1 则近似信号的小波系数不进行阈值量化 否则 则进行量化 格式 2 与格式 1 的输出参数相同 输入选项也相同 只是它从信号的小波 包分解树 TREE 直接进行去噪或压缩 三 小波对信号阈值去噪实例 三 小波对信号阈值去噪实例 一股说来 信号去噪的基本步骤主要包括如下三步 1 信号的小波分解 2 小波分解高频系数的阈值量化 3 信号的小波重构 使用小波分解的低频系数以及阈值量化处理后的高频 系数进行小波重构 将通过 4 个例子说明如何在 MATLAB 中进行信号的去噪
展开阅读全文