В этом примере показано, как уменьшить задержку и сэкономить аппаратные ресурсы, не добавляя пиксели заполнения на краю каждого кадра.
Большинство операций фильтрации изображений размещают изображение для заполнения окрестностей для пикселов на краю изображения. Заполнение помогает избежать артефактов границ в выходном изображении. В аппаратной реализации операция заполнения использует дополнительные ресурсы и вводит дополнительную задержку.
Блоки Vision HDL Toolbox™, выполняющие обработку окрестностей с заполнением, требуют горизонтального гашения, что вдвое превышает ширину ядра. Такое поведение означает, что большие размеры фильтра приводят к более длительному требованию гашения. Исключение заполнения путем установки для параметра метода Padding значения None позволяет использовать меньший период горизонтального гашения. Без заполнения требование горизонтального гашения не зависит от разрешения изображения и размера ядра.
Этот пример включает две модели. Первая модель показывает, как использовать эту опцию с блоками библиотеки, а вторая модель демонстрирует использование ее при построении алгоритмов, использующих блок «Буфер линий». В этом примере также поясняются некоторые аспекты конструкции, когда заполнение не используется.
В этом примере модели показано, как использовать заполнение none предопределенным алгоритмом из библиотек инструментов Vision HDL Toolbox. Эта модель включает в себя блок фильтра изображения, настроенный для фильтра размытия n-by-n с параметром метода Padding, равным None. Можно изменить размер ядра фильтра, изменив значение n в рабочей области. Модель открывается с помощью n установите значение 15.
При использовании заполнения кромок большинство блоков имеют floor(KernelHeight/2) строки задержки и требуют 2*KernelWidth циклы горизонтальной заглушки. При пропуске заполнения для большинства блоков требуется только 12 циклов горизонтального гашения. Поскольку задержка буфера внутренней линии больше не зависит от размера ядра, этот интервал гашения соответствует любому размеру ядра.
Для отображения уменьшенных требований к гашению при использовании метода Padding установите значение Noneблок Frame To Pixels настроен для пользовательского формата 240p, который использует только 12 циклов комбинированного переднего и заднего крыльца.
При запуске модели отображаются эти три фигуры.
Входное видео -- Оригинальное входное видео 240p.
Заполнение без полного кадра - вывод видео из фильтра без заполнения, с отображением артефактов границы.
Padding None ROI - вывод видео из фильтра без заполнения, с краевыми пикселями, отсеченными от краев кадра. Размер кадра меньше размера входного видео.

В окне просмотра «Заполнение без полного кадра», показанном на рисунке, вокруг края каждого кадра видна темная граница. Этот эффект обусловлен тем, что без заполнения пикселов области фильтра не полностью определены на краях кадра. Выходные данные фильтра, имеющего пиксели заполнения, не показывают каких-либо артефактов границ, поскольку логика заполнения гарантирует, что окрестности границ полностью определены.

Удаление или маскирование этих пикселов границы из непактированных выходных данных перед дальнейшим анализом является обычным делом. Артефакты границы могут снизить точность последующей обработки. Например, эти артефакты могут влиять на статистическое распределение всего изображения. Блоки панели инструментов Vision HDL возвращают граничные пикселы для непакладированных изображений для поддержания времени ввода и вывода. Значения этих пикселей не определены и не могут считаться имеющими какое-либо конкретное отношение к окружающим пикселям.
Блок выбора окупаемости инвестиций удаляет floor(KernelHeight/2) и floor(KernelWidth/2) пикселов от краев каждого кадра. Показанное средство просмотра окупаемости инвестиций Padding None показывает видео с удаленными артефактами границы. Результирующий кадр для ядра 15 на 15 имеет размер 225 на 305 пикселей, уменьшенный с 240 на 320 пикселей.

В этой модели показано, как конструировать алгоритмы с помощью буфера строк с параметром метода Padding, равным None. Эта модель содержит подсистему Padding None и подсистему Padding Symmetric.
Блок Frame To Pixels, подключенный к подсистеме Padding Symmetric, использует стандартный формат 240p. Стандартная горизонтальная заглушка (комбинированная передняя и задняя крыльцо) составляет 82 цикла. Увеличение разрешения увеличивает интервал гашения. Например, формат 1080p имеет 280 циклов простоя между строками.
Блок Frame To Pixels, подключенный к подсистеме Padding None, реализует пользовательский формат 240p, использующий только 12 циклов комбинированного переднего и заднего крыльца, такой же, как в модели фильтра изображения, показанной ранее.
Эта модель реализует фильтр Гаусса 15 на 15 с большим стандартным отклонением с помощью блока «Буфер линий».
При запуске модели отображаются три фигуры:
Входное видео -- Оригинальное входное видео 240p.
Padding None ROI - вывод видео из фильтра без заполнения, с краевыми пикселями, отсеченными от краев кадра. Размер кадра меньше размера входного видео.
Заполнение симметричным - вывод видео из фильтра с симметричным заполнением. Это видео имеет полный размер, но не имеет краевых эффектов, поскольку биты заполнения определяют окрестности вокруг краевых пикселей.

pixelcontrol Балансировка задержкиПри построении алгоритмов, использующих блок «Буфер линий», необходимо сбалансировать pixelcontrol для учета задержки ядра. При использовании заполнения в поле Line Buffer (Линейный буфер) возвращается значение sheyEnable, равное 1 для floor(KernelWidth/2) циклов до hStart и после hEnd. Логика балансировки задержки использует этот расширенный сигнал sheyEnable для управления регистрами задержки для pixelcontrol сигналы. Эту логику можно увидеть в подсистеме Padding Symmetric/pixelctrldelay.
При установке для метода заполнения значения None, буфер строки возвращает sheyEnable в 1 между hStart и hEnd. Логика балансировки задержки должна использовать тактовый сигнал, а не метод shireEnable, для управления регистрами задержки для hEnd, vEnd и valid. Действительный сигнал также должен отвечать на команду sheyEnable, для которой установлено значение 0 во время строки, которая может возникнуть при взаимодействии с внешней памятью. Действительный сигнал также должен иметь значение 1 на последнем пикселе строки для соответствия с hEnd и vEnd. Чтобы удовлетворить обоим требованиям, логика балансировки задержки задерживает действительный сигнал с помощью регистра, разрешенного с помощью команды shireEnable, и использует блок Unit Delay Enabled для установки действительного сигнала в значение 1 с hEnd в конце строки. Эта логика отображается в подсистеме Padding None/pixelctrldelay.

Исключение логики заполнения позволяет достичь более высокой пропускной способности за счет использования видеоформата с уменьшенным горизонтальным гашением. Этот параметр также сокращает использование аппаратных ресурсов. Однако проект должен учитывать артефакты границ в цепочке обработки. При использовании блока «Буфер линий» необходимо задержать pixelcontrol для соответствия задержке ядра с помощью управляющей логики, которая учитывает измененное поведение выходного сигнала sheyEnable. Используя этот пример в качестве отправной точки, можно разработать алгоритмы и системы, достигающие более высокой пропускной способности, исключив логику заполнения.