exponenta event banner

Детектор кромок

Поиск краев объектов в потоке пикселов оттенков серого

  • Библиотека:
  • Панель инструментов Vision HDL/Анализ и усовершенствование

  • Edge Detector block

Описание

Блок «Детектор краев» находит края в потоке пикселов в градациях серого с помощью методов Собеля, Превитта или Робертса. Блок свертывает входные пиксели матрицами аппроксимации производных, чтобы найти градиент величины пикселя вдоль двух ортогональных направлений. Затем он сравнивает сумму квадратов градиентов с квадратом конфигурируемого порога, чтобы определить, представляют ли градиенты ребро.

По умолчанию блок возвращает двоичное изображение в виде потока значений пикселей. Значение пикселя, равное 1, указывает, что пиксель является краем. Вывод ребер можно отключить. Можно также включить вывод значений градиента в двух ортогональных направлениях в каждом пикселе.

Порты

Этот блок использует потоковый пиксельный интерфейс с шиной для сигналов управления кадрами. Этот интерфейс позволяет блоку работать независимо от размера и формата изображения. Пиксельные, краевые и градиентные порты этого блока поддерживают потоковую или многопиксельную потоковую передачу. Потоковая передача одного пикселя принимает и возвращает одно значение пикселя за каждый тактовый цикл. Multipixel streaming принимает и возвращает вектор 4 или 8 пикселей за тактовый цикл для поддержки форматов с высокой частотой кадров или высоким разрешением. Вместе с пикселем блок принимает и возвращает pixelcontrol шина, содержащая пять управляющих сигналов. Сигналы управления указывают достоверность каждого пикселя и его местоположение в кадре. Для многопиксельной потоковой передачи один набор управляющих сигналов применяется ко всем четырем или восьми пикселям в векторе. Чтобы преобразовать кадр (матрицу пикселей) в последовательный поток пикселей и управляющие сигналы, используйте блок «От кадра к пикселям». Полное описание интерфейса см. в разделе Потоковый пиксельный интерфейс.

Вход

развернуть все

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

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

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

Типы данных: uint8 | uint16 | uint32 | int8 | int16 | int32 | fixed point | Boolean | double | single

pixelcontrol шина содержит пять сигналов. Сигналы описывают достоверность пикселя и его местоположение в кадре. Дополнительные сведения см. в разделе Шина управления пикселами.

Для многопиксельной потоковой передачи каждый вектор значений пикселей имеет один набор управляющих сигналов. Потому что вектор имеет только один valid , пикселы в векторе должны быть либо все допустимыми, либо все недопустимыми. hStart и vStart сигналы применяются к пикселю с самым низким индексом в векторе. hEnd и vEnd сигналы применяются к пикселю с самым высоким индексом в векторе.

Типы данных: bus

Пороговое значение, определяющее край, указанное как скаляр. Блок сравнивает квадрат этого значения с суммой квадратов градиентов.

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

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Продукция

развернуть все

Для потоковой передачи с одним пикселом Edge является логическим скаляром. Для мультипиксельного вытекания Край - вектор Булевых ценностей NumberOfPixels-1. Значение NumberOfPixels может быть равным четырем или восьми. Каждое значение пикселя указывает, является ли пиксель краем.

Типы данных: Boolean

Значения вертикального и горизонтального градиентов, рассчитанные по ядру с центром в пикселе.

Для потоковой передачи одного пикселя блок возвращает Gv и Gh в качестве скалярных значений. Для многопиксельной потоковой передачи блок возвращает Gv и Gh как векторы NumberOfPixels-by-1 значений. Значение NumberOfPixels может быть равным четырем или восьми.

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

Зависимости

Эти порты отображаются при установке для параметра Method значения Sobel или Prewitt.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

Значения ортогонального градиента, рассчитанные по ядру, центрированному в местоположении пикселя.

При потоковой передаче одного пикселя блок возвращает G45 и G135 в виде скалярных значений. Для многопиксельной потоковой передачи блок возвращает G45 и G135 как векторы NumberOfPixels-by-1 значений. Значение NumberOfPixels может быть равным четырем или восьми.

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

Зависимости

Эти порты отображаются при установке для параметра Method значения Roberts.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | fixed point

pixelcontrol шина содержит пять сигналов. Сигналы описывают достоверность пикселя и его местоположение в кадре. Дополнительные сведения см. в разделе Шина управления пикселами.

Для многопиксельной потоковой передачи каждый вектор значений пикселей имеет один набор управляющих сигналов. Потому что вектор имеет только один valid , пикселы в векторе должны быть либо все допустимыми, либо все недопустимыми. hStart и vStart сигналы применяются к пикселю с самым низким индексом в векторе. hEnd и vEnd сигналы применяются к пикселю с самым высоким индексом в векторе.

Типы данных: bus

Параметры

развернуть все

Главный

При выборе Sobel или Prewittблок вычисляет горизонтальные и вертикальные градиенты, Gv и Gh. При выборе Robertsблок вычисляет ортогональные градиенты; G45 и G135. Дополнительные сведения о каждом методе см. в разделе Алгоритмы.

Примечание

При выборе Prewitt, тип внутренних данных с полной точностью является большим из-за коэффициента 1/6. Рекомендуется выбрать «Вывод компонентов градиента», чтобы можно было настроить тип данных на меньший размер.

