如何从图片中提取心电图图形
标签:
geholterjpgecgpython |
分类: 心电(ECG) |
HOLTER的波形,我们一般在屏幕上可以看得很清楚,但是这是图片像素的方式,如何从图片中提取成波形数据,就是本文所做的一项尝试。
for c in
range(new_im.size[1]):
px = Image2[r,c]
#检测灰度颜色都设置为黑色
if (px != 255) and (px!=0):
#
print(px)
Image2[r,c] = 0
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 #设置为黑色
for c in
range(col):
px = Image2[r,c]
if(px>0):
line_x.append(r); # X 队列
line_y.append(col-c); # Y 队列
本文的图片是黑白颜色的某个导联波形,如图1所示,是彩色图片。
对该图片进行黑白处理,这样黑色的像素值为0,白色像素值为255,其他颜色采用灰度.
image =Image.open(filename).convert('RGB')
new_im = region.convert("L")
Image2 = new_im.load()
#如图2显示
Image2 = new_im.load()
for r in range(new_im.size[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):
new_im.show() #如图4显示
图4 去除个别零散白点
从图4中,获取所有白点像素,将X,Y添加到相应的队列中
line_x=[]
line_y=[]
for r in range(row):
plt.figure(figsize=(40, 2))
title = " ECG "
plt.title(title)
plt.plot(line_x, line_y)
plt.show() #显示图形
图5
提取波形数据后还原的波形

加载中…