开源心电图信号提取系统
从纸质心电图记录中提取数字ECG信号的Python工具
支持网格检测、信号保护、几何校正与物理单位标定
自动检测心电图纸网格间距(1mm或5mm小格) 通过投影分析精确估算像素密度与比例
在网格移除过程中智能保护ECG波形轨迹 避免损坏关键QRS波群等重要特征点
使用Hough变换检测倾斜角度并自动纠正 确保图像网格线水平垂直对齐
基于标准ECG纸张参数(25mm/s, 10mm/mV)自动推算标尺 提供准确的时间轴与电压轴物理单位换算
支持红色、黑色等多种颜色ECG轨迹的识别与提取 适配不同厂商和打印方式的心电图纸张
使用Zhang-Suen算法将ECG波形细化为单像素骨架 便于后续波形分析与特征点检测
读取彩色图像,转换色彩空间,进行初步降噪和增强
使用Hough线检测倾斜角度,旋转图像使网格线水平垂直
通过垂直投影分析检测网格间距,建立像素到物理单位映射
基于颜色空间分离提取可能的ECG波形区域提示
生成保守的保护掩码,标记在网格移除过程中需要保留的像素
使用掩码修复网格线像素,同时保留ECG波形
使用CLAHE增强对比度,细化波形为单像素骨架便于分析
# 安装必需的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/像素")
将历史纸质心电图档案批量转换为数字格式 便于长期保存与电子病历系统集成
为深度学习模型提供干净的训练数据 支持自动化心电图诊断算法研发
批量处理历史ECG数据用于回顾性研究 提供标准化的信号处理流程保证数据质量
用于心电图信号处理算法开发与教学演示 完整开源代码适合学习和二次开发