Когда этот параметр выбран, блок возвращает поток двоичных пикселей, представляющих края, обнаруженные во входном кадре.

Необходимо выбрать хотя бы один из параметров «Вывод двоичного изображения» и «Вывод градиентных компонентов».

Когда этот параметр выбран, блок возвращает поток значений, представляющих градиенты, вычисленные в двух ортогональных направлениях в каждом пикселе. Если для параметра «Метод» задано значение Sobel или Prewittвыходные порты Gv и Gh появляются в блоке. Если для параметра «Метод» задано значение Robertsвыходные порты G45 и G135 появляются в блоке.

Необходимо выбрать хотя бы один из параметров «Вывод двоичного изображения» и «Вывод градиентных компонентов».

Пороговое значение можно задать из порта ввода или из диалогового окна. Значение по умолчанию: Property. Выбор Input port активизирует порт Th.

Блок сравнивает квадрат этого значения с суммой квадратов градиентов. Блок приводит это значение к типу данных градиентов.

Зависимости

Эта опция отображается, если для параметра Источник порогового значения задано значение Property.

Укажите степень два, которая соответствует количеству активных пикселов в одной горизонтальной строке.

Если указано значение, которое не является степенью два, блок использует следующую наибольшую степень два. Блок распределяет (N-1) -строчные ячейки памяти размера буфера для хранения пикселей, где N - количество строк в матрице дифференциального приближения. Если для параметра «Метод» задано значениеSobel или Prewitt, то N равно 3. Если для параметра «Метод» задано значение Roberts, то N равно 2.

Выберите один из этих методов заполнения границы входного изображения. Дополнительные сведения об этих методах см. в разделе Заполнение кромок.

  • Symmetric - Задайте значение пикселов заполнения для отражения края изображения. Эта опция предотвращает обнаружение кромок на границах активного кадра.

  • None - Исключить логику заполнения. Блок не устанавливает для пикселов вне кадра изображения какое-либо конкретное значение. Эта опция уменьшает аппаратные ресурсы, используемые блоком, и блокирование, требуемое между кадрами, но влияет на точность выходных пикселей на краях кадра. Для поддержания синхронизации потока пикселей выходной кадр имеет тот же размер, что и входной кадр. Однако, чтобы избежать использования пикселов, вычисленных из неопределенных значений заполнения, маскируйте KernelSize/2 пикселы вокруг края кадра для выполнения нисходящих операций. Дополнительные сведения см. в разделе Увеличение пропускной способности при отсутствии заполнения.

Типы данных

Укажите метод округления для внутренних вычислений с фиксированной точкой.

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

Тип данных для двух выходных портов градиента. По умолчанию блок автоматически выбирает типы данных полной точности.

Зависимости

Для включения этого параметра на вкладке «Главная» выберите «Вывод градиентных компонентов».

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

Совет

  • При использовании блока с буфером внутренней линии внутри включенной подсистемы (Simulink) шаблон разрешенного сигнала должен поддерживать синхронизацию потока пикселей, включая минимальные интервалы гашения. Если шаблон включения искажает синхронизацию потока пикселей, могут появиться частичные выходные кадры, поврежденные сигналы управления потоком пикселей или несоответствия между результатами моделирования Simulink ® и HDL. Возможно, потребуется увеличить интервалы гашения, чтобы выдержать циклы при низком значении параметра enable. Дополнительные сведения см. в разделе Настройка интервалов гашения.

Алгоритмы

развернуть все

Блок «Детектор краев» обеспечивает три способа обнаружения краев во входном изображении. Методы используют различные матрицы аппроксимации производных, чтобы найти два ортогональных градиента. Методы Собеля и Превитта рассчитывают градиент в горизонтальном и вертикальном направлениях. Метод Робертса вычисляет градиенты при 45 и 135 градусах. Блок использует те же матрицы, что и блок обнаружения краев в Computer Vision Toolbox™.

При использовании многопиксельной потоковой передачи блок использует однострочную память и параллельно реализует фильтры NumberOfPixels. Это увеличение аппаратных ресурсов является компромиссом для увеличения пропускной способности по сравнению с однопиксельной потоковой передачей.

МетодНаправление 1Направление 2
Sobel18[10−120−210−1]18[121000−1−2−1]
Prewitt16[10−110−110−1]16[111000−1−1−1]
Робертс12[100−1]12[01−10]

Примечание

Коэффициенты Превитта требуют дополнительных битов точности, поскольку они не являются степенями двух. Блок использует 16 битов для представления коэффициентов Превитта. Для 8-битного ввода размер градиентов полной точности по умолчанию составляет 27 бит. При использовании метода Prewitt рекомендуется уменьшить длину слова, используемого для вычисления градиента. Установите флажок «Вывести компоненты градиента», а затем на вкладке «Типы данных» задайте меньшую длину слова с помощью параметра «Тип данных градиента».

Блок свертывает окрестность входного пикселя с производными матрицами, D1 и D2. Затем он сравнивает сумму квадратов градиентов с квадратом порога. Вычисление квадрата порога позволяет избежать построения схемы квадратного корня. Блок преобразует градиенты в тип, указанный на вкладке «Типы данных». Преобразование типа на квадрате порога соответствует типу суммы квадратов градиентов.

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

.

См. также

Блоки

Объекты

Представлен в R2015a