Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас

Что такое Scale-Invariant Feature Transform (SIFT)?

Абирами Вина

6 мин чтения

9 сентября 2025 г.

Изучите алгоритм SIFT. Узнайте, что такое SIFT, его мощные функции для инвариантного к масштабу компьютерного зрения. Улучшите обработку изображений.

В наши дни многие из используемых нами интеллектуальных устройств, от телефонов и камер до систем умного дома, поставляются с решениями на базе ИИ, которые могут распознавать лица, объекты и даже целые визуальные сцены. Эта возможность исходит от компьютерного зрения, области искусственного интеллекта, которая позволяет машинам понимать и интерпретировать изображения и видео.

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

Чтобы помочь решить эту проблему, исследователи разработали алгоритм компьютерного зрения под названием Scale Invariant Feature Transform, или SIFT. Этот алгоритм позволяет обнаруживать объекты в различных условиях просмотра. SIFT, созданный Дэвидом Лоу в 1999 году, был разработан для поиска и описания уникальных ключевых точек на изображении, таких как углы, края или узоры, которые остаются узнаваемыми даже при изменении размера изображения, его повороте или изменении освещения.

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

В этой статье мы рассмотрим SIFT, дадим краткий обзор того, что это такое, как он работает на высоком уровне и почему он важен в эволюции компьютерного зрения. Начнем!

Почему алгоритм SIFT важен для компьютерного зрения

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

Все эти различия усложняют задачу обучения компьютера распознаванию объектов. Эта задача компьютерного зрения, известная как обнаружение объектов, требует от моделей Vision AI точной идентификации и локализации объектов, даже когда их размер, угол или условия освещения меняются.

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

В частности, именно для этого и был разработан Scale Invariant Feature Transform, или SIFT. SIFT — это алгоритм обнаружения и описания признаков, который может надежно идентифицировать объекты на изображениях, независимо от того, как они были сняты.

Достижение инвариантности масштаба

Алгоритм SIFT обладает несколькими важными свойствами, которые делают его полезным для распознавания объектов. Одним из ключевых свойств является инвариантность масштаба. Это означает, что SIFT может распознавать различные части объекта, независимо от того, выглядит ли он большим и находится близко к камере или маленьким и далеко. Даже если объект не полностью виден, алгоритм все равно может выделить одни и те же ключевые точки.

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

Например, дорожный знак, сфотографированный с расстояния нескольких метров, будет выглядеть намного больше, чем тот же знак, снятый на расстоянии, но SIFT все равно сможет обнаружить те же отличительные признаки. Это позволяет правильно сопоставить два изображения, даже если знак отображается в очень разных масштабах.

Обеспечение инвариантности к вращению

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

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

Устойчивость к другим вариациям изображений

Помимо размера и поворота, изображения могут изменяться и другими способами, например, из-за изменения освещения. Освещение объекта может меняться от яркого до тусклого, угол камеры может немного смещаться, или изображение может быть размытым или шумным.

SIFT разработан для обработки таких видов изменений. Он делает это, фокусируясь на ключевых точках, которые являются отличительными и имеют высокий контраст, поскольку эти особенности меньше подвержены изменениям в освещении или небольшим сдвигам в точке обзора. В результате SIFT, как правило, более надежен, чем простые методы обнаружения краев или углов, которые часто дают сбой при изменении условий.

Рис. 1. Ключевые точки SIFT, извлеченные из (a) дождливого изображения и (b) соответствующего чистого входного изображения. (Источник)

Представьте себе картину в галерее. Она все равно будет узнаваема, независимо от того, сфотографирована ли она при мягком дневном свете, при ярком искусственном освещении или даже со слегка размытым движением от камеры, удерживаемой в руке. Ключевые точки остаются достаточно стабильными для точного сопоставления, несмотря на эти различия.

Как работает алгоритм Scale-Invariant Feature Transform (SIFT)

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

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

Первый шаг — найти и обнаружить ключевые точки, которые являются отличительными местами на изображении, такими как углы или резкие изменения текстуры, которые помогают отслеживать или распознавать объект.

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

