📊 UPECG

开源心电图信号提取系统

从纸质心电图记录中提取数字ECG信号的Python工具
支持网格检测、信号保护、几何校正与物理单位标定

100%
开源免费
7+
处理阶段
Python
开发语言
医疗级
精度标准

核心功能

🔍

智能网格检测

自动检测心电图纸网格间距(1mm或5mm小格) 通过投影分析精确估算像素密度与比例

🛡️

信号保护机制

在网格移除过程中智能保护ECG波形轨迹 避免损坏关键QRS波群等重要特征点

📐

几何校正

使用Hough变换检测倾斜角度并自动纠正 确保图像网格线水平垂直对齐

⚖️

物理单位标定

基于标准ECG纸张参数(25mm/s, 10mm/mV)自动推算标尺 提供准确的时间轴与电压轴物理单位换算

🎨

多色轨迹支持

支持红色、黑色等多种颜色ECG轨迹的识别与提取 适配不同厂商和打印方式的心电图纸张

🔬

骨架提取

使用Zhang-Suen算法将ECG波形细化为单像素骨架 便于后续波形分析与特征点检测

7阶段处理流程

1

图像读取与预处理

读取彩色图像,转换色彩空间,进行初步降噪和增强

2

几何校正

使用Hough线检测倾斜角度,旋转图像使网格线水平垂直

3

网格检测与标定

通过垂直投影分析检测网格间距,建立像素到物理单位映射

4

轨迹提示

基于颜色空间分离提取可能的ECG波形区域提示

5

保护掩码

生成保守的保护掩码,标记在网格移除过程中需要保留的像素

6

网格移除

使用掩码修复网格线像素,同时保留ECG波形

7

对比度增强与骨架提取

使用CLAHE增强对比度,细化波形为单像素骨架便于分析

技术栈

🐍 Python 3.6+
📷 OpenCV
🔢 NumPy
🔬 Scikit-Image
📊 SciPy

快速开始

# 安装必需的Python包
pip install opencv-python numpy scikit-image scipy

# 进入upecg项目目录
cd upecg
# 处理单张ECG图像
python ecg_preproc_poc.py ecg1.png

# 输出文件:
# - preproc.png  (网格移除后的图像)
# - mask.png     (ECG轨迹骨架掩码)
# - 控制台输出网格标定信息
import cv2
from ecg_preproc_poc import process_ecg_image

# 读取图像
img = cv2.imread('ecg1.png')

# 处理
result_img, mask, grid_info = process_ecg_image(img)

# 查看标定信息
print(f"像素密度: {grid_info['pixels_per_mm']}")
print(f"采样率: {grid_info['sampling_rate_hz']} Hz")
print(f"时间分辨率: {grid_info['time_per_pixel_s']*1000} ms/像素")

处理效果演示

应用场景

🏥

医疗档案数字化

将历史纸质心电图档案批量转换为数字格式 便于长期保存与电子病历系统集成

🤖

AI模型训练

为深度学习模型提供干净的训练数据 支持自动化心电图诊断算法研发

📊

临床研究

批量处理历史ECG数据用于回顾性研究 提供标准化的信号处理流程保证数据质量

🔬

科研教学

用于心电图信号处理算法开发与教学演示 完整开源代码适合学习和二次开发