Edge Detector

Найти ребра объектов в полутоновом потоке пикселей

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

  • Edge Detector block

Описание

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

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

Порты

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

Вход

расширить все

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

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

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

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

The pixelcontrol шина содержит пять сигналов. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Bus.

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

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

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

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

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

Выход

расширить все

Для потоковой передачи с одним пикселем Edge является булевым скаляром. Для многопиксельной потоковой передачи Edge является вектором с NumberOfPixels -by-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

The pixelcontrol шина содержит пять сигналов. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Bus.

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

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

Параметры

расширить все

Главный

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

Примечание

Если вы выбираете Prewitt, полноточный внутренний тип данных велик из-за коэффициента 1/6. Рассмотрите выбор Output the gradient components, чтобы можно было настроить тип данных меньшего размера.

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

Необходимо выбрать по крайней мере один из Output the binary image и Output the gradient components.

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

Необходимо выбрать по крайней мере один из Output the binary image и Output the gradient components.

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

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

Зависимости

Эта опция видна, когда вы задаете Source of threshold value Property.

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

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

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

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

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

Типы данных

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

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

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

Зависимости

Чтобы включить этот параметр, на вкладке Main, выберите Output the gradient components.

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

Совет

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

Алгоритмы

расширить все

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

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

МетодНаправление 1Направление 2
Sobel18[101202101]18[121000121]
Prewitt16[101101101]16[111000111]
Робертс12[1001]12[0110]

Примечание

Коэффициенты Prewitt требуют дополнительных бит точности, потому что они не являются степенями двойки. Блок использует 16 биты, чтобы представлять коэффициенты Prewitt. Для 8-битного входа размер по умолчанию градиентов полной точности составляет 27 биты. При использовании метода Prewitt рекомендуется уменьшить размер слова, используемого для вычисления градиента. Установите флажок Output the gradient components, а затем на вкладке Data Types укажите меньший размер слова с помощью Gradient Data Type.

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

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

.

См. также

Блоки

Объекты

Введенный в R2015a