新浪博客

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

2022-06-26 14:54阅读:
HOLTER的波形,我们一般在屏幕上可以看得很清楚,但是这是图片像素的方式,如何从图片中提取成波形数据,就是本文所做的一项尝试。 本文的图片是黑白颜色的某个导联波形,如图1所示,是彩色图片。
如何从图片中提取心电图图形
图1 原始图形
对该图片进行黑白处理,这样黑色的像素值为0,白色像素值为255,其他颜色采用灰度.
image =Image.open(filename).convert('RGB')
new_im = region.convert('L')
Image2 = new_im.load() #如图2显示
如何从图片中提取心电图图形
图2 调整为黑白颜色图形
在图二的基础上,将所有像素不是黑白颜色的,全部设置为黑色
Im
age2 = 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 提取波形数据后还原的波形

我的更多文章

下载客户端阅读体验更佳

APP专享