Детекция движения в программном обеспечении видеонаблюдения

Мальцев Владимир Владимирович, ведущий инженер поддержки проектировщиков компании «Видеомакс»

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

Что такое «детекция движения»?

Детекция наличия движения — функция, решающая задачу оперативного визуального обнаружения тревожных событий на охраняемом объекте. Без нее сотрудники службы безопасности вынуждены были бы неотрывно следить за множеством изображений с видеокамер на множестве мониторов. Автоматическое же обнаружение движения позволяет исключить человеческий фактор из процесса обработки тревожных событий, тем самым повышая общую эффективность всей системы видеонаблюдения и безопасности.

Здесь и далее мы говорим о детекции движения, основанной на анализе изображения, — и ее ни в коем случае не стоит путать с разного рода аппаратными детекторами вроде ИК датчиков, радиодетекторов, ультразвуковых устройств и т.п. Аппаратные детекторы не имеют дела с изображением — и эта статья не о них.

А как же детектор движения в видеонаблюдении все-таки обнаруживает движение?

Вот как раз движение детектор движения и не обнаруживает. Детектор определяет факт изменения изображения, изменения в самой картинке (рис. 1). Наиболее распространенный способ — оценка изменения контрастности двух соседних пикселов, исходя из соображения, что движение объекта вызывает изменение освещенности пикселов на матрице. 

При этом очень важно понимать, что картинка может меняться не только при возникновении движения, но и при изменении освещенности, появлении бликов, возрастании уровня шумов при наступлении ночи, даже при изменении цвета наблюдаемого объекта.

Типы детекторов движения

Детекторы движения (по изображению) принято делить на т.н. программные и встроенные в IP-камеры. Под программной понимают функцию детектирования, присутствующую в ПО видеонаблюдения. Встроенной называют функцию детектирования движения, реализованную в «прошивке» IP-камеры. На самом деле и то, и другое — детекция программная, т.к. она происходит по некоему математическому алгоритму обработки изображения, и термин «встроенный» следует понимать, как «с помощью ПО, работающего в самой камере».

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

Какая же разница между детекторами в камерах и детекторами в ПО? Разница заключается в следующем:

  • Детекторы в ПО имеют дело с дважды преобразованным (сжатым камерой и затем декодированным «софтом») изображением. В камерах работа происходит с «сырым», необработанным,несжатым изображением.
  • Детектору в ПО требуется минимум два кадра, чтобы «увидеть» наличие движения. Детектору в камере вообще необязательно работать с кадрами — он может оценивать изменение освещенности непосредственно светочувствительных элементов матрицы.
  • Детекторам в ПО в принципе не важен источник изображения — они работают со стандартным видеопотоком, который можно получать с любого видеоустройства. Детекторы в камерах работают только с теми самыми конкретными камерами, в которые они «зашиты».

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

Особенности программной детекции движения

Еще раз уточним, что речь идет о функции детектирования движения в ПО видеонаблюдения, работающим на видеосервере. Теперь по порядку.

Детекция движения всегда производится на преобразованном изображении

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

Детекция движения значительно нагружает платформу видеосервера

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

ПО оценивает изменения контрастности, но могут использоваться и другие методы

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

ПО может использовать «камерный» детектор

Да, действительно, многие ПО видеонаблюдения, даже имея собственные функции детектирования, могут уметь работать напрямую с собственными детекторами движения камер. Считается, что при этом повышается точность и оперативность обнаружения детектора (почему — рассказано выше в разделе «Типы детекторов движения»). Возможно даже одновременно использовать и «камерный», и встроенный в ПО детектор. Вряд ли кому-то такое потребуется на практике, но сама по себе такая возможность интересна.

В разных ПО — разные алгоритмы работы детекторов

К сожалению, мало что известно о принципах работы программных детекторов, т.к. производители считают эти принципы коммерческой тайной. Но наши тесты показывают, что разные ПО по-разному нагружают платформу (при сходных требованиях к функции обнаружения движения) — и это косвенно говорит о разнице в алгоритмах.

Итак, мы рассмотрели теоретические моменты и далее перейдем к моментам практическим и более интересным.

При перемещении объекта X изменяется освещенность пикселов XNN
Рис. 1. При перемещении объекта X изменяется освещенность пикселов XNN

Проблематика детекторов движения

Детекторы движения работают неидеально. И это нередко становится неприятным открытием для начинающих специалистов охранного видеонаблюдения. Все недостатки, «подводные» камни» и нарекания на работу детекции движения можно поделить на две категории:
1. Детектор плохо обнаруживает движение — велика вероятность пропуска цели (рис. 2).
2. Детектор обнаруживает слишком много движения — большое количество ложных срабатываний (рис. 3).
Давайте разберем их по порядку.

Детектор плохо обнаруживает движение

