Этот пример демонстрирует рабочий процесс для разработки алгоритмов обработки видеоданных пиксельного потока с помощью Vision HDL Toolbox™ в среде MATLAB® и генерируя HDL-код из проекта.
Этот рабочий процесс тестирует проект с помощью маленького изображения миниатюр, чтобы уменьшать время симуляции. Моделировать увеличенные изображения, такие как формат 1080p видео, MATLAB Coder™ использования, чтобы ускорить симуляцию. Смотрите Ускоряют Передающий потоком пиксель Проект Используя MATLAB Coder.
В испытательном стенде PixelStreamingDesignHDLTestBench.m объект videoIn читает каждый кадр из источника видеосигнала, и объект счетчика уменьшает этот кадр от 240 пунктов до размера миниатюры ради скорости симуляции. Это изображение миниатюр передается объекту 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 выполняет обработку пиксельного потока. Остальная часть испытательного стенда выполняет обработку полного кадра (т.е. videoIn, счетчик и средство просмотра).
Прежде чем испытательный стенд останавливается, частота кадров отображена, чтобы проиллюстрировать скорость симуляции.
Функция, определяемая в PixelStreamingDesignHDLDesign.m принимает пиксельный поток и пять управляющих сигналов, и возвращает измененный пиксельный поток и управляющие сигналы. Для получения дополнительной информации о пиксельном протоколе потоковой передачи, используемом Системными объектами от Vision HDL Toolbox, смотрите Пиксельный Интерфейс Потоковой передачи.
В этом примере функция содержит Гамма Системный объект Корректора.
Особым вниманием этого примера является рабочий процесс, не сам проект алгоритма. Поэтому код проекта довольно прост. Если вы знакомы с рабочим процессом, это прямо, чтобы реализовать усовершенствованные видео алгоритмы путем использования в своих интересах функциональности, обеспеченной Системными объектами от Vision HDL Toolbox.
Моделируйте проект с испытательным стендом до генерации HDL-кода, чтобы убедиться, что нет никаких ошибок периода выполнения.
PixelStreamingDesignHDLTestBench;
10 frames have been processed in 38.90 seconds. Average frame rate is 0.26 frames/second.
Средство просмотра отображает исходное видео слева и вывод справа. Можно ясно видеть, что гамма операция приводит к более яркому изображению.
Введите следующую команду, чтобы создать новый проект HDL Coder™,
coder -hdlcoder -new PixelStreamingDesignProject
Затем добавьте файл 'PixelStreamingDesignHDLDesign.m' в проект как функция MATLAB и 'PixelStreamingDesignHDLTestBench.m' как Испытательный стенд MATLAB.
Обратитесь к (HDL Coder) для примера при создании и заполнении проектов HDL Coder MATLAB.
Запустите Советника по вопросам Рабочего процесса. В Советнике по вопросам Рабочего процесса щелкните правой кнопкой по шагу 'Code Generation'. Выберите опцию, 'Запущенную к выбранной задаче', чтобы запустить все шаги с начала через генерацию HDL-кода.
Исследуйте сгенерированный HDL-код путем щелчка по ссылкам в логарифмическом окне.