У меня был тот же вопрос, когда я начал заниматься машинным обучением. Обычно функции SIFT сопоставляются с помощью knnMatching, который по умолчанию использует расстояние L1.
Давайте начнем с определения уравнения L1 и L2. Предположим, у вас есть (a, b) и (c, d),
L1 расстояние (Манхэттенское Расстояние) = | a-c | + | b-d |
Расстояние L2 (евклидово расстояние) = Square_root [(a-c) 2 + (b-d) 2]
Здесь вы можете видеть, что частота ошибок на расстоянии L2 быстро увеличивается, поскольку у вас больше измерений благодаря квадратным функциям. Функция SIFT представляет собой многомерный вектор, и евклидово расстояние будет быстро увеличиваться по сравнению с расстоянием L1, которое принимает абсолютное значение.
Евклидово расстояние является хорошей мерой для векторов с меньшими размерами, тогда как расстояние L1 - лучший выбор для векторов с большими размерами.
Надеюсь, это очистит ваше сомнение.