exponenta event banner

Многопиксельная потоковая передача видео

В этом примере показано, как работать с многопиксельным многокомпонентным потоком пикселей. Многопиксельная многокомпонентная потоковая передача позволяет в реальном времени обрабатывать цветные видеопотоки высокого разрешения или высокой частоты кадров.

Для демонстрации работы с таким видеопотоком этот пример реализует хорошо известный метод постобработки изображения с эффектом цветения. Эффект цветения вносит или усиливает свечение источников света на изображении.

I/0 верхнего уровня

Каждый пиксель потока пикселей с высоким разрешением или высокой частотой кадров моделируется как матрица NumPixel-by-NumComponent. Типы матричных данных поддерживаются для генерации кода HDL в рамках проекта, но не для портов подсистемы верхнего уровня. В этом случае входной поток пикселей разделяется на три вектора 4 на 1 на входе DUT, а затем рекомбинируется на выходе в матрицу 4 на 3 для блока Pixels To Frame.

Эффект Блума

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

  1. Подсистемы MultiPixelColorSpaceConverter и BrightSpotFilter находят яркие пятна в изображении интенсивности, сравнивая значения пикселей с пороговым значением.

  2. Подсистема 15x15 Blur расширяет яркие пятна, применяя гауссовский фильтр.

  3. Подсистема BlendBloom добавляет к исходному изображению яркие пятна, улучшенные по Гауссу.

Модель использует подсистемы Для каждой (For Each) для повторяющихся операций параллельно, что приводит к очистке модели и уменьшает количество создаваемых HDL-файлов.

Уплощение матрицы

Блоки видеонаблюдения HDL Toolbox™ обработки окрестностей могут работать на векторных входах, но не поддерживают матричные входы. Буфер строк, используемый внутри блоков, возвращает матрицу NumPixels-by-KernelHeight. Использование многокомпонентных входных данных приведет к созданию выходной матрицы NumPixels-by-KernelHeight-by-NumComponents, однако 3-D матрицы не поддерживаются для генерации кода HDL. Для каждой подсистемы поддерживается генерация кода HDL со скалярными и векторными входами, но не с матричными входами. Чтобы обойти эту проблему, модель распрямляет матрицу NumPixels-by-NumComponents в вектор NumPixels * NumComponents-by-1, а затем использует настройки секционирования для подсистем For Each, чтобы повторить операцию для каждого фрагмента вектора.

Модель кодирует пиксельный вектор двумя различными способами. Первая кодировка представляет пиксели в виде четырех значений RGB, объединенных вместе в вектор 12 на 1, как показано на этой диаграмме. Модель устанавливает для параметра «Ширина раздела» подсистемы MultiPixelColorSpaceConverter значение 3. Подсистема параллельно реализует четыре операции RGB-Intensity.

Второе кодирование пикселей объединяет четыре пикселя R, G или B вместе, как показано на этой диаграмме. Подсистема размытия 15x15 принимает входной вектор 12 на 1. Модель устанавливает для параметра «Ширина секции» подсистемы размытия 15x15 значение 4поэтому он работает с тремя мультипиксельными векторами 4 на 1. Подсистема реализует три блока фильтра изображений параллельно. Каждый фильтр работает в окне 4 на 15 и возвращает вектор 4 на 1.

Результаты моделирования

При моделировании модели отображаются эти входные и выходные изображения. Эффект цветения делает освещенные области сцены более яркими и показывает эффект ореола.

Результаты внедрения

Эта таблица показывает результаты синтеза кода HDL, сгенерированного от подсистемы DUT и синтезируемого для правления Xilinx™ Zynq™ ZC706. Поскольку ни один из ресурсов не превышает 25% от их соответствующей категории, конструкция имеет относительно небольшую площадь.

T =

  4x2 table

    Resource     Usage
    _________    _____

    DSP48        84   
    Flip Flop    62724
    LUT          36710
    BRAM         132  

См. также

|

Связанные темы