Открыть сервис

Алгоритм SIFT

Алгоритм SIFT (Scale-Invariant Feature Transform — масштабно-инвариантное преобразование признаков) — это метод компьютерного зрения, предназначенный для обнаружения и описания локальных ключевых точек (особенностей) на изображениях, устойчивых к изменениям масштаба, поворота, освещения и точки съёмки. Разработанный в 1999 году Дэвидом Лоу (David Lowe) и опубликованный в окончательном виде в 2004 году, алгоритм позволяет надёжно сопоставлять одни и те же объекты на разных снимках, что делает его одним из основополагающих инструментов в задачах распознавания образов, построения панорам, трёхмерной реконструкции и отслеживания объектов.

История создания

До появления SIFT методы поиска и сопоставления точек на изображениях (например, детектор углов Харриса) были чувствительны к изменениям масштаба и поворота. Дэвид Лоу, работавший в Университете Британской Колумбии, поставил задачу создать дескриптор, который оставался бы инвариантным к аффинным преобразованиям и частично — к изменениям освещения. Первая версия алгоритма была представлена в 1999 году на Международной конференции по компьютерному зрению (ICCV). В 2004 году вышла расширенная статья в журнале International Journal of Computer Vision, где были детализированы этапы построения дескриптора и приведены результаты экспериментов, показавшие высокую надёжность SIFT по сравнению с аналогами.

Изначально алгоритм был запатентован Университетом Британской Колумбии, что ограничивало его использование в коммерческих продуктах. В 2020 году срок действия патента истёк, и SIFT стал общедоступным для любых целей.

Принцип работы

Алгоритм SIFT состоит из четырёх основных этапов: обнаружение экстремумов в масштабном пространстве, локализация ключевых точек, назначение ориентации и построение дескриптора.

Обнаружение экстремумов в масштабном пространстве

На первом этапе строится пирамида разностей гауссианов (DoG — Difference of Gaussians). Для этого исходное изображение последовательно размывается гауссовым фильтром с увеличивающимся коэффициентом σ, образуя октавы. Разность между соседними размытыми изображениями даёт карту DoG, которая аппроксимирует лапласиан гауссиана. Точки, в которых значение DoG является локальным максимумом или минимумом по сравнению с 26 соседями (8 в текущем масштабе и 9 в соседних масштабах), считаются кандидатами в ключевые точки. Этот подход обеспечивает инвариантность к масштабу.

Локализация ключевых точек

Для каждого кандидата уточняется его положение и масштаб с помощью интерполяции по трёхмерной квадратичной функции. Отбрасываются точки с низким контрастом (значение DoG меньше порога) и точки, расположенные вдоль рёбер (высокая кривизна в одном направлении и низкая в перпендикулярном), так как они неустойчивы к шуму. Для отбраковки рёберных точек используется отношение собственных значений матрицы Гессе — если оно превышает порог (обычно 10), точка удаляется.

Назначение ориентации

Для каждой оставшейся ключевой точки вычисляется градиент (модуль и направление) в окрестности радиуса, пропорционального масштабу. Строится гистограмма направлений из 36 бинов (каждый по 10 градусов). Пик гистограммы определяет доминирующую ориентацию точки. Если есть дополнительные пики, превышающие 80 % от максимального, для точки создаётся несколько копий с разными ориентациями. Это обеспечивает инвариантность к повороту изображения.

Построение дескриптора

Дескриптор SIFT представляет собой вектор из 128 чисел. Для его построения вокруг ключевой точки выделяется область размером 16×16 пикселей, ориентированная по доминирующему направлению. Эта область делится на 4×4 подобласти. В каждой подобласти строится гистограмма направлений градиентов из 8 бинов. Таким образом, 4×4×8 = 128 значений. Дескриптор нормализуется для достижения инвариантности к изменениям освещения (линейным изменениям контраста и яркости).

