Увеличение пропускной способности при отсутствии заполнения

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

Большинство операций фильтрации изображений заполняют изображение, чтобы заполнить окрестности для пикселей на краю изображения. Заполнение может помочь избежать пограничных программных продуктов в выходном изображении. В аппаратной реализации операция заполнения использует дополнительные ресурсы и вводит дополнительную задержку.

Vision HDL Toolbox™, которые выполняют обработку по соседству с заполнением, требуют горизонтального гашения, что вдвое превышает ширину ядра. Это поведение означает, что большие размеры фильтра приводят к более длительному требованию гашения. Исключение заполнения путем установки параметра Padding method равного None позволяет использовать меньший период горизонтального гашения. Без заполнения требование горизонтального гашения не зависит от разрешения изображения и размера ядра.

Этот пример включает две модели. Первая модель показывает, как использовать эту опцию с библиотечными блоками, а вторая модель демонстрирует использование ее при построении алгоритмов, которые используют блок Line Buffer. Этот пример также объясняет некоторые факторы проекта, когда вы не используете заполнение.

Использование библиотечных блоков с заполнением None

Эта модель примера показывает, как использовать заполнение none с предопределенным алгоритмом из библиотек Vision HDL Toolbox. Эта модель включает блок Изображения Filter, сконфигурированный для фильтра размытия n на n и с его методом Padding, набором параметров для None. Можно изменить размер ядра фильтра, изменив значение n в рабочей области. Модель открывается с помощью n установите равным 15.

При использовании ребра большинство блоков имеют floor(KernelHeight/2) линии задержки и требуют 2*KernelWidth циклы горизонтальной заглушки. Когда вы опускаете заполнение, большинство блоков требуют только 12 циклов горизонтального гашения. Поскольку задержка буфера внутренней линии больше не зависит от размера ядра, этот интервал гашения принимает любой размер ядра.

Чтобы показать уменьшенные требования к гашению при использовании метода Padding, установленного на Noneблок Frame To Pixels сконфигурирован для пользовательского формата 240p, который использует только 12 циклов комбинированного переднего и заднего крыльца.

Когда вы запускаете модель, она показывает эти три рисунка.

  • Входное видео -- Исходное входное видео 240p.

  • Заполнение None Full Frame - Выход видео с фильтра без заполнения, показывающий пограничные программные продукты.

  • Заполнение Нет информация только для чтения - Выход видео из фильтра без заполнения, с граничными пикселями, отсеченными от ребер системы координат. Размер формата кадра меньше, чем размер входа видео.

Пограничные программные продукты

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

Удаление или маскирование этих пикселей границы из непакомплектованного выхода перед последующим анализом является общим. Пограничные программные продукты могут снизить точность последующей обработки. Для примера эти программные продукты могут повлиять на статистическое распределение общего изображения. Блоки Vision HDL Toolbox возвращают пограничные пиксели для непакомплектованных изображений, чтобы сохранить время входа и вывода. Значения этих пикселей не определены и не могут быть приняты, что имеют какое-либо конкретное отношение к окружающим пикселам.

Блок ROI Selector удаляет floor(KernelHeight/2) и floor(KernelWidth/2) пиксели от ребер каждой системы координат. Показанное средство просмотра ROI Padding None показывает видео с удаленными пограничными программными продуктами. Получившаяся система координат для ядра 15 на 15 составляет 225 на 305 пикселей в размере, уменьшенном с 240 на 320 пикселей.

Использование буферного блока Линии с заполнением None

Эта модель показов, как разработать алгоритмы с помощью Линии Buffer с методом Padding, набора параметров для None. Эта модель содержит подсистему Padding None и подсистему Padding Symmetric.

Блок Frame To Pixels, соединенный с подсистемой Padding Symmetric, использует стандартный формат 240p. Стандартное горизонтальное гашение (комбинированное переднее и заднее крыльцо) составляет 82 цикла. Увеличение разрешения увеличивает интервал гашения. Для примера формат 1080p имеет 280 неактивных циклов между строками.

Блок Frame To Pixels, соединенный с подсистемой Padding None, реализует пользовательский формат 240p, который использует только 12 циклов комбинированного переднего и заднего крыльца, так же как и в модели Image Filter, показанной ранее.

Эта модель реализует Гауссов фильтр 15 на 15 с большим стандартным отклонением при помощи блока Line Buffer.

Когда вы запускаете модель, она показывает три рисунка:

  • Входное видео -- Исходное входное видео 240p.

  • Заполнение Нет информация только для чтения - Выход видео из фильтра без заполнения, с граничными пикселями, отсеченными от ребер системы координат. Размер формата кадра меньше, чем размер входа видео.

  • Padding Symmetric -- Выход видео из фильтра с симметричным заполнением. Это видео имеет полный размер, но не имеет эффектов ребра, потому что биты заполнения определяют окрестности вокруг пикселей ребра.

pixelcontrol Балансировка задержки

Когда вы создаете алгоритмы, которые используют блок Line Buffer, вы должны задержать-сбалансировать pixelcontrol шина для расчета задержки ядра. Когда вы используете заполнение, Line Buffer возвращает shiftEnable set на 1 для floor(KernelWidth/2) циклы до hStart и после hEnd. Логика балансировки задержки использует этот расширенный сигнал shiftEnable для управления регистрами задержки для pixelcontrol сигналы. Эту логику можно увидеть в подсистеме Padding Symmetric/pixelctrldelay.

Когда вы задаете метод заполнения, чтобы None, Линейный буфер возвращает shiftEnable к 1 между hStart и hEnd. Логика балансировки задержки должна использовать часы, вместо shiftEnable, чтобы управлять регистрами задержки для hEnd, vEnd и допустимых. Допустимый сигнал должен также ответить на установленное значение shiftEnable 0 во время линии, что может произойти при взаимодействии с внешней памятью. Допустимый сигнал также должен быть установлен на 1 на последнем пикселе линии, чтобы соответствовать с hEnd и vEnd. Чтобы удовлетворить обоим требованиям, логика балансировки задержки задерживает действительный сигнал при помощи регистра, активируемого shiftEnable, и использует блок Unit Delay Enabled, чтобы задать допустимый сигнал равным 1 с hEnd в конце линии. Подсистема Padding None/pixelctldelay показывает эту логику.

Заключение

Исключение логики заполнения позволяет вам достичь большей пропускной способности при помощи видео- формата с уменьшенным горизонтальным гашением. Эта опция также уменьшает использование аппаратных ресурсов. Однако ваш проект должен учитывать программные продукты позже в цепи обработки. Когда вы используете блок Line Buffer, вы должны задержать pixelcontrol шина, чтобы соответствовать задержке ядра при помощи логики управления, которая учитывает измененное поведение выходного сигнала shiftEnable. Используя этот пример в качестве начальной точки, можно спроектировать алгоритмы и системы, которые достигают более высокой пропускной способности, исключая логику заполнения.