2017-01-16 3 views
0

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

+0

Это сложнее, чем вы думаете. – sascha

+1

У обоих изображений одинаковый POV? У вас есть шаблон объекта, который вы ищете? Будет ли объект всегда иметь одинаковую ориентацию? Или вы просто ищете все/все недостающие объекты? Думаю, вам придется подробнее рассказать о вашей проблеме, если вы хотите получить более полный ответ. – Soltius

+1

Рассчитайте разность двух кадров при условии, что положение камеры и подсветка остаются такими же, это даст вам двоичную маску, которую вы можете использовать позже, чтобы найти контуры и получить местоположение отсутствующего объекта. – ZdaR

ответ

1

Если ваш объект интереса имеет хорошо известную структуру - т. Е. Это маркер дополненной реальности, то эта задача хорошо описана и почти тривиальна для реализации. Если у вас нет априорных знаний о недостающем объекте, единственное, что вы можете сделать, это сравнить 2 фотографии, например, в панораме, которая может быть выполнена с помощью SIFT или SURF (пожалуйста, прочитайте дополнительно об этом). Если объект более сложный и если оба изображения были взяты с аналогичным полем зрения, а модель отсутствующего объекта известна априори (т. Е. У вас есть изображение интересующего объекта и ТОЛЬКО оно), вы можете использовать SIFT или SURF для обнаружения объектов как в априорном образце модели, так и во входном изображении (том, где вы хотите найти отсутствующий объект), выполнить сопоставление функций и искать наиболее плотный кластер с соответствующими функциями (т. Е. Использовать алгоритм оптимизации ролей частиц). Вы должны знать, что это не будет работать в каждом случае и может дать вам довольно много ложных срабатываний. Нарушения, такие как объект, выглядящий по-разному с каждой стороны, различия в освещении, частичные окклюзии и т. Д., Легко нарушают эту модель. Этот подход не требует дьюарпинга изображения и т. Д., Так как SIFT - это масштаб, трансляция и инвариант вращения.

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

Смежные вопросы