ELVEES OpenVX SDK
Документ описывает SDK, предназначенный для разработки приложений на основе стандарта OpenVX версии 1.3.
SDK предоставляет реализацию OpenVX под СнК 1892ВМ14Я. Ключевые особенности реализации:
Соответствует стандарту OpenVX версии 1.3.
Поддерживает функциональные наборы [1]:
базовый для организации графовой структуры;
Vision, совместимый со стандартом OpenVX версии 1.1;
Neural Network, совместимый со стандартом OpenVX версии 1.2.
Проверка соответствия стандарту (OpenVX Conformance Test Suite).
Содержит демонстрационные примеры с открытым исходным кодом.
Имеет более высокую производительность по сравнению с эталонной реализацией от KhronosGroup [2].
Состав SDK:
Библиотека, реализующая стандарт OpenVX. Бинарные артефакты библиотеки OpenVX распространяются в образе SD-карты Buildroot Linux для 1892ВМ14Я версии 2.9 и выше.
Заголовочные файлы OpenVX версии 1.3.
Исходные коды демонстрационных примеров
openvx_demo
, а также их бинарные артефакты в составе образа SD-карты.Тесты соответствия стандарту OpenVX Conformance Test Suite (OpenVX CTS) 1.3.
Полный набор пакетов Buildroot, из которых состоит SDK, перечислен в таблице Таблица 9.
Пакет |
Описание |
Лицензия |
---|---|---|
|
Заголовочные файлы стандарта OpenVX версии 1.3 |
MIT |
|
Библиотека, предоставляющая функционал OpenVX |
– |
|
Демонстрационные примеры OpenVX |
– |
|
Тесты OpenVX CTS версии 1.3 |
Apache License 2.0 |
Запуск тестов OpenVX CTS
Запуск тестов OpenVX CTS осуществляется с помощью исполняемого файл vx_test_conformance
.
Для тестов используются тестовые данные из директории /usr/share/cts/test_data
и библиотеки
OpenVX.
Пример запуска тестов
Подать питание на модуль, дождаться загрузки ОС и подключиться по терминалу к модулю (подробнее см. Запуск модуля).
Запустить исполняемый файл:
vx_test_conformance
Дождаться окончания прохождения тестирования (около 30 минут).
Убедиться, что отчёт прохождения тестов не содержит ошибок и его окончание выглядит следующим образом:
[ ======== ] [ ALL DONE ] 7042 test(s) from 75 test case(s) ran [ PASSED ] 7042 test(s) [ FAILED ] 0 test(s) [ DISABLED ] 8190 test(s) ================================= OpenVX Conformance report summary ================================= To be conformant to the OpenVX baseline, 5862 required test(s) must pass. 5862 tests passed, 0 tests failed. PASSED. To be conformant to the Neural Network extension, 1180 required test(s) must pass. 1180 tests passed, 0 tests failed. PASSED. To be conformant to the Vision conformance profile, 6167 required test(s) must pass. 6167 tests passed, 0 tests failed. PASSED. To be conformant to the Neural Networks conformance profile, 1180 required test(s) must pass. 1180 tests passed, 0 tests failed. PASSED. Note: The 8190 disabled tests are optional and are not considered for conformance. #REPORT: 20200922123136 ALL 16499 8190 7042 7042 7042 0 (version 1.3)
Запуск демонстрационных примеров
Полный список демонстрационных примеров представлен в таблице Таблица 10.
Для работы с изображениями используется формат PNG
, с видео — YUV4MPEG2
.
Артефакт |
Описание |
Параметры командной строки |
---|---|---|
|
Детектор границ Канни |
входное изображение, выходное изображение |
|
Коррекция цвета изображения |
входное изображение, выходное изображение |
|
Детектор углов |
входное изображение, выходное изображение |
|
Размытие Гауссовым окном размера 3x3 |
входное изображение, выходное изображение |
|
Построение 4-х уровневой пирамиды изображений |
входное изображение, 4 выходных изображения |
|
Детектор углов Харриса |
входное изображение, выходное изображение |
|
Комбинированный алгоритм: гауссово размытие окном 3x3, пороговая фильтрация, эрозия |
входное изображение, выходное изображение |
|
Медианная фильтрация окном 3x3 |
входное изображение, выходное изображение |
|
Определение позиций максимального и минимального значений на изображении |
входное изображение, выходное изображение |
|
Морфологические алгоритмы, размер окна 3x3 |
входное изображение, выходное изображение эрозии, выходное изображение дилатации |
|
Подавление шума с помощью аккумулирования серии изображений |
первое входное изображение серии, выходное изображение |
|
Вырезание объекта по порогу |
входное изображение, выходное изображение |
|
Определение оптического потока |
входное изображение, сгенерированное смещённое изображение, выходное изображение |
|
Увеличение резкости, используется лапласиан 3x3 |
входное изображение, выходное разностное изображение, выходное изображение |
|
Пример чтения/записи изображений |
входное изображение, выходное изображение |
|
Поворот на 90 градусов и горизонтальное отражение |
входное изображение, выходное изображение |
|
Пример чтения/записи видео файла |
входное видео, выходное видео |
|
Детектор границ Канни |
входное видео, выходное видео |
|
Коррекция цвета видео |
входное видео, выходное видео |
|
Детектор углов на видео |
входное видео, выходное видео |
|
Размытие Гауссовым окном размера 3x3 |
входное видео, выходное видео |
|
Медианная фильтрация окном 3x3 |
входное видео, выходное видео |
|
Определение позиций максимального и минимального значений на видео |
входное видео, выходное видео |
|
Морфологический алгоритм (эрозия), размер окна 3x3 |
входное видео, выходное видео |
|
Вырезание объекта по порогу |
входное видео, выходное видео |
|
Поворот на 90 градусов и горизонтальное отражение видео |
входное видео, выходное видео |
Пример запуска демонстрационного примера
Подать питание на модуль, дождаться загрузки ОС и подключиться по терминалу к модулю (подробнее см. Запуск модуля).
Сгенерировать изображение разрешением 1280x720:
ffmpeg -f lavfi -i "testsrc=size=1280x720" -frames 1 image.png
Запустить пример
sampleCannyEdgeDetector
:sampleCannyEdgeDetector image.png out.png
Примерный вывод программы:
Read from "image.png" Processing CannyEdgeDetector... Write to "out.png" Frames counter 1, time spent 1057113088, avg 1057113088 Done!
Файл
out.png
будет содержать обработанное изображение.Сгенерировать 10-ти секундное видео разрешением 640x480:
ffmpeg -f lavfi -i "life=s=640x480:mold=10:ratio=0.1:death_color=#C83232:life_color=#00ff00" -pix_fmt yuv420p -t 10 life.y4m
Запустить пример
sampleVideoCanny
:sampleVideoCanny life.y4m out.y4m
Вывод будет следующим:
Processing video with CannyEdgeDetector... Frames counter 250, time spent 34454470912, avg 137817883 Done!
Файл
out.y4m
будет содержать результат обработки видео.
Все демонстрационные примеры выводят некоторую вспомогательную статистику запуска: количество обработанных кадров, потраченное время в наносекундах, среднее время обработки одного кадра.
Разработка приложений на базе SDK
Инструкция предназначена для разработки приложений, использующих API стандарта OpenVX версии 1.3.
Создать пакет Buildroot [3], см., например,
openvx-demo
.Подключить заголовочные файлы и указать зависимости в скриптах сборки, см., например,
openvx-demo
.Пересобрать Buildroot и образ SD-карты.
Проверить работоспособность библиотеки и приложений, см., например, два предыдущих раздела.