Что такое Scale-Invariant Feature Transform (SIFT)?
Изучи алгоритм SIFT. Узнай, что такое SIFT и о его мощных функциях для инвариантного к масштабу компьютерного зрения. Улучши свою обработку изображений.

Чтобы наглядно ознакомиться с концепциями, описанными в этой статье, посмотри видео ниже.
В настоящее время многие используемые нами умные устройства, от телефонов и камер до систем умного дома, оснащены решениями на базе ИИ, способными распознавать лица, объекты и даже целые визуальные сцены. Эта возможность обеспечивается computer vision, областью искусственного интеллекта, которая позволяет машинам понимать и интерпретировать изображения и видео.
Например, если ты сфотографируешь Эйфелеву башню под любым углом или с разного расстояния, твое устройство, как правило, сможет распознать ее с помощью computer vision и поместить в нужную папку в галерее. Хотя это звучит просто, распознавание объектов не всегда легкая задача. Изображения могут сильно различаться в зависимости от размера, угла обзора, масштаба или освещения, что затрудняет их последовательную идентификацию машинами.
Чтобы помочь решить эту проблему, исследователи разработали алгоритм computer vision под названием Scale Invariant Feature Transform, или SIFT. Этот алгоритм позволяет обнаруживать объекты в различных условиях наблюдения. Созданный Дэвидом Лоу в 1999 году, SIFT был разработан для поиска и описания уникальных ключевых точек на изображении, таких как углы, края или узоры, которые остаются узнаваемыми, даже если изображение изменено в размере, повернуто или освещено иначе.
До того как модели компьютерного зрения на основе глубокого обучения, такие как Ultralytics YOLO11, стали популярными, SIFT был широко используемым методом в компьютерном зрении. Это был стандартный подход для таких задач, как распознавание объектов, где целью является идентификация конкретного элемента на фотографии, и сопоставление изображений, при котором фотографии выравниваются путем поиска перекрывающихся признаков изображений.
В этой статье мы рассмотрим SIFT с кратким обзором того, что это такое, как он работает на высоком уровне и почему он важен в развитии computer vision. Давай начнем!
Почему алгоритм SIFT важен для computer vision#
На изображении объект может выглядеть по-разному. Например, кофейную кружку можно сфотографировать сверху, сбоку, при ярком солнечном свете или под теплой лампой. Та же самая кружка также может казаться больше, когда она находится близко к камере, и меньше, когда она дальше.
Все эти различия делают обучение компьютера распознаванию объекта сложной задачей. Эта задача компьютерного зрения, известная как object detection, требует от моделей Vision AI точной идентификации и локализации объектов даже при изменении их размера, угла обзора или условий освещения.
Чтобы сделать это возможным, компьютерное зрение опирается на процесс, называемый feature extraction или обнаружением. Вместо того чтобы пытаться понять все изображение целиком, модель ищет характерные признаки изображения, такие как острые углы, уникальные паттерны или текстуры, которые остаются узнаваемыми при разных углах, масштабах и условиях освещения.
В частности, именно для этого и был разработан Scale Invariant Feature Transform, или SIFT. SIFT — это алгоритм обнаружения и описания признаков, который может надежно идентифицировать объекты на изображениях, независимо от того, как они были сняты.
Достижение инвариантности к масштабу#
Алгоритм SIFT обладает несколькими важными свойствами, которые делают его полезным для распознавания объектов. Одно из ключевых свойств называется инвариантностью к масштабу. Это означает, что SIFT может распознавать различные части объекта, независимо от того, выглядит ли он большим и находится близко к камере или маленьким и далеко. Даже если объект виден не полностью, алгоритм все равно может выделить одни и те же ключевые точки.
Он делает это с помощью концепции, называемой теорией масштабного пространства (scale-space theory). Проще говоря, изображение размывается на разных уровнях для создания нескольких версий. Затем SIFT просматривает эти версии, чтобы найти узоры и детали, которые остаются неизменными, независимо от того, как меняется размер или резкость изображения.
Например, дорожный знак, сфотографированный с нескольких метров, будет выглядеть намного больше, чем тот же знак, снятый с расстояния, но SIFT все равно сможет обнаружить одни и те же характерные признаки. Это позволяет правильно сопоставить два изображения, даже если знак отображается в сильно различающихся масштабах.
Обеспечение инвариантности к повороту#
Объекты на изображениях также могут быть повернуты, иногда даже перевернуты вверх ногами. SIFT справляется с этим благодаря свойству, называемому инвариантностью к повороту. Для каждой обнаруженной ключевой точки алгоритм назначает согласованную ориентацию на основе локальных градиентов изображения. Таким образом, один и тот же объект можно распознать независимо от того, как он повернут.
Ты можешь представить это как пометку каждой ключевой точки маленькой стрелкой, указывающей направление. Выравнивая признаки по этим ориентациям, SIFT гарантирует, что ключевые точки будут правильно сопоставлены, даже когда объект повернут. Например, достопримечательность, запечатленная на фото пейзажа, может быть правильно идентифицирована, даже если другое ее фото сделано камерой под наклоном.
Устойчивость к другим изменениям изображения#
Помимо размера и поворота, изображения могут меняться и другими способами, например, из-за освещения. Освещение объекта может меняться от яркого до тусклого, угол камеры может немного сместиться, или изображение может быть размытым или зашумленным.
Алгоритм SIFT создан для работы с подобными вариациями. Это достигается за счет фокусировки на ключевых точках, которые являются характерными и имеют высокий контраст, так как эти признаки менее подвержены изменениям освещения или небольшим сдвигам точки обзора. В результате SIFT обычно надежнее простых методов edge or corner detection, которые часто дают сбой при изменении условий.

