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

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

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

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

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

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

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

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

  • в камерах работа происходит с «сырым», необработанным, несжатым изображением. Детекторы в ПО имеют дело с дважды преобразованным (сжатие в камере –> декодирование в «софте») изображением;

  • детектору в ПО требуется минимум два кадра чтобы «увидеть» наличие движения. Детектору в камере вообще необязательно работать с кадрами – он может оценивать изменение освещенности непосредственно светочувствительных элементов матрицы;

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

Дальше мы немного поговорим об особенностях программной детекции движения.

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

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

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

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

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

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

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

Детекторы движения работают неидеально.  Все недостатки, «подводные» камни» и нарекания на работу детекции движения можно поделить на две категории:

  • Детектор плохо обнаруживает движение — велика вероятность пропуска цели;

  • Детектор обнаруживает слишком много движения — большое количество ложных срабатываний.

Давайте разберём их по порядку.

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

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

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

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

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

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

Иногда говорят, что «реагирует на всё подряд» или «срабатывает постоянно». То есть нарушителей и злоумышленников в поле зрения нет – а уведомления о движении идут непрерывным потоком. Да, конечно, при наступлении тревожного события детектор отреагирует – но его реакция растворится среди множества прочих уведомлений и останется незамеченной. Почему такое может происходить? Причина в итоге всего одна:

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

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

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

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

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

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

  • Настройки зоны

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

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

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

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

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

Настройки зоны.

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

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

  • «зона исключения»/«маска детектора»
    Зоны, или даже зоны, в которых детектор будет игнорировать движение, реагируя только на события вне заданной области. Зоны исключения чаще всего используются для настройки ведения записи по срабатываниям детектора, т.к. даёт возможность исключить запись архива по заведомо ненужным событиям.

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

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

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

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

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

  • Фиксация уведомления в журнале событий;

  • Включение видеозаписи по срабатыванию детектора;

  • Вывод уведомления оператору на экран.

Не всегда, но очень часто присутствуют и другие возможности:

  • Отправка уведомления по e-mail;

  • Вывод камеры, с которой пришло уведомление, на тревожный монитор;

  • Включение видеозаписи с улучшенными параметрами изображения (скорость, разрешение и пр.), предустановленными именно для тревожных видеозаписей;

  • Замыкание тревожных выходов для управления внешними устройствами.

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

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

Хотите знать что предшествовало тревоге, и что было после?


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