Адаптируйте коэффициенты фильтра изображений из системы координат в систему координат

В этом примере показов, как использовать программируемые коэффициенты для исправления изменяющегося во времени ухудшения на вход видео.

Существует много различных методов фильтрации изображений и видеосигналов, которые требуют коэффициентов фильтра, которые варьируются от системы координат к системе координат. Чтобы динамически изменить коэффициенты блока Image Filter, установите исходный параметр Filter cofficients в Input port. Блок Image Filter отсчитывает порт входного коэффициента в начале каждой системы координат.

Пример модели

Пример модели применяет ухудшение яркости к входу видео, и подсистема HDL Filter вычисляет коэффициенты фильтра для каждой системы координат и исправляет ухудшение. Модель включает в себя три средств просмотра видео: одного для исходного входного видео, другого для нарушенного видео и третьего для результата фильтра, который противодействует ухудшению.

Модель также включает блоки Системы координат в Pixels и Pixels в Frame, чтобы преобразовать видео матричного формата в формат потоковой передачи, подходящий для HDL- моделирования.

Нарушение

Нарушением в этой модели является модуляция яркости с использованием медленной синусоиды. Поскольку нарушение моделируется чисто поведенчески, первым шагом является преобразование изображения в значения двойной точности. 16-битный счетчик отсчитывается со скоростью системы координат, и значение счетчика умножается на 2 * pi/40. Выход синусоиды масштабируют на 0,3 и затем добавляют смещение 1,0. Эти вычисления приводят к изменению яркости +/-30% в течение периода 40 систем координат. После применения обесценения модель преобразуется назад в uint8 при использовании округления с насыщением.

Алгоритм фильтра

Подсистема Алгоритма HDL начинается с извлечения необходимой области в центре изображения. Поскольку эта модель сконфигурирована для 320x240 источник видео, он использует 100x100 область в центре видеопотока.

Блок Image Statistics находит среднее значение этой центральной области. Новое среднее вычисляется для каждого 100x100 система координат. Блок устанавливает порт validOut равным true чтобы указать, когда новое среднее является допустимым.

Вычисление масштабированного среднего значения

Подсистема Adapt Grand Mean вычисляет коэффициент коррекции, необходимый для противодействия ухудшению.

Можно использовать среднюю по центральной области яркость непосредственно, с «серым миром» предположением, что средняя яркость является средней шкалой (128 в этом случае). Но более точным подходом является использование предыдущих средств яркости с предположением, что средняя яркость не изменяет быстро систему координат к кадру.

Формирование среднего средства известно как большое среднее, но это вычисление дало бы равный вес прошлым системам координат. Вместо этого подсистема взвешивает прошлые системы координат с экспоненциальным дробным распадом с коэффициентами [1 1/2 1/4 1/8 1/16 1/32 1/64 1/64]. Последний коэффициент обычно был бы 1/128 но путем корректировки этого значения сумма весов становится в точности 2, что делает нормализующий коэффициент простой операцией сдвига. Обратите внимание, что начальное значение всех регистров линий задержки является средним масштабом (128), чтобы избежать больших переходных процессов запуска в коррекции.

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

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

Применить коррекцию

Выход коррекции от подсистемы Adapt Grand Mean затем используется, чтобы масштабировать коэффициенты фильтра, в этом случае Гауссов фильтр размера 5x5 со стандартным отклонением по умолчанию 0,5. В фактическом FPGA этот фильтр использует 25 умножителей. Конвейеризация здесь не вызывает проблем, поскольку эти значения вычисляются задолго до того, как они потребуются. Блок дискретизирует порт коэффициента, когда vStart сигнал в входной шине ctrl true.

Дальнейший переход

В этом простом примере можно также применить коэффициент коррекции к скалярному потоку пикселей и затем фильтровать. Показанная архитектура может расширяться для более сложных адаптивных изменений коэффициентов фильтра.

The 5x5 умножение коэффициента коррекции на гауссовы коэффициенты может быть реализовано как один последовательный умножитель, а не как 25 параллельных умножителей. Для реализации HDL-кода включите блок Продукта в Подсистему и щелкните правой кнопкой мыши Подсистему, чтобы открыть Свойства HDL-блоков. Установите свойство SharingFactor равным 25, чтобы реализовать один мультиплексированный по времени множитель. С помощью этой настройки операция умножения использует часы в 25 раз быстрее, чем остальная часть проекта. Учитывайте необходимую пиксельную тактовую частоту и может ли ваше устройство учитывать более высокую скорость.

См. также

Блоки