Рис. 1. Ключевые точки SIFT, извлеченные из (a) дождливого изображения и (b) соответствующего ему чистого входного изображения. (Source)
Рассмотри картину в галерее. Ее все равно можно распознать, сфотографирована ли она при мягком дневном свете, под яркими искусственными прожекторами или даже с небольшим размытием в движении от ручной камеры. Ключевые точки остаются достаточно стабильными для точного сопоставления, несмотря на эти различия.
Как работает алгоритм Scale-Invariant Feature Transform (SIFT)#
Давай разберем, как работает алгоритм SIFT. Этот процесс можно разбить на четыре основных шага: обнаружение ключевых точек, локализация ключевых точек, назначение ориентации и описание ключевых точек.
Шаг 1: Обнаружение экстремумов в масштабном пространстве#
Первый шаг — найти и обнаружить ключевые точки, то есть характерные места на изображении, такие как углы или резкие изменения текстуры, которые помогают отслеживать или распознавать объект.
Чтобы убедиться, что эти потенциальные ключевые точки можно распознать в любом размере, SIFT создает так называемое масштабное пространство. Это коллекция изображений, созданная путем постепенного размытия исходного изображения с помощью фильтра Гаусса, который является техникой сглаживания, и группировки результатов в слои, называемые октавами. Каждая октава содержит то же изображение с возрастающими уровнями размытия, в то время как следующая октава представляет собой уменьшенную версию изображения.
Вычитая одно размытое изображение из другого, SIFT вычисляет разность гауссианов (DoG), которая выделяет области, где яркость резко меняется. Эти области выбираются в качестве кандидатов в ключевые точки, потому что они остаются согласованными при увеличении или уменьшении изображения.

Рис. 2. Метод DoG выделяет ключевые структуры путем вычитания изображений, размытых на разных уровнях. (Source)
Шаг 2: Локализация ключевых точек#
Не все ключевые точки-кандидаты полезны, поскольку некоторые могут быть слабыми или нестабильными. Чтобы уточнить их, SIFT использует математический метод, называемый разложением в ряд Тейлора, который помогает с большей точностью оценить точное положение ключевой точки.
На этом этапе удаляются ненадежные точки. Ключевые точки с низким контрастом, которые сливаются с окружением, отбрасываются, так же как и те, что лежат непосредственно на краях, поскольку они могут слишком легко смещаться. Этот этап фильтрации оставляет только самые стабильные и характерные ключевые точки.
Шаг 3: Назначение ориентации#
Как только стабильные ключевые точки идентифицированы, SIFT делает их инвариантными к повороту, что означает, что их можно сопоставить, даже если изображение повернуто боком или перевернуто. Для этого SIFT анализирует, как яркость меняется вокруг каждой ключевой точки, что известно как градиент. Градиенты показывают как направление, так и силу изменения интенсивности пикселей, и вместе они фиксируют локальную структуру вокруг точки.
Для каждой ключевой точки SIFT рассматривает градиенты в окружающем регионе и группирует их в гистограмму ориентаций. Самый высокий пик в этой гистограмме указывает на доминирующее направление изменения интенсивности, которое затем назначается как ориентация ключевой точки. Для построения этой гистограммы используются как направления градиентов, которые показывают, где меняется интенсивность, так и величины градиентов, которые указывают на то, насколько сильным является это изменение.
Если есть другие пики, которые почти такие же сильные, SIFT присваивает несколько ориентаций одной и той же ключевой точке. Это предотвращает потерю важных признаков, когда объекты появляются под необычными углами. Выравнивая каждую ключевую точку по ее ориентации, SIFT гарантирует, что дескрипторы, сгенерированные на следующем шаге, останутся согласованными.
Другими словами, даже если два изображения одного и того же объекта повернуты по-разному, ключевые точки, выровненные по ориентации, все равно будут правильно сопоставлены. Этот шаг дает SIFT мощную способность справляться с поворотом и делает его гораздо более надежным, чем более ранние методы обнаружения признаков.

