В этом примере показано, как использовать Vision HDL Toolbox™ для реализации модуля на основе FPGA для улучшения изображения.
Vision HDL Toolbox предоставляет алгоритмы обработки видео, предназначенные для генерации читаемого, синтезируемого кода в VHDL и Verilog (с HDL Coder™). Сгенерированный HDL-код может обрабатывать видео 1080p со скоростью 60 кадров в секунду.
Computer Vision Toolbox™ модели продукции на высоком уровне абстракции. Блоки и объекты выполняют полнокадровую обработку, работая на одном кадре изображения за раз. Однако системы FPGA или ASIC выполняют обработку потока пикселей, работая на одном пикселе изображения за один раз.
Входные изображения из физических систем часто содержат такие нарушения, как размытие и шум. Объект вне фокуса приводит к размытому изображению. Мертвые или застрявшие пиксели на камере или видеосенсоре, или тепловые шумы от аппаратных компонентов, вносят свой вклад в шум изображения. Этот пример удаляет шум и резкость входного изображения, и его можно использовать на ранней стадии цепочки обработки для обеспечения лучшего начального условия для последующей обработки. В этом примере используются два пиксельных блока фильтра из панели инструментов Vision HDL. Медианный фильтр удаляет шум, а фильтр изображения точит изображение. Для проверки структуры пиксельного потока результаты сравниваются с результатами, полученными блоками полных кадров из панели инструментов Computer Vision Toolbox.
NoiseRemovalAndSharpeningHDLExample.slx система показана.

Блоки Computer Vision Toolbox работают на всем кадре одновременно. Блоки панели инструментов Vision HDL работают на потоке пиксельных данных по одному пикселю за раз. Блоки преобразования в инструментарии Vision HDL Toolbox, «От кадра к пикселям» и «От пикселей к кадру» позволяют моделировать потоковые пиксельные конструкции и сравнивать их с полнокадровыми конструкциями.
Разница в цвете линий, питающих подсистемы Full-Frame Behavioral Model и Pixel-Stream HDL Model, указывает на изменение скорости изображения в потоковой ветви модели. Этот переход скорости происходит, потому что поток пикселей отправляется в то же самое время, что и полные видеокадры, и поэтому он передается с более высокой скоростью. Чтобы включить цвета и просмотреть информацию о времени образца, в левой палитре щелкните значок «Время образца» и выберите «Цвета».
На следующем рисунке показана подсистема источника изображения.

Блок «Источник изображения» импортирует изображение в градациях серого, затем использует функциональный блок MATLAB с именами «Размытие» и «Добавить шум», чтобы размыть изображение и ввести шум соли и перца. imfilter функция использует усредняющее ядро 3 на 3 для размытия изображения. Шум соли и перца вводится путем вызова imnoise команда. Плотность шума определяется как отношение объединенного количества пикселей соли и перца к общему количеству пикселей в изображении. Это значение плотности задается блоком постоянной плотности шума и должно находиться в диапазоне от 0 до 1. Подсистема «Источник изображения» выводит матрицу 2-D полнокадрового изображения.
Диаграмма ниже показывает структуру подсистемы Модели поведения Полной Структуры, которая состоит из основанного на структуре Среднего Фильтра и 2-го Фильтра ЕЛИ от Комплекта инструментов Computer Vision. Средний фильтр демонтирует шумовой и 2-й Фильтр ЕЛИ, настроен, чтобы обострить изображение.

На приведенных ниже экранах показан один кадр размытого и шумного исходного видео, его выключенная шумовая версия после медианной фильтрации и заточенный выходной сигнал после 2-D FIR-фильтрации.

Подсистема Модели Pixel-Stream HDL использует Видение, Комплект инструментов HDL, чтобы осуществить вытекание основывал средний фильтр и 2-й фильтр ЕЛИ. Подсистема верификации сравнивает результаты обработки полных кадров с результатами обработки потока пикселей. Эти две подсистемы описаны в следующих двух разделах.
Блок Frame To Pixels преобразует полнокадровое изображение в поток пикселей, поскольку блоки в Vision HDL Toolbox работают на входных сигналах потока, требуемых оборудованием FPGA. Для моделирования эффекта периодов горизонтального и вертикального гашения, обнаруженных в видеосистемах на основе FPGA или ASIC, активное изображение дополняется данными, не являющимися данными изображения. Дополнительные сведения о потоковом пиксельном протоколе см. в разделе Потоковый пиксельный интерфейс (панель инструментов Vision HDL). Блок Frame To Pixels настроен так, как показано на рисунке:

Для ввода изображения в градациях серого в поле Number of components установлено значение 1, а в поле Video format установлено значение 240p, соответствующее значению источника видео.
В этом примере область Active Video соответствует матрице 240x320 размытого и шумного изображения из подсистемы восходящего источника изображения. Шесть других параметров, а именно «Всего пикселей на строку», «Всего видеопостроек», «Начало активной строки», «Окончание активной строки», «Передняя веранда» и «Задняя веранда», указывают, сколько пикселей, не являющихся изображениями, будет добавлено на четырех сторонах активного видео. Дополнительные сведения см. на странице ссылок блока «От рамки до пикселов» (панель инструментов Vision HDL).
Обратите внимание, что желаемое время выборки источника видео внутри источника изображения определяется произведением суммарных пикселей на строку и суммарных строк видео.
Подсистема Pixel-Stream HDL Model содержит потоковую реализацию медианного фильтра и фильтра FIR 2-D панели инструментов Vision HDL, как показано на диаграмме ниже. Можно создать код HDL из подсистемы Pixel-Stream HDL Model с помощью HDL Coder™.

Блок Median Filter (Vision HDL Toolbox) используется для удаления шума от соли и перца. На основе коэффициентов фильтра можно использовать блок «Фильтр изображения» (Vision HDL Toolbox) для размытия, резкости или обнаружения краев восстановленного изображения после медианной фильтрации. В этом примере фильтр изображений настроен для резкости изображения.
Для сравнения с выводом фильтров полного кадра из панели инструментов Computer Vision Toolbox модель преобразует данные потока пикселей обратно в полный кадр с помощью блока «Пикселы в кадр». Поле «Количество компонентов» и поля «Формат видео» обоих полей «От кадра до пикселей» и «От пикселей до кадра» установлены в 1 и 240p соответственно для соответствия формату источника видео.
Вывод блока «Пикселы в кадр» представляет собой 2-D матрицу полного изображения. Это позволяет сравнить модель ЛПВП с поведенческой моделью в полнокадровой области, как показано в подсистеме проверки, показанной ниже.

Отношение пикового сигнала к шуму (PSNR) вычисляется между опорным изображением и обработанным потоком изображением. В идеале отношение должно быть inf, указывая, что выходное изображение из модели поведения полного кадра соответствует изображению, сгенерированному из модели HDL Pixel-Stream.
Для проверки и генерации кода HDL, на который ссылается этот пример, необходимо иметь лицензию HDL Coder.
Для создания кода HDL используется следующая команда:
makehdl('NoiseRemovalAndSharpeningHDLExample/Pixel-Stream HDL Model');
Для создания стенда выполните следующую команду:
makehdltb('NoiseRemovalAndSharpeningHDLExample/Pixel-Stream HDL Model');