Перейти к содержимому
Compvision.ru
Victor Tsaregorodtsev

Вычитание фона

Recommended Posts

2 года не рыл ничего нового по вычитанию фона (background subtraction) - накопились вопросы. Буду рад, если кто-нить ответит.

1) Появилось ли что-нибудь существенно лучшее (по качеству работы), чем алгоритм Харвуда и Дэвиса с их тайландскими аспирантами? Имеется в виду статья 2005 года "Real-time foreground–background segmentation using codebook model". Этот алгоритм, насколько я знаю, реализован в OpenCV.

2) Насколько хорошо указанный алгоритм реализован в OpenCV? Каков макс. размер картинки при приемлемой частоте кадров (при условии работы на чистом процессоре, без GPU - для GPU его трудно адаптировать, как мне кажется)? А если довешивать всё необходимое (сглаживание контура или морф.фильтрацию) - какая скорость будет?

3) Есть ли практический смысл в этом алгоритме Харвуда-Дэвиса сотоварищи? Я его себе так и не реализовал - по итогам практического знакомства с другими алгоритмами мне показалось, что его фича (переменное число кодовых групп для каждого пиксела) актуальна только при мелкодетальном константном фоне (обои в мелкий рисунок на стене комнаты - как пример), а с изменениями освещённости заложенная в алгоритм адаптация всё равно справится недостаточно хорошо (тучки по небу так быстро бегают, что естественная освещённость меняется за 1-2-3 кадра - никакая адаптация не угонится), с меняющимся фоном - тоже будут проблемы.

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

5) Что сейчас советует практический опыт насчёт стратегии построения вычиталки? Варианты (кидаю из головы):

а) уменьшать полученный с камеры кадр, вычитать, восстанавливать выделенный контур обратно в исходное разрешение. Будем неточно ловить границы объекта - зато будет меньше проблем с шумом камеры.

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

в) возможные варианты в плане (или взамен) морфологической фильтрации?

г) есть ли вычиталки, тянущие полный кадр 2мпикс-камеры? Актуально ли такое высокое разрешение для систем дополненной реальности? Или наплевать на все крутые камеры (тем более, что моя 2мпикс камера Лоджитек 905 с цейсовской оптикой всё равно страшно шумит) и не лезть выше 640*480?

6) Отличается ли по качеству кадра захват через VideoForWindows (старый и тормозной интерфейс) и через DirectShow? А то я может на свой Лоджитек зря ругаюсь (качество поганое только при использовании VideoForWindows, а с DirectShow всё будет хай класс?)?

ЗЫ. Я всё в своих прошлых проектах писал сам (без всяких OpenCV) на С плюс Асм, т.е. поддержать разговор в плотной привязке к OpenCV не смогу. Поэтому и в общем разделе тема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну вы задаёте такие вопросы на которые скорее всего сможет ответить только человек который в этом плотно варится.

про вычитание фона на форуме не так много тем вроде и было.

можете почитать эту ветку там на схожие темы.

http://www.compvision.ru/forum/index.php?showtopic=63

вроде бы самый навороченный алгоритм на данный момент это что то связанно с gaussian mixture model.(и работает он судя по всему не так уж быстро)

скорее всего чтобы понять надо почитать свежие пейперы(аля background subtraction gaussian mixture model), а чтобы быстро прикинуть качество\скорость работы найти готовые решения например на матлабе(а потом понять и переписать на С+ASM, если надо). кстати на GPU я вроде что встречал, так что не всё так плохо.

например

http://www.codeproject.com/Articles/142859/Extended-GMM-for-Background-Subtraction-on-GPU

а вообще куча ссылок по теме background subtraction в плане готовых решений и на разных языках.

background subtraction review ->куча обзоров/сравнений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не, трекинг объектов (указанная Вами тема) и вычитание фона - вещи существенно разные.

Поглядел - ревьюшки появились действительно только в последние годы (раньше кроме обзора Пиккарди в 2004г ничего не было). Ладно, буду читать сам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ИМХО, в чистом виде вычитание фона - это довольно ограниченный инструмент. Это по собсттвенному опыту написания детектора движения для системы видеонаблюдения.

Поэтому сейчас всё больше начинает развиваться направление умной сегментации, распознавания, построения карты глубины. Опять же по собственному опыту: мне кажется это направление более перрспективным, так как возможна работа с динамическим фоном и много других плюшек. Ну и современные тенденции переноса вычислений на GPU только способствуют усложнению алгоритмов.

А так... Вычитание фона на основе смеси Гауссианов, Codebook, Марковские модели... Плюс построение пирамиды для ускорения процесса. Ничего особо нового не придумано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Библиотека методов вычитания фона на базе OpenCV:

http://code.google.com/p/bgslibrary/

Реализованы методы:

Class 1

Static Frame Difference

Frame Difference

Weighted Moving Mean

Weighted Moving Variance

Adaptive Background Learning

* Temporal Mean

* Adaptive Median of McFarlane and Schofield (1995)

* Temporal Median of Cucchiara et al (2003) and Calderara et al (2006)

Class 2

* Gaussian Average of Wren (1997)

*** Simple Gaussian of Benezeth et al (2008)

*** Fuzzy Gaussian of Sigari et al (2008)

Class 3

* Gaussian Mixture Model of Stauffer and Grimson (1999)

Gaussian Mixture Model of KadewTraKuPong and Bowden (2001) (using OpenCV MOG1 class)

Gaussian Mixture Model of Zivkovic (2004) (using OpenCV MOG2 class)

* Gaussian Mixture Model of Zivkovic (2004)

*** Gaussian Mixture Model of Baf et al (2008)

** Type-2 Fuzzy GMM-UM of Baf et al (2008)

** Type-2 Fuzzy GMM-UV of Baf et al (2008)

Class 4

* Eigenbackground / SL-PCA of Oliver et al (2000)

Class 5

** Fuzzy Sugeno Integral with Adaptive-Selective Background Model Update of Hongxun Zhang and De Xu (2006)

** Fuzzy Choquet Integral with Adaptive-Selective Background Model Update of Baf et al (2008)

**** Multi-Layer BGS of Jian Yao and Jean-Marc Odobez (2007)

Class 6

*** Adaptive SOM of Maddalena and Petrosino (2008)

*** Fuzzy Adaptive SOM of Maddalena and Petrosino (2010)

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну и я немного скажу по нарытому.

В общем, нашёл достаточно много интересного. На ряд вопросов, которые я задавал, можно дать такие ответы

а) Codebook всё-таки смогли перенести на GPU (CUDA) и получить 12кратное ускорение. Но более простой алгоритм-предок (Horprasert et al, 2000) с одним "кодом на пиксел дал почти 100кратный прирост скорости на видяхе.

б) ViBe (статья 2011 года) будет поточнее Codebook'а и побыстрее на обычном проце. И почти не теряет в качестве при переходе от цветного изображения к ч/б. Т.е. лично мне, наверно, стоит Codebook пропустить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×