Как мы уже сказали, в основе детекции лежит поиск изменений на изображении, поиск изменения контрастности на соседних пикселях. Очевидно, что чем больше два разных кадра отличаются друг от друга, тем вероятнее сработает детектор. Но и наоборот — если изменения незначительны, то реакции детектора не будет. Неужели возможно такое, что движение объекта на самом деле есть, а изменений на изображении нет? Да, возможно по следующим причинам:

  • Объект по цвету, освещенности и прочим свойствам не отличается от изообстановки, в которой он движется. Белый медведь на снегу, человек в зеленой одежде на траве, черная кошка в темной комнате — против них программный детектор будет бессилен.
  • Объект движется медленно, очень медленно. Настолько медленно, что изменения контрастности пикселов сопоставимы с цветовым и яркостным «шумом», вызванным колебаниями освещенности, тепловыми процессами в матрице камеры и т.п. Если детектор не реагирует на эти шумы — не среагирует и на объект. Поэтому не стоит использовать детекторы движения для обнаружения весеннего половодья или движения ледников в горах.

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

Низкая чувствительность программного детектора движения — детектируются только крупные и резко выделяющиеся объекты
Рис. 2. Низкая чувствительность программного детектора движения — детектируются только крупные и резко выделяющиеся объекты

Детектор обнаруживает слишком много движения

Иногда говорят, что «реагирует на все подряд» или «срабатывает постоянно». То есть нарушителей и злоумышленников в поле зрения нет, а уведомления о движении идут непрерывным потоком.

Да, конечно, при наступлении тревожного события детектор отреагирует — но его реакция растворится среди множества прочих уведомлений и останется незамеченной. Почему такое может происходить?

Причина в итоге всего одна: в поле зрения камеры всегда происходят какие-то изменения. Шевелятся листья, переливаются бликами стекла, летают насекомые, ездят автомобили и т.д. Такое может быть на любом наружном объекте, где присутствуют деревья и кустарники. Или в помещении, когда камера видит фрагмент окна, а через окно — уличную суету.

Хорошо, если возможно убрать постоянно «шевелящийся» объект из поля зрения камеры или повернуть камеру так, чтобы колеблющаяся ветка, кусок окна или постоянно работающий рекламный экран вышли из поля зрения камеры. Если такой возможности нет — надо смотреть на возможность как-нибудь настроить параметры детектора. Далее об этом и поговорим.

Высокая чувствительность программного детектора движения. Детектор реагирует на все подряд
Рис. 3. Высокая чувствительность программного детектора движения. Детектор реагирует на все подряд

Возможности настроек детекторов движения

Даже самые простые детекторы имеют возможность регулировать параметры их работы. Смысл этих регулировок: максимально снизить количество ненужных, «ложных» срабатываний. Разные производители ПО видеонаблюдения предлагают разные наборы параметров, доступные пользователю для настройки. Но все эти параметры в итоге можно поделить на следующие типы:

  • Настройки чувствительности.
  • Настройки размера.
  • Настройки зоны.
  • Настройки перемещения.

Расскажем о каждом параметре для настройки подробнее.

Настройки чувствительности

В большинстве ПО имеется возможность установки определенного значения степени изменения контрастности, фактическое превышение которого детектор будет считать движением. Конкретный смысл и механизм влияния этого параметра производители раскрывают крайне редко (ссылаясь на коммерческую тайну), предоставляя пользователю задавать чувствительность в процентах или условных единицах. При установке нулевого значения детектор практически ни на что не будет реагировать — при выборе 100-процентного значения детектор будет реагировать на малейшие, порой не различимые взглядом изменения «картинки». Подразумевается, что подходящее значение будет подбираться опытным путем.

Настройки размера

Этот параметр и проще, и понятнее. Пользователь задает размер области изображения (в пикселях или процентах от размера кадра) — и, если количество пикселей, у которых изменилась контрастность, меньше чем заданное количество (как правило в %), то детектор проигнорирует это изменение. Таким образом можно исключить срабатывания на всякую «мелочь» вроде листвы, бликов, капель дождя, травы и т.п.

Настройки зоны Это совсем просто. Пользователь прямо на изображении выделяет область, в которой требуется либо детектировать движение, либо наоборот — детектор срабатывать не должен.

«Зона детекции» — это зона, в которой программный детектор движения следит за наличием движения. Все, что происходит вне этой зоны, не будет вызывать срабатывание детектора. Зоны детекции полезны прежде всего в случаях, когда по факту движения требуется подавать уведомление оператору, т.к. позволяет следить за каким-то конкретным объектом (рис. 4).

Зона детекции движения в ПО видеонаблюдения
Рис.4. Зона детекции движения в ПО видеонаблюдения

«Зона исключения» («маска детектора») — это зона или даже зоны, в которых детектор будет игнорировать движение (рис. 5), реагируя только на события вне заданной области (рис. 7). Зоны исключения чаще всего используются для настройки ведения записи по срабатываниям детектора, т.к. это дает возможность исключить запись архива по заведомо ненужным событиям (рис. 6).

