一种基于深度学习的全自动纸心电图数字化算法

2b2cd24fe66aac027c2a8bcec398c088.jpeg


 CDA数据分析师 出品  

深度学习在医学检测仪方面的应用

584ad47989d3767e254b5559d835b1ea.png

人们越来越关注将深度学习方法应用于心电图 (ECG),最近的研究表明,神经网络 (NN) 可以仅通过 ECG 预测未来的心力衰竭或心房颤动。然而,神经网络的训练需要大量的心电图,而目前很多心电图只是纸质的,不适合神经网络的训练。在这种背景下开发了一种全自动在线心电图数字化工具,可将扫描的纸质心电图转换为数字信号。

该算法使用自动水平和垂直锚点检测,自动将 ECG 图像分割成 12 个导联的单独图像,然后应用动态形态学算法提取感兴趣的信号。然后,我们在 515 个数字 ECG 上验证了算法的性能,其中 45 个被打印、扫描和重新数字化。在排除具有导联信号重叠的 ECG 后,自动数字化工具在数字化信号和地面实况 ECG(n = 515 标准 3×4 ECG)之间实现了 99.0% 的相关性。在不排除的情况下,所有 3×4 ECG 上导联的平均相关性为 90% 至 97%。在排除具有导联信号重叠的 ECG 后,12×1 和 3×1 ECG 格式的相关性为 97%。在不排除的情况下,12×1 ECG 中一些导联的平均相关性为 60-70%,而 3-by-1 ECG 的平均相关性达到 80-90%。

打印、扫描和重新数字化的心电图,我们的工具与原始信号的相关性达到 96%。我们开发并验证了一种全自动、用户友好的在线 ECG 数字化工具。与其他可用工具不同,这不需要对 ECG 信号进行任何手动分割。我们的工具可以促进大型纸质 ECG 存储库的快速和自动化数字化,使它们能够用于深度学习项目。

方法概述

8c1966c9fd8605c05f3e27679c417e86.png

图1:ECG数字化算法

图 1概述了我们的自动 ECG 数字化算法:首先对纸质 ECG 图像进行预处理,去除任何编辑区域和网格线,然后将其转换为二值图像,从而能够随后检测到 ECG 基线。检测到 ECG 基线后,使用垂直锚点检测每个 ECG 导联信号的上下边界。此步骤还允许算法确定印刷 ECG 上 ECG 导联的布局(即行数)。接下来,使用导联名称检测,每个导联的水平锚点,即要数字化的 ECG 信号的左右边界,分别表示它们的开始和结束,用于裁剪和提取信号12 导联心电图的每个导联。最后,每个导联中的信号都被单独数字化。

数据源

我们的在线心电图数字化工具是使用 12 导联心电图开发的,该心电图记录在伦敦帝国理工学院 NHS 信托基金的患者中。这些 ECG 最初打印在纸上,并以便携式文档格式 (PDF) 的匿名扫描版本提供给研究团队,随后重新格式化为 250 dpi 便携式网络图形 (PNG) 文件。这些心电图通常在传统的 3 × 4 导联配置,带导联 II 节奏条。该数据库仅包含纸质 ECG,没有数字 ECG 地面实况数据。

为了进行验证,我们使用来自美国马萨诸塞州波士顿贝斯以色列女执事医疗中心 (BIDMC) 的匿名 12 导联心电图作为 PNG 文件,格式为 3 × 4, 12 × 1 和 3 × 1 铅配置来验证我们的数字化工具。第二个数据库包含心电图图像和数字心电图地面实况数据。在我们的数字化工具的开发和测试中使用的所有 ECG 都校准到 1 mV = 10 mm,并以 25 mm/s 的纸速记录。

帝国理工学院和 BIDMC 都为该项目提供了伦理审查。所有方法均按照相关指南和法规进行。本研究中使用的数据收集的伦理批准由伦敦卫生研究局研究伦理委员会(汉普斯特德)授予(协议编号 20HH5967,REC 参考 20/HRA/2467,赞助商伦敦帝国理工学院)。所有受试者和/或其法定监护人均获得知情同意。本研究符合赫尔辛基宣言。

方法步骤

预处理

在用于开发的数据库中,所有 ECG 都包含一个标题,该标题由经过编辑的患者信息的黑色像素组成,这可能会对 ECG 轨迹的数字化产生不利影响。因此,在实施数字化过程之前,自动删除了每个 ECG 的编辑区域。编辑区域为黑色,导致编辑区域每一行的平均像素强度为零,而平均像素强度在要数字化的感兴趣区域中变为正标量值。这使得编辑区域能够在 ECG 信号数字化之前被可靠地识别和移除。