Вычитая одно размытое изображение из другого, SIFT вычисляет разницу гауссиан (Difference of Gaussians, DoG), которая выделяет области, где яркость резко меняется. Эти области выбираются в качестве возможных ключевых точек, поскольку они остаются неизменными при увеличении или уменьшении масштаба изображения.

Рис. 2. DoG выделяет ключевые структуры путем вычитания изображений, размытых на разных уровнях. (Источник)

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

Не все ключевые точки-кандидаты полезны, потому что некоторые могут быть слабыми или нестабильными. Чтобы уточнить их, SIFT использует математический метод, называемый разложением в ряд Тейлора, который помогает оценить точное положение ключевой точки с большей точностью.

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

Шаг 3: Определение ориентации

После того как стабильные ключевые точки определены, SIFT делает их инвариантными к вращению, что означает, что они все равно могут быть сопоставлены, даже если изображение повернуто набок или вверх ногами. Для этого SIFT анализирует, как изменяется яркость вокруг каждой ключевой точки, что известно как градиент. Градиенты показывают как направление, так и силу изменения интенсивности пикселей и вместе захватывают локальную структуру вокруг точки.

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

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

Другими словами, даже если два изображения одного и того же объекта повернуты по-разному, ключевые точки, выровненные по ориентации, все равно будут совпадать правильно. Этот шаг обеспечивает SIFT высокую устойчивость к поворотам и делает его гораздо более надежным, чем более ранние методы обнаружения признаков.

Рис. 3. Более детальный взгляд на шаг 3 алгоритма SIFT (Источник)

Шаг 4: Дескриптор ключевой точки

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

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

В каждом маленьком квадрате SIFT измеряет, как меняется яркость в разных направлениях. Эти изменения хранятся в чем-то, что называется гистограммой, которая похожа на диаграмму, показывающую, какие направления являются наиболее распространенными. Каждый квадрат получает свою собственную гистограмму, и вместе 16 квадратов создают 16 гистограмм.

Наконец, эти гистограммы объединяются в единый список чисел, всего 128. Этот список называется вектором признаков, и он действует как отпечаток пальца для ключевой точки. Поскольку он фиксирует уникальную текстуру и структуру вокруг точки, этот отпечаток позволяет сопоставлять одну и ту же ключевую точку на разных изображениях, даже если они изменены в размере, повернуты или освещены по-разному.

Рис. 4. Обзор принципа работы SIFT (Источник)

Основные области применения SIFT в компьютерном зрении

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

Распознавание и обнаружение объектов

Одним из основных применений SIFT является распознавание и обнаружение объектов. Это включает в себя обучение компьютера распознаванию и обнаружению объектов на изображениях, даже если объекты не всегда выглядят одинаково. Например, SIFT может обнаружить книгу независимо от того, находится ли она близко к камере, дальше или повернута под углом.

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

Рис. 5. Использование SIFT для распознавания обложки книги на новом изображении, сделанном под другим углом, чем оригинал. Изображение автора.

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

Сшивание изображений и создание панорам

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

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

3D-реконструкция и робототехника

Еще одно интересное применение SIFT — в 3D-реконструкции, где несколько 2D-фотографий, сделанных под разными углами, объединяются для построения трехмерной модели. SIFT работает путем поиска и сопоставления одних и тех же точек на этих изображениях. 

После того как соответствия установлены, 3D-позиции этих точек можно оценить с помощью триангуляции — метода, который вычисляет глубину с разных точек обзора. Этот процесс является частью structure from motion (SfM) — техники, которая использует несколько перекрывающихся изображений для оценки 3D-формы сцены вместе с положениями камер, которые сделали фотографии.

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

SIFT также использовался в робототехнике, в частности, в визуальной SLAM (одновременная локализация и построение карты). SLAM позволяет роботу определять свое местоположение, одновременно строя карту своего окружения. 

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

Преимущества и особенности SIFT

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

Основные преимущества SIFT

