Мальцев Владимир Владимирович, ведущий инженер поддержки проектировщиков компании «Видеомакс»
В этой статье мы рассмотрим принципы использования программных детекторов движения, возможности и сферы их применения, ну и по традиции дадим рекомендации по проектированию и наладке систем видеонаблюдения, требующих использования детекции движения.
Детекция наличия движения — функция, решающая задачу оперативного визуального обнаружения тревожных событий на охраняемом объекте. Без нее сотрудники службы безопасности вынуждены были бы неотрывно следить за множеством изображений с видеокамер на множестве мониторов. Автоматическое же обнаружение движения позволяет исключить человеческий фактор из процесса обработки тревожных событий, тем самым повышая общую эффективность всей системы видеонаблюдения и безопасности.
Здесь и далее мы говорим о детекции движения, основанной на анализе изображения, — и ее ни в коем случае не стоит путать с разного рода аппаратными детекторами вроде ИК датчиков, радиодетекторов, ультразвуковых устройств и т.п. Аппаратные детекторы не имеют дела с изображением — и эта статья не о них.
Вот как раз движение детектор движения и не обнаруживает. Детектор определяет факт изменения изображения, изменения в самой картинке (рис. 1). Наиболее распространенный способ — оценка изменения контрастности двух соседних пикселов, исходя из соображения, что движение объекта вызывает изменение освещенности пикселов на матрице.
При этом очень важно понимать, что картинка может меняться не только при возникновении движения, но и при изменении освещенности, появлении бликов, возрастании уровня шумов при наступлении ночи, даже при изменении цвета наблюдаемого объекта.
Детекторы движения (по изображению) принято делить на т.н. программные и встроенные в IP-камеры. Под программной понимают функцию детектирования, присутствующую в ПО видеонаблюдения. Встроенной называют функцию детектирования движения, реализованную в «прошивке» IP-камеры. На самом деле и то, и другое — детекция программная, т.к. она происходит по некоему математическому алгоритму обработки изображения, и термин «встроенный» следует понимать, как «с помощью ПО, работающего в самой камере».
Конечно, детекторы можно классифицировать и по типам применяемых алгоритмов и по каким-то другим признакам, но такие классификации вряд ли принесут пользу специалистам-практикам, занятым проектированием и наладкой систем видеонаблюдения.
Какая же разница между детекторами в камерах и детекторами в ПО? Разница заключается в следующем:
Т.к. в силу специализации мы имеем дело прежде всего с детекцией в ПО видеонаблюдения, то дальше мы немного поговорим об особенностях программной детекции движения.
Еще раз уточним, что речь идет о функции детектирования движения в ПО видеонаблюдения, работающим на видеосервере. Теперь по порядку.
Да, очевидно, что для работы с «картинкой» эту самую картинку надо получить, распаковав приходящий с камеры сжатый видеопоток. Т.к. при сжатии всегда происходит ухудшение качества изображения (пусть даже и незаметно для глаза), то и эффективность работы детектора должна быть ниже (по сравнению с детектором в камере). На практике, впрочем, разница редко заметна.
Прежде всего нагрузка ложится на центральный процессор видеосервера. В основе детекции движения по видеоизображению довольно сложный алгоритм с множеством операций. В дополнении к этому изображение обязательно нужно распаковать (в отличие, например, от процесса записи в архив, при котором распаковка не требуется). Часто с целью снижения нагрузки на платформу в ПО видеонаблюдения для работы детектора используются не все приходящие от камеры кадры, а только опорные, т.н. I-кадры. Положительный эффект от этого действительно есть, но есть и сильная зависимость эффективности детекторов движения от параметров входящего видеопотока.
Утверждение, честно говоря, нельзя считать проверенным, т.к. производители не спешат заявлять о подробностях, объявляя их коммерческой тайной. Остается надеяться, что кто-нибудь из разработчиков ПО приоткроет тайну и расскажет о своих «нестандартных» методах.
Да, действительно, многие ПО видеонаблюдения, даже имея собственные функции детектирования, могут уметь работать напрямую с собственными детекторами движения камер. Считается, что при этом повышается точность и оперативность обнаружения детектора (почему — рассказано выше в разделе «Типы детекторов движения»). Возможно даже одновременно использовать и «камерный», и встроенный в ПО детектор. Вряд ли кому-то такое потребуется на практике, но сама по себе такая возможность интересна.
К сожалению, мало что известно о принципах работы программных детекторов, т.к. производители считают эти принципы коммерческой тайной. Но наши тесты показывают, что разные ПО по-разному нагружают платформу (при сходных требованиях к функции обнаружения движения) — и это косвенно говорит о разнице в алгоритмах.
Итак, мы рассмотрели теоретические моменты и далее перейдем к моментам практическим и более интересным.
Рис. 1. При перемещении объекта X изменяется освещенность пикселов XNN
Детекторы движения работают неидеально. И это нередко становится неприятным открытием для начинающих специалистов охранного видеонаблюдения. Все недостатки, «подводные» камни» и нарекания на работу детекции движения можно поделить на две категории:
1. Детектор плохо обнаруживает движение — велика вероятность пропуска цели (рис. 2).
2. Детектор обнаруживает слишком много движения — большое количество ложных срабатываний (рис. 3).
Давайте разберем их по порядку.
Как мы уже сказали, в основе детекции лежит поиск изменений на изображении, поиск изменения контрастности на соседних пикселях. Очевидно, что чем больше два разных кадра отличаются друг от друга, тем вероятнее сработает детектор. Но и наоборот — если изменения незначительны, то реакции детектора не будет. Неужели возможно такое, что движение объекта на самом деле есть, а изменений на изображении нет? Да, возможно по следующим причинам:
В этих условиях возникает риск пропуска цели. При известной настойчивости все-таки есть шанс настроить оборудование на обнаружение движения в этих условиях — понизив пороговые значения критериев, по которым определяется факт наличия/отсутствия движения. Но при этом возрастет риск столкнуться со следующей, рассмотренной ниже проблемой.
Рис. 2. Низкая чувствительность программного детектора движения — детектируются только крупные и резко выделяющиеся объекты
Иногда говорят, что «реагирует на все подряд» или «срабатывает постоянно». То есть нарушителей и злоумышленников в поле зрения нет, а уведомления о движении идут непрерывным потоком.
Да, конечно, при наступлении тревожного события детектор отреагирует — но его реакция растворится среди множества прочих уведомлений и останется незамеченной. Почему такое может происходить?
Причина в итоге всего одна: в поле зрения камеры всегда происходят какие-то изменения. Шевелятся листья, переливаются бликами стекла, летают насекомые, ездят автомобили и т.д. Такое может быть на любом наружном объекте, где присутствуют деревья и кустарники. Или в помещении, когда камера видит фрагмент окна, а через окно — уличную суету.
Хорошо, если возможно убрать постоянно «шевелящийся» объект из поля зрения камеры или повернуть камеру так, чтобы колеблющаяся ветка, кусок окна или постоянно работающий рекламный экран вышли из поля зрения камеры. Если такой возможности нет — надо смотреть на возможность как-нибудь настроить параметры детектора. Далее об этом и поговорим.
Рис. 3. Высокая чувствительность программного детектора движения. Детектор реагирует на все подряд
Даже самые простые детекторы имеют возможность регулировать параметры их работы. Смысл этих регулировок: максимально снизить количество ненужных, «ложных» срабатываний. Разные производители ПО видеонаблюдения предлагают разные наборы параметров, доступные пользователю для настройки. Но все эти параметры в итоге можно поделить на следующие типы:
Расскажем о каждом параметре для настройки подробнее.
В большинстве ПО имеется возможность установки определенного значения степени изменения контрастности, фактическое превышение которого детектор будет считать движением. Конкретный смысл и механизм влияния этого параметра производители раскрывают крайне редко (ссылаясь на коммерческую тайну), предоставляя пользователю задавать чувствительность в процентах или условных единицах. При установке нулевого значения детектор практически ни на что не будет реагировать — при выборе 100-процентного значения детектор будет реагировать на малейшие, порой не различимые взглядом изменения «картинки». Подразумевается, что подходящее значение будет подбираться опытным путем.
Этот параметр и проще, и понятнее. Пользователь задает размер области изображения (в пикселях или процентах от размера кадра) — и, если количество пикселей, у которых изменилась контрастность, меньше чем заданное количество (как правило в %), то детектор проигнорирует это изменение. Таким образом можно исключить срабатывания на всякую «мелочь» вроде листвы, бликов, капель дождя, травы и т.п.
Настройки зоны Это совсем просто. Пользователь прямо на изображении выделяет область, в которой требуется либо детектировать движение, либо наоборот — детектор срабатывать не должен.
«Зона детекции» — это зона, в которой программный детектор движения следит за наличием движения. Все, что происходит вне этой зоны, не будет вызывать срабатывание детектора. Зоны детекции полезны прежде всего в случаях, когда по факту движения требуется подавать уведомление оператору, т.к. позволяет следить за каким-то конкретным объектом (рис. 4).
Рис.4. Зона детекции движения в ПО видеонаблюдения
«Зона исключения» («маска детектора») — это зона или даже зоны, в которых детектор будет игнорировать движение (рис. 5), реагируя только на события вне заданной области (рис. 7). Зоны исключения чаще всего используются для настройки ведения записи по срабатываниям детектора, т.к. это дает возможность исключить запись архива по заведомо ненужным событиям (рис. 6).
Рис. 5. Зона исключения детектирования движения в ПО видеонаблюдения
Рис. 6. Детекция производится по всему кадру
Довольно редко встречаемая категория настроек. Здесь имеется в виду возможность указать скорость перемещения и/или направление движения объекта. В теории это должно позволять исключить срабатывание детектора на слишком медленные или слишком быстрые перемещения либо наоборот — заставить детектор реагировать на эти перемещения. Настройки направления должны в результате давать возможность реагировать (или наоборот — не реагировать) на перемещения объектов в указанных направлениях.
По факту такие возможности используются довольно редко, т.к. если на объекте реально требуется следить за перемещениями объектов, то используется на порядок более эффективная и «продвинутая» видеоаналитика трекинга объектов.
Задача любого детектора движения — дать уведомления о возникновении движения в наблюдаемой зоне. Как и где использовать полученное уведомление — определяется возможностями конкретного ПО. В базовый набор возможностей обычно входит:
Однако применение детекторов этим не ограничивается. Существующая видеоаналитика в массе своей использует для работы именно детекторы движения. Детекторы оставленных, унесенных предметов, межкамерный трекинг, распознавание номеров, подсчет количества объектов — всем этим аналитическим функциям в той или иной мере требуются сведения о факте перемещения объектов в кадре, которые предоставляют детекторы движения.
По этой причине нельзя построить видеосервер с аналитикой, но без функции детектирования изображения. Требования высокой производительности серверов для видеоаналитики вызваны, в том числе, и нагрузкой от программного детектора движения.
Внимательный читатель может спросить: если ПО может работать с «камерными» детекторами, не снизятся ли в этом случае требования к производительности платформы? Нет, не снизятся. Так как далеко не всегда и не все встроенные в камеры детекторы передают информацию об обнаруженном движении в том объеме, в котором она требуется для модулей видеоаналитики. Отсюда необходимость использования встроенного в ПО детекторов и соответствующие требования к ЦП видеосервера.
Рис. 7. В зоне исключения детекция движения не производится
Обойтись без детекции движения в системе видеонаблюдения невозможно, роль детекторов сложно переоценить. При этом детекторы нельзя просто поделить на два разных типа («камерный» или программный) — следует учитывать принципы работы детекторов в каждом конкретном ПО видеонаблюдения, дабы в итоге получить систему, оптимально подходящую для каждой конкретной задачи и конкретного объекта.
1. Не хватает глубины архива при записи по детекции движения? В первую очередь, обратите внимание на работу и настройки детекторов движения. При настройке важно убедиться в работе детектора во всем диапазоне работы камеры и, в первую очередь, в сложных условиях — снег, дождь, сложное и недостаточное освещение. Наверняка после этого фактическая глубина архива вырастет, а количество «ложняков» значительно уменьшится. Но не увлекайтесь слишком — увеличится риск пропустить нужное событие.
2. Сомневаетесь в качестве интеграции камер? Требуется аналитика? В системе камеры разных марок, и хочется удобно и единообразно настраивать детекцию? Тогда очевиден выбор варианта с программным детектором движения.
3. Подобрали камеры и рассчитали видеосервер, но заказчик просит заменить ПО? Обязательно рассчитайте видеосервер заново — разница в работе детекторов существенно влияет на требования к платформе.
4. Не хотите зависеть от параметров потока детекции движения? Рассмотрите вариант использования «камерных» детекторов. Но не забудьте уточнить их поддержку в выбранном ПО.
5. Не знаете, что все-таки выбрать — программную детекцию или встроенную в IP-камеры? Рассмотрите вариант использования части камер — встроенного детектора движения, а для другой части — программного. Программные продукты ведущих производителей позволяют это реализовать.
6. Хотите знать, что предшествовало тревоге, и что было после? Для этого существуют функции пред- и постзаписи. Первая означает наличие программного буфера, с помощью которого записанное «по движению» видео начинается не с момента регистрации движения, а за несколько секунд до него. Вторая позволяет закончить запись спустя несколько секунд уже после прекращения срабатывания детектора. В результате — при анализе архива — можно увидеть как само тревожное событие, так и ситуацию до и после него.
Информация и фото с https://algoritm.org/arch/arch.php?id=94&a=2302