Находит углы с помощью алгоритма Харриса или FAST
visionhdl.CornerDetector
Система object™ обнаруживает углы при помощи алгоритма от ускоренного теста сегмента (FAST) функций или пересекающимися ребрами (Харрис) алгоритм. Для каждого пикселя, если пиксель является углом, объект возвращает угловую метрику. Если пиксель не является углом, объект возвращает пиксельное значение нуля.
Алгоритм FAST тестирует круговую область вокруг потенциального центра угла. Тест обнаруживает угол, если непрерывный раздел пикселей является или более ярким, чем центр плюс порог или более темным, чем центр минус порог. Можно задать минимальный контрастный порог как свойство или аргумент и выбор из трех правил задать угол. Эти правила задают, сколько пикселей в кругу пикселей должно превысить минимальный контраст для центрального пикселя, который будет рассмотрен углом. Объект выполняет параллельные тесты всех комбинаций непрерывных пикселей вокруг круга. Алгоритм FAST использует немного аппаратных ресурсов.
Алгоритм Харриса вычисляет горизонтальные и вертикальные градиенты, фильтрует компоненты градиента с круговым Гауссовым фильтром 5 на 5 и вычисляет метрику, которая представляет силу угла. Можно задать порог, который определяет уровень, на котором обнаруживаются углы. Объект возвращает угол для пикселей, где метрика превышает этот порог. Алгоритм Харриса использует больше аппаратных ресурсов, чем Алгоритм FAST, но может обнаружить углы, которые не может найти Алгоритм FAST.
Обнаружить углы в пиксельном потоке:
Создайте visionhdl.CornerDetector
объект и набор его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты?.
corners = visionhdl.CornerDetector(
возвращает угловой Системный объект детектора. Установите свойства с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в одинарные кавычки. Name
,Value
)
Например:
corners = visionhdl.CornerDetector('Method','FAST 7 of 12',... 'MinContrastSource','Input port',... 'PaddingMethod','None')
[
задает порог, который определяет угол как входной параметр. Этот синтаксис запрашивает и Харриса и Алгоритмы FAST. Порог интерпретирован по-другому для каждого алгоритма. Чтобы включить этот аргумент при использовании Алгоритма FAST, установите corner
,ctrlOut
] = corners(pixelIn
,thresh
,ctrlIn
)MinContrastSource
свойство к 'Input port'
. Чтобы включить этот аргумент при использовании алгоритма Харриса, установите ThresholdSource
свойство к 'Input port'
.
Этот объект использует пиксельный интерфейс потоковой передачи со структурой для сигналов управления кадром. Этот интерфейс включает объекту действовать независимо от размера изображения и формата, и соединиться с другими объектами Vision HDL Toolbox™. Объект принимает и возвращает скалярное пиксельное значение и управляющие сигналы как структура, содержащая пять сигналов. Управляющие сигналы указывают на валидность каждого пикселя и его местоположения в системе координат. Чтобы преобразовать пиксельную матрицу в пиксельный поток и управляющие сигналы, используйте visionhdl.FrameToPixels
объект. Для полного описания интерфейса смотрите Пиксельный Интерфейс Потоковой передачи.
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
Этот объект реализует алгоритмы, описанные на странице с описанием блока Corner Detector.