Вот некоторые из преимуществ использования алгоритма SIFT:

  • Инвариантность к масштабу и вращению: SIFT предоставляет масштабно-инвариантные ключевые точки, которые остаются относительно стабильными, когда объекты появляются в разных размерах или ориентациях, что представляет собой значительный шаг вперед по сравнению с более ранними детекторами признаков.
  • Умеренная устойчивость к изменениям освещения и точки обзора: SIFT может обрабатывать изменения яркости, контрастности или небольшие сдвиги в точке обзора, хотя он менее надежен в более экстремальных условиях.
  • Способность работать в загроможденных или частично скрытых сценах: Поскольку SIFT обнаруживает множество локальных ключевых точек, он часто может идентифицировать объект, даже если часть его закрыта или фон сложный.

Вопросы производительности и альтернативы

Вот некоторые недостатки использования алгоритма SIFT:

  • Вычислительно затратно: Многоэтапный процесс SIFT и подробные дескрипторы делают его более медленным и ресурсоемким, чем современные детекторы признаков. Чтобы улучшить это, исследователи разработали алгоритм SURF (Speeded-Up Robust Features), который использует более быстрые вычисления для поиска и описания признаков. SURF менее точен, чем SIFT в некоторых случаях, но он работает намного быстрее, что делает его более практичным для задач, требующих быстрого реагирования.
  • Не идеально для использования в реальном времени: Из-за своей вычислительной стоимости SIFT испытывает трудности, когда речь идет о приложениях, где скорость имеет решающее значение, таких как отслеживание в реальном времени или мобильная робототехника.
  • Ограниченная универсальность: Несмотря на надежность во многих случаях, SIFT менее эффективен при экстремальных изменениях освещения, больших сдвигах точки обзора или в очень динамичных сценах, где новые алгоритмы или методы машинного обучения работают лучше.

Изучая плюсы и минусы SIFT, вы можете заметить, что многие из его ограничений проложили путь для более продвинутых методов. В частности, сверточные нейронные сети (CNN) стали мощной альтернативой. 

CNN — это тип модели глубокого обучения, вдохновленный тем, как работает зрительная система человека. Он обрабатывает изображение слоями, начиная с простых узоров, таких как края и текстуры, и постепенно переходя к более сложным формам и объектам. В отличие от разработанных вручную правил признаков SIFT, CNN изучают представления признаков непосредственно из данных. 

Это обучение на основе данных означает, что CNN могут превосходить SIFT в сопоставлении дескрипторов и задачах классификации. CNN также более выразительны и надежны, лучше адаптируются к изменчивости и сложности визуальных данных. 

Например, модели на основе CNN достигли прорывных результатов на ImageNet, масштабном эталонном наборе данных, содержащем миллионы помеченных изображений по тысячам категорий. Разработанный для проверки того, насколько хорошо алгоритмы могут распознавать и классифицировать объекты, ImageNet позволяет выделить разрыв между более старыми методами на основе признаков и глубоким обучением. 

CNN быстро превзошли SIFT, изучая гораздо более богатые и гибкие представления, что позволило им распознавать объекты при изменяющемся освещении, с разных точек зрения и даже когда они частично скрыты, в сценариях, где SIFT часто испытывает трудности.

Основные выводы

Алгоритм Scale Invariant Feature Transform занимает важное место в истории компьютерного зрения. Он предоставил надежный способ обнаружения признаков даже в изменяющихся условиях и повлиял на многие из используемых сегодня методов. 

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

Присоединяйтесь к нашему глобальному сообществу и посетите наш репозиторий GitHub, чтобы узнать больше о компьютерном зрении. Изучите страницы с нашими решениями, чтобы узнать о таких инновациях, как ИИ в сельском хозяйстве и компьютерное зрение в розничной торговле. Ознакомьтесь с нашими вариантами лицензирования и начните создавать свою собственную модель компьютерного зрения.

Давайте строить будущее
ИИ вместе!

Начните свой путь в будущее машинного обучения

Начать бесплатно
Ссылка скопирована в буфер обмена