Статья:

Разработка алгоритма распределённой обработки видеопотоков для задач обнаружения движущихся объектов в системах подвижного видеонаблюдения

Конференция: XLV Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»

Секция: Технические науки

Выходные данные
Новиков А.Р. Разработка алгоритма распределённой обработки видеопотоков для задач обнаружения движущихся объектов в системах подвижного видеонаблюдения // Молодежный научный форум: Технические и математические науки: электр. сб. ст. по мат. XLV междунар. студ. науч.-практ. конф. № 5(45). URL: https://nauchforum.ru/archive/MNF_tech/5(45).pdf (дата обращения: 17.08.2018)
Лауреаты определены. Конференция завершена
Эта статья набрала 0 голосов
Мне нравится
Дипломы
лауреатов
Сертификаты
участников
Дипломы
лауреатов
Сертификаты
участников
на печатьскачать .pdfподелиться

Разработка алгоритма распределённой обработки видеопотоков для задач обнаружения движущихся объектов в системах подвижного видеонаблюдения

Новиков Артур Романович
студент, ФГАОУ ВО «Самарский национальный исследовательский университет имени академика С.П.Королёва», РФ, г. Самара
Попов Сергей Борисович
научный руководитель, д-р техн. наук, проф. кафедры технической кибернетики Самарского университета, ФГАОУ ВО «Самарский национальный исследовательский университет имени академика С.П.Королёва», РФ, г. Самара

 

В последние годы всё большую актуальность приобретают задачи компьютерного зрения. Современные методы интеллектуального анализа изображений и распознавания объектов позволяют автоматизировать многие производственные процессы и широко применяются в поисковых системах, торговых предприятиях, мониторинге дорожного трафика, системах контроля качества, криминалистике, научных исследованиях и других сферах человеческой деятельности [4].

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

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

В качестве основной технологии для распознавания движения, лежащей в основе разрабатываемых алгоритмов, используется JavaCV – надстройка над библиотекой компьютерного зрения OpenCV для языка Java, которая позволяет обращаться к функциям данной библиотеки, написанным на языке C++, а также использовать эти функции внутри технологии Apache Storm.

Для решения поставленной задачи обнаружения и оценки параметров объектов необходимо выполнять совместную обработку нескольких кадров. Входной последовательностью для алгоритма является набор из двух и более кадров, на основе которых составляется разностная маска и определяется наличие движения [3].

Псевдокод разностного алгоритма обработки видео с переменным фоном представлен ниже. Используются следующие обозначения: величина смещения кадра по горизонтали (bw), по вертикали (bh), ограничивающий прямоугольник (r), матрица (E), формирующая изображение шаблона, карта результатов (M), точка максимального соответствия шаблона оригиналу (mPoint), матрица аффинного преобразования (T) и матрица (F), содержащая преобразованный кадр буфера. Матрица E формируется путём выделения области второго кадра буфера, ограниченной прямоугольником r.

На вход алгоритма поступает последовательность кадров (frames). N – размер буфера, который задаётся пользователем. K – число обработанных кадров на заданном такте. Предварительно перед процессом сравнения производится преобразование каждого кадра сглаживающим фильтром, в данном случае – фильтром Гаусса [2]. После преобразования анализируются пары кадров (1,K), где K – порядковый номер кадра в буфере. Затем выполняется поиск участка на первом кадре, максимально соответствующего матрице E. По граничным значениям данного участка строится прямоугольник, затем по четырём парам точек полученного прямоугольника и прямоугольника r вычисляется матрица преобразования. Данное преобразование применяется ко второму кадру и результат заносится в матрицу F.

В конечном итоге формируются три матрицы. Первая (A) содержит результат вычитания текущего кадра из предыдущего, вторая (B) – результат вычитания предыдущего кадра из текущего, а третья (C) – сумму первой и второй матриц. Если число кадров буфера больше двух, разностная маска ищется для каждой пары кадров и в конечном итоге все разности суммируются (D). Обнаружение движущихся объектов выполняется посредством пороговой фильтрации полученного изображения путём отброса всех несущественных пикселей, значение которых не превышает порогового значения (p).

Псевдокод разностного алгоритма:

begin

N, A, B, C, D, p, bw, bh, r, E, F, M, T, mPoint;

K = 1;

