Вопрос о SURF дескрипторе Евклида - PullRequest
0 голосов
/ 07 мая 2019

Я использую c ++ opencv (3.4.1) SURF (xfeatures2d), чтобы получить ключевые точки и дескриптор.

Ptr<SURF> detector1 = SURF::create(800.0);
detector1->detect(img1, keypoints_1);
detector1->detect(img2, keypoints_2); 
detector1->compute(img1, keypoints_1, descriptors_1);
detector1->compute(img2, keypoints_2, descriptors_2);

А потом я хочу получить EuclidDistance вот так, просто для изучения алгоритма.

double EuclidDistance(Mat descriptors_1, Mat descriptors_2, int length=64)
{
    double distance_L2 = norm(descriptors_1, descriptors_2, NORM_L2);
    return distance_L2;
}

Но размер двух дескрипторов не одинаков. Размер дескрипторов_1 равен 64 х 436, размер дескрипторов_2 - 64 х 328. Как правильно получить расстояние Евклида? Просто выбросить левую область матрицы? Неужели я теперь неправильно понимаю процесс сопоставления в прибое? дайте мне совет.

...