SIFT на самом деле представляет собой конвейер обнаружения, описания и сопоставления, предложенный Дэвидом Лоу.Причиной его популярности является то, что он работает довольно хорошо из коробки.
Этап обнаружения SIFT (какие точки на изображении интересны), сравнимый с детектором угла Харриса, который вы упомянули, состоит изРазница гауссовского детектора.Этот детектор является центральным окружающим фильтром и применяется к пространственной пирамиде масштаба (также применяется в таких вещах, как пирамидальное отслеживание LK), чтобы обнаружить максимальный масштабный отклик пространства.
Затем выполняется этап описания (что отличает эту область)гистограммы градиентов в прямоугольных ячейках с несколькими шкалами, центрированными вокруг шкалы максимальной реакции.Это подразумевается как более описательный и устойчивый к изменениям освещения и т. Д., Чем такие вещи, как необработанные значения пикселей, цветовые гистограммы и т. Д. Существует также нормализация доминантной ориентации для получения неизменности вращения в плоскости.
Шаг согласования(для данного дескриптора / патча, который из множества дескрипторов / патчей является ближайшим) для SIFT состоит из метрики отношения ближайших расстояний, которая проверяет соотношение расстояний между самым близким совпадением и вторым самым близким совпадением.Идея состоит в том, что если соотношение низкое, то первое намного лучше, чем второе, поэтому вы должны сделать совпадение.Иначе, first и second примерно равны, и вы должны отклонить совпадение, так как шум и т. Д. Могут легко привести к ложному совпадению в этом сценарии.Это работает лучше, чем евклидово расстояние на практике.Хотя для больших баз данных вам понадобится векторное квантование и т. Д., Чтобы это работало точно и эффективно.
В целом, я бы сказал, что дескриптор / сопоставление SIFT является гораздо лучшим / надежным подходом, чем NCC / ZNCCхотя вы платите за это в вычислительной нагрузке.