ELVEES OpenVX SDK для 1892ВМ14Я. Руководство программиста¶
О документе¶
Документ описывает SDK, предназначенный для разработки приложений на основе стандарта OpenVX версии 1.1.
Описание ELVEES OpenVX SDK¶
SDK предоставляет реализацию OpenVX под СнК 1892ВМ14Я. Реализация оптимизирована для параллельных вычислений на DSP-ядрах.
Состав SDK:
- Библиотека, реализующая стандарт OpenVX. Бинарные артефакты библиотеки OpenVX распространяются в образе SD-карты Buildroot Linux для 1892ВМ14Я версии 2.9 и выше.
- Заголовочные файлы OpenVX версии 1.1.
- Дополнительные заголовочные файлы для получения расширенной статистики использования DSP-ядер.
- Исходные коды демонстрационных примеров
openvx_demo
, а также их бинарные артефакты в составе образа SD-карты.
Полный набор пакетов Buildroot, из которых состоит SDK, перечислен в таблице 16.
Пакет | Описание | Лицензия |
---|---|---|
openvx-headers |
Заголовочные файлы стандарта OpenVX версии 1.1 | MIT |
openvx |
Библиотека, предоставляющая функционал OpenVX | – |
openvx-demo |
Демонстрационные примеры OpenVX | – |
Запуск демонстрационных примеров¶
Полный список демонстрационных примеров представлен в таблице 17.
Для работы с изображениями используется формат 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 242329, avg 242329 DMA: copy: 14909632, timing: 151599 DSP: total_count: 171, total_ticks: 17105995, dsp0: count: 163, ticks: 16761623, timings: 147376, dsp1: count: 8, ticks: 16762749, timings: 147828 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 17090762, avg 68363 DMA: copy: 1235248000, timing: 10107926 DSP: total_count: 14000, total_ticks: 1402948579, dsp0: count: 12000, ticks: 1361500497, timings: 9348930, dsp1: count: 2000, ticks: 1319805206, timings: 9139613 Done!
Файл
out.y4m
будет содержать результат обработки видео.
Все демонстрационные примеры выводят некоторую вспомогательную статистику запуска: потраченное время, количество запусков каждого ядра, количество обработанных кадров и др.
Инструкция по разработке приложений на базе ELVEES OpenVX SDK¶
Инструкция предназначена для разработки приложений, использующих API стандарта OpenVX версии 1.1.
- Создать пакет Buildroot [1], см., например,
openvx-demo
. - Подключить заголовочные файлы и указать зависимости в скриптах сборки, см., например,
openvx-demo
. - Пересобрать Buildroot и образ SD-карты.
- Проверить работоспособность приложения, см., например, предыдущий раздел.
[1] | https://buildroot.org/downloads/manual/manual.html#adding-packages |