如何从图像中删除线条(由HoughLines检测)?

时间:2019-09-19 05:11:55

标签: python opencv image-processing signal-processing houghlinesp

我遵循(并修改了)this post的最佳答案中的方法。

我的图像有点different。我使用了HoughLinesP并设法检测到大多数红线。 enter image description here

我想知道是否有一种方法可以从图像中删除检测到的线条,而不会损坏其他黑色相交的线条?我只对黑色线条感兴趣。是否有一种更聪明的方法来隔离黑线而不会丢失过多的像素和线段?

2 个答案:

答案 0 :(得分:2)

如果您只想隔离黑线,则可以使用简单的Otsu阈值并按位进行操作-

enter image description here

import cv2

image = cv2.imread('3.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
result = cv2.bitwise_and(image,image,mask=thresh)
result[thresh==0] = (255,255,255)

cv2.imshow('thresh', thresh)
cv2.imshow('result', result)
cv2.waitKey()

答案 1 :(得分:0)

这似乎是信号分离/处理的问题。

我不知道这是否行得通。但这只是预感。试一试,看看是否有效。假设您的图像是卷尺和ECG的卷积图像。因此,如果您在傅立叶域中对此进行处理,也许您可​​以解开这两种信号。

  1. 对图像进行傅立叶变换(FFT)。 (R具有scipy功能)。调用原始图像:fft和fft-image:f
  2. 仅拍摄测量条的图像(但ECG上没有测量到的图案),并为此评估FFT。将此图像称为F,将其命名为g
  3. 计算(F / G)的逆FFT,看看是否可以消除背景影响。

如果此方法不起作用,请在评论部分留下注释。