Хороший метод для обнаружения наличия определенной функции в изображении - PullRequest
6 голосов
/ 17 июля 2010

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

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

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 23 июля 2010

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

1 голос
/ 23 июля 2010

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

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

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

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

Удачи!

...