Edge Detector

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

  • Библиотека:
  • Vision HDL Toolbox / Analysis & Enhancement

  • Edge Detector block

Описание

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

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

Порты

Этот блок использует пиксельный интерфейс потоковой передачи с шиной для сигналов управления кадром. Этот интерфейс позволяет блоку действовать независимо от размера изображения и формата. pixel, Edge и порты градиента на этом блоке поддерживают одну пиксельную потоковую передачу или мультипиксельную потоковую передачу. Одна пиксельная потоковая передача принимает и возвращает одно пиксельное значение каждый такт. Мультипиксельная потоковая передача принимает и возвращает вектор пикселей M на такт, чтобы поддержать высокую частоту кадров или форматы с высоким разрешением. Значение M соответствует параметру Number of pixels блока Frame To Pixels. Наряду с пикселем, блок принимает и возвращает pixelcontrol соедините шиной содержащий пять управляющих сигналов. Управляющие сигналы указывают на валидность каждого пикселя и их местоположения в системе координат. Для мультипиксельной потоковой передачи один набор управляющих сигналов применяется ко всем пикселям в векторе. Чтобы преобразовать систему координат (пиксельная матрица) в последовательный пиксельный поток и управляющие сигналы, используйте блок Frame To Pixels. Для полного описания интерфейса смотрите Пиксельный Интерфейс Потоковой передачи.

Входной параметр

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

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

Этот блок не поддерживает многокомпонентную потоковую передачу. Чтобы обработать многокомпонентные потоки, реплицируйте блок для каждого компонента. 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 является булевым скаляром. Для мультипиксельной потоковой передачи Edge является вектором из M-by-1 булевы значения. Каждое пиксельное значение указывает, является ли пиксель ребром.

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

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

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

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

Зависимости

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

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

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

Для одной пиксельной потоковой передачи блок возвращает G45 и G135 как скалярные значения. Для мультипиксельной потоковой передачи блок возвращает G45 и G135 как векторы из M-by-1 значения.

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 коэффициента. Рассмотрите 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, затем 2.

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

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

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

Типы данных

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

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

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

Зависимости

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

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

Советы

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

Алгоритмы

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

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

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

МетодНаправление 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