Обнаружение линий ладони с OpenCV в Python - PullRequest
0 голосов
/ 24 сентября 2019

Я изучаю OpenCV с python, работая над проектом, целью которого является обнаружение линий ладони.

enter image description here

В основном я использовал Обнаружение канни-края , а затем применил Обнаружение прямой линии накрая, но результат не так хорош.

enter image description here

Вот исходный код, который я использую:

original = cv2.imread(file)
img = cv2.cvtColor(original, cv2.COLOR_BGR2GRAY)
save_image_file(img, "gray")

img = cv2.equalizeHist(img)
save_image_file(img, "equalize")

img = cv2.GaussianBlur(img, (9, 9), 0)
save_image_file(img, "blur")

img = cv2.Canny(img, 40, 80)
save_image_file(img, "canny")

lined = np.copy(original) * 0
lines = cv2.HoughLinesP(img, 1, np.pi / 180, 15, np.array([]), 50, 20)
for line in lines:
    for x1, y1, x2, y2 in line:
        cv2.line(lined, (x1, y1), (x2, y2), (0, 0, 255))
save_image_file(lined, "lined")

output = cv2.addWeighted(original, 0.8, lined, 1, 0)
save_image_file(output, "output")

Я пробовал разные наборы параметров размера ядра Гаусса и Cannyнизкие / высокие пороги, но в результате либо слишком много шумов, либо пропущены (часть) основные линии.Приведенная выше картина - это уже лучшее, что я получаю, пока ...

Нужно ли что-то делать, чтобы улучшить результат, или любой другой подход мог бы получить лучший результат?

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 24 сентября 2019

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

  • с использованием морфологических фильтров,

  • классификация линий (в соответствии с их длиной, размерами на контрастной области ... и т. Д.)

  • улучшение категорий путем деления области ладони (без пальцев) на сетку (4x4 .. где 4 вертикальных угла пальца могут определять конфиги сетки).

  • вычислить изображение градиента, ориентация линий также может помочь
  • Выполнить поиск по алгоритму«кумулятивное обнаружение линий уровня», это может помочь для определенности обнаруженных линий
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...