Рис. 3. Подробный взгляд на шаг 3 алгоритма SIFT (Source)
Шаг 4: Дескриптор ключевой точки#
Последний шаг в SIFT — создать описание каждой ключевой точки, чтобы ее можно было распознать на других изображениях.
SIFT достигает этого, рассматривая небольшой квадратный участок вокруг каждой ключевой точки, размером примерно 16 на 16 пикселей. Этот участок сначала выравнивается по ориентации ключевой точки, чтобы поворот не влиял на него. Затем участок делится на сетку из 4 на 4 маленьких квадрата.
В каждом маленьком квадрате SIFT измеряет, как яркость меняется в разных направлениях. Эти изменения сохраняются в так называемой гистограмме, которая выглядит как график, показывающий, какие направления наиболее распространены. Каждый квадрат получает свою собственную гистограмму, и в сумме 16 квадратов создают 16 гистограмм.
Наконец, эти гистограммы объединяются в единый список чисел, всего 128. Этот список называется вектором признаков и действует как отпечаток пальца ключевой точки. Поскольку он фиксирует уникальную текстуру и структуру вокруг точки, этот отпечаток позволяет сопоставить одну и ту же ключевую точку на разных изображениях, даже если они изменены в размере, повернуты или освещены по-разному.

Рис. 4. Обзор принципа работы SIFT (Source)
Ключевые приложения SIFT в computer vision#
Теперь, когда у нас есть лучшее понимание того, что такое SIFT и как он работает, давай изучим некоторые из его реальных приложений в computer vision.
Распознавание и обнаружение объектов#
Одно из основных применений SIFT — распознавание и обнаружение объектов. Это включает обучение компьютера распознаванию и локализации объектов на изображениях, даже если объекты не всегда выглядят одинаково. Например, SIFT может обнаружить книгу независимо от того, находится ли она близко к камере, дальше или повернута под углом.
Причина, по которой это работает, заключается в том, что SIFT извлекает ключевые точки, которые являются высококонтрастными и стабильными. Когда эти ключевые точки сочетаются с дескрипторами SIFT, они образуют признаки SIFT, которые обеспечивают надежный способ сопоставления одного и того же объекта на разных изображениях. Эти признаки фиксируют уникальные детали объекта, которые остаются неизменными, обеспечивая надежное сопоставление признаков на изображениях, даже когда меняются размер, положение или ориентация объекта.

