《生物医学传感器与测量》课程项目
实施报告
目录
一、项目方案介绍 二、项目的原理与方法 三、项目的实施过程 四、项目的结果分析 五、项目的结论与讨论
一、项目方案简介 心率是人体中的一个非常重要的生命指标,心率的正确采集有助于分析人体的生理状况。现在有很多用于检测心率的仪器,常见的有基于压力传感器、光电传感器、电容传感器等的测试装置。本项目中,我们使用心电电极采集心率,再借助biopac这个平台自己设
计程序,运用课堂上所过的知识,对采集到的心率进行分析。
通过biopac对心电进行采集,然后用matlab编辑程序,对采集到的心电进行分析处理,以此找到心电图中的波峰,获得被采集者的心跳周期。在实验方案中,采用了对照的形式,即采取两组心电图数据,一组为静态时的心电图,另一组为运动后的心电图,将两者进行比较分析。
二、项目的原理与方法
主要原理及测量基础:心脏的节律性的跳动是由心肌细胞节律性收缩产生的,而这种有规律的收缩又是生物电信号在心肌纤维传播的结果。心肌纤维由大量心肌细胞组成,细胞兴奋以及兴奋传导系统向整个心脏传布。心肌细胞除极和复极过程电活动可以扩布到全身各处,不仅可以从心脏本身测出电信号,还可以由体表用电极测量。而在体表某处测量的心电图是心电向量在该方向的投影,在体表各点的电位分布是不同的。任意两点间的心电电位差的周期性曲线,称为心电图(ECG)。心电图反映心脏兴奋的产生、传导和恢复过程中的生物电变化。
心肌细胞膜是半透膜,在静息状态时,膜外排列一定数量带正电荷的阳离子,膜内排列相同数量带负电荷的阴离子,所以膜外电位高于膜内,心肌细胞都处于极化状态,没有电位差,电流记录仪描记的电位曲线平直,即为体表心电图的等电位线。当心肌细胞受到一定强度的刺激时,细胞膜通透性发生改变,大量阳离子短时间内涌入膜内,使膜内电位由负变正,电流记录仪描记的电位曲线称为除极波,即体表心电图上心房P 波和心室的QRS波。细胞除极完成后,细胞膜又排出大量阳离子,使膜内电位由正变负,恢复到原来的极化状态,此过程由心外膜向心内膜进行。同样心肌细胞复极过程中的电位变化,由电流记录仪描记出称为复极波。由于复极过程相对缓慢,复极波较除极波低。心房的复极波低、且埋于心室的除极波中,体表心电图不易辨认。心室的复极波在体表心电图上表现为T波。整个心肌细胞全部复极后,再次恢复极化状态,各部位心肌细胞间没有电位差,体表心电图记录到等电位线。这就是心电图机测量到的一次完整的心电周期。
各波分析
P波: 由心房的激动所产生,代表左、右心室去极化过程。前一半主要由右心房所产生,后一半由左心房所产生。正常P波的宽度不超过0.11s,肢体导联最高幅度不超过2.5mm。
P-R间期: 代表从心房激动开始到心室激动开始的时间。这一期间随着人的年龄的增长而有加长的趋势。P-R间期代表由窦房结产生的兴奋经由心房、心室交界和房室束到达心室,并引起心室开始兴奋所需要的时间,故也称之为房室传导时间。当出现房室传导阻滞时,P-R间期延长。
P-R段: 从P波终点至QRS波群起点,这一段正常人是接近于基线的。形成的原因是由于兴奋冲动通过心房之后在向心室传导过程中,要通过房室交界区,兴奋通过此区域时传导非常缓慢,形成的电位变化也很微弱,一般记录不出来。
QRS波群: 也即QRS综合波,包括三个紧密相连的电位波动,第一个向下的波为Q波,以后是高而尖的向上的R波,最后是一个向下的S波。QRS波群反映左右心室去极化过程的电位变化,称QRS综合波的宽度为QRS时在限,它代表全部心室肌激动过程所需要的时间,在0.06-0.10s之间,正常人最高不超过0.10s。R波幅度在0.5-2.5mV之间不等。
QRS间期: 从Q波开始只S波终了的时间间隔。代表心室肌(包括心室间隔肌)的去极化过程。
S-T段: 正常时它与基线平齐,代表心室部分已全部进去去极化状态,心室各部分之间没有电位差存在,曲线又恢复到基线水平。正常人QRS波群的中心频率在12-18Hz范围内。S-T段包含的谐波分量频率甚低,几乎近于直流。
Q-T间期: 代表心室开始兴奋,除极,到完全复极至静息状态的时间,与心率的快慢有关。
T波: 代表心室复极化过程中的电位变化。在R波为主的心电图上,T波不应低于R波的十分之一。T波历时0.05-0.25s。T波方向与QRS波群的主波方向相同。
U波: 又称后电位是位于T波之后0.02-0.04s出现的一个小波,可能是反映心室激动后电位与时间的变化。
主要测量方法:在心率测量时,采用标准十二导联系统,分别记为Ⅰ,Ⅱ,Ⅲ,aVR,aVL,aVF,导联。其中Ⅰ,Ⅱ,Ⅲ导联为标准肢体导联,是记录两个肢体间电位差的体表心电图。aVR,aVL,aVF导联为肢体加压导联,是在单级肢体导联基础上,将探测电极端通过电阻R接威尔逊中心电端的电阻断开,其他两个电阻形成参考端,因此能增加电压幅度。导联为胸前导联,由此获得的心电波形有较大振幅,反映心脏不同位置工作情况。在两两电极之间或电极与中央电势端之间组成一个个不同的导联,通过导联线与心电图机电流计的正负极相连,记录心脏的电活动。 两个电极之间组成了双极导联, 一个导联为正极,一个导联为负极。电极和中央电势端之间构成了单极导联,此时探测电极为正极, 中央电势端为负极。由于aVR,aVL,aVF远离心脏,以中央电端为负极时记录的电位差太小, 因此负极为除探查电极以外的其他两个肢体导联的电位之和的均值。
编程原理:
1、去除基线:对于biopac采集到的心率电压可能由于外部干扰导致有误差,基本上有两种干扰因素,一是电源不稳或接触电极异常导致外来电压,使数据产生基线漂移。二是外界中白噪音干扰。
解决方法:频域滤波法。外加的电源电压在频域中表现为低频分量,可以采用高通滤波器滤除,截止频率设置为0.5HZ
2、去除白噪音:
解决方法:采用低通滤波器将噪音滤除,因为心率的电压在频域中表现约为0.5HZ-150HZ的电压,所以截至频率设置为150HZ。
3、寻找R波波峰:
对于理想的心率波形,R波的波峰值远远大于其他波峰峰值,可以寻找一个阈值作为判别值,大于这个阈值的数据中可以找到R波。但是在实际测量中发现有些人的心跳数据并不十分理想,其T波波峰也很大,所以很难找到一个阈值进行分割。
所以采用了一种导数求R波的方法。对于R波而言,不仅值大于其他波,并且其斜率的值也要远远大于其他波的斜率值。同样采用寻找阈值的方式,将斜率大的数据的坐标找
出。
阈值的求法:假设心跳导函数数据是以时间为横坐标,电压斜率为纵坐标的函数f’(t),阈值为Yu。现将f’(t)取绝对值F(t)=abs(f’(t)),再取F(t)的平均值Mean,取Yu=Mean,如果觉得此阈值设置的不理想,可以适当修改,将Yu乘以一个系数a。
对于波峰处,其斜率k应为0,但是对于数字信号处理,而非模拟信号,不太可能遇到理想的斜率为0的波峰,寻找波峰峰值应寻找导函数从 + 转变成 - 的数据坐标,该坐标即对应于原始数据的波峰值。
但是这种方法也不完善,仍然会有误差,除了所有R波以外,还会找到一些远远小于R波的个别毛刺,这些数据的斜率也很大,为了删除这些个别数据,仍然采用阈值分割法, 将R波提取出。
4、求取心率值:已经找到了所有R波后,将R波个数除以数据总时间,便可得到心率值,同时也可以求得数据的周期值T
5、找Q、S波波峰:在R波的前后半个周期T内寻找最小值,即找到了Q波,S波。
三、项目的实施过程
1、将电脑、biopac开启,并正确连接。
2、心电信号采集需要使用ECG100C放大器,LEAD110S屏蔽导线2根、LEAD100非屏蔽导线1根和一次性贴片电极3个。放大器增益设置在500,高通滤波器设置在0.5Hz,低通滤波器设置在35Hz ON。2根屏蔽电极的shield连接在放大器的shield上。
3、首先采集静态时的心电图,将电极片贴在皮肤上,并连上导线。电极连接方法:VIN+连接左下肢,VIN-连接右上肢,GND连接右下肢。
4、正确黏贴电极过后五分钟,连接电极开始测试,打开MP36,新建一个项目。点击功能栏选择MP36,在MP36菜单下面选择Set up Channels选择ECG0-150HZ,设置通道(CH1)和基本参数,如下图
点击开始。屏幕上出现心电图,等其稳定后,利用窗口复制出一组数据,并且保存到TXT文档中。
5、按照步骤3、4,再采集一组运动后的心电图。
6、打开Matlab,运行biopac.m文件,然后导入采集到的心率数据。如下图。其中,点击read读取选择所要测量的文件,上图为导入“read”产生的原始波形,点击deal对心电数据进行滤波和基线调整处理,完成后显示的波形呈现在下图中。另外,点击zoom on后再点击图形可以放大波形,对图形右键鼠标点击zoom out可以缩小。点击图形下方的R display、Q display、S display后可以将R、Q、S波分别以不同颜色圈出。Heart rate 显示的就是测得的该状态下的心率,即为最后结果。实验结束点击exit后退出。
四、项目的结果分析
健康成人的心率为60~100次/分,大多数为60~80次/分,女性稍快;3岁以下的小儿常在100次/分以上。本次数据测试来源于男生与女生各一名。并且对男女在运动前和运动后分别进行测量。测量结果如下:
男生运动前:心率为96次数/分。R波检出率为100%,波峰漏检率为0%、波峰错检率为0%、测量时间为12秒。
男生运动后:心率为121次数/分。R波检出率为100%,波峰漏检率为0%、波峰错检率为0%、测量时间为17秒左右。
女生运动前:心率为126次数/分。R波检出率为96%,波峰漏检率为4%、波峰错检率为0%、测量时间为11秒左右。
女生运动后:心率为131次数/分。R波检出率为100%,波峰漏检率为0%、波峰错检率为0%、测量时间为11秒左右。
数据分析:我们可以看出男生在运动前后心率,心率都比较正常属于合理范围之间并且明显发生了变化。女生在运动前的心率不正常,运动后的心率属于正常范围,我们分析原因可能如下:
1)测试中电极连接或收集过程中发生人为错误导致数据采集错误; 2)数据记录错误(与运动后的重叠); 3) 该女生可能当时处于较为激动状态;
四组数据中的对于R波检出率来说十分高基本都到达了95%以上。这说明测量程序的可靠性和精度都十分高。 五、项目的结论与讨论
本次项目试验以理论基础知识为基础,通过合理的实验设计基本正确的完成了实验,得到了较为科学准确的实验结果。通过本次实验是我们小组成员对心电的原理成因和测量有了一定深入的了解,从书本上脱离出来,联系了实际动手。当然这次项目中也暴露出了许多的问题,值得我们去思考。
主程序代码:
%function Diff_ECG=main(ECG) clear all; %导入心脏数据
ECG=load('heart of zhao.txt'); len=length(ECG);
fs=1000; %采样率=1000hz Time=len/fs; %数据总时间 dt=1/fs; %相邻数据间隔时间 t=dt:dt:Time; figure(1) subplot(311) plot(t,ECG);
%小波分析
[c,l]=wavedec(ECG,10,'db5'); %小波分解
a=wrcoef('a',c,l,'db5',10); %a为心跳数据基线 subplot(312); plot(t,a);grid on; axis([0,12,-1,5]); xlabel('基线'); clear c;clear l;
%去除基线 ECG2=ECG-a; subplot(313)
plot(t,ECG2);grid on; xlabel('去除基线后的数据');
%滤除高频
[c2,l2]=wavedec(ECG2,10,'db5'); a2=wrcoef('a',c2,l2,'db5',4); ECG3=a2; figure(2);
subplot(311);plot(t,ECG2);grid on; xlabel('去除基线后的数据'); subplot(312);plot(t,a2);grid on; xlabel('滤除高频的数据'); clear c2;clear l2;clear a2; ECG=ECG3;
clear ECG3;clear ECG2; %求数据的导函数 Diff_ECG=diff(ECG)/dt; len=length(t); kt=t(1:len-1);
subplot(313);plot(kt,Diff_ECG);grid on; xlabel('导函数'); %转二值
yuzhi=quyuzhi(Diff_ECG); danzhi=Diff_ECG>yuzhi; figure(3);
subplot(311);plot(t,ECG);xlabel('');grid on;
subplot(312);plot(kt,Diff_ECG);xlabel('导函数');grid on; subplot(313);plot(kt,danzhi);xlabel('斜率较高处');grid on; %扫描心率图,找出最大值极其坐标,即R波所在坐标 figure(4);
[R_time,R_heart,delt_T,XINLV]=Find_R(danzhi,Diff_ECG,ECG,fs); subplot(311);plot(t,ECG,R_time/fs,R_heart,'or');grid on; [Q_time,Q_heart]=Find_Q(R_time,ECG,delt_T,fs);
subplot(312);plot(t,ECG,Q_time/fs,Q_heart,'oG',R_time/fs,R_heart,'oR');grid on; [S_time,S_heart]=Find_S(R_time,ECG,delt_T,fs);
subplot(313);plot(t,ECG,Q_time/fs,Q_heart,'oG',R_time/fs,R_heart,'oR',S_time/fs,S_heart,'oB');grid on;
因篇幅问题不能全部显示,请点此查看更多更全内容