ELVEES OpenVX SDK для 1892ВМ14Я. Руководство программиста¶
О документе¶
Документ описывает SDK, предназначенный для разработки приложений на основе стандарта OpenVX версии 1.3.
Описание ELVEES OpenVX SDK¶
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, перечислен в таблице 18.
Пакет | Описание | Лицензия |
---|---|---|
openvx-headers |
Заголовочные файлы стандарта OpenVX версии 1.3 | MIT |
openvx |
Библиотека, предоставляющая функционал OpenVX | – |
openvx-demo |
Демонстрационные примеры OpenVX | – |
openvx-cts |
Тесты 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)
Запуск демонстрационных примеров¶
Полный список демонстрационных примеров представлен в таблице 19.
Для работы с изображениями используется формат PNG
, с видео — YUV4MPEG2
.
Артефакт | Описание | Параметры командной строки |
---|---|---|
sampleCannyEdgeDetector |
Детектор границ Канни | входное изображение, выходное изображение |
sampleColorCorrection |
Коррекция цвета изображения | входное изображение, выходное изображение |
sampleFastCorners |
Детектор углов | входное изображение, выходное изображение |
sampleGaussianFiltering |
Размытие Гауссовым окном размера 3x3 | входное изображение, выходное изображение |
sampleGaussianPyramid |
Построение 4-х уровневой пирамиды изображений | входное изображение, 4 выходных изображения |
sampleHarrisCorners |
Детектор углов Харриса | входное изображение, выходное изображение |
sampleMaskMake |
Комбинированный алгоритм: гауссово размытие окном 3x3, пороговая фильтрация, эрозия | входное изображение, выходное изображение |
sampleMedianFiltering |
Медианная фильтрация окном 3x3 | входное изображение, выходное изображение |
sampleMinMaxLoc |
Определение позиций максимального и минимального значений на изображении | входное изображение, выходное изображение |
sampleMorphology |
Морфологические алгоритмы, размер окна 3x3 | входное изображение, выходное изображение эрозии, выходное изображение дилатации |
sampleNoiseSuppression |
Подавление шума с помощью аккумулирования серии изображений | первое входное изображение серии, выходное изображение |
sampleObjectCut |
Вырезание объекта по порогу | входное изображение, выходное изображение |
sampleOpticalFlowPyrLK |
Определение оптического потока | входное изображение, сгенерированное смещённое изображение, выходное изображение |
sampleSharpnessFiltering |
Увеличение резкости, используется лапласиан 3x3 | входное изображение, выходное разностное изображение, выходное изображение |
sampleTemplate |
Пример чтения/записи изображений | входное изображение, выходное изображение |
sampleTranspose |
Поворот на 90 градусов и горизонтальное отражение | входное изображение, выходное изображение |
sampleVideo |
Пример чтения/записи видео файла | входное видео, выходное видео |
sampleVideoCanny |
Детектор границ Канни | входное видео, выходное видео |
sampleVideoColorCorrection |
Коррекция цвета видео | входное видео, выходное видео |
sampleVideoFastCorners |
Детектор углов на видео | входное видео, выходное видео |
sampleVideoGaussianFiltering |
Размытие Гауссовым окном размера 3x3 | входное видео, выходное видео |
sampleVideoMedian |
Медианная фильтрация окном 3x3 | входное видео, выходное видео |
sampleVideoMinMaxLoc |
Определение позиций максимального и минимального значений на видео | входное видео, выходное видео |
sampleVideoMorphology |
Морфологический алгоритм (эрозия), размер окна 3x3 | входное видео, выходное видео |
sampleVideoObjectCut |
Вырезание объекта по порогу | входное видео, выходное видео |
sampleVideoTranspose |
Поворот на 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
будет содержать результат обработки видео.
Все демонстрационные примеры выводят некоторую вспомогательную статистику запуска: количество обработанных кадров, потраченное время в наносекундах, среднее время обработки одного кадра.
Инструкция по разработке приложений на базе ELVEES OpenVX SDK¶
Инструкция предназначена для разработки приложений, использующих API стандарта OpenVX версии 1.3.
- Создать пакет Buildroot [3], см., например,
openvx-demo
. - Подключить заголовочные файлы и указать зависимости в скриптах сборки, см., например,
openvx-demo
. - Пересобрать Buildroot и образ SD-карты.
- Проверить работоспособность библиотеки и приложений, см., например, два предыдущих раздела.
[1] | https://www.khronos.org/registry/OpenVX/specs/1.3/vx_khr_feature_sets/1.1/html/vx_khr_feature_sets_1_1.html |
[2] | https://github.com/KhronosGroup/OpenVX-sample-impl |
[3] | https://buildroot.org/downloads/manual/manual.html#adding-packages |