В этом примере показано, как использовать программируемые коэффициенты для коррекции изменяющегося во времени ухудшения во входном видео.
Существует множество различных способов фильтрации изображений и видеосигналов, которые требуют коэффициентов фильтра, которые изменяются от кадра к кадру. Чтобы динамически изменять коэффициенты блока «Фильтр изображения», задайте для параметра источника коэффициентов фильтра значение Input port. Блок фильтра изображения выполняет выборку порта входного коэффициента в начале каждого кадра.
Пример модели применяет ухудшение яркости к входному видео, а подсистема фильтра HDL вычисляет коэффициенты фильтра для каждого кадра и корректирует ухудшение. Модель включает в себя три видеопросмотра: один - для оригинального входного видео, другой - для нарушенного видео, а третий - для результата фильтра, противодействующего ухудшению.
Модель также включает блоки «От кадра до пикселей» и «От пикселей до кадра» для преобразования видео в формате матрицы в формат потоковой передачи, подходящий для моделирования HDL.

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

Подсистема алгоритма HDL начинается с извлечения интересующей области в центре изображения. Поскольку эта модель настроена для 320x240 источник видео, он использует 100x100 область в центре видеопотока.
Блок «Статистика изображения» находит среднее значение для этой центральной области. Для каждого вычисляется новое среднее значение 100x100 кадр. Блок устанавливает для проверяемого порта Out значение 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.
В этом простом примере можно применить поправочный коэффициент к скалярному потоку пикселей и затем отфильтровать. Показанная архитектура может расширяться для более сложных адаптивных изменений коэффициентов фильтра.
5x5 умножение поправочного коэффициента с гауссовыми коэффициентами может быть реализовано как один последовательный множитель, а не как 25 параллельных множителей. Чтобы реализовать этот HDL, включите блок продукта в подсистему и щелкните правой кнопкой мыши подсистему, чтобы открыть свойства блока HDL. Установите свойство SharingFactor равным 25 для реализации одного мультиплексируемого по времени множителя. При этом параметре операция умножения использует в 25 раз более быстрый тактовый сигнал, чем остальная часть конструкции. Подумайте о требуемой тактовой частоте пикселя и о том, сможет ли устройство обеспечить более высокую скорость.