Зона исключения детектирования движения в ПО видеонаблюдения
Рис. 5. Зона исключения детектирования движения в ПО видеонаблюдения

Детекция производится по всему кадру
Рис. 6. Детекция производится по всему кадру

Настройки перемещения

Довольно редко встречаемая категория настроек. Здесь имеется в виду возможность указать скорость перемещения и/или направление движения объекта. В теории это должно позволять исключить срабатывание детектора на слишком медленные или слишком быстрые перемещения либо наоборот — заставить детектор реагировать на эти перемещения. Настройки направления должны в результате давать возможность реагировать (или наоборот — не реагировать) на перемещения объектов в указанных направлениях.

По факту такие возможности используются довольно редко, т.к. если на объекте реально требуется следить за перемещениями объектов, то используется на порядок более эффективная и «продвинутая» видеоаналитика трекинга объектов.

Как используются детекторы движения

Задача любого детектора движения — дать уведомления о возникновении движения в наблюдаемой зоне. Как и где использовать полученное уведомление — определяется возможностями конкретного ПО. В базовый набор возможностей обычно входит:

  • Фиксация уведомления в журнале событий.
  • Включение видеозаписи по срабатыванию детектора.
  • Вывод уведомления оператору на экран.Не всегда, но очень часто присутствуют и другие возможности:
  • Отправка уведомления по e-mail.
  • Вывод камеры, с которой пришло уведомление, на тревожный монитор.
  • Включение видеозаписи с улучшенными параметрами изображения (скорость, разрешение и пр.), предустановленными именно для тревожных видеозаписей.
  • Замыкание тревожных выходов для управления внешними устройствами.

Однако применение детекторов этим не ограничивается. Существующая видеоаналитика в массе своей использует для работы именно детекторы движения. Детекторы оставленных, унесенных предметов, межкамерный трекинг, распознавание номеров, подсчет количества объектов — всем этим аналитическим функциям в той или иной мере требуются сведения о факте перемещения объектов в кадре, которые предоставляют детекторы движения.

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

Внимательный читатель может спросить: если ПО может работать с «камерными» детекторами, не снизятся ли в этом случае требования к производительности платформы? Нет, не снизятся. Так как далеко не всегда и не все встроенные в камеры детекторы передают информацию об обнаруженном движении в том объеме, в котором она требуется для модулей видеоаналитики. Отсюда необходимость использования встроенного в ПО детекторов и соответствующие требования к ЦП видеосервера.

В зоне исключения детекция движения не производится
Рис. 7. В зоне исключения детекция движения не производится

Заключение

Обойтись без детекции движения в системе видеонаблюдения невозможно, роль детекторов сложно переоценить. При этом детекторы нельзя просто поделить на два разных типа («камерный» или программный) — следует учитывать принципы работы детекторов в каждом конкретном ПО видеонаблюдения, дабы в итоге получить систему, оптимально подходящую для каждой конкретной задачи и конкретного объекта.

Наши советы и рекомендации

1. Не хватает глубины архива при записи по детекции движения? В первую очередь, обратите внимание на работу и настройки детекторов движения. При настройке важно убедиться в работе детектора во всем диапазоне работы камеры и, в первую очередь, в сложных условиях — снег, дождь, сложное и недостаточное освещение. Наверняка после этого фактическая глубина архива вырастет, а количество «ложняков» значительно уменьшится. Но не увлекайтесь слишком — увеличится риск пропустить нужное событие.
2. Сомневаетесь в качестве интеграции камер? Требуется аналитика? В системе камеры разных марок, и хочется удобно и единообразно настраивать детекцию? Тогда очевиден выбор варианта с программным детектором движения.
3. Подобрали камеры и рассчитали видеосервер, но заказчик просит заменить ПО? Обязательно рассчитайте видеосервер заново — разница в работе детекторов существенно влияет на требования к платформе.
4. Не хотите зависеть от параметров потока детекции движения? Рассмотрите вариант использования «камерных» детекторов. Но не забудьте уточнить их поддержку в выбранном ПО.
5. Не знаете, что все-таки выбрать — программную детекцию или встроенную в IP-камеры? Рассмотрите вариант использования части камер — встроенного детектора движения, а для другой части — программного. Программные продукты ведущих производителей позволяют это реализовать.
6. Хотите знать, что предшествовало тревоге, и что было после? Для этого существуют функции пред- и постзаписи. Первая означает наличие программного буфера, с помощью которого записанное «по движению» видео начинается не с момента регистрации движения, а за несколько секунд до него. Вторая позволяет закончить запись спустя несколько секунд уже после прекращения срабатывания детектора. В результате — при анализе архива — можно увидеть как само тревожное событие, так и ситуацию до и после него.

Информация и фото с https://algoritm.org/arch/arch.php?id=94&a=2302