Comments 31
UFO just landed and posted this here
да, «дельта» другими словами — пороговое значение. Для каждой маски подбирается свое.
0
Можете тогда этот «подбор» пояснить? Почему написано, что отнимается 2, но при этом просто убраны двойки из маски, и почему именно 2?
0
Я убираю «на глаз». Смотрю все значения по изображению и определяю, при какой «дельте» (каком пороге) маска будет иметь необходимый вид (чтобы различные шумы на нее почти не влияли). А в шагах 6 и 7 — смотрим, чтобы и блики убирались нормально, и реальный объект не сильно «съедало».
Может есть и математический метод какой. Но я такой не искал. На глаз настроил и работает.
На второй вопрос — 2 это и есть порог. То что равно или меньше обнуляем, все что больше — оставляем.
Может есть и математический метод какой. Но я такой не искал. На глаз настроил и работает.
На второй вопрос — 2 это и есть порог. То что равно или меньше обнуляем, все что больше — оставляем.
0
Спасибо! Очень познавательно, как для меня.
+1
Есть ощущение, что в реальном видео с камеры будет работать лучше, ибо 2 соседних кадра не могут очень сильно отличаться. Итого — порогом будут порезаны незначительные движения деревьев и смена освещённости (далеко они за 1/20 секунды на простой веб-камере не переедут), а если ещё и подключить предыдущий кадр, и вычитать его движения, то всё вообще должно быть чистенько. Кажется мне…
+2
зачастую такие алгоритмы требуется использовать с камерами наблюдения, которые сильно шумят, дают мало fps и т.д.
0
На практике, в режиме слежения не обязательно «колбасить» со скоростью 1/20 сек. У меня работает сейчас слежение с паузой 0.3 сек. При записи — 0.1 сек.
Так вот за 0.3 секунды освещение может сильно меняться, пришлось улучшать алгоритм.
А так вы правы. В статье я привел экстремальный пример.
Так вот за 0.3 секунды освещение может сильно меняться, пришлось улучшать алгоритм.
А так вы правы. В статье я привел экстремальный пример.
0
Как насчет воспользоваться Гаусс-размытием?
Сила размытия будет определять границу между подавлением шумов и чувствительностью определения движения. Определить силу размытия можно на этапе калибрации: включить камеру на неподвижную сцену и снять первые десяток-два кадров для проведения сравнения и выделения шумов.
После того, как с шумами разобрались, остается проблема автоподстройки камеры под изменение светового заполнения сцены. Эту проблему можно как игнорировать (в случае, если камера профессиональная и подобная автоподстройка может быть выключена), так и обработать далее:
— выбросить «мигающий» кадр
— определить, не произошло ли полное перестроение источников света (включили/выключили свет в помещении)
Слишком большое количество дельт можно убрать, разбив алгоритм на три стадии: грубый анализ, уточнение, определение границ движущегося объекта.
Грубый анализ можно реализовать через вычитание двух соседних (а может и не соседних) размытых гауссом кадров — Вы получите перемещение контрастных точек. После этого проведение уточнения следует делать в окрестностях этих точек, не тратя процессорное время на неизменную часть кадра. Определение границ объекта может проходить как с помощью готовых алгоритмов (заливка, повышение контрастности), так и прикидочным образом с помощью попиксельного/поблочного вычитания.
Сила размытия будет определять границу между подавлением шумов и чувствительностью определения движения. Определить силу размытия можно на этапе калибрации: включить камеру на неподвижную сцену и снять первые десяток-два кадров для проведения сравнения и выделения шумов.
После того, как с шумами разобрались, остается проблема автоподстройки камеры под изменение светового заполнения сцены. Эту проблему можно как игнорировать (в случае, если камера профессиональная и подобная автоподстройка может быть выключена), так и обработать далее:
— выбросить «мигающий» кадр
— определить, не произошло ли полное перестроение источников света (включили/выключили свет в помещении)
Слишком большое количество дельт можно убрать, разбив алгоритм на три стадии: грубый анализ, уточнение, определение границ движущегося объекта.
Грубый анализ можно реализовать через вычитание двух соседних (а может и не соседних) размытых гауссом кадров — Вы получите перемещение контрастных точек. После этого проведение уточнения следует делать в окрестностях этих точек, не тратя процессорное время на неизменную часть кадра. Определение границ объекта может проходить как с помощью готовых алгоритмов (заливка, повышение контрастности), так и прикидочным образом с помощью попиксельного/поблочного вычитания.
+5
Я как-то занимался похожей задачей. Поэтому вопрос: почему нельзя просто оценить арифметическую разность двух кадров, и не заморачиваться вообще ни с чем?
0
Например, шумы испортят вам всю малину.
0
Представляем изображение в HSV, используем только H, шумы фильтруем элементарным гауссом (медианный фильтр, конечно, лучше, но он слишком медлителен для realtime). В итоге разность двух изображений даст нам надежную оценку, чего там новенького появилось.
+1
я думаю, количество шума на двух фотографиях, снятых с разностью 5 секунд, будет одинаковым. Этот уровень и сделать пороговым.
Зачем избавляться от шума, если он присутствует на обоих изображениях в одинаковом количестве.
В любом случае, если в кадре появляется человек, то это будет значительное изменение, точно не шум.
Зачем избавляться от шума, если он присутствует на обоих изображениях в одинаковом количестве.
В любом случае, если в кадре появляется человек, то это будет значительное изменение, точно не шум.
0
Количество будет примерно равным, расположение шумовых элементов, очевидно, будет разным. Вот это вам и помешает просто вычесть один кадр из другого.
0
если уровень шума будет одинаковым, то можно просто не обращать на него внимания.
0
Ложные срабатывания даст.
0
минимальный порог = кол-во шума*2
0
т.е. порог срабатывания сделаем в два раза больше, чем количество шума.
0
Что значит «количество шума»? Все равно вам после вычитания кадров придется сделать медианную либо другую сглаживающую фильтрацию, иначе шум вида «соль-перец» будет давать множество ложных срабатываний. Ну, а после сглаживания нужно будет бинаризовать результат и выделить связанные области, которые и будут масками, позволяющими выделить новые объекты на кадре.
0
Just For Fun и для самообучения — сойдёт и интересно… Спасибо. Хотя я в подобных случаях просто настраиваю Motion :)
0
Жуткая картинка. Девушка без ног.
+2
UFO just landed and posted this here
Для этих целей принято использовать алгоритм Lucasa-Kanade: Лучший мануал от Jean-Yves Bouguet.
Вот тут картинки Лекция про оптический поток.
Ваш подход мне показался наивным. Как по вашему алгоритму определить параметры проективных (или афинных в упрощении) искажений?
Вот тут картинки Лекция про оптический поток.
Ваш подход мне показался наивным. Как по вашему алгоритму определить параметры проективных (или афинных в упрощении) искажений?
+2
Это конечно интересно, но почему для видео наблюдения, не использовать обычные датчики объема, на подобие этих www.gsm-alert.ru/media/catalog/product/cache/1/image/70e4f3cdda829922f4301d3770cbe283/5/5/55.jpg, точность срабатывания будет выше, да и реализовать такую систему гораздо проще, а если скомбинировать эти 2 метода, вообще хорошо будет.
+3
Sign up to leave a comment.
Алгоритм определения движения через сравнение двух кадров