В этом примере показано, как работать с мультипиксельным многокомпонентным пиксельным потоком. Мультипиксельная многокомпонентная потоковая передача позволяет в реальном времени обрабатывать цветные видеопотоки с высоким разрешением или высокой частотой кадров.
Чтобы продемонстрировать работу с таким видеопотоком, этот пример реализует хорошо известный метод постобработки изображения эффекта цветения. Эффект блума вводит или усиливает свечение источников света в изображении.
Каждый пиксель потока пикселей с высоким разрешением или высокой частотой кадров моделируется как матрица NumPixel-by-NumComponent. Матричные типы данных поддерживаются для генерации HDL-кода в проекте, но не для портов подсистемы верхнего уровня. В этом случае поток входных пикселей разделяется на три вектора 4 на 1 на входе DUT, а затем рекомбинируется на выходе в матрицу 4 на 3 для блока Pixels To Frame.
Пример модели следует этим трем шагам, чтобы добавить эффект цветения к входу изображению.
Подсистемы MultiPixelColorSpaceConverter и BrightSpotFilter находят яркие пятна в изображении интенсивности, проверяя значения пикселей относительно порога.
Подсистема 15x15 Blur распространяет яркие пятна, применяя Гауссов фильтр.
Подсистема 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
Frame To Pixels | Pixels To Frame