a3a1bb4e9b7a3fc74534fa75c5f88818.png

上图演示了自动 ECG 数字化算法概述:第 I 步:对 12 导联 ECG 图像进行预处理,以去除 ECG 和 ECG 网格的编辑部分。然后在垂直锚点的帮助下确定 ECG 基线以获得 ECG 配置。第二步:确定水平和垂直锚点和导联配置后,裁剪 12 导联信号。第三步:从单导联心电图图像中提取心电信号。第四步:使用仪表板工具设计用户界面。

心电图通常打印在包含网格线的纸上,这些网格线在数字化过程之前被移除。鉴于心电图包含红色像素,将图像的红色通道设置为1,并将图像转换为灰度。0.94 的阈值用于区分构成 ECG 信号和网格线的像素。像素> 0.94被丢弃,那些与≤ 0.94被视为 ECG 信号或导联名称的指示。这样就提取了二值图像中的心电图和导联名信息,去除了背景和网格线。处理后的二值图像如图 2 A、B所示。

ECG基线检测和ECG配置确定

预处理后,自动化数字化过程的第一步要求算法检测信号基线并确定 ECG 信号的行数以确定 ECG 配置。我们将 ECG 基线视为在水平轴上具有最高 ECG 信号强度的水平线。

霍夫变换是一种将图像从笛卡尔坐标轴转换为极坐标轴的坐标变换,已用于数字图像的计算机视觉特征提取。在这里,我们应用 Hough 变换来识别 ECG 基线。为了执行霍夫变换并限制合理解决方案的数量,实施了两个限制以避免基线识别不准确。首先,鉴于 ECG 基线预计接近水平,只有线之间−2.5和+2.5考虑围绕 x 轴。其次,鉴于基线预计会延伸到几乎整个图像,任何小于打印 ECG 宽度 80% 的线条都将被丢弃。在 ECG 导联波形之间存在空间的情况下,如果导联间空间不大于图像总宽度的 15%,则合并线条。这确保了相邻导联的 ECG 信号保持独立,并且不会在数字化过程中合并。这种方法还有助于确定印刷 ECG 上的基线数量,并结合下方的垂直锚点检测,提供有关导联配置的信息。

0c9b9db8d5b27306c41910daf1bd39ec.png

图2:裁剪每个导联的单个 ECG 信号图像:(A) 原始 12 导联 ECG 扫描,其中包含患者可识别信息;(B) 基线检测用于确定导联之间的垂直距离;(C) 引线名称检测用于确定引线之间的水平距离;(D) 裁剪以获得每个导联的 ECG 信号。crop 的宽度是引线名称的终点到相邻引线名称的起点的距离,而crop 的高度是检测到的基线在中间的垂直距离的1.4 倍。

自动锚点检测

垂直锚点检测

正如基线检测用于确定垂直锚点以识别空间中的 ECG 信号一样,垂直锚点用于确定每个 ECG 导联中信号的上下边界以识别要数字化的信号。垂直裁剪长度如图2 B所示。上下边界分别定义为 ECG 基线上方和下方两个相邻 ECG 信号(水平面)之间距离的 0.7 倍。

水平锚点检测

水平锚点用于确定要数字化的 ECG 信号的左右边界,分别表示它们的开始和结束。水平面内的导联名称和后续心电信号的起点构成了待数字化心电信号的起点和终点。包含同一 ECG 中其他导联中的 ECG 信号的最大水平距离用于定义图像最右侧导联的右手边界,这些导联没有右手边界。

当这些名称非常接近 ECG 基线时,我们的文本识别模型无法检测到这些名称。在这些情况下,ECG 基线被移除,以使数字化工具能够识别导联名称。此外,对图像应用了形态学膨胀和腐蚀,以增强引导名称与周围信号的可区分性。因此,它使文本识别模型能够更轻松地识别这些案例。膨胀是一种使线条变粗的迭代区域增长算法,腐蚀是一种使线条变细的迭代区域缩小算法,从而使任何感兴趣的对象更容易被自动化过程识别。以这种方式过滤图像中所有感兴趣的对象,以排除那些具有宽高比的对象>5和那些宽度或高度<5或者>500像素。

此后,经过训练的文本字符识别深度学习模型32用于专门检测其他过滤对象中的潜在客户名称。该模型的输入包括 12 导联 ECG 二值图像和 12 个地面实况导联名称文本字符串

