Что такое масштабно-инвариантное преобразование характеристик (SIFT)?

Абирами Вина

6 минут чтения

9 сентября 2025 года

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

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

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

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

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

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

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

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

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

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

В частности, именно для этого было разработано масштабно-инвариантное преобразование характеристик (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 вычисляет разность гауссианов (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-реконструкция, когда несколько двухмерных фотографий, сделанных под разными углами, объединяются для построения трехмерной модели. SIFT работает путем поиска и сопоставления одинаковых точек на этих изображениях. 

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

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

SIFT также используется в робототехнике, в частности, в визуальном SLAM (Simultaneous Localization and Mapping). 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, чтобы узнать больше о компьютерном зрении. Изучите страницы наших решений, чтобы узнать о таких инновациях, как ИИ в сельском хозяйстве и компьютерное зрение в розничной торговле. Ознакомьтесь с нашими вариантами лицензирования и приступайте к созданию собственной модели компьютерного зрения.

Давайте вместе построим будущее
искусственного интеллекта!

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

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