Как я могу удалить линии (обнаруженные HoughLines) с изображения? - PullRequest
2 голосов
/ 19 сентября 2019

Я следовал (и модифицировал) метод из лучшего ответа в этом посте .

Мое изображение немного отличается .Я использовал HoughLinesP и смог обнаружить большинство красных линий.enter image description here

Мне было интересно, есть ли способ удалить обнаруженные линии с изображения без повреждения других черных пересекающихся линий?Меня интересуют только черные линии.Есть ли более умный способ изолировать черные линии без слишком большого количества пропущенных пикселей и сегментов?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Если вы хотите выделить только черные линии, простое пороговое значение Оцу и поразрядно - и должны это сделать

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()
0 голосов
/ 19 сентября 2019

Это похоже на проблему разделения / обработки сигналов.

Я не знаю, сработает ли это или нет.Но это всего лишь догадка.Дайте ему шанс и посмотрите, работает ли он.Предположим, ваше изображение является свернутым изображением измерительной полоски и ЭКГ.Итак, если вы обработаете это в области Фурье, возможно, вы могли бы распутать эти два типа сигналов.

  1. Возьмите преобразование Фурье (БПФ) изображения.(scipy имеет fft функциональность).Назовите исходное изображение: f и fft-image: F.
  2. Сфотографируйте только мерную полоску (но на ней не будет измеренного рисунка для ЭКГ) и оцените FFT и для этой.Назовите это изображение: g, fft-image: G.
  3. Рассчитать обратное БПФ (F / G) и посмотреть, устраняет ли это фоновый эффект.

В случае, если это не работает, пожалуйста, оставьте примечание в разделе комментариев.

...