一、PhysioNet简介
PhysioNet是一个提供生理信号记录的数据库(PhysioBank)和相关的开源软件(PhysioToolkit)的机构。PhysioBank拥有大量心电信号数据,大部分都是免费提供的,可以从网站上直接下载。
网址链接: https://physionet.org/
图1:PhysioNet网页界面
MIT-BIH Arrhythmia Database就是其中的一个数据库。
图2:PhysioNet数据库
二、MIT-BIH心电数据库(MIT-BIH Arrhythmia Database)
2.1 MIT-BIH数据库简介
由美国麻省理工学院(MIT)和贝斯以色列医院(Beth Israel Hospital)联合建立。这个数据库包含了48个半小时常驻ECG记录,来自47名受试者,记录了各种心律失常现象。这些数据已被广泛用于心律分析研究和心律失常检测器的评估。MIT-BIH数据库的采样频率为360Hz,分辨率为11位,每个记录持续时间超过30分钟,采用Format 212格式存储。此外,该数据库还提供了人工标注的心拍位置和类型信息,方便研究者使用。MIT-BIH数据库是免费提供的,可以通过PhysioNet网站下载。
图3:MIT-BIH Arrhythmia Database 数据示例
2.2 MIT-BIH数据库链接
MIT-BIH Arrhythmia Database MIT-BIH心律失常数据库-概述
MIT-BIH Arrhythmia Database Directory MIT-BIH心律失常数据库-目录
MIT-BIH Arrhythmia Database v1.0.0 MIT-BIH心律失常数据库-数据说明
PhysioBank A,TM MIT-BIH心律失常数据库-在线显示数据
(Tips:MIT-BIH心律失常数据库-在线显示数据的具体内容,在下一篇文章中再继续解释哈。)
2.3 MIT-BIH数据库组成
MIT-BIH数据库中的每个记录由三个文件组成:头文件(.hea)、数据文件(.dat)、注释文件(.atr)。
2.3.1 头文件(.hea)
以ASCII格式存储,包含了记录的元数据,如采集数据的通道数、采样频率、总采集数、记录数据文件的存储格式、增益、偏移、模拟数字转换器的分辨率以及患者指南提到的个人附加信息。
图4:头文件示例(100号记录)
以100.hea的注释信息为例,它提供了记录的基本信息和信号的技术规范。下面是对这些信息的详细解释:
100 2 360 650000
这一行是记录行,包含了心电信号记录的基本描述。
100:这是记录的编号或文件名。
2:表示记录中包含两个采样率为360Hz的信号通道,通常这两个通道是MLII和V5导联。
360:采样率,单位是Hz(赫兹),表示信号每秒采集360次。
650000:每个信号通道的样本数,表示每个通道有650000个采样点。
100.dat 212 200 11 1024 995 -22131 0 MLII
100.dat 212 200 11 1024 1011 20052 0 V5
这两行是信号技术规范说明行,描述了信号的存储格式和一些技术参数。
100.dat:信号存储的文件名。
212:信号以212格式存储,这是一种压缩格式,每三个字节存储两个12位的样本值。 o 200:每个信号的增益,表示每200个ADC(模拟/数字转换器)单位对应1毫伏(mV)的电压变化。
11:ADC的分辨率是11位。
1024:ADC的零值,表示没有输入电压时的ADC输出值。
995和1011:不同信号的第一采样点的值,表示信号起始的采样值。
-22131和20052:65万个采样点的校验数,用于数据完整性的检验。
0:表示输入和输出可以以任意尺寸的块来执行。
MLII和V5:信号描述字段,表示信号采自的导联,MLII是矫正肢体导联II,V5是胸前导联V5。
# 69 M 1085 1629 x1:这是注释字符串,提供了患者的基本信息和记录数据。
69:患者的年龄。
M:患者的性别,M代表男性。
1085和1629:记录的开始和结束时间,或者是与记录相关的其他时间信息。
x1:可能是与记录相关的其他标识信息。
# Aldomet, Inderal:这是另一条注释字符串,列出了患者使用的药物。
Aldomet和Inderal:是患者使用的药物名称。
Aldomet(甲基多巴)是一种中枢性交感神经抑制药,它通过刺激中枢α2受体,抑制交感神经活动,从而降低外周血管阻力和心输出量。
Inderal(盐酸普萘洛尔)是一种β-受体阻断剂,可以降低心肌收缩性、自律性、传导性和兴奋性,减慢心率,减少心输出量和心肌耗氧量。
这些信息对于分析患者的心电信号和诊断心律失常情况很重要,因为某些药物会影响心电信号的形态。
2.3.2 数据文件(.dat)
以二进制格式存储,采用212格式,每三个字节存储两个12位的数值,代表了心电信号的振幅。
图5:数据文件示例(100号记录)
文件格式:212格式意味着每两个字节(16位)存储一个12位的数值。由于一个字节是8位,所以两个字节可以存储16位数据。
数据存储:每三个字节组成一个数据单元,存储两个12位的数值。这意味着每个数据单元占用24位(3字节 * 8位/字节)。
数值表示:由于每个数值是12位,所以它们是以二进制补码形式存储的。这意味着数值的范围是从-2048到+2047(因为12位可以表示的数值范围是2^12 - 1)。
字节序:在二进制文件中,字节序(大端或小端)是非常重要的。大端字节序是指最重要的字节存储在最低的内存地址,而小端字节序则是最重要的字节存储在最高的内存地址。
数据解析:要解析这样的文件,您需要按照每三个字节一组的方式读取数据,然后将每组的前两个字节和后一个字节的前4位组合起来,形成一个12位的数值。由于是212格式,您需要将每组的前两个字节视为一个16位的数值,然后取其高12位作为第一个12位数值,将后一个字节的前4位与前两个字节的低4位组合成第二个12位数值。
示例解析:要解析212格式的心电信号文件,您需要按照每三个字节一组的方式读取数据,并将它们转换为两个12位的十进制数值。以三个字节 E3 33 F3
为例,解析步骤如下:
1、字节拆分与组合:
- 三个字节分别为:
E3
(第1字节)、33
(第2字节)、F3
(第3字节)。 - 取第2字节
33
中的前4位(第一个3
)移动到第1字节E3
的前面,形成3E3
(12位)。 - 取第2字节
33
中的后4位(第二个3
)移动到第3字节F3
的后面,形成3F3
(12位)。
2、转换为十进制:
3E3 的二进制表示为 001111100011。
即:3E316=3×16^2+E×16^1+3×16^0=3×256+14×16+3×1=768+224+3=995
3F3 的二进制表示为 001111110011。
即:3F316=3×16^2+F×16^1+3×16^0=3×256+15×16+3×1=768+240+3=1011
每组三个字节经过上述操作后,生成的两个12位数值表示心电信号的两个幅值点。这种格式使得每组3字节可以高效存储两个信号幅值点。可依据下列十六进制到十进制的转换结果,验证上述图5中的其他十六进制示例,结果均正确。
图6:十六进制到十进制转换结果(部分展示)
3、调整基线并转换为实际幅值:
- 由于原始信号中包含偏移(以1024为基线),需要减去1024:即:M=M−1024
- 将结果除以200,以获得真实的信号幅值: 即:M=M/200
图7:心电信号真实幅值转换结果(部分展示)
2.3.3 注释文件(.atr)
以二进制格式存储,包含了心电专家对相应心电信号的诊断信息,如心拍位置和类型。
图8:注释文件示例(100号记录)
MIT 格式是一种紧凑型格式,每一注释的长度占用偶数个字节空间,多数情况下是占用两个字节,多用于在线的注释文件。而 AHA 格式的每一注释占用 16 个字节的空间,多用于交换文件的情况。心律失常数据库采用的 MIT 格式。
从文件中的第一字节不为 0 可以判断该文件是以 MIT 格式存储的。
从第一字节开始按照 MIT 格式进行分析,首先读出 16 位值 0x7012 ,其高 6 位的值为 0x 1C ( 十进制 28) ,低 10 位的值为 0x12 ,该类型代码为 28 ,代表意义是节律变化,发生时间在 0.05 秒( 18/360Hz )。
接着读出后面的 16 位值 0xFC03 ,其高 6 为的值为 0x 3F (十进制 63 ),低 10 位的值为 0x03 ,该类型代码为 63 ,代表的意义是在该 16 位值后附加了 3 个(低 10 位值代表的数)字节的辅助信息,若字节个数为奇数,则再附加一个字节的空值。
在本例中就是 “28 4E 00 00 ” ,然后再从下一字节读 16 位值 0x043B ,其高 6 位的值为 1 ,低 10 位的值为 0x3B (十进制 59 ),该类型码 1 代表正常心搏,发生时间为 0.213 秒(( 18+59 ) /360Hz );依次类推即可读出所有的注释,当读到的 16 位值为 0 时,就表示到了文件尾。
心电波形与对应的注释标签图如下所示。
图9:心电波形与对应的注释标签(100号记录,前10秒片段)
以上就是MIT-BIH心电数据库概述的全部内容啦。
我们下期再见,拜拜(⭐v⭐) ~
(Ps:有代码实现需求,请见主页信息,谢谢支持!~)