在对心电信号进行分析前,需要对其进行去噪预处理。因为在心电信号采集或者数模转换的过程中,会产生噪声,包括工频干扰、肌电干扰、基线漂移这三种。本文将介绍目前十分常用且有效的一种去噪方法——小波阈值去噪。

其实去噪这里展开也是一个挺大的专题,但是我重点还是放在后面几种机器学习算法比较上,所以就直接选用了小波阈值去噪,没有做其它去噪方法的比较。所以这篇就适合想对小波阈值去噪有个简单了解的童鞋~

一、小波阈值去噪基本思想

运用小波变换的思想结合设定阈值的方法对信号进行去噪的主要流程如下:




小波图像阈值去噪python实现_小波图像阈值去噪python实现


(1)尺度小波分解:通过分析选择合理的小波函数以及特定的分解尺度,对含噪信号进行特定尺度的目标层数分解;

(2)小波阈值处理:设定阈值对信号尺度分解出的小波系数进行选择,若小波系数的幅值低于该阈值则认定为是由噪声引起的,则舍弃这个分解系数;

(3)小波系数重构:一维小波重构分解后的小波系数。

通俗点说,就是先通过小波变换把信号转换不同的尺度空间,然后通过阈值处理筛选出哪些是噪声,然后把这个噪声舍弃掉,最后再重构回去,噪声就没了。

二、小波变换理论基础

1974年,法国信号处理工程师Morlet首次提出小波分析这一新的概念,在保留傅里叶分析特点的同时弥补了其不能同时进行时频分析的缺陷。傅里叶变换的是通过改变域类型进而改变对同一个事物的不同角度,即把时域上的信号转换到频域上进行分析,因此可以在频域中处理那些在时域中不好处理的地方。但是傅里叶变换无法进行时频同时分析,这种局限性无法对突变和非平稳信号进行有效处理。小波变换主要是对小波函数进行尺度伸缩还有时间位移,实现对非平稳信号的多尺度时频的局部化分析,可以在信号的高频处或成分突变处完成时间上的细化,在低频处或成分慢变处实现频率上的细化。

小波变换就是将傅里叶变换中无限长度的三角基函数替换为有限长度的小波基函数,如图所示。


小波图像阈值去噪python实现_小波图像阈值去噪python实现_02

小波基函数


我自己写的都是偏理论的公式,感觉没啥意义我这里就不贴了,推荐个我觉得很好的文章或者视频吧~

小波变换完美通俗讲解系列之 (一)blog.csdn.net

《小波变换和motion信号处理》系列的第二篇_wjhua_223的专栏-CSDN博客_小波变换和motion信号处理:第二篇blog.csdn.net

小波图像阈值去噪python实现_整数小波变换的matlab程序_03


b站视频:

BV1pW411J7s8 傅里叶变换

BV1Ax41157yQ 小波变换

通过上面的学习,对小波变换的一个理念可以有一个简单的把握了,昂我觉得理解了基本理念对去噪这个步骤就足够了。


小波图像阈值去噪python实现_傅里叶变换 matlab代码_04


本文选用的db5小波。

三、阈值处理

阈值处理主要包括两部分,一个是阈值的选取,还有一个是阈值函数的选取。

  1. 阈值的选取

阈值


就是用来判断噪声滴,它的大小就决定了去噪质量。


小波图像阈值去噪python实现_小波图像阈值去噪python实现_05


一般分为以上五种,本文选用的Stein无偏似然估计阈值。这里我就不详细介绍了,如果有人想了解的话可以评论我再介绍...

2. 阈值函数的选取

阈值函数是用来对小波系数


进行阈值收缩处理。阈值函数一般分为硬阈值和软阈值。阈值后的小波系数为



小波图像阈值去噪python实现_傅里叶变换 matlab代码_06


本文使用的软阈值。

四、去噪模型及评价指标

直接贴图吧哈哈


小波图像阈值去噪python实现_整数小波变换的matlab程序_07


五、实验结果与分析

上代码


%% ===============================小波阈值去噪============================= %%


本文通过对MIT-BIH数据库数据的波形特征进行分析,对比上文讨论中提到的小波函数的滤波效果,最终确定了选取db5小波函数对原始信号进行小波变换。由于小波阈值去噪过程中的选取的分解层数过高会导致波形失真,过低致使噪声抑制效果十分不明显,因此本文设置3层分解层数。本文选择了自适应的Stein无偏风险估计阈值,使用软阈值方法对信号进行去噪。100.dat的信噪比SNR为108.71,均方差MSE为0.0019,去噪效果较好。


小波图像阈值去噪python实现_整数小波变换的matlab程序_08

去噪效果对比