OpenCV 检测并追踪图像上最暗的线条并覆盖网格

OpenCV detect and trace darkest lines on image and overlay a grid

我正在尝试在 EKG 上重新创建描记图,然后将它们叠加到新网格上,但我对如何最好地描记实际描记图感到困惑。在接下来的图像中,有 6 个独立的描摹我想在基本上带有网格的白色背景上重新创建。任何帮助将不胜感激。

我已经设法找到边缘并从 jpg 中裁剪它,所以我只剩下这张图片:

我正在尝试使用 OpenCV 的 findContours 或 Hough Line 变换来检测描​​迹,但是在高斯模糊之后我的边缘发现给我留下了:.. 这不是很有帮助。

粗线看起来像这样:

有人能指出我正确的方向吗?提前致谢。

编辑:

我做了局部直方图,然后是高斯模糊和另一个 Canny 边缘检测。局部直方图图像为:

然后精明的边缘检测是:

您可以尝试使用 Sobel 和 Laplacian 检测器,如下所示

img = cv2.imread('experiment.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.GaussianBlur(img,(3,3),0)
laplacian = cv2.Laplacian(img,cv2.CV_64F)    
sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=1) 

figure = plt.figure(figsize=(10,10))

sobel = figure.add_subplot(1,2,1)
sobel.imshow(sobelx,cmap='gray')
sobel.set_title('Sobel in x')
sobel.set_axis_off()

laplacianfig = figure.add_subplot(1,2,2)
laplacianfig.imshow(laplacian,cmap='gray')
laplacianfig.set_title('Laplacian')
laplacianfig.set_axis_off()

给你下面的输出

如你所见,Sobel算子可以用来检测线条。也许您可以绘制像素强度低于平均值的那些点。