Удаление шума и повышение четкости изображения

В этом примере показано, как использовать Vision HDL Toolbox™ для реализации модуля на основе FPGA для улучшения изображения.

Vision HDL Toolbox предоставляет алгоритмы обработки видео, предназначенные для генерации читаемого, синтезируемого кода в VHDL и Verilog (с HDL- Coder™). Сгенерированный HDL-код может обрабатывать видео 1080p со скоростью 60 систем координат в секунду.

Computer Vision Toolbox™ модели продукта на высоком уровне абстракции. Блоки и объекты выполняют полную обработку кадра, работая с одной системой координат изображения за раз. Однако системы FPGA или ASIC выполняют обработку пиксельного потока, работая на одном пикселе изображения за раз.

Входные изображения от физических систем часто содержат такие нарушения, как размытие и шум. Объект вне особого внимания приводит к размытию изображения. Мертвые или застрявшие пиксели на камере или датчике видео, или тепловой шум от аппаратных компонентов, способствуют шуму на изображении. Этот пример удаляет шум и обостряет вход изображение, и его можно использовать на ранней стадии цепи обработки, чтобы обеспечить лучшее начальное условие для последующей обработки. Этот пример использует два блока фильтра в потоке пикселей из Vision HDL Toolbox. Медианный фильтр удаляет шум, а фильтр изображения точит изображение. Чтобы проверить проект потока пикселей, результаты сравниваются с результатами, сгенерированными блоками полного кадра из Computer Vision Toolbox.

Обзор модели

The NoiseRemovalAndSharpeningHDLExample.slx система показана.

Блоки Computer Vision Toolbox работают на целой системе координат за раз. Блоки Vision HDL Toolbox работают с потоком пиксельных данных, по одному пикселю за раз. Блоки преобразования в Vision HDL Toolbox, Frame To Pixels и Pixels To Frame позволяют моделировать проекты потоковых пикселей и сравнивать с проектами полных кадров.

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

Следующий рисунок показывает подсистему Image Source.

Блок Image Source импортирует полутоновое изображение, затем использует блок MATLAB function с именем Blur и Add Noise, чтобы размыть изображение и ввести соляно-перцовый шум. The imfilter функция использует среднее ядро 3 на 3, чтобы размыть изображение. Шум от соли и перца вводится путем вызова imnoise команда. Плотность шума определяется как отношение совокупного количества пикселей соли и перца к общему количеству пикселей на изображении. Это значение плотности задается постоянным блоком Noise Density, и оно должно быть между 0 и 1. Подсистема Image Source выводит матрицу 2-D полнокадрового изображения.

Схема ниже показывает структуру подсистемы Full-Frame Behavioral Model, которая состоит из основанных на кадрах Median Filter и 2-D конечная импульсная характеристика из Computer Vision Toolbox. Медианный фильтр удаляет шум, и 2-D конечная импульсная характеристика сконфигурирован, чтобы точить изображение.

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

Подсистема Pixel-Stream HDL Model использует Vision HDL Toolbox для реализации потокового медианного фильтра и 2-D конечная импульсная характеристика. Подсистема верификации сравнивает результаты обработки полного кадра с результатами обработки потока пикселей. Эти две подсистемы описаны в следующих двух разделах.

Потоковые HDL- Проекта

Блок Frame To Pixels преобразует полнокадровое изображение в поток пикселей, так как блоки в Vision HDL Toolbox работают с потоковыми входными сигналами, требуемыми оборудованием FPGA. Чтобы симулировать эффект горизонтальных и вертикальных периодов гашения, обнаруженных в видеосистемах, основанных на FPGA или ASIC, активное изображение дополнено данными, не являющимися изображениями. Для получения дополнительной информации о протоколе потокового пикселя смотрите Интерфейс потокового пикселя (Vision HDL Toolbox). Блок Frame To Pixels сконфигурирован как показано:

Поле Number of components устанавливается равным 1 для входа полутонового изображения, а поле Video format равняется 240p, чтобы соответствовать полю источника видео.

В этом примере область Active Video соответствует матрице 240x320 размытого и шумного изображения из верхней подсистемы Image Source. Шесть других параметров, а именно Total pixels на линию, Total video lines, Starting active line, Ending active line, Front depch и Back devch задают, сколько неизображений будет добавляемы на четырех сторонах Активного видео. Для получения дополнительной информации смотрите блок Системы координат To Pixels (Vision HDL Toolbox) страницы с описанием.

Обратите внимание, что требуемый шаг расчета источника видео внутри источника изображения определяется продуктом Total pixels на линию и Total video line.

Подсистема Pixel-Stream HDL Model содержит потоковую реализацию медианного фильтра и 2-D конечная импульсная характеристика из Vision HDL Toolbox, как показано на схеме ниже. Можно сгенерировать HDL-код из подсистемы Pixel-Stream HDL Model с помощью HDL- Coder™.

Блок Median Filter (Vision HDL Toolbox) используется для удаления солевого и перцового шума. Основанный на коэффициентах фильтра, блок Image Filter (Vision HDL Toolbox) может использоваться, чтобы размыть, заточить или обнаружить ребра восстановленного изображения после медианной фильтрации. В этом примере Image Filter сконфигурирован, чтобы заточить изображение.

Проверка проекта обработки пиксельных потоков

В порядок сравнения с выходом полнофадровых фильтров из Computer Vision Toolbox, модель преобразует данные потока пикселей обратно в полные системы координат с помощью блока Pixels To Frame. Поле «Количество компонентов» и поля «Формат видеообеих систем координат в пиксели» и «Пиксели в кадр» заданы равными 1 и 240p, соответственно, чтобы соответствовать формату источника видео.

Выходы блока Pixels To Frame являются 2-D матрицей полного изображения. Это позволяет нам сравнить модель HDL с поведенческой моделью в области полных систем координат, как показано на Подсистеме верификации, показанной ниже.

Отношение пикового сигнала к шуму (PSNR) вычисляется между ссылкой изображением и обработанным потоком изображением. В идеале отношение должно быть inf, что указывает на то, что выходное изображение из Full-Frame Behavioral Model совпадает с тем, которое сгенерировано из Pixel-Stream HDL Model.

Сгенерируйте HDL-код и проверьте его поведение

Чтобы проверить и сгенерировать HDL-код, на который ссылаются в этом примере, необходимо иметь лицензию HDL Coder.

Чтобы сгенерировать HDL-код, используйте следующую команду:

makehdl('NoiseRemovalAndSharpeningHDLExample/Pixel-Stream HDL Model');

Чтобы сгенерировать испытательный стенд, используйте следующую команду:

makehdltb('NoiseRemovalAndSharpeningHDLExample/Pixel-Stream HDL Model');