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

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

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

Функции верхнего уровня 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- файлов, которые генерируются.

Матричное сглаживание

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

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

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

Результаты симуляции

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

Результаты реализации

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

T =

  4x2 table

    Resource     Usage
    _________    _____

    DSP48        84   
    Flip Flop    62724
    LUT          36710
    BRAM         132  

См. также

|

Похожие темы