Научная статья на тему 'Разработка программно-аппаратного комплекса извлечения и анализа видеопотока данных с сенсорных устройств'

Разработка программно-аппаратного комплекса извлечения и анализа видеопотока данных с сенсорных устройств Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
220
104
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ADAS СИСТЕМЫ / ПЛАТЫ ВИДЕОЗАХВАТА / ИЗВЛЕЧЕНИЕ ВИДЕОПОТОКА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Сачков Алексей Дмитриевич, Кобляков Дмитрий Александрович, Соколова Элеонора Станиславовна

На основе выбранных аппаратных средств разработан программно-аппаратный комплекс по извлечению и анализу видеопотока данных с сенсорных устройств. Произведён анализ производительности и применимости полученного комплекса.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Сачков Алексей Дмитриевич, Кобляков Дмитрий Александрович, Соколова Элеонора Станиславовна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Разработка программно-аппаратного комплекса извлечения и анализа видеопотока данных с сенсорных устройств»

УДК 004.722

А.Д. Сачков, Д.А. Кобляков, Э.С. Соколова

РАЗРАБОТКА ПРОГРАММНО-АППАРАТНОГО КОМПЛЕКСА ИЗВЛЕЧЕНИЯ И АНАЛИЗА ВИДЕОПОТОКА ДАННЫХ С СЕНСОРНЫХ УСТРОЙСТВ

Нижегородский государственный технический университет им. Р. Е. Алексеева

На основе выбранных аппаратных средств разработан программно-аппаратный комплекс по извлечению и анализу видеопотока данных с сенсорных устройств. Произведён анализ производительности и применимости полученного комплекса.

Ключевые слова: ADAS системы, платы видеозахвата, извлечение видеопотока.

В настоящее время развитие информационных технологий и вычислительной техники подталкивает людей к автоматизации повседневных задач и информатизации мира вокруг. Примерами тому являются различные системы - «умный дом», многочисленные интеллектуальные помощники, такие как Siri, Google Now, Amazon Echo и др.

Одним из передовых направлений является разработка систем помощи водителю, так называемых ADAS (Advanced driving assistance systems) систем: начиная от простых парк-троников и заканчивая полноценными автопилотами. Разработка и внедрение в этой области алгоритмов и автоматизированных систем позволит достичь более высокого уровня безопасности и комфорта дорожного движения.

Основные компоненты любой ADAS системы - это датчики, осуществляющие наблюдение за обстановкой вокруг автомобиля, и блок анализа данных, который обрабатывает информацию с датчиков и генерирует соответствующие сигналы для автомобиля и водителя.

Существует большое количество различных датчиков, обладающих разными характеристиками и возможностями. Например, ультразвуковые датчики позволяют определить расстояние до близлежаших объектов, однако имеют крайне низкую дальность действия и не могут понять, под каким углом мы движемся к объекту, или определить скорость объекта. Ещё одним примером являются лидары - датчики, получающие информацию об окружающей среде с помощью активных оптических систем (в основном лазеров), использующих явления поглощения и рассеяния света. Лидары обладают высокой точностью, дальностью действия и не зависят от погодных условий (дождь, снег), однако являются сложными хрупкими устройствами с высокой стоимостью.

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

В качестве блока анализа данных можно использовать большое количество различных аппаратных платформ: обыкновенные персональные компьютеры, различные одноплатные компьютеры (Raspberry PI, Cubieboard) и микроконтроллеры (Texas Instruments), специальные платформы для разработок (NVIDIA Jetson).

В данной статье рассматривается разработка и построение программно-аппаратного комплекса для ADAS системы, основанного на использовании обыкновенного персонального компьютера и набора аналоговых камер.

Программно-аппаратный комплекс по извлечению и анализу видеопотока данных состоит из аналоговых видеокамер, платы видеозахвата и персонального компьютера (рис. 1).

© Сачков А.Д., Кобляков Д.А., Соколова Э.С., 2018.

Рис. 1. Аппаратная структура комплекса

Аналоговые камеры, используемые в качестве сенсорных устройств при разработке программно-аппаратного комплекса, наиболее распространены и доступны и позволяют решать широкий спектр задач. При работе с ними требуется использование платы видеозахвата, представляющей собой электронное устройство (карта расширения PCI или PCI-E, либо USB-совместимая плата) для преобразования аналогового видеосигнала в цифровой видеопоток.

К сожалению, аналоговые камеры обладают довольно низким разрешением: самое высокое доступное разрешение такой камеры составляет 720 x 576 пикселей, что является недостаточным для распознавания далеко расположенных объектов. Проблема решается использованием аналоговых камер, поддерживающих новый формат AHD (Analog High Definition), позволяющий по аналоговым каналам передачи данных передавать видеопоток в HD и FullHD качестве.

В ходе работы были опробованы два вида аналоговых камер: AHD и не-AHD, и две различных платы видеозахвата для выбранных камер. Для работы с не-AHD камерами использовалась плата видеозахвата EWG4208HF-E на базе 10-битных АЦП Techwell TW2867C, позволяющая оцифровывать до 8 видеопотоков с частотой до 30 кадров в секунду с возможностью получения сжатого и несжатого видеопотоков в разрешениях 4CIF (704 x 576 пикселей), CIF (352 x 288 пикселей), QCIF (176 x 144 пикселей). Для работы с AHD камерами использовалась плата видеозахвата Линия AHD 4x25 Hybrid, которая позволяет оцифровывать до 4-х видеопотоков в формате HD (1280 x 720 пикселей) с частотой до 100 кадров в секунду [2].

При выборе плат видеозахвата и поиску для них драйверов возникли сложности, приведшие к разработке собственных решений. В частности, для первой платы видеозахвата поиск драйвера был нетривиальной задачей, но вместе с драйвером поставлялся и SDK (Software Development Kit) - набор средств разработки, позволяющий создавать приложения для управления платой [1]. Например, был доступен такой функционал, как извлечение сжатого и несжатого видеопотоков с камер, извлечение отдельных кадров с камер, настройка частоты кадров и разрешения видеопотоков для каждой из камер в отдельности. При анализе документации, поставляемой с драйвером и набором средств разработки, описывающей доступный функционал и методы его активации, были обнаружены явные ошибки (например, несоответствие описанных и фактических параметров некоторых функций), а также отсутствие подробного описания механизма работы платы видеозахвата. В результате проделанной работы экспериментальным путем были определены некоторые

нюансы работы платы видеозахвата, а также разработан алгоритм взаимодействия с платой видеозахвата, включающий в себя:

1) вызов процедуры инициализации платы видеозахвата и получение дескрипторов камер для последующей работы с ними;

2) выделение буфера под кадр с камеры и конфигурация параметров видеозахвата: частота кадров, разрешение, формат видеопотока;

3) получение очередного кадра для обработки и его обработка. Оповещение о новом кадре происходит путём вызова драйвером заранее переданной ему функции-обработчика. Новый кадр при этом уже расположен в буфере, выделенном в предыдущем шаге.

Далее представлен небольшой фрагмент псевдо-кода, иллюстрирующего работу с платой видеозахвата:

1. char buffer[704 * 576]

2. void imageStreamCallback(void* frameData, int channelID) {

3. // код обработки кадра с камеры №channelID

4. }

5. int main() {

6. InitDSPS();

7. HANDLE channel1 = ChannelOpen(1);

8. RegisterImageStreamCallback(imageStreamCallback);

9. SetImageStream(channel1, 30, 704, 576, buffer);

10. // ...

11. DeInitDSPs(); 12 . }

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

Рис. 2. Проблема задержек при работе с несколькими камерами

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

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

Рис. 3. Неопределённый порядок обработки кадров

Чтобы минимизировать задержки, влияние обработки кадров с одной камеры на обработку кадров с другой камеры, а также выровнять интервалы между соседними кадрами с одной и той же камеры, был реализован механизм многопоточной обработки видеопотоков (рис. 4).

Главный поток

1

0 40 80 1 20 1 60

Поток №1

Поток №2

Поток №3

Рис. 4. Параллельная обработка видеопотоков

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

Ещё одна особенность платы видеозахвата - неравномерность интервалов между кадрами: в среднем временной интервал между соседними кадрами с одной камеры соответствует выбранной частоте кадров в секунду, однако отдельные кадры могут приходить гораздо раньше или наоборот гораздо позже, чем ожидалось (рис. 5).

На рис. 5 по горизонтальной оси отмечен временной интервал между кадрами в миллисекундах, а по вертикальной - количество раз, которое данный интервал встретился. Данные получены при обработке 4-х камер с частотой 30 кадров в секунду, статистика собрана для 1200 кадров с каждой камеры.

450 400 350 300 250 200 150 100 50 0

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ■ Камера №1 ■ Камера №2 ■ Камера №3 ■ Камера №4

Рис. 5. Гистограмма временных интервалов между кадрами

Для работы с платой видеозахвата для AHD камер видеонаблюдения не было проблем с драйверами, так как они поставляются вместе с самим устройством, но существует проблема с SDK, которая заключается в полном его отсутствии в публичном доступе. Таким образом, обращаться напрямую к плате видеозахвата невозможно. Тем не менее, для решения этой проблемы был найден способ: ПО от производителя платы видеозахвата запускает локальный веб-сервер, через который можно получать видеопоток с камер, подключённых к плате видеозахвата.

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

Эксперименты по замеру задержек показали следующие результаты: 200-300 млс для платы видеозахвата под AHD камеры видеонаблюдения и 100-200 млс для платы видеозахвата под не-AHD камеры.

Данные задержки несомненно являются значительными, если мы хотим решать задачи в масштабе реального времени или хотя бы в масштабе, близкому к реальному времени. В частности, представим ситуацию: автомобиль двигается со скоростью 50 км/ч, что приблизительно равно 15 м/с. Имея видоеопоток с частотой 30 кадров в секунду (новый кадр приблизительно каждые 30 миллисекунд), получаем, что за один кадр автомобиль успевает проехать около полуметра. Соответственно, за 200 миллисекунд (около 7 кадров) автомобиль успевает проехать 3,5 метра - значительная задержка, которая будет заметна пользователю данной системы.

Таким образом, можно сделать вывод, что построение программно-аппаратного комплекса для реализации ADAS системы на основе аналоговых камер и плат видеозахвата возможно, однако стоит тщательно подойти к выбору платы видеозахвата: помимо технических характеристик важно обращать внимание на наличие драйверов, документации и каких-либо средств разработки. ПО, входящее в поставку с платами видеозахвата, необходимо только

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

Библиографический список

1. DH_VEC Video Compression Card System SDK Manual (Windows) Ver: 2.1 Build0711 2012-07-11

2. https://devline.ru/plata_videozahvata/ - описание и характеристики платы видеозахвата Линия AHD 4x25 Hybrid

Дата поступления в редакцию 15.04.2018

A.D. Sachkov, D.A. Koblyakov, E.S. Sokolova

DEVELOPMENT OF SOFTWARE AND HARDWARE COMPLEX OF EXTRACTION AND ANALYSIS OF VIDEO DATA FROM SENSORY DEVICES

Nizhny Novgorod state technical university n.a. R.E. Alekseev

Purpose: Develop software and hardware stack to extract and analyze video data from sensory devices. Such stack is a base element of ADAS systems.

Approach: Analysis of embedded software to get maximal performance.

Findings: Developed software and hardware stack to extract and analyze video data from sensory devices which is capable to work in near real-time mode.

Value: Besides a lot of difficulties developing of software and hardware stack to extract and analyze video data from sensory devices based on analogue cameras and video-capture cards is possible.

Key words: advanced driver assistance systems, video capture cards, video stream extracting.

i Надоели баннеры? Вы всегда можете отключить рекламу.