(‘I’, ‘II’, ‘III’, ‘avr’, ‘avl’, ‘avf’, ‘v1’, ‘v2’, ‘v3’, ‘v4’, ‘v5’, ‘v6’)。

输出构成了模型检测到的任何文本、文本的相应边界框和置信度分数。置信度分数的阈值被设置为检测潜在客户名称,以便识别其中一个文本字符串会导致置信度分数超过阈值。这样,线索名称对象、线索名称对象的位置、高度和宽度信息被识别用于它们作为水平锚点的实现。从铅名称检测中获得水平距离的过程如图2所示 C. 在某些导联名称检测不成功的情况下,水平锚点是根据在同一 ECG 中成功识别的其他导联名称之间的距离来确定的。在成功识别水平和垂直锚点后,裁剪每条导联的 ECG 片段,如图2 D所示。

单导联心电图提取

从裁剪图像中提取 ECG 信号需要去除“椒盐”噪声,包括稀疏的白色和黑色像素,以及来自其他导联的任何部分 ECG 信号。后者对于会侵占相邻导联的裁剪图像的大幅值 ECG 迹线尤其如此,如图 3所示。为此,我们首先使用图像膨胀来连接感兴趣的 ECG 信号中的任何不连续性,这也防止了与噪声或相邻信号的任何虚假连接。此后,我们将图像中最大的可检测对象视为感兴趣的 ECG 信号,将所有其他对象视为伪影。这个过程如图3所示 这表明此方法保留了感兴趣的信号并删除了裁剪图像中包含的其他对象。

下一步涉及将提取的 ECG 二值图像转换为一维数字 ECG 信号。二值图像中的 ECG 信号包含一组具有 x(时间)和 y(电压)坐标的像素,以 25 mm/s 和 10 mm/mv 进行校准。对于任何给定的时间点(x 轴),几个像素可以构成相应的幅度。鉴于数字 ECG 信号对于每个 x 坐标只能有一个 y 坐标,我们使用二值图像中的中值幅度像素(y 轴)来重建数字 ECG 信号。这生成了以像素为单位的 x 和 y 坐标的数字 ECG 信号。为了将时间和电压值归因于数字 ECG 信号,我们使用每个 ECG 中的节律(或最长信号)条带确定时间和电压分辨率。鉴于标准的 12 导联心电图持续时间为 10 秒,时间分辨率计算为 10 秒除以 x 轴上的像素数。电压-时间分辨率的标准值为 0.1 mV/40 ms = 0.0025 mV/ms,这使得信号的电压分辨率可以通过乘以时间分辨率和电压-时间分辨率 (0.0025 mV/ms) 来确定。这样,数字 ECG 信号的时间计算为 x 轴上的像素数乘以时间分辨率,幅度为 y 轴上的像素数乘以电压分辨率。

78a1ed0ec1bc41998cd222952db18b37.png

图3: 裁剪后的 ECG 图像的清洁过程。在感兴趣区域裁剪之后,扩张过程将可能的断点水平连接起来以获得完整的 ECG 信号。此后,标记过程将最大的对象识别为感兴趣的信号。最后,裁剪图像中的伪影被移除以保留感兴趣的信号。

Dashboard在线工具开发

我们用 Python dash plotly 开发了在线工具。以下步骤为最终用户提供了使用在线工具的分步说明。首先,用户需要扫描并上传心电图图像。提醒用户对所有机密或可识别患者身份的数据进行完全编辑和匿名处理。图像由 Python 方法“cv2.imread”读取,可以支持“cv2.imread”支持的任何图像格式。上传图片后,以固定高度 600 像素 (px) 显示。接下来,下拉栏提供了可视化每个数字化 ECG 信号的选项,并可选择通过放大或最小化图像来更改分辨率。数字化的 ECG 可以下载到包含 13 列的电子表格中,第一列提供时间轴数据,其余 12 列是 ECG 信号电压数据。

统计分析

我们使用 Pearson 相关性和均方根误差 (RMSE) 验证了我们的工具,以确定真实 ECG 信号与我们的数字化工具生成的数字化 ECG 信号之间的关联。验证是在从 BIDMC 获得的独立数据库上进行的。皮尔逊相关系数和均方根误差 (RMSE) 使用 Python 执行(“scipy.stat.pearsonr”用于皮尔逊相关系数,“sklearn.metrics.mean_squared_error”用于 RMSE).

结果