Рис. 5. Использование SIFT для распознавания обложки книги на новом изображении, сделанном под другим углом, чем оригинал. Изображение автора.
До того как deep learning приобрело популярность, SIFT был одним из самых надежных методов создания систем распознавания объектов. Он широко применялся в исследованиях и приложениях, требующих сопоставления объектов на больших наборах изображений, несмотря на то, что часто требовал значительных вычислительных ресурсов.
Сшивка изображений и создание панорам#
SIFT также можно использовать для создания панорамных изображений, которые представляют собой широкие фотографии, полученные путем объединения нескольких снимков. С помощью SIFT характерные ключевые точки находятся на перекрывающихся частях разных изображений, а затем сопоставляются друг с другом. Эти соответствия действуют как якоря, направляя процесс сшивки в том, как следует выравнивать фотографии.
Как только сопоставление завершено, алгоритмы сшивки могут быть использованы для вычисления правильного выравнивания, часто используя геометрические преобразования, которые отображают одно изображение на другое. Затем изображения смешиваются, чтобы швы исчезли. Конечный результат — бесшовная панорама, которая выглядит как одна широкая фотография, хотя была создана из нескольких кадров.
3D-реконструкция и робототехника#
Еще одно интересное применение SIFT — 3D-реконструкция, где несколько 2D-фотографий, снятых под разными углами, объединяются для создания three-dimensional model. SIFT работает путем поиска и сопоставления одних и тех же точек на этих изображениях.
После того как соответствия установлены, 3D-положения этих точек можно оценить с помощью триангуляции — метода, который вычисляет глубину с разных точек обзора. Этот процесс является частью структуры из движения (SfM), метода, который использует несколько перекрывающихся изображений для оценки 3D-формы сцены вместе с положениями камер, сделавших снимки.
Результатом обычно является 3D-облако точек, совокупность точек в пространстве, которая очерчивает объект или окружение. SIFT был одним из первых инструментов, сделавших структуру из движения практичной. Хотя сегодня существуют более быстрые и распространенные методы, SIFT продолжает применяться, когда точность важнее скорости.
SIFT также используется в robotics, особенно в визуальном SLAM (одновременная локализация и построение карты). SLAM позволяет роботу определять свое местоположение и одновременно строить карту окружающей обстановки.
Ключевые точки SIFT выступают в роли надежных ориентиров, которые робот может распознавать в разных кадрах, даже когда освещение или углы меняются. Отслеживая эти ориентиры, робот может оценивать свое положение и обновлять свою карту «на лету». Хотя более быстрые детекторы признаков сегодня используются в робототехнике чаще, SIFT сыграл важную роль в ранних системах SLAM и до сих пор является ключевым в случаях, где надежность важнее скорости.
Преимущества и соображения по использованию SIFT#
Хотя алгоритм SIFT широко используется в computer vision и известен как надежный метод, он также имеет некоторые компромиссы. Вот почему важно взвесить его плюсы и минусы, прежде чем решать, подходит ли он для проекта. Давай разберем его ключевые сильные стороны и ограничения.
Основные преимущества SIFT#
Вот некоторые плюсы использования алгоритма SIFT:
- Инвариантность к масштабу и повороту: SIFT предоставляет ключевые точки, инвариантные к масштабу, которые остаются относительно стабильными, когда объекты появляются в разных размерах или ориентациях, что является значительным шагом вперед по сравнению с более ранними детекторами признаков.
- Умеренная устойчивость к изменениям освещения и точки обзора: SIFT может справляться с изменениями яркости, контраста или небольшими смещениями точки обзора, хотя он менее надежен в более экстремальных условиях.
- Способность работать в загроможденных или частично скрытых сценах: Поскольку SIFT обнаруживает множество локальных ключевых точек, он часто может идентифицировать объект, даже если его часть закрыта или фон сложный.
Соображения производительности и альтернативы#
Вот некоторые минусы использования алгоритма SIFT:
- Высокая вычислительная стоимость: Многошаговый процесс и подробные дескрипторы SIFT делают его медленнее и ресурсоемче современных детекторов признаков. Чтобы улучшить это, исследователи разработали алгоритм SURF (Speeded-Up Robust Features), который использует более быстрые вычисления для поиска и описания признаков. SURF в некоторых случаях менее точен, чем SIFT, но работает гораздо быстрее, что делает его более практичным для задач, чувствительных ко времени.
- Не подходит для использования в реальном времени: Из-за своих вычислительных затрат SIFT испытывает трудности в приложениях, где критически важна скорость, таких как real-time tracking или мобильная робототехника.
- Ограниченная универсальность: Хотя он надежен во многих случаях, SIFT менее эффективен при экстремальных изменениях освещения, больших смещениях точки обзора или в динамичных сценах, где лучше работают более новые алгоритмы или методы машинного обучения.
Изучая плюсы и минусы SIFT, ты можешь заметить, что многие его ограничения проложили путь для более продвинутых методов. В частности, сверточные нейронные сети (CNN) стали мощной альтернативой.
CNN — это тип модели глубокого обучения, вдохновленный тем, как работает человеческая зрительная система. Он обрабатывает изображение по слоям, начиная с простых узоров, таких как края и текстуры, и постепенно выстраивая их в более сложные формы и объекты. В отличие от ручных правил признаков SIFT, CNN изучают представления признаков непосредственно из данных.
Такое обучение на основе данных означает, что сверточные нейросети превосходят SIFT в задачах сопоставления дескрипторов и classification. Сверточные нейросети также более выразительны и надежны, лучше адаптируясь к изменчивости и сложности визуальных данных.
Например, модели на базе сверточных нейросетей достигли прорывных результатов на ImageNet, огромном базовом наборе данных, содержащем миллионы размеченных изображений в тысячах категорий. Созданный для проверки того, насколько хорошо алгоритмы могут распознавать и классифицировать объекты, ImageNet способен подчеркнуть разрыв между более старыми методами на основе признаков и глубоким обучением.
CNN быстро превзошли SIFT, изучая гораздо более богатые и гибкие представления, что позволило им распознавать объекты при меняющемся освещении, с разных точек обзора и даже при частичном перекрытии — сценарии, в которых SIFT часто испытывает трудности.
Основные выводы#
Алгоритм Scale Invariant Feature Transform занимает важное место в истории computer vision. Он предоставил надежный способ обнаружения признаков даже в меняющейся среде и повлиял на многие методы, используемые сегодня.
Хотя более новые методы быстрее и эффективнее, SIFT заложил основу для них. SIFT демонстрирует, с чего начался сегодняшний прогресс в computer vision, и подчеркивает, как далеко продвинулись передовые AI-системы.
Присоединяйся к нашему глобальному community и загляни в наш GitHub repository, чтобы узнать больше о компьютерном зрении. Изучай страницы наших решений, чтобы открыть для себя такие инновации, как AI in agriculture и computer vision in retail. Ознакомься с нашими licensing options и приступай к созданию собственной модели компьютерного зрения.






