医学图像处理实验报告.docx
《医学图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《医学图像处理实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
医学图像处理实验报告
医学信息处理课程设计实验报告
指导老师
姓名
学号
班级
江苏大学电气学院
生物医学工程系
2010-7-9
心电信号RR间期的检测设计
内容:
心电信号RR间期的检测是心电信号分析的重要环节之一。
用MATLAB编程实现求取心电信号RR间期的加窗法、幅值阈值法和基于形态学的检测方法,并比较三种算法。
目的:
通过此设计,进一步加深对心电信号的认识;了解心电信号的P波、QRS波、T波等各个波段特点;掌握求取心电信号RR间期的基本方法;熟悉MATLAB基本编程应用;熟悉典型医学信号处理的流程;提高动手能力,巩固医学信号处理基本知识。
要求:
应用MATLAB的m文件编写程序实现
说明:
给定心电信号数据的采样率为360Hz
心电信号波形分析是心电监护和自动诊断的基础。
图是常规心电图的波形组成和测量示意图。
正常心电图包括:
P波,QRS波,T波等;RR间期是测量心率的方法之一
加窗法测心电rr间期
加窗法是测量RR间期的一种基本方法
一般在正常心电图中,QRS波群的R波峰值最大,因此对于一段给定心电数据,对数据加窗,保证在此窗口内只有一个QRS波,检测其最大值,其对应的时刻就是R波峰值时刻;然后滑动数据采样窗口,计算下一个R波峰值对应的时刻;以此类推,得到n个R波峰值时刻,后次减去前次时间得到n-1个RR间期;最后将n-1个RR间期求平均得到平均RR间期。
加窗法测RR间期的算法简单快速有效,每次加窗的窗口宽度固定。
窗口宽度根据经验值确定,但是对应于动态变化的心电图或者异常心电图,有时候在固定窗口内不能包含完整的QRS波,容易造成R波误测和漏测,增加误检率和漏检率。
注释:
[Y,I]=max(x)
源程序:
clc;clear;
load('F:
\新建文件夹\');
plot(ecg2);
xlabel('Caiyangdian');
ylabel('Fuzhi');
title('pictureofECG');
width=300;
fori=1:
6;
x=ecg2(((i-1)*width+1):
(i*width));
[Y(i),R_time(i)]=max(x);
R_time(i)=R_time(i)+(i-1)*width
end
fori=1:
5;
R_R(i)=R_time(i+1)-R_time(i);
end
R_R=(R_R
(1)+R_R
(2)+R_R(3)+R_R(4)+R_R(5))/(5*360);
程序流程图分析
程序结果
幅值阈值法测心电rr间期
幅值阈值法和斜率阈值法也是较常用的测量R波的基本方法。
这里只讲述较为简单的一种:
幅值阈值法。
幅值阈值法的实质:
若一段给定心电信号的最大值为MAX,取幅值为2/3MAX(阈值)的一条直线与心电图信号相交,一般每个QRS波群与其有两个交点,如图示的A点与B点,横坐标是采样点,纵坐标是心电幅值,单位毫伏。
求[A,B]区间对应的心电图幅值最大值,即得到此QRS波的R波波峰值,其对应的时刻就是R波峰值时刻。
若有n对交点,则得到n个R波峰值时刻,后次减去前次时间得到n-1个RR间期;最后将n-1个RR间期求平均得到平均RR间期
方法一
源程序:
clc;clear
load('F:
\新建文件夹\');
[Y,I]=max(ecg2);
M=*Y;
fori=1:
1800;
ecg2(ecg2<=M)=0;
end
plot(ecg2);
xlabel('Caiyangdian');
ylabel('JianfengFuzhi');
title('pictureofECG');
j=1;
fori=1:
1799
if((ecg2(i)==0)&(ecg2(i+1)>0))L(j)=i;
j=j+1;
elseif((ecg2(i)>0)&(ecg2(i+1)==0))L(j)=i+1;
j=j+1;
end
end
end
j=1;
fori=1:
2:
11;
[Y(j),I(j)]=max(ecg2(L(i)):
ecg2(L(i+1)));
I(j)=I(j)+L(i);
j=j+1;
end
fori=1:
5;
R_R(i)=I(i+1)-I(i);
end
R_R=(R_R
(1)+R_R
(2)+R_R(3)+R_R(4)+R_R(5))/(5*360)
程序流程图分析
方法二
源程序:
clc;clear
load('F:
\新建文件夹\');
[Y,I]=max(ecg2);
M=*Y;
fori=1:
1800;
ecg2(ecg2<=M)=0;
end
plot(ecg2);
xlabel('Caiyangdian');
ylabel('JianfengFuzhi');
title('pictureofECG');
j=1;
fori=1:
1799
if((ecg2(i)==0)&(ecg2(i+1)>0))L(j)=i;
j=j+1;
elseif((ecg2(i)>0)&(ecg2(i+1)==0))L(j)=i+1;
j=j+1;
end
end
end
j=1;
fori=1:
2:
11;
I(j)=(L(i)+L(i+1))/2;
j=j+1;
end
fori=1:
5;
R_R(i)=I(i+1)-I(i);
end
R_R=(R_R
(1)+R_R
(2)+R_R(3)+R_R(4)+R_R(5))/(5*360)
形态学测心电rr间期(基漂)
膨胀算子:
腐蚀算子:
开运算:
源程序:
clc;clear;
load('F:
\新建文件夹\');
ecg=ecg3(1:
1772);
b=[1,1,1,1,1,1,1,1];
fori=1:
1793;
a=ecg3(i:
i+7);
c=a+b;
[Y,I]=max(c);
ecg3(i)=Y;
end
fori=1:
1786;
a=ecg3(i:
i+7);
c=a-b;
[Y,I]=min(c);
ecg3(i)=Y;
end
fori=1:
1779;
a=ecg3(i:
i+7);
c=a-b;
[Y,I]=min(c);
ecg3(i)=Y;
end
fori=1:
1772;
a=ecg3(i:
i+7);
c=a+b;
[Y,I]=max(c);
ecg3(i)=Y;
end
ecg3=ecg3(1:
1772);
y=ecg-ecg3;
ecg2=y;
[Y,I]=max(ecg2);
M=*Y;
fori=1:
1772;
ecg2(ecg2<=M)=0;
end
subplot(3,1,1);
plot(ecg3),axis([01800-14]),title('pictureofJipiaoECG');
subplot(3,1,2);
plot(y),axis([01800-14]),title('pictureofECG')
subplot(3,1,3);
plot(ecg2),axis([01800-14]),title('pictureofJianfengECG');
j=1;
fori=1:
1771
if((ecg2(i)==0)&(ecg2(i+1)>0))L(j)=i;
j=j+1;
elseif((ecg2(i)>0)&(ecg2(i+1)==0))L(j)=i+1;
j=j+1;
end
end
end
j=1;
fori=1:
2:
11;
[Y(j),I(j)]=max(ecg2(L(i)):
ecg2(L(i+1)));
I(j)=I(j)+L(i);
j=j+1;
end
fori=1:
5;
R_R(i)=I(i+1)-I(i);
end
R_R=(R_R
(1)+R_R
(2)+R_R(3)+R_R(4)+R_R(5))/(5*360)
程序流程图分析
运行结果