Хороший метод для обнаружения присутствия определенной особенности на изображении

StackOverflow https://stackoverflow.com/questions/3272218

Вопрос

Я создала видеочат, но, как обычно, многим мужчинам нравится эээ, злоупотреблять сервисом (я оставляю на ваше усмотрение выяснять природу таких злоупотреблений), что никоим образом не одобряю ни я, ни большинство моих пользователей.Нет, я не крал chatroulette.com :-) Честно говоря, мне немного неловко поднимать этот вопрос здесь, но мой вопрос технический и довольно конкретный:

Я хочу фильтровать / запрещать пользователям на основе их видеоконтента, когда этот контент носит оскорбительный характер, например, пользователь показывает свой мусор на камеру.Какой алгоритм сравнения изображений соответствовал бы моим потребностям?

Я потратил неделю или около того на чтение нескольких научных работ и познакомился с множеством теорий и их реализаций, таких как SIFT, SURF и некоторые подходы, основанные на вейвлетах.Конечно, у каждого из них есть свои недостатки и преимущества.Но поскольку природа моего сравнения изображений весьма специфична - отказать в обслуживании, если определенная часть тела видна на видео в различных положениях, - мне интересно, какой из методов подойдет мне лучше всего?

В настоящее время я склоняюсь к чему-то из следующего (основанному на вейвлетах плюс кое-что, что, как я предполагаю, является некоторыми запатентованными инновациями):http://grail.cs.washington.edu/projects/query/

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

В качестве альтернативы, я думаю, что могла бы подойти реализация SURF, но я боюсь, что это может дать мне ложные срабатывания.Можно ли обучить такую реализацию распознавать / придавать значение конкретной функции?

Я знаю, что здесь существует множество вопросов по SURF и SIFT, но большинство из них носят общий характер, поскольку обычно объясняют, как "сравнить" два изображения.Мое сравнение носит специфический характер, а не общий.Мне нужен метод, который не просто сравнивает два похожих изображения, но тот, который может дать мне ранг / индекс / вес для объекта (однако метод позволяет мне описать его, будь то само изображение или что-то еще), присутствующее в изображении.

Это было полезно?

Решение

Похоже, вам нужно не обнаружение объектов, а распознавание объектов, т.е.Метод Виолы-Джонса.Взгляните на facedetect.cpp пример, поставляемый с OpenCV (также есть несколько готовых к использованию haarcascades:детектор лица, детектор тела...).Он также использует особенности изображения, называемые вейвлетами Хаара.Возможно, вам будет интересно использовать информацию о цвете, взгляните на алгоритм переключения передач (также доступен в OpenCV).

Другие советы

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

Чтобы быть точным, вам также понадобится база знаний или, по крайней мере, некоторые дескрипторы, которые будут определять объект.

Попробуйте OpenCV, в нем уже реализованы некоторые алгоритмы (и включены базовые дескрипторы).

Существуют приложения / алгоритмы, которые вы можете "обучать" (например, нейронные сети) и способны идентифицировать объекты на основе обучения.Большинство из них (по крайней мере, хорошие) не очень популярны и могут быть найдены только в исследовательских группах, специализирующихся на компьютерном зрении, распознавании объектов, искусственном интеллекте и т.д.

Удачи вам!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top