exponenta event banner

visionhdl. CornerDetector

Поиск углов с помощью алгоритма FAST или Harris

Описание

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 сигналы типа данных. Сигналы описывают достоверность пикселя и его местоположение в кадре. Дополнительные сведения см. в разделе Структура пиксельного управления.

Типы данных: 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 сигналы типа данных. Сигналы описывают достоверность пикселя и его местоположение в кадре. Дополнительные сведения см. в разделе Структура пиксельного управления.

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

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

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

release(obj)

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

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

Алгоритмы

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

См. также

Блоки

Объекты

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