Как улучшить обнаружение Probalistic Hough-Lines-Transform?

Я пытаюсь обнаружить стрелку часов на видео аналогового дисплея и извлечь значение, на которое оно указывает. Я использую Python с OpenCV для этого.

Что я по сути делаю, это:

  1. Я использую размытие по Гауссу, чтобы уменьшить шум на текущем изображении.
  2. Я использую Canny Edge Detection для фильтрации краев
  3. Я применяю Probalistic Hough Line Transform

Код для этого:

def detect_clock_hand(img, center):
    # Convert to gray
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

    # Apply gaussian blur
    blur = cv2.GaussianBlur(gray, (11, 11), 0, 0)

    # Apply sobel edge detection
    edges = cv2.Canny(blur, 30, 40)

    # Apply HoughTransform
    lines = cv2.HoughLinesP(edges, 10, np.pi / 180, 5, 15, 50)

    #Filter lines in a given radius
    filtered_edges = util.filter_edges(lines, center)

Я много играл с параметрами, чтобы улучшить результаты. Текущий статус выглядит так:

  1. благоразумный благоразумный

  2. поджилки HoughLineTransformP

Как видите, результат просто отмечает часть часовой стрелки. И эта часть не является "хорошей" частью из того, что я могу сказать из Canny Edge Detection. Мне интересно, правильно ли я использую преобразование Хафа или Edge Detection на самом деле не так хорошо, как мне кажется. Поскольку я новичок в области обработки изображений, я был бы признателен за любые советы.

0 ответов

Другие вопросы по тегам