while K < N {

           K++;

           r = new Rectangle(bw, bh, frames[K].width – bw, frames[K].height – bh);

E = new Matrix(frames[K], r);

M = matchTemplate(E, frames[0]);

mPoint = M.getMaximum();

T = getAffineTransform(E, Rectangle(mPoint.x, mPoint.y, mPoint.x + r.width, mPoint.y + r.height);

F = warpAffine(frames[K], T);

           A = frames[0] – F;

B = F – frames[0];

           C = A + B;

for (int i = 0; i < C.width; i++) {

                     for (int j = 0; j < C.height; j++) {

                              if (C[i, j] > p)

                                       C[i,j] = 255;

                              else

                                       C[i,j] = 0;

                     }

           }

           D = D + C;

}

if (D != Empty) {

           Захват областей движения;

           Вывод информации о движущихся объектах;

}

end;

На рисунке 1 показан результат обработки кадров из трёх видеофрагментов, на которых проводилось тестирование алгоритма. Левыми частями изображения являются суммы разностных масок пар кадров буфера, на правых – исходный кадр с выделенными областями движения. На заданном наборе тестов алгоритм дал полностью верные результаты.

 

Рисунок 1. Результаты обработки видео с помощью разностного алгоритма

 

В рамках эксперимента была разработана топология для реализации параллельного алгоритма с применением технологии распределённых вычислений Apache Storm. Схема топологии представлена на рисунке 4. Каждый считанный кадр исходного видеопотока вместе с некоторым количеством ему предшествующих, равном размеру буфера, передаётся одному из обработчиков, который реализует основную логику алгоритма – сравнение, наложение и разность кадров. Выходными данными обработчика является кадр с выделенными областями движения с присвоенным ему уникальным идентификатором, который передаётся сборщику. В свою очередь, сборщик накапливает полученные от обработчиков кадры в общий буфер, выполняет их сортировку по номеру и периодически выполняет запись кадров из буфера в выходной видеофайл.

 

Рисунок 2. Схема топологии для реализации параллельной обработки

 

Исследование проводится на виртуальном кластере с использованием библиотеки программного каркаса Apache Storm для языка программирования Java. Тестирование алгоритма выполняется на виртуальных машинах с четырёхузловой конфигурацией. В качестве источников данных используются видеопотоки длительностью 60 секунд с разрешением 960x540, 1280x720, 1920x1080 пикселей и частотой кадров 24 FPS. Количество обработчиков задаётся пользователем.

Результаты вычислительного эксперимента приведены в таблице 1. Было проведено сравнение по параметрам пропускной способности в зависимости от разрешения видеопотоков. Размер кадрового буфера был взят равным 3.

Как можно видеть, с увеличением параллелизма время обработки снижается экспоненциально. Однако с ростом числа параллельных процессов ускорение не достигает того же порядка. Причиной этого являются накладные расходы на коммуникации, связанные с передачей данных между узлами, занимающие в данном случае около 20% процессорного времени.

Таблица 1.

Результаты обработки видеопотоков

Потоки / разрешение

960*540

1280*720

1920*1080

Время обработки (мс)

1

314065

580494

1439833

2

163872

329959

791856

4

88040

178142

461179

6

60219

128743

336998

8

47201

99547

249712

16

26851

57971

149598

32

15543

33057

82171

64

8794

18276

44619

 

На основании полученных данных по известному общему числу кадров было рассчитано среднее количество кадров, обрабатываемых алгоритмом за одну секунду. Результаты расчётов можно видеть на рисунке 3. График отражает зависимость количества обрабатываемых кадров от числа параллельно выполняемых процессов для видеопотоков с тремя различными разрешениями. Если скорость обработки превышает скорость поступления кадров с источника, отмеченную на графике горизонтальной линией, можно сказать, что для данной конфигурации алгоритм пригоден к использованию в системах реального времени. Таким образом можно сделать вывод о том, что при разделении вычислений как минимум на 6 независимых параллельных процессов применение разработанного алгоритма становится возможным для обработки в реальном времени видеопотоков с разрешением 960x540. Для видео с разрешением 1280x720 количество таких процессов должно составлять не менее 16, а для видео высокой чёткости (1920x1080) – более 40. Следует также учесть, что при увеличении размера кадрового буфера время работы алгоритма будет расти линейно, поэтому в таком случае рекомендуется либо использовать видео более низкого разрешения, либо увеличивать уровень параллелизма.

 

Рисунок 3. Зависимость скорости обработки кадров от количества параллельных процессов

 

Список литературы:
1. Буй Ван Шон, Бушуев А. Б., Шмигельский Г. М., Литвинов Ю. В., Щаев Е. Г. Алгоритмы управления летающим роботом при слежении за подвижным объектом // Изв. вузов. Приборостроение. 2015. – Т. 58, № 8. – С. 593–599.
2. Буряченко В.В., Зотин А.Г., Алгоритм стабилизации видео, основанный на блочном методе с применением модели гауссового распределения // Актуальные проблемы авиации и космонавтики, Выпуск № 7. – 2011. – Т. 1. – С. 354–355.
3. Harshitha K., Manoj Kumar S.B., Moving object detection of videos with dynamic background using OpenCV and Matlab // International Journal For Technological Research In Engineering. – Volume 2, Issue 9. – May-2015. – ISSN (Online): 2347 – 4718.
4. Protsenko V.I., Seraphimovich P.G., Popov S.B., Kazanskiy N.L. Firmware and hardware infrastructure for data stream processing // CEUR Workshop Proceedings. – 2016. – 1638: 782-787. – DOI: 10.18287/1613-0073-2016-1638-782-787.