Каковы стандартные методы удаления сегментации (например, человека или птицы) из видео? - PullRequest
6 голосов
/ 08 октября 2010

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

Как называются эти стили алгоритмов и как они обычно выполняются?

Ответы [ 2 ]

4 голосов
/ 08 октября 2010

Существует метод, называемый Простое извлечение объекта изображения (SIOX) - он использует метод для идентификации объектов переднего плана и фона в неподвижных и видеоизображениях. В редакторе GIMP с открытым исходным кодом есть реализация, и здесь больше информации об этом .

Из обзора:

SIOX означает простое извлечение интерактивных объектов и представляет собой решение для извлечения переднего плана из неподвижных изображений с минимальным взаимодействием с пользователем. SIOX является быстрым, устойчивым к шуму и, следовательно, может также использоваться для сегментации видео. Это позволяет избежать многих недостатков методов сегментации на основе графа, но одинаково хорошо работает в различных тестах. SIOX является открытым и бесплатным (лицензия Apache), и авторы намеренно не запатентовали какую-либо часть технологии. В результате за последние годы он был интегрирован в несколько программ для работы с изображениями с открытым исходным кодом. SIOX является базовым алгоритмом инструмента извлечения переднего плана в программе манипуляции изображениями GNU (GIMP) и является частью инструмента трассировки в Inkscape. SIOX происходит от E-Chalk, где инструктор, стоящий перед электронной доской, сегментирован. Варианты SIOX используются для роботизированного зрения и для улучшения 3D-сегментации камеры во время полета.

Вот ссылка на Справочную реализацию Java SIOX .

Вот ссылка на PDF с подробной информацией о том, как работает вариация алгоритма.

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

2 голосов
/ 08 октября 2010

Если камера зафиксирована и в сцене не слишком много движения, я бы предложил метод, основанный на вычитании фона.

Шаг 1: Вычислить фон для каждого кадра видео. Для этого существуют сложные алгоритмы, но очень простым и эффективным будет вычисление медианного значения каждого пикселя в изображении через 3-секундное временное окно. Дольше, если рассматриваемый объект движется медленно. Кстати, если вы просто выполните этот вид фильтрации, он удалит большинство движущихся объектов из видео, если камера зафиксирована, поэтому мой предыдущий вопрос обо всех объектах и ​​одном объекте.

Шаг 2: Пометьте области, которые вы хотите удалить в каждом кадре, с помощью инструмента-кисти и замените их фоновыми пикселями. Не утруждайте себя мелкой кистью или инструментом лассо, поскольку любые необъектные пиксели, которые вы пометите, будут просто заменены их отфильтрованной версией. Возможно, вы могли бы использовать одни и те же метки кисти для нескольких кадров, поскольку граница не так важна. Если объект - это единственное, что движется в сцене, вы можете просто отметить весь кадр и заменить его на фон.

В любом случае, чтобы ответить на более общий вопрос, тема, которую вы хотите исследовать, называется inpainting для изображений и видео. Существует довольно много литературы по этому вопросу, которую я описал, это просто супер простой метод, который можно реализовать за час или около того с помощью opencv.

...