Поиск углов с помощью алгоритма FAST или Harris
visionhdl.CornerDetector Система object™ обнаруживает углы с помощью алгоритма тестирования «от ускоренного сегмента» (FAST) или с помощью алгоритма пересекающихся ребер (Harris). Для каждого пикселя, если пиксель является углом, объект возвращает метрику угла. Если пиксель не является углом, объект возвращает значение пикселя, равное нулю.
Алгоритм 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')
[ определяет порог, определяющий угол в качестве входного аргумента. Этот синтаксис применяется как для алгоритмов Harris, так и для алгоритмов FAST. Порог интерпретируется по-разному для каждого алгоритма. Чтобы включить этот аргумент при использовании алгоритма FAST, установите corner,ctrlOut] = corners(pixelIn,thresh,ctrlIn)MinContrastSource свойство для 'Input port'. Чтобы включить этот аргумент при использовании алгоритма Харриса, установите ThresholdSource свойство для 'Input port'.
Этот объект использует потоковый пиксельный интерфейс со структурой для сигналов управления кадрами. Этот интерфейс позволяет объекту работать независимо от размера и формата изображения и подключаться к другим объектам Vision HDL Toolbox™. Объект принимает и возвращает значение скалярного пикселя и управляющие сигналы в виде структуры, содержащей пять сигналов. Сигналы управления указывают достоверность каждого пикселя и его местоположение в кадре. Чтобы преобразовать матрицу пикселей в поток пикселей и управляющие сигналы, используйте visionhdl.FrameToPixels объект. Полное описание интерфейса см. в разделе Потоковый пиксельный интерфейс.
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
Этот объект реализует алгоритмы, описанные на странице ссылок блока Детектор углов (Corner Detector).