Как улучшить обнаружение Probalistic Hough-Lines-Transform?
Я пытаюсь обнаружить стрелку часов на видео аналогового дисплея и извлечь значение, на которое оно указывает. Я использую Python с OpenCV для этого.
Что я по сути делаю, это:
- Я использую размытие по Гауссу, чтобы уменьшить шум на текущем изображении.
- Я использую Canny Edge Detection для фильтрации краев
- Я применяю 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)
Я много играл с параметрами, чтобы улучшить результаты. Текущий статус выглядит так:
Как видите, результат просто отмечает часть часовой стрелки. И эта часть не является "хорошей" частью из того, что я могу сказать из Canny Edge Detection. Мне интересно, правильно ли я использую преобразование Хафа или Edge Detection на самом деле не так хорошо, как мне кажется. Поскольку я новичок в области обработки изображений, я был бы признателен за любые советы.