Як настроїти чутливість визначення руху в ZoneMinder

У ZoneMinder вбудована програмна функція визначення руху на основі аналізу зображень, що захоплюється камерою.

У стандартному налаштуванні камери чутливість детектора руху досить низька. І подія Alarm виникає при великих переміщення в центральній зоні картинки з камери. Таким чином, при записі в режимі Modect (запис тільки подій руху) переміщення можуть просто не записатися, тому що система не ввімкне стан Alarm.

Щоб збільшити чутливість алгоритму визначення руху, потрібно зайти в налаштування зон спостереження кожної камери (Стовпець Zones на головному екрані). За замовчуванням кожна камера має одну зону, яка покриває весь простір кадру, і називається All. У налаштуваннях цієї зони є кілька параметрів, змінюючи які можна змінити поріг спрацьовування детектора руху.

визначення

Детектор на основі блобів Alarm Check Method: Blobs, який виставляється за умовчанням, дуже ненадійний. Навіть якщо встановити налаштування згідно з пресетом Preset: Best, High Sensitivity, то визначення наявності людей все одно буде надійно спрацьовувати тільки на світлому тлі. Наприклад, на тлі стіни чи підлоги рух людини буде виявлено. Але на тлі шаф та меблів – далеко не факт.

Відеопотік представлений просто у вигляді послідовності jpg-файлів.

Якщо увімкнено режим виявлення руху по блобах, то в каталозі будуть файли з іменами виду:

Файли capture містять просто потік, а файли analyse містять картинку з виявленням зони руху. Ось приклад файлу з аналізом руху:

руху

Щоб підтвердити свій здогад про те, що Blob-детектор погано виявляє рух, можна подивитися два налаштування: галка на моніторі – Edit – вкладка Buffers. Налаштування називаються PreEvent Image Count та Post Event Image Count. У мене стоять такі значення:

Pre Event Image Count: 25

Post Event Image Count: 50

Так ось, у кожному каталозі з подією, в моєму випадку буде чітко 25 capture зображень (тобто кадри до події), потім кілька capture та analyse зображень (які показують, що виявив Blob- алгоритм визначення руху), а потім ще 50 capture зображень (тобто кадри після події). І виявляється, що і в кадрах ДО і в кадрах ПІСЛЯ є дуже багато рухів, яких детектор не виявляє.

Ще одна ознака поганої роботи Blob-детектора, це те, що за наявності двох камер одна камера показує, що людина явно зайшла в зону видимості другої камери, але друга камера не має події, що людина з'явилася. Тобто відбувається ситуація, що ми бачимо, що людина пройшла біля камери, а що вона робила далі біля іншої – невідомо, хоча друга камера мала зафіксувати рух (це я говорю про режим Modect).

Спроба знизити параметр Min/Max Pixel Threshold з Min 20 до Min 5 (схоже, що це параметр допустимої зміни яскравості аналізованої точки), призвела тільки до того, що стала більша зона на кадрах, де рух виявлено. Кадри з явним рухом, на яких рух не виявився, як були, так і залишилися.

Шляхом довгих проб було знайдено параметри, які для наведеного вище кадру розміром 703x575 більш-менш відловлюють невеликі області руху:

настроїти

Alarm Check Method: Blobs

Min/Max Pixel Threshold (0-255): 15 - 0

Filter Width/Height (pixels): 3x3

Min/Max Alarmed Area: 1 - 0

Min/Max Filtered Area:1 - 0

Min/Max Blob Area: 1 - 0

Min/Max Blobs: 1 - 0

Як видно, параметри Alarmed, Filtered, Blob Area виставлені на 1%. Задати розмір області менше одного відсотка інтерфейс не дозволяє. Водночас, навіть цей 1% не визначить рух біля об'єкта, розміром із дівчину в білій сукні на попередній картинці.

Тому потрібно тестувати режим Alarm Check Method: AlarmedPixels . Це більш простий режим, який просто шукає відмінності в однакових точках двох послідовних кадрів. Але проблема в тому, що побачити, які точки алгоритм вважав за змінені, неможливо. Цей алгоритм не зберігає analyse кадрів на диску, і тому важко зрозуміти, на яких кадрах було виявлено рух. Для того щоб цей режим визначав рух невеликих об'єктів, потрібно виставити розмір тривожної області в 1%:

Min/Max Pixel Threshold (0-255): 15 - 0

Min/Max Alarmed Area: 1 - 50

Практика показує, що метод AlarmedPixels набагато краще визначає рух дрібних об'єктів у затемнених місцях, ніж метод Blobs. Поки що я зупинився саме на ньому.