数字化过程的第一步要求算法使用水平和垂直锚点检测打印 ECG 的导联配置,以便于依次裁剪每个导联。其他数字化工具28开发了一个类似的界面,使用线检测算法进行水平和垂直锚点检测,该界面与打印在 6 中的 ECG 一起工作 × 2配置。尽管我们的工具采用了类似的垂直锚点检测方法,但我们还应用了基于深度学习的文本识别模型来检测水平锚点检测的主角名称。这具有允许软件从任何 ECG 配置中提取数据的优势。虽然可以通过将 ECG 图像分成两半来识别水平锚点,但这种方法在导联不等距且仅适用于 6 个导联的 ECG 配置中可能不准确 × 2 心电图配置。其他数字化工具也需要手动标记锚点 ,并且在它们的应用中受到ECG配置的限制。它们也依赖于用户,需要在数字化过程之前手动选择每个导联。相比之下,我们的数字化工具可用于不同配置的 ECG,并且在数字化过程之前不需要手动输入。我们设想这将有助于其在临床和非临床环境中的应用,从而使更大量的印刷心电图能够在更短的时间内数字化。

在导联检测和单个导联裁剪之后,我们的数字化工具提供了一种有效的 ECG 信号提取方法。类似于其他数字化接口,我们应用连接算法来标记和删除小对象。然而,现有的其他数字化方法无法从其他导联中去除所有非 ECG 伪影或部分 ECG 信号,这需要其他过程,例如从图像的左到右选择像素的迭代过程。虽然这种方法可以提取心电图,但它可能是一个复杂且耗时的过程。相比之下,我们在将最大的标记对象识别为感兴趣的 ECG 信号之前,利用动态形态学方法连接 ECG 信号中的任何不连续性。这有效地消除了噪声而不需要进一步的计算处理。

传统上,许多现有的 ECG 数字化工具需要手动分割、移除网格线和处理以提取数字信号。拉维钱德兰等人。和 Lobodzinski 等人。已经应用光学字符识别来扫描和参考带有预定义字符模板数据库的印刷文本,或存储人口统计数据。除了传统方法外,其他人还使用端到端深度学习技术进行心电图数字化。然而,他们的技术在对不同 ECG 图像数据库的通用性方面受到限制,尤其是在不同配置的情况下。

开发我们工具的动机是让用户能够快速、轻松地从他们的纸张、图像或扫描副本生成大量数字心电图。我们预计这对希望在机器学习应用程序中使用 ECG 的个人特别有用。虽然这可以在不数字化 ECG 的情况下实现,例如使用纸质 ECG 或其图像30,但这些过程的任何输出本质上取决于输入的质量。相比之下,我们的工具将具有不同配置的纸质 ECG 数字化,从而为机器学习算法生成标准化输入。

总体而言,我们的数字化工具具有以下优势:

1、完全自动化,无需用户手动输入单导联信号分割。

2. 基于文本识别的导联名称检测使我们的数字化工具可在不同配置的 ECG 图像或纸质 ECG 扫描上通用。

3. 高效的 ECG 提取算法可在需要时快速数字化。

4. 真值数字心电图和数字化心电图波形的皮尔逊相关性和均方根误差是验证心电图数字化工具的有力方法。

参考

Tuncer, T., Dogan, S., Plawiak, P. & Subasi, A. A novel discrete wavelet-concatenated mesh tree and ternary chess pattern based ECG signal recognition method. Biomed. Signal Process. Control 72, 103331 (2022).

Tuncer, T., Dogan, S., Pławiak, P. & Acharya, U. R. Automated arrhythmia detection using novel hexadecimal local pattern and multilevel wavelet transform with ECG signals. Knowl. Based Syst. 186, 104923 (2019).

Baygin, M., Tuncer, T., Dogan, S., Tan, R.-S. & Acharya, U. R. Automated arrhythmia detection with homeomorphically irreducible tree technique using more than 10,000 individual subject ECG records. Inf. Sci. 575, 323–337 (2021).

Kobat, M. A., Karaca, O., Barua, P. D. & Dogan, S. Prismatoidpatnet54: an accurate ECG signal classification model using prismatoid pattern-based learning architecture. Symmetry 13, 1914 (2021).

Attia, Z. I. et al. An artificial intelligence-enabled ECG algorithm for the identification of patients with atrial fibrillation during sinus rhythm: a retrospective analysis of outcome prediction. Lancet 394, 861–867 (2019).

Raghunath, S. et al. Deep neural networks can predict new-onset atrial fibrillation from the 12-lead ECG and help identify those at risk of atrial fibrillation-related stroke. Circulation 143, 1287–1298 (2021).

e5d835896a7238d394920bc76737f016.gif

88d9751da1b4d30fa99c2f8063816c59.gif

b86fd51b03f7182c2ee676526d1a9cca.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值