Мы (моя группа и я) хотим иметь возможность отслеживать руку (в основном указательный палец). Рука в основном того же цвета, что и лицо на картинке, но, как вы можете видеть, мы получаем много шума. Он очень хорошо работает с черным «экраном» за рукой.
Теперь проблема в том, что адаптивный порог полезен только на изображениях в градациях серого, и поэтому не очень хорошо распознает руку.
Я пробовал гуглить HSV Adaptive Thresholding, но безуспешно, поэтому я подумал, что у stackoverflow есть несколько отличных идей.
РЕДАКТИРОВАТЬ: Текущий HSV -> Двоичный порог:
inRange(hsvx, Scalar(0, 50, 0), Scalar(20, 150, 255), bina);
Я предлагаю вам использовать цветную гистограмму для отслеживания. 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.
Я бы предложил вам использовать обратная проекция гистограммы алгоритм.
Обратная проекция — это способ записи того, насколько хорошо пиксели данного изображения соответствуют распределению пикселей в модели гистограммы. Вы можете указать модель гистограммы, используя выбранный вручную набор пикселей.
Этот алгоритм выводит изображение, где каждый пиксель имеет значение правдоподобия, цвет этого пикселя — это цвет кожи (аналогичен коже). Затем вы можете указать порог вероятности для настройки производительности.
Это позволит вам найти окрашенные участки кожи на изображении.
Подробнее см .: