Дипломная (вкр): Разработка системы поддержки водителя на основе одноплатного компьютера в связке с мобильным устройством под операционную систему Android

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

-       V4l-conf

-       Libv4l-0

-       V4l2ucp

-       V4l-conf

-       V4l-utils

Список подключенный видеоустройств находится в каталоге «/dev/video*». Для каждой подключённой видеокамеры формируется файл конфигураций, который определяет используемые драйвера и протоколы передачи для этой камеры.

Для установки всех драйверов, которые необходимы для работы видеоустройств, выполнятся одна команда:

«sudo apt-get install V4l-conf Libv4l-0 V4l2ucp V4l-conf V4l-utils»

После установки пакетов, необходимые драйвера автоматически подтягиваются для работы с видеоустройствами.

Для считывания информации с любого видеоустройства мы используем следующую программу (Приложение 1).

Блок «Open device» отвечает за открытие системных функций видеокамер. Параметр O_RDWR регулирует считывание и запись. При ошибке функция возвращает значение «-1».

Функция «Read Params From Device» выполняет чтение параметров с устройства и заполняет ими структуру «Device_params» (Рис. 16). При возникновении ошибки, функция вернёт «-1».

Рис. 16 Состав структуры device_params.

Таким образом осуществляется передача данных с видеокамер на одноплатный компьютер.

4.4 Создание локальной Wi-Fi сети


Для связи одноплатного компьютера с мобильным устройством было принято решение создать локальную сеть посредством Wi-Fi. Источником сети является одноплатный компьютер, оснащённый Wi-Fi модулем.

Для этого потребуется пакет драйверов wireless. Делается это командой « apt-get install wireless-tools bridge-utils hostapd iw».

Теперь необходимо настроить сетевые интерфейсы. Конфигурация Wi-Fi адаптера содержится в папке /etc/network/interfaces. Настройки конфигурации можно увидеть в приложении 2.

Затем необходимо настроить файл hostapd, который отвечает за конфигурацию раздаваемой Wi-Fi сети. Его можно найти по пути /etc/default/hostapd.conf. Файл конфигураций со всеми настройками сети можно увидеть в приложении 3. Теперь для запуска локальной Wi-Fi сети следует запустить сервис командой «hostapd -d /etc/hostapd/hostapd.conf». Поскольку система работает без воздействия внешней сети, дополнительные настройки не потребуются. Все устройства, подключившиеся к сети, состоят в локальной связи и могут обмениться пакетами.

4.5 Разработка серверного приложения

4.5.1 Распознавание знаков и библиотека OpenCV

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

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

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

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

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

Рис. 17. Концепция автоматизированного интеллектуального вождения или системы помощи водителю

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

В последнее время обнаружение и распознавание дорожных знаков исследуется во многих исследовательских центрах. В рамках европейского исследовательского проекта PROMETHEUS в Исследовательском центре DAIMLER-BENZ была разработана система видения распознавания дорожных знаков и интегрированного автономного транспортного средства. Кроме того, было разработано много методов распознавания дорожных знаков. Например, использовались специальные цветные штриховые коды под дорожными знаками для обнаружения дорожных знаков в системе на основе видения, однако для этого требуется много времени и ресурсов. Генетический алгоритм был также предложен Aoyagi и Askura для определения дорожного знака из изображений серого уровня.

Для обеспечения необходимой точности распознавания дорожных знаков требуется мощный и быстрый интеллектуальный алгоритм. На этапе обнаружения получаемое изображение предварительно обрабатывается, улучшается и сегментируется в соответствии со свойствами знака цвета и формы. Изображения дорожных знаков обрабатываются для выявления областей пикселей, которые могут быть признаны возможными дорожными знаками со сложного фона. Обработанные объекты затем нормализуются до заданного размера и вводятся в фазу распознавания. В этой работе исследуются только объекты круглой и гексагональной формы, поскольку эти формы обычно присутствуют во многих типах дорожных знаков. Многослойный перцептрон в алгоритме обучения обратного распространения является альтернативным методом для решения проблемы распознавания знаков в этой работе. Инструмент обработки изображений, используемый в этой работе, является бесплатной и не коммерческой системой Intel® Open Source Computer Vision Library (OpenCV) [7].

Этапы обработки изображений:

-       Извлечение изображения;

-       Обнаружение знаков;

-       Извлечение.

Видеоизображения снимаются видеокамерой, а блок «Извлечение изображений» отвечает за создание изображений. Этап обнаружения и удаления знака извлекает все дорожные знаки, содержащиеся в каждом изображении, и генерирует небольшие изображения, кадры. Каждый кадр выделяется на этапе распознавания форм, который поступает в нейронную сеть на этапе распознавания, который является заключительным. Рисунок 18 иллюстрирует конфигурацию системы. Затем представлен результат распознавания дорожных знаков. Системы распознавания дорожных знаков содержит этап предварительной обработки дорожных знаков и этап распознавания. Этапа предварительной обработки дорожных знаков разделен на две части: «Распознавание знака и извлечение» и «Распознавания формы».

Рис.18. Конфигурация системы

Рис.19. Диаграмма описания системы

Этап предварительной обработки

Обнаружение и извлечение знака: на этом этапе выполняется процедура обработки изображения. В систему подается входной видеосигнал из видеопоследовательности. Изображения читаются как в цвете, так и в черно-белом режиме (Рис.20 (a) и (b).

Рис. 20. (a) Цветное изображение, (b) Изображения в режиме черно-белого режима, (c) Гауссовский фильтр с гладким изображением и (d) двоичное изображение результата после использования фильтра Гауссовского фильтра и метода обнаружения края.

В черно-белом режиме изображение - это базовое изображение, используемое для определения предела этого изображения. Это предельное значение является критерием для изменения изображения с черного и белого на двоичное. Кроме того, двоичное изображение используется для поиска контуров. Прежде чем черно-белое изображение будет изменено на двоичное, используется технология сглаживания изображения и обнаружением края, как показано на Рисунке 20 (c) и (d). Таким образом, это показывает, что использование сглаживания может улучшить изображение, чтобы получить необходимую область.

Благодаря полученному двоичному изображению и обработки для извлечения контуров путем поиска функции контура возвращается число извлеченных контуров, которые хранятся в формате цепочки. Библиотека OpenCV [7] использует два метода для представления контуров. Первый метод называется методом Фримена или методом цепного кода. Для любого пикселя все его соседние пиксели нумеруются цифрами от 0 до 7 как на Рисунке 21 (а). Выбирается начальная точка и в зависимости от последующей формируется цепочка, то есть код (от 0 до 7) определяет местоположение следующей точки относительно текущей. Рисунок 21 (b) иллюстрирует пример кодирования Фримана.

Рис. 21. (а) Контурное представление в методе Фримана, (б) Кодирование Фримана

Затем вывод значений функции “Контурного поиска” передается для вычисления эллипса, который лучше всего подходит для набора двумерных точек. Функция OpenCV, используемая в этой задаче, - 'cvFitEllipse', основная задача в распознавании образов и компьютерном видении. Размеры двух эллипсовых осей и точки центра эллипса, которые являются выходом этой функции, используются для нахождения точной окружности знака на изображении. Рисунок 22 отображает структуру предсказанной линии из функции Fit Ellipse.

Рис. 22. Структура предсказанной линии из функции Fit Ellipse

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

Рис. 23. Обрезка изображение из фотографии дорожного знака

Кроме того, изображение обрезается до 30x30 пикселей в каждом слое RGB, так что для каждой области с измененным размером остается всего 2700 пикселей. Затем область обрезки преобразуется из трех каналов (R, G и B) в один канал оттенков серого. Однослойное изображение в серой шкале поступает на вход нейронной сети. Рисунок 23 показывает процесс обрезки изображения из фотографии дорожного знака, а на Рисунке 24 представлен весь этап предварительной обработки.

Рис. 24. Предварительная обработка изображения

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

4.6 Программная реализация приложения системы


Серверное приложение разрабатывается на языке программирования С++ и основывается на библиотеке по обработке видеопотока OpenCV. Приложение состоит из 4х частей, каждая их которых отвечает за свой функционал:

-       Распознавание полос (прил. 4);

-       Оповещение в случаи возможного столкновения (прил. 4);

-       Распознавание пешеходов на проезжей части (прил. 4).

Таким образом была разработана схема системы, подключены и настроены видеокамеры и разработано серверное приложение с помощью библиотеки OpenCV [7], которое обрабатывает видеопотоки с камер и транслирует их на мобильное устройство. Приложение содержит такие функции, как распознавание полос движения, оповещение в случаях возможного столкновения с автомобилями, идущими спереди и сзади, контроль слепых зон автомобиля и распознавание пешеходов, находящихся на проезжей части.

5. Потоковое видео в Android


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

-       Конвертации видео к поддерживаемому формату на мобильном устройстве;

-       Получение и воспроизведение видео с одноплатного компьютера.

5.1 Конвертация видео


Перед тем как воспроизвести видео на мобильном устройстве, необходимо перекодировать его в поддерживаемый формат. Список поддерживаемых форматов обозначен в документации к Android [8].

Для того чтобы перекодировать видео, которое загружается на сервер с четырех камер, потребуется использовать утилиту ffmpeg.

Наиболее распространенным способом хранения видео является использование кодека H. 264 AVC. Однако Android поддерживает не все возможности данного кодека, а только определенный профиль, который называется Baseline Profile, в который не входят такие полезные инструменты как CAMAC или B-frames. Это значит, что если использовать кодек H.264 AVC нет гарантии, что мобильное устройство воспроизведёт видео, если нет поддержки дополнительных кодеков.

Для того чтобы сжать видео, необходимо выполнить последовательность команд:

-       ffmpeg -i in.3gp -f mp4

-       vcodec libx264 -vprofile baseline -b:v 1500K

-       acodec libfaac -b:a 128k -ar 44100 -ac 2

-       y out.mp4

Рассмотрим подробно данные команды:

-       -i src берется перекодируемый файл;

-       -f mp4 использование видеоконтейнера;

-       -vcodec libx264 использование кодека;

-       -vprofile baseline использование профиля, который поддерживает Android;

-       -b:v 1500K битрейт;

-       -acodec libfaac использование аудиокодека;

-       -b:a 128K битрейт аудио;

-       -ar 44100 частота звука;

-       -ac 2 количество аудиопотоков;

-       -y флаг перезаписи выходного файла;

5.2 Раздача видео


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

Источник: https://www.bibliofond.ru/detail.aspx?id=897239