1
img1 = imread('01.01.bmp'); 
img2 = imread('01.02.bmp'); 

feature1 = sift_f(img1); 
feature2 = sift_f(img2); 


indexPairs = matchFeatures(feature1,feature2) ; 
matchedPoints1 = vpts1(indexPairs(:,1)); 
matchedPoints2 = vpts2(indexPairs(:,2)); 
figure; showMatchedFeatures(img1,img2,matchedPoints1,matchedPoints2); 
legend('matched points 1','matched points 2'); 

Матрицы feature1 и feature2 имеют разные размеры. Infact, они различаются по количеству столбцов. Таким образом, функция matchFeatures() не работает. Как мне сопоставить функции?Как найти подходящие функции из двух изображений, когда матрицы, содержащие их извлеченные функции, имеют разный размер?

+0

Это, конечно, сильно зависит от входов. Попытайтесь изменить размер встроенных изображений до того же разрешения, и после этого он должен работать – 16per9

+0

Каков размер матриц? – Photon

ответ

0

matchFeatures ожидает, что features1 и features2 будут матрицами, где каждая строка является признаком признаков. Поэтому ожидается, что features1 и features2 будут иметь одинаковое количество столбцов, но количество строк может быть разным. Возможно, вам просто нужно транспонировать features1 и features2, прежде чем передавать их в matchFeatures.

Размеры features1 и features2? Длина дескриптора SIFT обычно равна 128. Поэтому, если размеры 128-на-N, вам определенно необходимо их транспонировать.