Какой метод обнаружения объектов с использованием OpenCV лучше всего подходит для меняющихся сред?

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

Варианты, которые я пробовал до сих пор, включают;

-Определение абсолютных различий в пикселях между пустым фоновым кадром и текущим кадром (работает плохо, если условия освещения меняются или если камера покачивается)

-Вычитание фона (хорошо для изменения условий, но приводит к чрезмерному шуму)

- Также подумайте об использовании обнаружения краев, на которое не повлияет изменение условий освещения, и каким-то образом сравните формы объектов, чтобы увидеть, что нового

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

Что бы вы порекомендовали? Я запускаю OpenCV через Visual Studio 2017 на С++.


person Thomas Hallwright    schedule 03.04.2019    source источник
comment
В OpenCV - MOG2. Но сначала посмотрите на bgslibrary: github.com/andrewssobral/bgslibrary   -  person Nuzhny    schedule 03.04.2019
comment
Методы фонового вычитания библиотеки OCV хороши для такого рода вещей. Конечно, это не бесплатно. Если производительность необходима, это потребует некоторой оптимизации. В случае с шумом тоже некоторая постобработка, но оно того стоит.   -  person Croolman    schedule 04.04.2019


Ответы (1)


Я делаю курсовой проект по подобному проекту. Я использовал несколько методов, таких как порог HSV/RGB, накопительное разностное изображение и MOG из библиотеки OpenCV.

Для вашего случая я бы порекомендовал Accumulative Difference Image, который очень похож на MOG. По сути, вы вычитаете последовательные кадры друг из друга (предыдущий из текущего), а затем используете порог для преобразования в двоичное изображение. Затем вы можете выполнить морфологическую операцию над бинарным изображением, чтобы улучшить обнаружение.

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

Чтобы удалить шум, вы можете размыть, а затем расширить бинарное изображение (поэкспериментировать с морфологическими операциями).

Удачи!

person Bolat Tleubayev    schedule 04.04.2019