【ECG实践篇(1)】MIT-BIH数据库数据解析的方法以及使用rdann获取人工标注注释的方法

目前国际上有三个公认的标准心电数据库:美国心脏学会的AHA数据库,欧洲AT-T数据库以及美国麻省理工学院提供的MIT-BIH数据库。其中MIT-BIH数据库应用的比较广泛,所以,我们做后续训练也就是使用这个数据库的数据。
作为ECG实践篇的开端,我们第一步就是要获取MIT-BIH数据库的心电数据和数据对应的注释,数据解析代码会在文末放送
【需要注意的是】 本文主要讲的是怎么解析从MIT-BIH数据库得到的数据并获取注释,数据下载的方式和数据格式的说明这里就不多说明了。

1.下载MIT-BIH数据库中的心电数据

网上有挺多的这样的教程,例如:https://blog.csdn.net/qq_21905401/article/details/54021052
所以我这里就不再赘述了,有空填坑吧,
MIT-BIH 一共是有48组数据,一起下载就ok了

2.MIT-BIH数据格式解读

MIT-BIH数据库使用自定义的格式来记录心电数据。所以,一个心电记录由三部分组成:
(1)头文件[.hea] ,按ASCLL码字符的方式存储
(2)数据文件[.dat],按二进制存储,每三个字节存储两个数,一个数12bit
(3)注释文件[.atr] ,按二进制存储
blabla 数据格式具体的解释可以见网址 https://wenku.baidu.com/view/aa5f0567866fb84ae45c8d9e.html

3.数据解析方法

我们从MIT-BIH下载了数据之后,如果想后续用它,首先是需要用matlab代码进行数据解析的。如果我们想获取数据中的人工标注注释(用于后续训练的标注),那么可以有两种方式,第一种方式是用刚才提到的matlab代码解析数据,这样可以得到人工标注注释;第二种方式是使用PhysioBank数据库提供的软件工具包WFDB,WFDB中有rdann工具 可以帮助我们快速解析下载得到的.atr,从而获取数据的人工注释。

1.matlab解析心电数据
如果直接打开刚才我们下载好的那三份文件,基本直接看到的是乱码!所以为了将数据转为我们可以操作的形式,首先使用matlab代码rdata.m 对数据进行解析,代码是大佬已经写好了的,我存放在:https://github.com/Candlelight-XYJ/Machine_Learning_ECG

打开rdata.m后,只需要更改一下代码头部的文件路径存放地址:
rdata.m
然后直接点运行即可,代码运行结束后,数据会被读入matlab的workspace中,查看matlab右边workspace的区域,会发现会生成了多个数据,同时也绘制出了信号图
data plot
生成的数据中M文件包含了我们所需的信号值
M-data
ANNOT文件,存储了该记录中各心拍的人工标注类型代码
Annot
ANNOT文件中的数字,分别代表了当时人工标注的心脏的情况它提供给了我们各心拍专家诊断的结果,用于后续深度学习算法的标签。比如,数字1代表心脏正常搏动,数字2代表左束支传导阻滞,等等,数字所对应的心脏疾病的具体含义可见:
https://wenku.baidu.com/view/aa5f0567866fb84ae45c8d9e.html
anno

ATRTIME文件存储了各心拍的人工标注位置,即它记录了数据中几分几秒出现了一个心拍。而这个矩阵的意义在于后续帮助我们评估心拍定位算法的准确性,或是直接根据它提供的人工标注位置截取心拍。
time

2.使用PhysioBank中提供的rdann注释工具获取record中的注释信息
PhysioBank提供了一个数据库开发工具包WFDB,来帮助我们分析解读PhysioBank数据库中的数据
WFDB中包含了多个工具,其中 rdann 工具可以用来读取并显示指定记录的注释文件;WFDB这个软件包在多个平台都可以运行,我用的是linux版本的,WFDB下载地址是:https://github.com/Candlelight-XYJ/Machine_Learning_ECG

rdann的命令格式为

rdann -a 注释名 -r 记录名 -f 记录起始时间 -t 记录终止时间 -p 选定的要打印的注释类型(例如V代表室性早博,A代表房性早搏) > test.txt

例如下列命令的含义是:将记录100s中的第一个五分钟内所有的房性早搏的注释打印输出到test.txt文件中

rdann -a atr -r 100s -f 0 -t 5:0 -p A > test.txt

执行上述命令后得到的结果如下:

ubuntu@VM-0-8-ubuntu:~/tools/wfdb-10.6.1/data$ rdann -a atr -r 100s -f 0 -t 5:0 -p A
    0:05.678 2044 A 0 0 0

可以看到在 0:05.678时出现了房性早搏
需要注意的是
rdann的输入,-r命令后面输入的不是文件名称,而是记录名称;例如现在我有一个心电记录100s,它由100s.hea , 100s.atr , 100s.dat组成,那么记录名称就是100s 不是100s.hea,也不是100s.atr ;因此可以看到上面的例子中我的命令是 -r 100s ,100s后面并没有接任何的文件后缀名!
还需要注意的是 -a后面的输入是atr ,不是100s.atr ; 因为-r 100s这条命令帮助我们读入了100s这条记录,所以-a atr的含义就是读取100s这条记录中的.atr注释文件,因此我们在使用-a命令时,只用指定记录所对应的注释文件的后缀名即可,不需要输入整个文件名!

rdann更多参数可见:https://www.physionet.org/physiotools/wag/rdann-1.htm
感谢博主珈天的博客:https://blog.csdn.net/qq_15746879/article/details/80329711

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值