#glsl #webgl #shader #skin #color-detection
#glsl #webgl #шейдер #Кожа #определение цвета
Вопрос:
Я хочу удалить из видео в прямом эфире фон руки. Что бы это ни было. Моя цель — сохранить только руку, которая будет двигаться, и я хочу, чтобы это было сделано в шейдерах WebGL и GLSL.
Я реализовал это:https://softexpert.wordpress.com/2007/10/17/skin-color-detection / но результаты не очень хорошие. Я также реализовал это:http://www.wseas.us/e-library/conferences/2011/Mexico/CEMATH/CEMATH-20.pdf но опять же я хотел бы получить несколько советов по ее улучшению или сделать что-то еще.
Спасибо.
Комментарии:
1. Я ничего не знаю об обнаружении обложки, но проблема во многом похожа на то, что вы хотите выполнить обнаружение объекта / границы. Возможным решением было бы определить границы объекта, а затем найти объекты, которые в основном или почти полностью соответствуют цвету кожи. Это исключило бы мигание одного пикселя при наличии некоторых случайных ошибок цвета. Возможно, удастся определить, что некоторые татуировки являются частью кожи, даже если они имеют совсем другой цвет. Я не знаю ни одного хорошего алгоритма, который работал бы с ограничениями, присущими webgl. Рабочий стол GL / CL / Vulkan — более простая среда для многих алгоритмов.
2. @PauliNieminen Я на самом деле хочу обрабатывать в режиме реального времени прямую трансляцию, которая поступает с камеры. И я хочу в основном определить руку человека и удалить все остальное. У вас есть какие-нибудь идеи по этому поводу?
3. Цвет обложки и яркость по-прежнему требуют тщательного. У людей совершенно разные цвета лыж, что может вызвать некоторые проблемы, а разница в яркости легко возникает из-за разного освещения вокруг камеры. Но, возможно, это может быть комбинация двух алгоритмов. В режиме реального времени выполняется простое обнаружение кожи на основе размытого цвета, в то время как яркость и параметры цвета кожи для обнаружения будут регулярно вычисляться в фоновом режиме с использованием более дорогого алгоритма, который может быть основан на определении границ / формы.
4. Верно. Обработка изображений в реальном времени очень ограничена. Но вы могли бы попробовать точно настроить порог обнаружения с помощью более дорогого фонового алгоритма, который можно запускать примерно раз в 1-5 секунд. Если фоновый поток может обеспечить лучшие пороговые значения, вы получаете меньше ложных срабатываний и негативов. Очень умному фоновому процессу может даже удастся установить некоторую ограничивающую рамку для обнаружения обложки, чтобы избежать проверки пикселя на очень большом расстоянии от обложки. Но это нужно было бы объединить с определением вектора перемещения по кадру, чтобы сохранить ограничивающую рамку вокруг области кожи.
5. Сплошной цвет фона. Это значительно упрощает процесс мышления. Вместо этого вы могли бы стремиться определять фон. Если вы хотите улучшить свои пороговые значения, вы можете попробовать создать гистограммы из фона и области обложки (в разных цветовых пространствах). Затем вы можете выбрать цветовое пространство, в котором у вас больше всего различий, что позволяет использовать очень широкие пороговые значения и, возможно, только минимальное размытие. Это, конечно, предполагает наличие четкой разницы, подобной той, что используется в кино / на телевидении при использовании «ключевого» цвета фона для объединения двух или более изображений в режиме реального времени.