加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何从图片中提取心电图图形

(2022-06-26 14:54:04)
标签:

ge

holter

jpg

ecg

python

分类: 心电(ECG)
HOLTER的波形,我们一般在屏幕上可以看得很清楚,但是这是图片像素的方式,如何从图片中提取成波形数据,就是本文所做的一项尝试。
本文的图片是黑白颜色的某个导联波形,如图1所示,是彩色图片。

如何从图片中提取心电图图形
图1 原始图形
对该图片进行黑白处理,这样黑色的像素值为0,白色像素值为255,其他颜色采用灰度.
image =Image.open(filename).convert('RGB')
new_im = region.convert("L")
Image2 = new_im.load()   #如图2显示

如何从图片中提取心电图图形
图2 调整为黑白颜色图形
在图二的基础上,将所有像素不是黑白颜色的,全部设置为黑色
Image2 = new_im.load()
for r in range(new_im.size[0]):
    for c in range(new_im.size[1]):
        px = Image2[r,c]
        #检测灰度颜色都设置为黑色
        if (px != 255) and (px!=0):
            # print(px)
            Image2[r,c] = 0
new_im.show() #如图3显示

如何从图片中提取心电图图形
图3 去除背景网格和文字的心电图形
可以看到在图3的左边还有零散的白色小点,这是原来文字部分。
我们可以采用3x3的块分析法,当某个白点为中心点,其周围的其他8个点相加,如果SUM<256,则意味着此白点只有一个点与其关联,很有可能是孤点,可以去除。
row = new_im.size[0]
col = new_im.size[1]

#清除独立的白点
for r in range(row):
    for c in range(col):
        px = Image2[r,c]
        if(px>0):
            if(r>1) and (c>1) and (r
                val = Image2[r-1, c]+Image2[r, c+1]+Image2[r+1, c]+Image2[r, c-1]+Image2[r-1, c-1]+Image2[r-1, c+1]+Image2[r+1, c-1]+Image2[r+1, c+1]
                if(val<256):#周围只有1个或0个点
                    Image2[r, c] = 0  #设置为黑色

new_im.show() #如图4显示

如何从图片中提取心电图图形
图4 去除个别零散白点

从图4中,获取所有白点像素,将X,Y添加到相应的队列中
line_x=[]
line_y=[]
for r in range(row):
    for c in range(col):
        px = Image2[r,c]
        if(px>0):
            line_x.append(r); # X 队列
            line_y.append(col-c); # Y 队列

plt.figure(figsize=(40, 2))
title = " ECG "
plt.title(title)
plt.plot(line_x, line_y)
plt.show() #显示图形

如何从图片中提取心电图图形
图5 提取波形数据后还原的波形 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有