Характеристики и свойства

  • Инвариантность: SIFT устойчив к масштабированию, повороту, частично к аффинным искажениям, изменению яркости и контраста, а также к шуму.
  • Уникальность: 128-мерный дескриптор обеспечивает высокую различимость ключевых точек, что позволяет надёжно сопоставлять их даже на изображениях с большим количеством повторяющихся текстур.
  • Количество точек: на типичном изображении размером 640×480 пикселей алгоритм находит от нескольких сотен до нескольких тысяч ключевых точек.
  • Вычислительная сложность: SIFT является ресурсоёмким алгоритмом, требующим значительных вычислительных мощностей, особенно на этапе построения пирамиды DoG и дескрипторов. Время обработки одного кадра на процессоре общего назначения может составлять от 0,1 до 1 секунды в зависимости от размера изображения и настроек.

Применение

Алгоритм SIFT широко используется в различных областях компьютерного зрения:

  • Построение панорам: сопоставление ключевых точек на перекрывающихся снимках позволяет автоматически сшивать их в единое изображение.
  • Распознавание объектов: SIFT применяется для поиска заданных объектов на изображениях, например, в системах дополненной реальности или для идентификации продуктов.
  • Трёхмерная реконструкция: по парам изображений, снятых с разных ракурсов, SIFT находит соответствия, которые затем используются для вычисления трёхмерных координат точек.
  • Отслеживание движения: в видеопотоке ключевые точки позволяют отслеживать перемещение объектов.
  • Робототехника: навигация и локализация роботов на основе визуальных данных, в том числе в задачах SLAM (одновременная локализация и построение карты).
  • Биометрия: распознавание отпечатков пальцев, радужной оболочки глаза и других биометрических признаков.

Модификации и альтернативы

Из-за высокой вычислительной стоимости SIFT были разработаны более быстрые и компактные алгоритмы, основанные на схожих принципах:

  • SURF (Speeded Up Robust Features) — использует интегральные изображения и фильтры Хаара для ускорения обнаружения и описания точек. SURF работает в несколько раз быстрее SIFT, но несколько уступает в устойчивости к аффинным искажениям.
  • ORB (Oriented FAST and Rotated BRIEF) — комбинация детектора FAST и дескриптора BRIEF, дополненная ориентацией. ORB значительно быстрее SIFT и SURF, но менее устойчив к масштабу и повороту.
  • BRISK (Binary Robust Invariant Scalable Keypoints) — бинарный дескриптор, инвариантный к масштабу и повороту, работающий быстрее SIFT.
  • AKAZE (Accelerated KAZE) — использует нелинейное масштабное пространство, что позволяет лучше сохранять границы объектов и обеспечивает высокую скорость.

Тем не менее, SIFT остаётся эталоном по надёжности и точности, особенно в задачах, где требуется высокая устойчивость к изменениям условий съёмки.

Критика и ограничения

  • Вычислительная нагрузка: SIFT не подходит для систем реального времени на мобильных устройствах или встраиваемых системах без аппаратного ускорения.
  • Чувствительность к аффинным искажениям: при сильных перспективных искажениях (например, при съёмке под большим углом) надёжность сопоставления снижается.
  • Патентные ограничения: до 2020 года использование SIFT в коммерческих продуктах было затруднено из-за патента. После истечения срока действия патента эта проблема исчезла.
  • Необходимость настройки: для разных типов изображений (например, медицинских или спутниковых) может потребоваться подбор пороговых значений, что усложняет автоматическое применение.

Интересные факты

  • Алгоритм SIFT был вдохновлён работой нейронов зрительной коры мозга, которые реагируют на определённые ориентации и масштабы.
  • Дэвид Лоу получил за разработку SIFT премию ACM Prize in Computing в 2015 году.
  • В 2012 году алгоритм был использован в системе распознавания изображений Google Goggles, которая позволяла искать объекты по фотографии.
  • SIFT остаётся одним из наиболее цитируемых алгоритмов в области компьютерного зрения — его основная статья 2004 года имеет более 60 000 цитирований.

Источники

  • Lowe, D. G. (2004). Distinctive Image Features from Scale-Invariant Keypoints. International Journal of Computer Vision, 60(2), 91–110.
  • Lowe, D. G. (1999). Object recognition from local scale-invariant features. Proceedings of the International Conference on Computer Vision, 1150–1157.
  • Szeliski, R. (2010). Computer Vision: Algorithms and Applications. Springer.
  • Tuytelaars, T., & Mikolajczyk, K. (2008). Local Invariant Feature Detectors: A Survey. Foundations and Trends in Computer Graphics and Vision, 3(3), 177–280.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →