visionhdl.CornerDetector

Находит углы с помощью алгоритма FAST или Harris

Описание

The visionhdl.CornerDetector Системная object™ обнаруживает углы с помощью алгоритма FAST или алгоритма пересекающихся ребер (Harris). Для каждого пикселя, если пиксель является углом, объект возвращает угловую метрику. Если пиксель не является углом, объект возвращает значение пикселя, равное нулю.

Алгоритм FAST проверяет округлую область вокруг потенциального центра угла. Тест обнаруживает угол, если смежная секция пикселей либо ярче, чем центр плюс порог, либо темнее, чем центр минус порог. Можно задать минимальный порог контрастности как свойство или аргумент и выбрать из трех правил, чтобы задать угол. Эти правила определяют, сколько пикселей в круге пикселей должно превысить минимальную контрастность для центрального пикселя, которая должна считаться углом. Объект выполняет параллельные тесты всех комбинаций смежных пикселей вокруг круга. Алгоритм FAST использует немного аппаратных ресурсов.

Алгоритм Харриса вычисляет горизонтальный и вертикальный градиенты, фильтрует градиентные компоненты с помощью кругового Гауссова фильтра 5 на 5 и вычисляет метрику, которая представляет силу угла. Можно задать порог, который определяет уровень, на котором обнаруживаются углы. Объект возвращает угол для пикселей, где метрика превышает этот порог. Алгоритм Харриса использует больше аппаратных ресурсов, чем алгоритм FAST, но может обнаружить углы, которые может не найти алгоритм FAST.

Чтобы обнаружить углы в потоке пикселей:

  1. Создайте visionhdl.CornerDetector Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

corners = visionhdl.CornerDetector(Name,Value) возвращает детектор угла Системный объект. Задайте свойства с помощью одной или нескольких пар "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.

Для примера:

corners = visionhdl.CornerDetector('Method','FAST 7 of 12',...
            'MinContrastSource','Input port',...
            'PaddingMethod','None')

Свойства

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

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Выберите алгоритм Харриса или размер круга для алгоритма FAST. Три опции FAST определяют, сколько смежных пикселей на круге должно превысить порог для центрального пикселя, помеченного как угол. Для кругов на 8, 12 и 16 пикселей, показанных на этих рисунках, объект обнаруживает угол, когда 5, 7 или 9 смежных пикселей, соответственно, находятся выше порога. Объект проверяет это количество смежных пикселей в любом месте круга. Объект использует ядро размера 3 на 3 для 'FAST 5 of 8', 5 на 5 для 'FAST 7 of 12', и 7 на 7 для 'FAST 9 of 16'.

Diagrams of the three sizes of kernels with the circle of pixels around the center pixel.

Задайте 'Property' для установки контрастного порога при помощи MinContrast свойство. Задайте 'Input port' чтобы включить thresh входной параметр.

Зависимости

Чтобы включить это свойство, установите Method свойство одного из опций FAST.

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

Зависимости

Чтобы включить это свойство, установите Method свойство одной из опций FAST и установите MinContrastSource свойство к 'Property'.

Задайте 'Property' для установки порога при помощи Threshold свойство. Задайте 'Input port' чтобы включить thresh входной параметр.

Зависимости

Чтобы включить это свойство, установите Method свойство к 'Harris'.

Это значение представляет приближение собственных значений матрицы Харриса, вычисленных из результатов градиента. Объект возвращает угол для пикселей, где метрика превышает этот порог. Это значение приведено к тому совпадающий тип данных, что и выходные corner. Угловая метрика находится в области значений четвертой степени входов пикселя. Для примера для 8-битного пикселя входы, полноточный выходной размер составляет 44 бита.

Зависимости

Чтобы включить это свойство, установите Method свойство к 'Harris' и установите ThresholdSource свойство к 'Property'.

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

Если вы задаете значение, которое не является степенью двойки, объект использует следующую наибольшую степень двойки. Объект выделяет (N - 1) -by- LineBufferSize местоположения памяти для хранения пикселей. N - размер ядра.

Объект использует ядро размера 3 на 3, когда Method свойство 'FAST 5 of 8', 5 на 5, когда Method является 'FAST 7 of 12', и 7 на 7, когда Method является 'FAST 9 of 16'.

Когда вы задаете Method на 'Harris'объект использует одно ядро 1 на 3 и одно ядро 3 на 1 для градиентного вычисления и три ядра 5 на 5 для кругового оконного фильтра на трех градиентных компонентах.

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

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

  • 'Replicate' - Повторите значение пикселей на краю изображения.

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

Круговые фильтры окна, используемые в алгоритме Харриса, заполняют ребра системы координат, используя 'Replicate' заполнение.

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

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

Метод для определения типа данных выходов угловой метрики.

  • 'Same as first input''- Устанавливает тип данных угловой метрики, соответствующий типу данных pixelIn.

  • 'Custom' - Устанавливает тип данных угловой метрики, соответствующий типу данных, заданному в CustomOutputDataType свойство.

  • 'Full precision''- Вычисляет внутренние и выходные типы данных с помощью правил полной точности. Эти правила обеспечивают точные цифры с фиксированной точкой и предотвращают квантование внутри объекта. Биты добавляются, по мере необходимости, чтобы предотвратить округление и переполнение.

Тип данных для выхода угловой метрики, заданный как numerictype(signed,WL,FL), где WL - размер слова, а FL - длина дроби в битах. Объект определяет угловую метрику для этого типа данных.

Зависимости

Это свойство применяется при установке OutputDataType на 'Custom'.

Использование

Описание

[corner,ctrlOut] = corners(pixelIn,ctrlIn) возвращает метрику, которая указывает, является ли каждый пиксель углом

[corner,ctrlOut] = corners(pixelIn,thresh,ctrlIn) задает порог, который определяет угол как входной параметр. Этот синтаксис применим как для алгоритмов Harris, так и для FAST. Порог интерпретируется по-разному для каждого алгоритма. Чтобы включить этот аргумент при использовании алгоритма FAST, установите MinContrastSource свойство к 'Input port'. Чтобы включить этот аргумент при использовании алгоритма Харриса, установите ThresholdSource свойство к 'Input port'.

Этот объект использует интерфейс потокового пикселя со структурой для сигналов управления системой координат. Этот интерфейс позволяет объекту работать независимо от размера и формата изображения и соединяться с другими объектами Vision HDL Toolbox™. Объект принимает и возвращает скалярное значение пикселя и сигналы управления как структуру, содержащую пять сигналов. Сигналы управления указывают валидность каждого пикселя и его местоположение в системе координат. Чтобы преобразовать пиксельную матрицу в поток пикселей и сигналы управления, используйте visionhdl.FrameToPixels объект. Полное описание интерфейса см. в разделе Потоковый пиксельный интерфейс.

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

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

Один пиксель изображения в потоке пикселей, заданный как скалярное значение, представляющее интенсивность.

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

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

Сигналы управления, сопровождающие входной поток пикселей, заданные как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Structure.

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

Порог, указывающее угол в виде неотрицательного целого числа.

При выборе алгоритма FAST каждый пиксель в круге вычитается из значения центрального пикселя. Только те различия, которые превышают этот порог, используются, чтобы определить, является ли центральный пиксель углом, и вычислить выход метрику. Это значение приведено к совпадающий тип данных, что и pixelIn.

Когда вы выбираете алгоритм Харриса, это значение представляет собой приближение собственных значений матрицы Харриса, вычисленных из результатов градиента. Объект возвращает угол для пикселей, где метрика собственного значения превышает этот порог. Угловые метрики Харриса находятся в области значений четвертой степени входов пикселя. Для примера для 8-битного пикселя входы, полноточный выходной размер составляет 44 бита. Это значение приведено к тому совпадающий тип данных, что и выходные corner.

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

Зависимости

Чтобы включить этот аргумент при выборе алгоритма FAST, установите MinContrastSource свойство к 'Input port'.

Чтобы включить этот аргумент, когда вы выбираете алгоритм Харриса, установите ThresholdSource свойство к 'Input port'.

Типы данных: single | double | uint8 | uint16 | uint32 | uint64 | fi

Выходные аргументы

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

Метрика, которая указывает, является ли пиксель углом, возвращается как скаляр. Тип определяется OutputDataType свойство. Когда пиксель не является углом, объект возвращает нуль для этого значения.

Для углов, обнаруженных с помощью алгоритма FAST, это значение является контрастной метрикой, вычисленной с помощью различия (SAD) пикселей вокруг круга со значением центрального пикселя. Метрика включает только те различия, которые превышают порог.

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

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

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

Сигналы управления, сопровождающие вывод потока пикселей, возвращенные как pixelcontrol структура, содержащая пять logical сигналы типа данных. Сигналы описывают валидность пикселя и его местоположение в системе координат. Для получения дополнительной информации смотрите Pixel Control Structure.

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

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

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

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Алгоритмы

Этот объект реализует алгоритмы, описанные на Corner Detector блочных страниц с описанием.

См. также

Блоки

Объекты

Введенный в R2020a