从印刷的ecg中提取图形

时间:2018-05-18 11:47:47

标签: python python-3.x opencv image-processing cv2

我在堆栈上发现了一个这样的问题,但没有回答,加上我的形象不同。

我在下面看到这张图片。

enter image description here

我想提取图像上的图形。我已经尝试了很多方法来提取它。阈值似乎不起作用,因为rgb值非常接近,尤其是在图的峰值处。我已经尝试使用渐变来检测图像上的流量,但它也失败了。我尝试组合不同的颜色空间(HLS,YUV,LAB)它有一些输出,但它删除了图形的某些部分。我还尝试创建8X8或更小的掩码矩阵,以获得平均像素值并删除其下的所有内容。还创建中值过滤。最后两个结合前面提到的一些技术有所帮助,但它们正在消除峰值,因为差异最小。你知道有什么更好的方法可以帮助我吗?

注意:我使用Python

1 个答案:

答案 0 :(得分:1)

U可以使用阈值处理图像(HSV)

import cv2
import numpy as np
from PIL import Image
import PIL.ImageOps   

img=cv2.imread("ekg.jpg")
BLACK_MIN = np.array([0, 0, 0],np.uint8)
BLACK_MAX = np.array([255, 255, 80],np.uint8)
hsv_img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
frame_threshed = cv2.inRange(hsv_img, BLACK_MIN, BLACK_MAX)
cv2.imwrite('threshed.jpg', frame_threshed)
image = Image.open('threshed.jpg')
inverted_image = PIL.ImageOps.invert(image)
inverted_image.save('invert.jpg')
img2=cv2.imread("invert.jpg")
cv2.imshow('image1', img2)

enter image description here