Правительство Российской Федерации Федеральное государственное автономное образовательное учреждение высшего профессионального образования "Национальный исследовательский университет "Высшая школа экономики" Факультет Компьютерных наук Департамент программной инженерии ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА по направлению 09.03.04 «Программная инженерия» подготовки бакалавра Программа идентификации человека на двух видеопотоках c последовательных камер видеонаблюдения Студента группы № _401ПИ_ ______________ Подпись __Рожнова Л.Д.__ (Ф.И.О.) ________________ (Дата) Научный руководитель _Доцент, к.т.н._________ (должность, ученая степень) ______________ Подпись __Ахметсафина Р.З._ _ ( Ф.И.О.) ________________ (Дата) Москва, 2015 Аннотация Задача автоматизированного отслеживания перемещений людей между полями зрений нескольких камер – актуальная задача в век повсеместного внедрения информационных технологий, позволяющая обеспечить круглосуточное видеонаблюдение за помещением, как часть охранного комплекса или как средство контроля перемещения сотрудников. Цель выпускной квалификационной работы – создать программу, предоставляющую базовый функционал по идентификации и отслеживанию людей между видеопотоками. Задачи работы состоят в рассмотрении существующих подходов к отслеживанию перемещения людей на видео, в том числе между полями зрения нескольких видеокамер, и реализации библиотеки классов, позволяющей решать данную задачу без погружения в особенности реализации алгоритма. Рассмотрение существующих подходов включает в себя анализ статей, посвященных проблеме отслеживания и идентификации людей на видео, сравнение преимуществ и недостатков отдельных подходов. По результатам сравнения выбраны алгоритмы для реализации. В работе описаны особенности реализации выбранного алгоритма на языке C# с использованием свободной библиотеки OpenCV. Работа содержит 22 страницы, 3 главы, 6 рисунков, 9 источников и 4 приложения. Ключевые слова: распознавание людей, видеонаблюдение, каскады Хаара, OpenCV. Annotation Tracking of persons between fields of view of several surveillance cameras – is an urgent problem nowadays. It allows automating of a surveillance part of the security complex, greatly decreasing the costs of installing and maintaining of such a system. The main aim of the paper is the development of an application providing basic functionality of person identification and person tracking on several video streams. The objectives of this paper are: to summarize existing approaches to the problem of tracking people movements in the video and to implement a class library that allows including that functionality into third-party systems without immersing into programming implementation of person tracking. Review of articles devoted to the problems of movement tracking and person identification includes comparison of advantages and disadvantages of different approaches, unification of several most efficient approaches with the aim of reaching better tracking results. Also, paper includes description of features of described algorithm implementation using the C# language and free computer vision library OpenCV. Key words: person identification, surveillance, Haar classifier cascade, OpenCV. Основные определения, термины и сокращения OpenCV – наиболее известная библиотека классов для работы с изображениями Биометрические характеристики - измеримые физиологические или поведенческие данные живого человека. Каскад Хаара – инструмент формального описания объекта на изображении с помощью описания взаимного расположения зон разной яркости. Описывающий прямоугольник – прямоугольник минимального размера, описанный вокруг объекта. Цветовая модель HSV – цветовая модель, характеристиками в которой являются: цветовой тон, насыщенность цвета, яркость пикселя. Оглавление Аннотация ......................................................................................................................................2 Annotation .......................................................................................................................................3 Основные определения, термины и сокращения........................................................................4 Введение .........................................................................................................................................6 Глава 1. Алгоритмы идентификации движения на видео .........................................................8 Определение движений тела человека ....................................................................................8 Отслеживание перемещений человека ....................................................................................9 Глава 2. Комбинированный алгоритм отслеживания перемещений ......................................12 Каскад Хаара ............................................................................................................................12 Алгоритм выделения фона .....................................................................................................13 Подсчет гистограммы цвета выделенного силуэта ..............................................................14 Сравнение двух обнаруженных силуэтов .............................................................................15 Глава 3. Разработка программы .................................................................................................16 Библиотека классов .................................................................................................................17 Библиотека OpenCV ................................................................................................................18 Клиентское приложение .........................................................................................................19 Алгоритм обработки отдельного видеопотока .....................................................................19 Особенности реализации сравнения объектов .....................................................................20 Заключение...................................................................................................................................21 Список использованных источников.........................................................................................22 Приложения ................................................................................. Error! Bookmark not defined. Введение Проблема автоматизированного распознания и отслеживания людей на видео, получаемом с камер видеонаблюдения, привлекает внимание исследователей в последние годы, так как значительно улучшились качество и доступность IP-камер, позволяющих без дорогостоящего оборудования обеспечить видеонаблюдение за произвольным объектом. В то же время, в коммерчески используемых системах, отслеживание людей по-прежнему используется крайне поверхностно, ограничиваясь как правило только фактом наличия движения в заданной области, чуть реже оценивая размеры движущегося объекта чтобы исключить срабатывание на животных [1]. В научных работах преобладают рассмотрения программных подходов, позволяющих как дополнительно увеличить точность отслеживания маршрута перемещения за счет просчета траектории движения, так и добавить новые возможности к видеонаблюдению: распознавания людей, реагирование только на определенные лица, учет времени прохода определенных лиц. Другая многообещающая область применения данных технологий – маркетинговые исследования. Целью данных исследований может быть, к примеру, установление маршрута покупателя в магазине. При сборе достаточного объема данных, можно оптимизировать расположение товаров с целью увеличения эффективности продаж. Помимо магазинов, отслеживание пути человека, с его идентификацией, может быть применено в системах «умный дом». Одной из основных сложностей в построении подобных систем, является именно отслеживание текущих действий пользователя. Как правило, срабатывания строятся на простых триггерах, например, наличие движения в определенной комнате, что дает недостаточно высокую корреляцию между ожидаемой и получаемой реакцией системы. Возможность отслеживания перемещений и «понимание» намерений пользователей могло бы значительно улучшить точность срабатывания. Среди описанных выше областей применения, обычно рассматривается именно применение автоматизированного распознавания людей для обеспечения безопасности объекта. К сожалению, большинство наработок в данной области - либо используемые коммерческими компаниями части проприетарных систем, продающиеся исключительно вместе с аппаратной платформой и недоступные для ознакомления для потенциальных пользователей, либо незавершенные любительские поделки, используемые для ознакомления с технологиями и тестирования отдельных алгоритмов. В таких условиях, нет возможности просто взять и использовать в каком-то виде готовую библиотеку с реализованным функционалом в своем проекте, необходимо либо глубоко разбираться в вопросе самостоятельно, либо покупать и использовать чужую систему целиком. Поэтому, цель данной работы – создать программу, предоставляющую базовый функционал по идентификации и отслеживанию людей между видеопотоками, которую можно было бы использовать без погружения в нюансы алгоритмов. Для достижения этой цели требуется выполнить следующие задачи: Проанализировать существующие исследования на данную тему, рассмотреть предлагаемые в них подходы и алгоритмы. Разработать алгоритм работы программы идентификации людей на видеопотоках. Выбрать инструменты реализации предложенного алгоритма. Разработать программу реализующую предложенный алгоритм. Провести испытания программы. Разработать техническую документацию. Глава 1. Алгоритмы идентификации движения на видео Идея использования компьютерного зрения для отслеживания движения людей широко обсуждается последнее десятилетие. В этой области, есть две глобальные задачи: определение движений тела человека и отслеживание перемещений человека по помещению с помощью набора камер. Определение движений тела человека Данная проблема привлекает большую часть внимания исследователей. Данный подход чаще всего использует одну-две камеры, иногда – камеру с датчиком глубины. Зона распознавания как правило ограничена скромной областью прямо перед камерами, глубиной от 1 до 3 метров, редко достигая 5-7 метров в зависимости от условий видимости. Исследования в этой области сосредоточены на улавливании и распознании мелкой моторики: движений рук, пальцев, положения частей тела относительно друг друга. Для достижения достаточной точности недостаточно информации о цвете двумерного изображения с камеры. Для получения относительного положения частей тела требуется информация о расстоянии от камеры до точек видеопотока. Эти данные передаются при помощи карты глубины, которая строится либо на основании показаний специального сенсора (обычно – ИК-камера с подсветкой), либо совмещением и вычислением разницы в изображении с двух близкорасположенных камер (симулируя человеческое зрение). Наиболее известным представителем аппаратной платформы для распознания движений человека с помощью карты глубины, является Kinect. В нем используются одна видеокамера для получения цветного видеопотока и два сенсора глубины с ИК подсветкой, по данным которых строится карта глубины изображения. Проприетарное ПО позволяет распознавать движения тела и мимику. ИК подсветка позволяет не зависеть от внешнего освещения, а два сенсора – увеличить точность карты глубины. [2] Рисунок 1. Камера Kinect'а Другой способ решения данной проблемы – отслеживание «ключевых точек» на изображении. Согласно данному подходу, каждая часть человеческого тела будучи заснятой на изображении, содержит определенную комбинацию так называемых «ключевых точек» (выделяющихся частей изображения, таких как углы, четкие границы, пятна в яркости). Каждую «ключевую точку» по отдельности достаточно просто обнаружить, а собрав их вместе и определив связи между ними, можно определить текущее положение части тела, которой они принадлежат. [3] Рисунок 2. Ключевые точки ладони Отслеживание перемещений человека Вторая проблема заключается в идентификации человека, попавшего в поле зрение двух и более камер и сопоставлении данных изображений. Исследования в этой области посвящены тому, как можно идентифицировать человека, используя только тот ограниченный набор данных, который запечатлен на фрагменте видео. Можно выделить два основных подхода к решению: Непрерывное отслеживание перемещения человека. Наиболее простой подход, он основан на том, что нам известны как положение и направление камер, как и геометрия снимаемой области. Таким образом, появляется возможность перевести координаты человека на кадре видео в координаты человека в реальном пространстве. Отслеживая его движение по реальным координатам, можно сопоставить его перемещение по полям зрения нескольких камер, сопоставляя данные координаты. [4] Плюсы данного подхода: Легкость реализации. Надежность, в случае камер с пересекающимися полями зрения и малочисленными наблюдаемыми людьми. Минусы: Маленькая точность в случае с перемещением групп людей, либо пересечением маршрутов. Ненадежность в случае, когда между полями зрения камер есть неподконтрольное пространство, через которое проходят маршруты. Неустойчивость к резким сменам направления Существующие реализации: Синезис видеоаналитика – Данный подход используется в коммерческом продукте, как часть системы видеонаблюдения проприетарная система как часть охранного комплекса Составление биометрического портрета человека. Данный подход основан на сборе данных, которые могли бы охарактеризовать человека вне зависимости от времени и обстановки в которой он был снят. Есть два вида подобных характеристик: Физиологические. Данные характеристики включают в себя врожденные черты человека, такие как: телосложение, обхваты тела, черты лица, геометрия руки, отпечатки пальцев. Поведенческие. К данным характеристикам относятся те характеристики, которые описывают поведение человека: голос, походка, одежда. Среди данного многообразия, лишь несколько доступны для анализа на видео с обычной IP-камеры: телосложение, черты лица (иногда), походка, одежда. Остальные – требуют изображения в высоком качестве и специальных ракурсов и поэтому не будут рассматриваться далее. Плюсы данного подхода: Независимость от обстановки Не требует непрерывного слежения Минусы: Зависит от качества видеопотока. Сложнее в исполнении Существующие реализации: VeriLook Surveillance – Данная компания активно использует распознавание лиц в своей системе видеонаблюдения. Остальные методы данного подхода не используются, имеются высокие требования к снимающему оборудованию и сложное обучение ПО в конкретных условиях. Как видно из данного сравнения, оба подхода имеют свои достоинства и недостатки. В целом, подход отслеживания координат следует применять, когда ожидается малое количество людей одновременно в кадре и есть возможность расставить камеры так, чтобы их поля зрения все время перекрывались. Если же нет возможности повлиять на расположение камер, следует анализировать биометрические показатели проходящих людей. Таким образом, целью данной работы является разработка библиотеки, выполняющей идентификацию людей на видеопотоках с нескольких камер видеонаблюдения, и программы для демонстрации её возможностей. Данная библиотека должна быть основана на комбинировании современных подходов к идентификации людей с помощью биометрических показателей для достижения максимальной точности распознания, предоставлять удобный интерфейс использования в сторонних проектах. для пользователя и программное API для Глава 2. Комбинированный алгоритм отслеживания перемещений Решение, предложенное в работе, основано на комбинировании различных биометрических метрик для улучшения качества распознания. Используются метрики: Цветовая гамма одежды; Текущее положение в пространстве; Телосложение. Распознавание силуэтов людей производится на каждом кадре с помощью каскадов Хаара. Каскад Хаара Признаки Хаара (примитивы Хаара) – один из наиболее популярных признаков изображения, используемых для распознавания образов. Каждый признак включает в себя несколько смежных прямоугольных зон, расположенных определенным образом на изображении. Разница между суммами яркостей пикселей зон, является значением признака. Различные признаки имеют различное расположение более светлых и более темных зон, таким образом позволяя описать одним из них практически любое сочетание светлых и темных зон. Рисунок 3. Примитивы Хаара Каскад Хаара – это набор из некоторого количества признаков Хаара, имеющий определенные свойства взаимного расположения признаков на изображении. Используя достаточно большое количество примитивов, можно описать любой объект на изображении. Эта техника удобна тем, что позволяет использовать предварительно рассчитанное описание характеристик искомого изображения многократно и является одним из самых быстрых способов распознавания объектов на изображении (при условии использования предварительно рассчитанного каскада) [5] . Принцип работы алгоритма заключается в том, что по всему изображению прогоняется прямоугольное сканирующее окно. Во всех тестируемых положениях рассчитывается яркость зон, описанных в примитивах поискового каскада. Если карта яркости фрагмента изображения в окне похожа на искомый примитив – информация об этом сохраняется. По итогам сканирования изображения найденные совпадения анализируются, группируются и проверяются на соответствие условиям взаимного расположения элементов в каскаде. Если расположение найденных элементов совпадает с эталонным, зоны, содержащие требуемые признаки, подаются на выход алгоритма [6]. Помимо высокой скорости распознавания преимуществом использования данного алгоритма является то, что каскады для большинства основных фигур и предметов (включая части человеческого тела) уже неоднократно были рассчитаны с достаточной точностью, что позволяет не проводить обучение и подбор соответствующих выборок самостоятельно, а просто взять готовый классификатор и использовать в своей программе. Помимо выделения силуэтов людей на изображении, выполняется отделение движущихся объектов от фона с помощью алгоритма, описанного P. KadewTraKuPong и R. Bowden в их работе «An improved adaptive background mixture model for real-time tracking with shadow detection» [7]. Алгоритм выделения фона Алгоритм, описанный в [7], имеет в своей основе метод, описывающий каждый пиксель фона несколькими Гауссиановыми распределениями, по одному на каждый цветовой канал. Веса параметров каждого Гауссиана, пропорциональны длительности пребывания соответствующего цвета в кадре. Пиксели, чей текущий цвет соответствует совокупности распределений с наибольшими весами, признаются фоновыми. Вероятность того, что конкретный пиксель экрана будет иметь значение x, описывается формулой: 𝐾 𝑝(𝑥) = ∑ 𝑤𝑗 𝜂(𝑥; 𝜃𝑗 ), 𝑗=1 где 𝑤𝑘 - вес k-го Гауссиана, 𝜂(𝑥, 𝜃𝑘 ) - нормальное распределение 𝑘 − го компонента цвета. Все распределения сортируются по значению 𝑤𝑘 /𝜎𝑘 , и первые B распределений используются в качестве описывающих фон, где 𝐵 = arg min(∑𝑏𝑗=1 𝑤𝑗 > 𝑇). Предел T – минимальная доля фона в сцене. Таким образом, пиксели считаются пикселями переднего плана в том случае, если они отличаются от любого из B распределений не менее чем на 2.5 стандартных отклонения. Подсчет гистограммы цвета выделенного силуэта Для каждого выделенного каскадом Хаара ограничивающего силуэт прямоугольника, после удаления из него фона, рассчитывается основная метрика: гистограмма цвета. Для каждого пикселя области, если он не полностью черный (что соответствует фону), на основании его RGB-значений рассчитывается значение тона (Hue) цветовой модели HSV с помощью следующей формулы: 𝑢𝑛𝑑𝑒𝑓𝑖𝑛𝑒𝑑, 𝐺−𝐵 60 ∗ , 𝑀𝐴𝑋 − 𝑀𝐼𝑁 𝐺−𝐵 60 ∗ + 360, 𝐻= 𝑀𝐴𝑋 − 𝑀𝐼𝑁 𝐵−𝑅 60 ∗ + 120, 𝑀𝐴𝑋 − 𝑀𝐼𝑁 𝑅−𝐺 60 ∗ + 240, { 𝑀𝐴𝑋 − 𝑀𝐼𝑁 𝑀𝐴𝑋 = 𝑀𝐼𝑁 𝑀𝐴𝑋 = 𝑅 𝑎𝑛𝑑 𝐺 ≥ 𝐵 𝑀𝐴𝑋 = 𝑅 𝑎𝑛𝑑 𝐺 < 𝐵 𝑀𝐴𝑋 = 𝐺 𝑀𝐴𝑋 = 𝐵 где R, G, B – значения цвета в цветовой модели RGB в диапазоне [0; 1], MAX, MIN – максимум и минимум из значений цветов R, G, B пикселя. Результирующее значение тона H может находиться в диапазоне [0; 360], если значение – undefined – пиксель считается фоном, значение игнорируется. Полученные значения тона пикселей группируются в гистограмму, обозначающую частоту появления цветов на изображении. При этом для уменьшения влияния освещенности и цветовых искажений камеры, соседние значения тона группируются, уменьшая количество столбцов гистограммы. После занесения количества пикселей в гистограмму, она нормируется по общему количеству не-фоновых пикселей, так, что сумма значений столбцов равна 1, значение каждого столбца находится в диапазоне [0; 1] Рисунок 4. Гистограмма тона Полученная гистограмма является характеристикой распознанного каскадом Хаара силуэта. Далее распознанные силуэты людей классифицируются. Сравнение двух обнаруженных силуэтов При сравнении двух распознанных силуэтов оцениваются следующие параметры: Считается разность гистограмм цвета обоих фрагментов. Для этого для каждого из используемых диапазонов цвета рассчитывается 𝐻𝑟𝑒𝑠𝑢𝑙𝑡 = 𝐴𝑏𝑠(𝐻1 − 𝐻2 ). Сумма значений в результирующей гистограмме является степенью различия гистограмм (может колебаться в пределах от 0 до 1). Если сумма равна 0, гистограммы цвета идентичны, если 1 – полностью различны. Рассчитывается площадь пересечения описывающих прямоугольников обоих силуэтов и делится на площадь меньшего описывающего прямоугольника. Полученная величина, лежащая в пределах от 0 до 1, характеризует вероятность того, что оба силуэта находятся в одной и той же области кадра. Каждая из описанных выше характеристик дает вероятность того, что рассматриваемые объекты идентичны. На основании конкатенации данных вероятностей с весами в зависимости от важности каждого из критериев, делается вывод, было ли соответствие данному объекту найдено, или его следует рассматривать как новый объект. Глава 3. Разработка программы Используемый язык программирования – C#, с использованием платформы .Net Framework 4.5. Данный язык был выбран по причине сочетания высокой скорости разработки, наличия качественных библиотек и обширных возможностей оптимизации производительности. Для работы с видеопотоками: их получения, декодирования, первичной обработки, распознавания фигур людей и прочих базовых операций с изображениями, используется широко известная библиотека алгоритмов OpenCV, а конкретнее, обертка (Wrapper) для работы с данной библиотекой на языке C# - «OpenCVSharp». Данная библиотека была выбрана по нескольким причинам: 1. Использование готовой библиотеки с базовыми функциями вместо ручной их реализации позволит значительно ускорить процесс разработки и повысить качество программы за счет использования тщательно протестированного и оптимизированного кода. 2. Среди существующих библиотек работы с изображениями, данная библиотека – наиболее известная и обширная, включает в себя все необходимые функции, например, функцию поиска по изображению с помощью каскадов Хаара и базовые преобразования изображения. 3. Несмотря на то, что библиотека реализована на языках C/C++, она имеет обертки для подавляющего большинства современных языков программирования, позволяющие использовать её, не отказываясь от удобств более высокоуровнего языка. Для пользовательского интерфейса, используется система WPF (Windows Presentation Foundation). Данная система была выбрана потому, что позволяет легко спроектировать удобный масштабируемый интерфейс, и предоставляет такие возможности как: привязка данных (Binding), шаблоны элементов управления и быструю отрисовку с использованием аппаратного ускорения. Приложение состоит из: Библиотеки классов PersonIdentifierLib, содержащей все требуемые для работы алгоритмы и классы. Классы инкапсулируют логику работы с видеопотоком и предоставляют доступ к коллекциям с поддержкой Binding’ов WPF, в которых хранятся распознанные силуэты. Клиентского приложения технологии WPF, PersonIdentifier, представляющего написанного собой утилиту с для использованием демонстрации возможностей описанной выше библиотеки. Библиотека классов Библиотека PersonIdentifierLib содержит классы: Dimensions. Класс, содержащий информацию о положении объекта в кадре в виде ограничивающего прямоугольника. Используется для определения расстояния и степени перекрытия между двумя положениями распознанного объекта. HueMap. Класс, представляющий собой гистограмму цвета. Хранит информацию о частотном распределении цветов объекта, используется для расчёта разницы между двумя гистограммами. Body. Класс, хранящий всю информацию об обнаруженном на видео объекте. Экземпляры класса хранят информацию, необходимую для сравнения двух распознанных объектов, и методы, позволяющие выполнить сравнение и объединение нового силуэта с обнаруженными ранее. CameraWorker. Класс, управляющий обработкой отдельного видеопотока в собственном процессе. Инкапсулирует работу с видеопотоком и вызовы методов библиотеки OpenCVSharp для отдельных кадров видеопотока. Передает информацию о распознанных объектах в класс PersonManager. PersonManager. Статический класс, аккумулирующий информацию, полученную от CameraWorker’ов, инициирующий сравнение и поиск дубликатов среди обнаруженных объектов. Рисунок 5. Диаграмма классов. Библиотека OpenCV Данная библиотека является наиболее известным решением подавляющего большинства задач, связанных с обработкой изображений. Разработка была начата Нижегородским подразделением компании Intel в 1999 году, в настоящий момент поддерживается компаниями Willow Garage, Itseez и open-source сообществом [8]. Изначально преследовала следующие цели: Предоставить открытый и оптимизированный код для решения базовых задач компьютерного зрения, Популяризировать использование компьютерного зрения за счет предоставления разработчикам общей инфраструктуры, на которой могли бы быть основаны разработки, Дать возможность использовать переносимую, оптимизированную бесплатную библиотеку коммерческим проектам за счет использования подходящей лицензии. Релиз версии 1.0 произошел в 2006 году. В 2009 году, появилась версия 2.0, которая внесла значительные архитектурные изменения, полностью изменившие структуру проекта. В настоящий момент продолжает активно развиваться за счет вышеупомянутых компаний и обширного сообщества пользователей. Написана на языке C++, с отдельными вкраплениями чистого C. Начиная с версии 2.5 имеет полноценные интерфейсы для Python, Java и Mathlab. Языки C#, Perl, Ruby – имеют разработанные сообществом обертки для доступа к нативным функциям. С 2010 года поддерживает CUDA, с 2012 – OpenCL для использования вычислительных мощностей GPU [9]. Благодаря непрерывному развитию и широкому кругу пользователей, многие алгоритмы имеют оптимизации, позволяющие улучшить качество работы алгоритмов относительно «классических» версий. К примеру, в реализации метода Виолы-Джонса, помимо базовых примитивов Хаара, учитываются следующие: Рисунок 6. Дополнительные признаки Хаара Клиентское приложение Приложение представляет собой одно окно «MainWindow», которое позволяет открыть 2 видеофайла, запустить процесс отслеживания людей в них и в режиме реального времени отслеживать обнаруженные объекты. Из каждого из открытых файлов средствами библиотеки OpenCVSharp, получается объект CvCapture, представляющий собой видеопоток, и передается в созданные для этого CameraWorker’ы библиотеки PersonIdentifierLib. Список обнаруженных людей привязывается (средствами WPF) к коллекции Bodies класса PersonManager. Таким образом, как только любым из процессов, обрабатывающих видео будет найден силуэт – информация о нем будет отображена в окне программы. Алгоритм обработки отдельного видеопотока Видеопоток создается клиентским приложением, с помощью метода библиотеки OpenCVSharp, CvCapture.FromFile либо CvCapture.FromCamera, в зависимости от того, какой источник изображения был выбран. Полученный экземпляр класса CvCapture используется для создания экземпляра CameraWorker’а. После выбора всех желаемых видеопотоков из клиентского приложения происходит запуск обработки путем вызова метода Start каждого объекта CameraWorker. При этом в каждом CameraWorker запускается отдельный поток, выполняющий покадровую обработку видеопотока. Для обработки из видеопотока каждый раз извлекается следующий кадр и обрабатывается следующим образом: 1. Средствами библиотеки OpenCVSharp, выполняется кадрирование до размера 640x480 пикселей. 2. С помощью имеющейся в OpenCV имплементации алгоритма выделения фона, описанного во второй главе данной работы, получается маска кадра, отражающая объекты переднего плана на кадре. 3. С помощью библиотеки OpenCVSharp используется реализованный в OpenCV классификатор каскадов Хаара, который настроен на поиск тела человека. 4. Если классификатором было найдено хотя бы одно изображение человека, маска из пункта 2 размывается размытием по Гауссу для удаления шума и применяется к обрабатываемому кадру. 5. Полученная на шаге 3 информация о положении на кадре людей и полученный на шаге 4 кадр используются для создания объектов Body классом PersonManager. 6. Класс PersonManager сравнивает новый распознанный объект со всеми, имеющимися в настоящий момент, по алгоритму, описанному в главе 2, и в зависимости от результатов сравнения либо объединяет новый кадр с одним из обработанных ранее, либо сохраняет новый объект как эталонный. Периодически, по мере обработки видео, выполняется очистка списка распознанных объектов от ошибочно распознанных объектов, причиной появления которых был шум на изображении и ложные срабатывания классификатора. Ошибочность распознавания определяется по следующим критериям: Объект был распознан менее чем на 10 кадрах; С момента последнего обнаружения объекта прошло не менее 100 кадров; За все время обнаружения объект удалился от первоначальной точки обнаружения не более чем на 10 пикселей. В случае выполнения первого и второго критерия, либо выполнения третьего критерия объект удаляется из списка обнаруженных. Особенности реализации сравнения объектов Если соответствие было найдено, производится обновление информации о расположении и гистограмме цветности изображения. При этом координаты объекта в кадре заменяются на новые, а для гистограммы рассчитывается взвешенная сумма гистограмм. Для результирующей гистограммы: 𝐻𝑟𝑒𝑠𝑢𝑙𝑡 = (𝐻1 ∗ 𝑘 + 𝐻2 )/(𝑘 + 1), где k – количество кадров, на которых объект был распознан ранее. Заключение Целью работы было создание программы, предоставляющей базовый функционал по идентификации и отслеживанию людей, перемещающихся между полями зрения нескольких видеокамер. В работе представлен обзор источников, проанализированы основные алгоритмы решения поставленной задачи. Предложен алгоритм, использующий три показателя для идентификации объектов распознавания. Приведены используемые математические модели, описаны все этапы обработки входных видеопотоков. Выбраны инструменты разработки программы, в частности, было принято решение использовать библиотеку OpenCV, которая реализует подавляющее большинство низкоуровневых алгоритмов работы с видео и изображениями. Разработана программа, которая реализует предложенный алгоритм для решения поставленной цели работы. Результатом разработки является библиотека классов, реализующая весь требуемый функционал, и тестовое приложение, демонстрирующее возможности разработанной библиотеки. Разработана техническая документация. Для тестирования использовались предварительно записанные видео с реальных камер видеонаблюдения, расположенных в одном помещении, но осматривающих его с разных углов. Результаты тестирования описаны в документе «Программа и методика испытаний» (приложение 2). Тестирование показало хорошие результаты в отслеживании перемещения людей, но в то же время выявило недостаток выбранного способа обнаружения силуэтов людей. Использование признаков Хаара оказалось зависимо от ориентации камеры, а точнее от угла, под котором в кадр попадают люди. Направлением дальнейшей разработки может быть подбор специальных каскадов Хаара, наиболее подходящих для работы в различных условиях расположения камер. Список использованных источников [1] Синезис, «Многокамерная видеоаналитика,» [В Интернете]. Available: http://habrahabr.ru/company/synesis/blog/117746/. [Дата обращения: 10 4 2015]. [2] M. Andersen, T. Jensen, P. Lisouski, A. Mortensen, M. Hansen, T. Gregersen и P. Ahrendt, «Kinect Depth Sensor Evaluation for Computer Vision Applications,» Aarhus University©, 2012. [3] G. Nebehay и R. Pflugfelder, «Consensus-based Matching and Tracking of Keypoints for Object Tracking.,» в Материалы конференции "Winter Conference on Applications of Computer Vision 2014", Vienna, 2014. [4] M. Weser, D. Westhoff, M. Huser и J. Zhang, «Multimodal People Tracking and Trajectory Prediction based on Learned Generalized Motion Patterns.,» в Multisensor Fusion and Integration for Intelligent Systems, 2006 IEEE International Conference on., 2006. [5] P. Viola и M. Jones, «Rapid Object Detection using a Boosted Cascade of Simple Features,» в IEEE Conf. on Computer Vision and Pattern Recognition, 2001. [6] «Метод Виолы-Джонса как основа для распознавания лиц,» 2011. [В Интернете]. Available: http://habrahabr.ru/post/133826/. [Дата обращения: 8 Февраль 2015]. [7] P. KareTraKulPong и R. Bowden, «An Improved Adaptive Background Mixture Model for Realtime,» в Proc. 2nd European Workshop on Advanced Video-Based Surveillance Systems, 2001. [8] «Itseez leads the development of the renowned computer vision library OpenCV,» [В Интернете]. Available: http://itseez.com/. [Дата обращения: 18 май 2015]. [9] «OpenCV,» [В Интернете]. Available: https://en.wikipedia.org/wiki/OpenCV. [Дата обращения: 18 май 2015].