OpenCV Adaptive Thresholding для изображения HSV

Мы (моя группа и я) хотим иметь возможность отслеживать руку (в основном указательный палец). Рука в основном того же цвета, что и лицо на картинке, но, как вы можете видеть, мы получаем много шума. Он очень хорошо работает с черным «экраном» за рукой.

Теперь проблема в том, что адаптивный порог полезен только на изображениях в градациях серого, и поэтому не очень хорошо распознает руку.

Я пробовал гуглить HSV Adaptive Thresholding, но безуспешно, поэтому я подумал, что у stackoverflow есть несколько отличных идей.

РЕДАКТИРОВАТЬ: Текущий HSV -> Двоичный порог:

inRange(hsvx, Scalar(0, 50, 0), Scalar(20, 150, 255), bina);

Изображение здесь

1

Решение

Я предлагаю вам использовать цветную гистограмму для отслеживания. Camshift делает это, например, с большим успехом.

В OpenCV есть пример кода распредвала.
Увидеть http://docs.opencv.org/master/db/df8/tutorial_py_meanshift.html (очень краткое объяснение)
или же https://github.com/Itseez/opencv/blob/master/samples/cpp/camshiftdemo.cpp (пример кода)

Если вы хотите использовать пороговое значение, вы уже не должны устанавливать пороговое значение для V-канала. Я бы все-таки предложил сделать отдельные адаптивные пороги на H и S.

1

Другие решения

Я бы предложил вам использовать обратная проекция гистограммы алгоритм.

Обратная проекция — это способ записи того, насколько хорошо пиксели данного изображения соответствуют распределению пикселей в модели гистограммы. Вы можете указать модель гистограммы, используя выбранный вручную набор пикселей.
Этот алгоритм выводит изображение, где каждый пиксель имеет значение правдоподобия, цвет этого пикселя — это цвет кожи (аналогичен коже). Затем вы можете указать порог вероятности для настройки производительности.

Это позволит вам найти окрашенные участки кожи на изображении.

Подробнее см .:

1

По вопросам рекламы [email protected]