Проект пикселей в MATLAB

В этом примере показано, как спроектировать алгоритмы обработки видео в пиксельных потоках, используя объекты Vision HDL Toolbox™ в среде MATLAB ® и сгенерировать HDL-код из проекта.

Этот пример также проверяет проект, используя маленькое миниатюрное изображение, чтобы уменьшить время симуляции. Чтобы симулировать большие изображения, такие как формат видео 1080p, используйте MATLAB Coder™, чтобы ускорить симуляцию. Смотрите Ускорение потокового проекта пикселей с помощью MATLAB Coder.

Испытательный стенд

На испытательном стенде PixelStreamingDesignHDLTestBench.mобъект videoIn считывает каждую систему координат из источника видео, и объект скалера уменьшает эту систему координат с 240p до размера миниатюры для скорости симуляции. Это миниатюрное изображение передается объекту frm2pix, который преобразует полную систему координат изображения в поток пикселей и структур управления. Функция PixelStreamingDesignHDLDesign.m затем вызывается, чтобы обработать один пиксель (и связанную с ним структуру управления) за раз. После того, как мы обработаем весь поток пикселей и собираем выходной поток, объект pix2frm преобразует выходной поток в полнокадровое видео. Объект средство просмотра отображает выходные и оригинальные изображения один за другим.

Рабочий процесс выше реализован в следующих линиях PixelStreamingDesignHDLTestBench.m.

     ...
     for f = 1:numFrm       
         frmFull = step(videoIn);        % Get a new frame  
         frmIn = step(scaler,frmFull);   % Reduce the frame size
         [pixInVec,ctrlInVec] = step(frm2pix,frmIn);                   
         for p = 1:numPixPerFrm    
             [pixOutVec(p),ctrlOutVec(p)] = PixelStreamingDesignHDLDesign(pixInVec(p),ctrlInVec(p));                                              
         end         
         frmOut = step(pix2frm,pixOutVec,ctrlOutVec);
         step(viewer,[frmIn frmOut]);
     end
     ...

И frm2pix, и pix2frm используются для преобразования между полным кадром и пиксельным потоком областей. Внутренний цикл for-loop выполняет обработку потока пикселей. Остальная часть испытательного стенда выполняет обработку полного кадра (т.е. videoIn, scaler и viewer).

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

Пиксельные

Проекты

Функция, заданная в PixelStreamingDesignHDLDesign.m принимает поток пикселей и пять управляющих сигналов и возвращает измененный поток пикселей и сигналы управления. Дополнительные сведения о протоколе потокового пикселя, используемом системными объектами из Vision HDL Toolbox, см. в разделе Интерфейс потокового пикселя.

В этом примере функция содержит объект Gamma Corrector System.

В особом внимании этого примера находится рабочий процесс, а не сам проект алгоритма. Поэтому проект кода довольно прост. Как только вы знакомы с рабочим процессом, легко реализовать расширенные алгоритмы видео, используя возможности, предоставляемые системными объектами из Vision HDL Toolbox.

Моделируйте проект

Симулируйте проект с испытательным стендом до генерации HDL-кода, чтобы убедиться в отсутствии ошибок во время выполнения.

PixelStreamingDesignHDLTestBench;
10 frames have been processed in 32.53 seconds.
Average frame rate is 0.31 frames/second.

Средство просмотра отображает оригинальное видео слева, а выход справа. Ясно видно, что операция приводит к более яркому изображению.

Введите следующую команду, чтобы создать новый HDL Coder™ проект,

coder -hdlcoder -new PixelStreamingDesignProject

Затем добавьте файл PixelStreamingDesignHDLDesign.m к проекту в качестве функции MATLAB и PixelStreamingDesignHDLTestBench.m в качестве испытательного стенда MATLAB.

Руководство по созданию и заполнению проектов MATLAB HDL Coder см. в разделе Начало работы с MATLAB в HDL-процессе (HDL Coder).

Запустите советник по рабочим процессам. В Workflow Advisor щелкните правой кнопкой мыши шаг 'Генерация Кода'. Выберите опцию «Run to selected task», чтобы выполнить все шаги от начала до генерации HDL-кода.

Просмотрите сгенерированный HDL-код, щелкнув по ссылкам в окне журнала.