Каким методам вычитания фона я должен следовать?
У меня есть работа в колледже, в которой есть короткое видео, чтобы вырезать фон (сохраняя только то, что движется в сцене) тремя разными способами:
- Фиксированный фон или фиксированное глазное дно
- Средний фон или среднее глазное дно
- Срединный фон или срединное глазное дно
Итак, я искал и нашел этот пример из OpenCV: https://docs.opencv.org/3.4/d1/dc5/tutorial_background_subtraction.html Итак, я думаю, это должен быть первый
И это: https://learnopencv.com/simple-background-estimation-in-videos-using-opencv-c-python/ Должно быть срединное глазное дно..
Я прав? Я в замешательстве, потому что учитель не передал нам термины на английском языке. Эти алгоритмы верны с требуемыми методами? Или где я могу найти пример этих методов?
1 ответ
Существует 2 типа вычитания фона:
- Морфологическая операция на основе
- Искусственный интеллект (ИИ) на основе
Морфологическая операция на основе
Этот подход предполагает, что фон постоянен, или лучше сказать, что он работает нормально, если фон постоянен. Я имею в виду, что камера стабильна.
- В библиотеке OpenCV уже есть несколько красивых функций для этого: BackgroundSubtractorMOG2 и BackgroundSubtractorKNN — одни из самых известных. Эти функции также могут хранить историю в памяти, поэтому даже при движении камеры (изменение фона) они могут обновлять ее.
- Я также работал над этой темой раньше и разработал для этого алгоритм. Вот ссылка на github для кода и результатов видео , относящихся к этому.
Примечание. В этом подходе самой большой проблемой является освещение.
Искусственный интеллект (ИИ) на основе
Этот метод является популярным и широко используется. Многие приложения для совещаний в магазине также используют это приложение для смены фона. Этот подход в основном обнаруживает целевые объекты и маскирует их. В качестве примера вы можете взглянуть на Mask-RCNN . Таким образом, после обнаружения маски цели (человека, автомобиля и т. д.) очень легко изменить фон. Движение камеры и изменение фона не влияют.