Полутоновое расширение

Морфологическое расширение полутоновых пиксельных данных

Описание

Блок Grayscale Dilation выполняет морфологическое расширение на потоке значений интенсивности пикселей. Можно задать окружение или элемент структурирования, до 32×32 пиксели. Для строки, квадрата или прямоугольных элементов структурирования больше чем 8 пикселей шириной, блок использует алгоритм Ван Херка, чтобы найти максимум. Этот алгоритм использует только три компаратора, чтобы найти максимумы всех строк, затем использует дерево сравнения, чтобы найти максимум результатов строки.

Для структурирования элементов меньше чем 8 пикселей шириной, или которые содержат нулевые элементы, блок реализует конвейерное дерево сравнения для каждой строки окружения. Дополнительное дерево сравнения находит максимальное значение результатов строки. Если элемент структурирования содержит нули, что маска от пикселей, алгоритм сохраняет аппаратные ресурсы, не реализовывая компараторы для тех пиксельных местоположений.

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

Атрибуты сигнала

ПортНаправлениеОписаниеТип данных
pixelВвод/выводОдин пиксель изображения, заданный как скалярное значение.
  • uint8, uint16, uint32

  • fixdt(0,N,M)

double и типы данных single поддерживаются для симуляции, но не для генерации HDL-кода.

ctrlВвод/вывод

Управляющие сигналы, сопровождающие пиксельный поток, заданный как шина pixelcontrol, содержащая пять сигналов. Сигналы описывают валидность пикселя и его местоположения в кадре. Для получения дополнительной информации смотрите Пиксельную Шину управления.

pixelcontrol

Параметры

Neighborhood

Пиксельное окружение, заданное как матрица или вектор единиц и нулей.

Блок поддерживает плоские окружения до 32×32 пиксели. Чтобы использовать элемент структурирования, задайте Neighborhood как getnhood(strel(shape)). Минимальный размер окружения 2×2 матрица, или 2×1 вектор-столбец. Если окружение является вектором - строкой, это должно быть по крайней мере 8 широкими столбцами и не содержать нули.

Значением по умолчанию является ones(5,5).

Line buffer size

Размер буфера памяти строки, заданного как целое число.

Выберите степень двойки, которая размещает количество активных пикселей в горизонтальной строке. Если вы задаете значение, которое не является степенью двойки, блок использует следующую самую большую степень двойки. Блок выделяет (neighborhood lines – 1)-by-Line buffer size ячейки памяти, чтобы сохранить пиксели. Значение по умолчанию 2048.

Алгоритм

Блок заполняет изображение, обнуляет для операции расширения. Смотрите, что Ребро Дополняет.

Ван Херк Имплементэйшн

Для строки, квадрата или прямоугольных элементов структурирования больше чем 8 пикселей шириной, блок реализует алгоритм Ван Херка. Все пиксели в элементе структурирования должны быть установлены в один. Блок разлагает элемент структурирования на строки и последовательно находит максимум каждой строки с помощью алгоритма Ван Херка. Если размер входного кадра не является кратным пикселей m, память строки также добавляет горизонтальное дополнение в кратное m. Эта реализация использует только 3 общих количества компараторов для всех строк. Затем если существует больше чем одна строка, она вычисляет максимум результатов строки с помощью дерева сравнения. Схема указывает на задержку каждого блока вычисления.

Ядро Ван Херка вычисляет рабочий прямой максимум и движущийся в обратном направлении максимум на каждой строке окружения. Поэтому пиксели в строке должны быть буферизованы, и порядок инвертируется. Буфер добавляет задержку относительно реализации дерева сравнения. Зеркальный Буфер является пинг-понгом RAM пикселей m, где одна память читает значения в обратном порядке, в то время как другой пишет. Ядро использует 3+n-1 компараторы.

Реализация дерева сравнения

Для структурирования элементов, меньших, чем 8 пикселей шириной или тех с одним или несколькими обнуленными пикселями, блок реализует дерево сравнения.

Схема показывает архитектуру операции расширения. Алгоритм находит максимум каждой строки окружения параллельно. Затем это вычисляет максимум строк с помощью другого дерева сравнения. Схема указывает на задержку каждого блока вычисления.

Для прямоугольного окружения, которое является широкими пикселями m, деревья сравнения первой стадии содержат m – 1 компаратор по log2 (m) такты. Например, для прямоугольного окружения, которое 7 пикселей шириной, дерево сравнения имеет 6 компараторов более чем 3 такта.

Однако, если окружение, которое вы задаете, содержит, обнуляет, сгенерированный HDL исключает компаратор для нулевых местоположений. Конвейерная задержка через дерево сравнения не изменяется. Например, для непрямоугольного окружения со строкой [0 0 1 1 0 0 1], дерево сравнения для той строки содержит 2 компаратора и все еще использует 3 такта.

Задержка

Задержка операции является буферной задержкой строки плюс задержка вычисления ядра. Буферная задержка строки включает дополнение ребра.

Задержка ядра Ван Херка для окружения m ×n пиксели 2m + log2 (n). Блок реализует это ядро для строки, квадрата или прямоугольных элементов структурирования больше чем 8 пикселей шириной, без обнуленных пикселей.

Задержка ядра дерева сравнения для окружения m ×n пиксели является log2 (m) +log2 (n). Блок реализует это ядро для структурирования элементов, меньших, чем 8 пикселей шириной или тех с одним или несколькими обнуленными пикселями.

Примечание

Горизонтальный интервал гашения пиксельного потокового формата должен быть больше, чем задержка блока. Этот интервал позволяет блоку закончить обрабатывать одну строку, прежде чем это начнет обрабатывать следующее. Если вы используете пользовательский формат видео, установите горизонтальный интервал гашения с помощью Кадра Для Пиксельных параметров блоков. Горизонтальный интервал гашения равен Total pixels per lineActive pixels per line или, эквивалентно, Front porch + Back porch. Стандартные форматы потокового видео используют горизонтальный интервал гашения приблизительно 25% ширины кадра. Этот интервал намного больше, чем фильтры применились к каждому кадру.

Расширенные возможности

Введенный в R2016a