了解过信号处理的应该对小波变换都不陌生,小波变换的应用领域较广。20世纪90年代,小波变换被广泛用于语音和图像等数据压缩,并取得较好的压缩效果,后续有研究者将小波变换应用于心电信号的数据压缩。今天我们来讨论小波变换应用于心电信号的压缩。
小波变换用于信号压缩的基本思路和小波分解滤波相似,小波分解法滤波是将信号分解为不同的分量,然后保留目标分量,抑制非目标分量,然后重构信号,即可得到滤波后的信号。具体实现过程如下图:
对于信号x或者s,将信号分别通过一个低通滤波器和高通滤波器,然后将通过低频滤波器的信号降采样,得到第一层的分量cA1,通过高频滤波器的信号降采样得到cD1,cA1为近似分量,也称低频系数,cD1为细节分量,也称高频系数。第一幅图片是往低频方向分解,也可以往高频方向分解,这个是要看你所需要的是细节分量还是近似分量。如果每个滤波器的长度等于2N,信号长度为n,则信号F和G的长度为n + 2N – 1,系数cA1和cD1的长度为floor((n-1)/2)+N,也就是信号长度减1除以2,下取整。
通过一层层的分解,最终得到不同层数的分量信息。再根据需要对分量信息做一定处理,然后重构信号,即可实现信号的滤波。而信号的压缩是将目标分量保存,非目标分量用较小的比特数存储下来。
实际分解过程中会发现,非目标分量的值往往近似等于0,看下图,目标分量的幅值基本处于-2~2mv之间,而非目标分量的值基本位于-0.01~0.01mv之间,这一部分的分量往往用处很小,甚至对目标信号没有用,该部分信号完全可以置为0。在存储这一部分分量时,完全可以计数表示,只需要存储0的个数,在重构的时候在前面或者后面添加多少个0即可。
举例:
一段采样率为360Hz,10s的心电信号,需要的有效信号频率在0~45Hz,经过db6小波分解为9层,保留2~9层细节分量和9层近似分量,其他为无效分量,这儿将无效分量置为0。
采样点共有3600个,也即信号长度n=3600,db6小波长度为12,则2N=12,N=6。调用matlab中的分解函数,得到C和L,分别存储分量和分量长度。
[C,L] = wavedec(sig,9,’db6′);
L的值分别为:
只保留a9,d9~d2,d1的值1805这个数替换,在信号重构的时候,补充1805个0即可。
如此,原本需要保存3600个sample,现在只需要保存1892+1个值,压缩比接近于2。当然,也可以根据自己需要,删除更多不需要的分量,比如0~0.5hz的基线漂移,叫高频的其他分量等。总之,无效信息量越高,通过小波变换的压缩比就越高。
原始信号和重构信号如下图,几乎是无损失压缩,损失的也都是无效信息。
放在一起的效果:
温馨小贴士:
通过小波名字获取小波分解和重构的滤波器,即可获得滤波器长度。
[LO_D,HI_D,LO_R,HI_R] = Wfilters(‘wname’) %‘wname’:小波基的名字
%LO_D,分解低通滤波器;%HI_D,分解高通滤波器
%LO_R,重建低通滤波器;%HI_R,重建高通滤波器
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/72030.html