Я использую 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. Как правильно получить расстояние Евклида?
Просто выбросить левую область матрицы? Неужели я теперь неправильно понимаю процесс сопоставления в прибое? дайте мне совет.