学生姓名: 学号: |
实验室名称: |
项目名称:心电信号的QRS波检测 |
项目内容: 1)阅读文献,总结常用的QRS波检测算法; 2)选择一种QRS波检测算法,理解并编写程序实现该算法; 3)分别检测不含噪声的模拟ECG信号、加高斯白噪声的模拟ECG信号、不含噪声和含噪声的心率失常ECG信号中QRS波,分析其准确率; 4)总结QRS波检测算法的优缺点。 |
原理(写出具体的计算公式) 一.QRS波说明 1.1 R波说明 .QRS波为ECG中变化剧烈的地方,能量主要分布于0~38Hz范围内; .波峰集中于10~20Hz,中心频率在17Hz左右,带宽越10Hz; .T波、P波、基线漂移等的频带都是在此频带的低端以外; .任意两次心率的时间间隔大于200ms. 以上是QRS波区别于其他波形的四个明显特点。各种QRS波的检测算法主要是利用它与其他波形及噪声不同的幅频特性来实现的。 1.2误检率计算说明 其中对于理论存在的R波数,我们通过手动计算的到,我们分别计算数据118和118e00 0~5min的R波数,求平均,得:理论存在的R波数为75次/分. 二.常用的QRS波检测方法 如下图2-1所示: 图2-1 2.1差分阈值法 差分阈值法即通过对信号进行一阶或二阶差分,判断其差分值是否超过特定阈值并确定QRS波的存在及其位置。 基本原理:R波上升沿和下降沿斜率与其他波斜率显著不同,为ECG斜率变化最大的区域,中间出现的一阶导数过零点为R波所在位置,差分法即通过检测ECG斜率的变化来实现QRS波的定位。 特点:基本上是高通滤波器,微分增强了具有较高频率特征的QRS复波,同时削弱了具有较低频率的P波,T波,构成了许多QRS复波检测算法的基础。 具体实现: 图2-2 ECG信号一阶和二阶微分的绝对值可用以下式子计算: 对于以上两式分别乘以系数可以得到 判别是否到达或者超过给定的阈值thr,即 一旦中有一数据点满足此条件,后8个数据点就同这个阈值相比较。如果这个8个数据点中有6个或者更多的点等于或者超过此阈值,那么这一段就可能是QRS复波的一部分。 总体评价:算法简单,处理速度快,工程应用中较容易实现,但受噪声及伪差干扰严重,检测效果较差; 适用:对实时性要求较高的心电自动监护仪。 枕部2.2模板匹配法 基本原理:即将QRS波、T波等近似认为单独的固定模板,按照幅值归一化的幅频分量值表示任一固定模板在这一频率范围内的能量集中情况。各模板中,在特定频率上的能量分布不同。因此通过信号幅值和特定阈值的比较来检测QRS模板。 安徽医药 1.模板互相关 若两个信号波形形状相互匹配,就称这两个信号相关,相关系数是一个值,他确定多个信号间形状匹配的程度。在这种QRS检测中,希望检测到的信号模板以数据的形式保存下来,要求出模板与输入信号的相关,需要使得输入信号与模板对准,有两种对准的方法: 1).利用每个信号上的基准点将模板和输入信号对准。这些基准点是通过其他处理方式得到。 2).考虑一段输入信号和模板间的连续相关,每当一个新的信号数据点移近时,一个最老的数据点同时就从这段中移除(FIFO),然后求出这段信号与模板的相关系数。 其中先关系数的值在[-1,1]中,1表示信号与模板匹配。 2.模板减去法 在模板匹配中,输入信号逐点从QRS模板中减去,若完全匹配,结果为0。这种算法首先存储一段对应于QRS波形的ECG输入信号,然后,这一段信号或模板与后续输入的ECG信号相比较,将后续输入的信号的每一点与模板上对应的点相减,当模板与这信号的一个QRS复波相匹配时,减去的结果是一个非常接近0的值。 总体评价:原理简单,不过对基线漂移和高频噪声敏感; 2.3 小波变换法 小波变换具有良好的时频局部化特性,实现信号从时域到时间-尺度平面的转换,通过多尺度分解可在不同分辨率下观察信号的局部特征,即信号的高频部分具有较高的时间分辨率和较低的频率分辨率,而对应的低频部分,其频率分辨率较高而时间分辨率较低。小波变换是对信号进行时频分析的理想数学工具,因其优良的去噪性能,小波变换被越来越多地应用到信号的去噪处理中。 总体评价:由于具有良好的时频局域化分析能力,因此小波变换法的检测准确度较高,但是其算法复杂,计算量大,不适于实时处理; |
三.本文使用的R波检测算法(基于极值的动态自适应阈值法) 在本次设计中,我们使用基于极值的动态自适应阈值法。 在利用阈值进行QRS波检测时,若固定阈值,则会造成阈值设置过高导致漏检,产生假阴性,阈值设置过低会导致多测,产生假阳性。因此本文提出基于待测信号的可变阈值,以提高检测的精确率,所采用的可变阈值包括幅度阈值和时间间隔阈值等。 基本原理:基于R波的幅值为最大的特点,根据极值的定义,筛选出所以的极大值点,这些点即可能是R波的点,然后根据心电学原理知识,确定R波的阈值,计算待测的ECG数据最大值并与阈值进行比较,若超过或达到阈值,则初步判断已检测到一个R波,然后根据制定的规则确定R波。 具体设计思路如下图3-2所示: 图3-2 Step1:即对待测ECG的滤波处理,基于第一部分对心电信号的说明,QRS波检测中的信号预处理主要是针对0~38Hz的频率范围,结合任务2中的预处理研究,采用小波去噪对数据进行滤波处理,得到的待测信号基本不含噪声干扰; Step2:根据QRS波波形,首先利用极值点判断,一次筛选得到可能存在R波的点,记为sigmax: 结合心电信号原理,确定阈值: Step3:二次筛选:对于sigmax中数据,若出现大于阈值的数据,则在该数据处和其后50ms的范围内查,将到的最大值作为一个R波;接着在此R波后150ms处继续进行二次筛选,直至查完全部数据,将二次筛选得到的R波记为rvalue。 女外阴Step4:可能存在的误差: 1.两次心率的时间间隔大于200ms,因此,若两个R波的间隔小于0.2s,则两个极小点中必定存在噪声,利用复检消除此噪声。 2.在平均RR 峰间隔的166%的时间间隔内,如果没有发现QRS 波,则应取原阈值的1/2 进行复检,以免漏检。这里的166%是根据生理的特性选取的经验参数。 3.计算出的R 波的幅度,如果R 波不在前一个R 波幅度的40%-160%之内,则说明这个波峰是个强干扰,应该删除。 4)根据采样频率,每隔一定的时间间隔,重新利用最新检测的R 波对阈值进行实时更新,以此消除基线漂移对检测精度的影响。 综上,我们采用以下规则检测误检: 1.判断rvalue中前后两R波间隔是否小于200ms,若小于200ms则消去较小值,留下较大值,直至查全部数据,得到新的R波,刷新rvalue。 2.判断rvalue中前后两波间隔是否大于400ms,若大于400ms,则针对两R波间进行复检,选取其中幅值最大的点作为R波,并标记该R波为病变R波,直至查全部数据,得到新的R波,刷新rvalue。 |
编写的源程序: clear;clc %读数据 load('118e00m.mat'); %噪声信号数据 Signal=val(1,:); 华夏心理网Fs=2*max(Signal); %采样频率确定 Signal=Signal/(Fs/2); %归一化 noise= rand(1,length(Signal)); Signal_N=Signal+noise; % 加入高斯噪声,信噪比为8dB. n=size(Signal_N); rate=Signal(100); %小波去噪 [C L]=wavedec(Signal_N,3,'db5'); %分解层数3 多层次分解 (db5、db1、symlet8三种小波) cA3=appcoef(C,L,'db5',3); %提取尺度3下的近似小波系数 [cD1,cD2,cD3]=detcoef(C,L,[1,2,3]); %对信号做层数3的多尺度分解 cD1,cD2,cD3为各层小波系数 %使用stein的无偏似然估计原理进行选择各层的阈值 rigrsure为无偏似然估计阈值类型 thr1=thselect(cD1,'rigrsure'); thr2=thselect(cD2,'rigrsure'); thr3=thselect(cD3,'rigrsure'); TR=[thr1,thr2,thr3]; %各层的阈值 SORH='s'; %'s'为软阈值;'h'硬阈值。 [y,CXC,LXC,PERF0,PERF2]=wdencmp('lvd',Signal_N,'db5',3,TR,SORH); %去噪 yabs=abs(y); %R波初选 N1=length(y); sigmax=[]; for i=1:N1-2 if (y(i+1)>y(i)&y(i+1)>y(i+2)) sigmax=[sigmax;y(i+1),i+1]; end; end; sig=sigmax(:,1); %阈值 N2=length(sig); for i=1:N2-2 sigmax(i,3)=i; end; rank1=sort(sig); thrmax=sum(rank1(N2-99:N2))/100/sqrt(2); rank2=sort(sig,'descend'); thrmin=sum(rank2(N2-99:N2))/100/sqrt(2); thr=(0.7*abs(thrmax)+0.3*abs(thrmin))*0.05 %定位R波 rvalue=[]; for i=1:N2 if sigmax(i,1)>thr rvalue=[rvalue;sigmax(i,2)]; end; end; rvalue_1=rvalue; %误检检测1,如果相邻两个极大值时间小于0.2,则去掉幅度较小的一个 N3=length(rvalue); for i=2:N3 广告业专用发票 if (rvalue(i)-rvalue(i-1))<72 if abs(rvalue(i))>abs(rvalue(i-1)) rvalue(i-1)=0; else rvalue(i)=0; end; end; end; %误检检测2,如果相邻两个极大值时间小于0.4,则漏检 rvalue=sort(rvalue); id = find(rvalue==0) ; rvalue(id,:)=[]; N4=length(rvalue); for j=1:20 for i=2:N4 if (rvalue(i)-rvalue(i-1)) > 400 for jj= rvalue(i-1): rvalue(i)-1 if sigmax(jj,1) > sigmax(jj+1,1) B=sigmax(jj,2); else B=sigmax(jj+1,2); end end c1=rvalue(1:i-1);c2=rvalue(i:N3); rvalue=[c1;B;c2]; end end end NR1=length(rvalue_1) NR2=length(rvalue) R=abs(NR2-75)/75 figure(1); subplot(3,1,1),plot(Signal);title('原ECG信号'); axis([0 2000 -3 1]) ; subplot(3,1,2),plot(Signal_N);title('加噪后ECG信号'); axis([0 2000 -3 1]) ; subplot(3,1,3),plot(y);title('小波变换后ECG信号'); axis([0 2000 -3 1]) ; figure(2) subplot(3,1,1),plot(1:N1,y,sigmax(:,2),y(sigmax(:,2)),'r.'); title('ECG信号R波初选');axis([0 21600 -3 3]) ; subplot(3,1,2),plot(1:N1,y,rvalue_1,y(rvalue_1),'r.'); title('ECG信号的R波');axis([0 21600 -3 2]); subplot(3,1,3),plot(1:N1,y,rvalue,y(rvalue),'r.'); title('检测误检后的ECG信号的R波');axis([0 21600 -3 2]); |
结论(画出要求的图形) 以ECG 118e00的数据为例对基于极值的动态自适应阈值法的准确率进行说明: 首先加入高斯白噪声得到模拟的ECG信号,然后进行R波检测,得到结果如下: 三棵树苏童 借助自适应阈值法检测到的R波为75个,误检率为0%。 |
总结: 本周R波检测在任务2的基础上进行。R波是心电信号中特征最为明显的一段信号。检测出R波后我们就可以对该心电信号进行后续的相关检测,如心率计算。在R波的检测中采用了基于极值的自适应阈值法来进行具体实现,通过与人工计算结果的比较,得到自适应阈值法在检测R波中的准确率,因加入的高斯白噪声的随机性,导致每次的R波检测的误测率存在较小的上下浮动,这是不可避免的。经过多次测量,基于极值的自适应阈值法的误测个数维持在0~2个间,因此,该检测方法存在一定的实用性。 |
实习报告分数: |
指导教师: |
本文发布于:2024-09-22 11:38:43,感谢您对本站的认可!
本文链接:https://www.17tex.com/xueshu/75140.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |