Застрял в механизме подзаговоров Matlab для сопоставления точек изображений для vlfeat

Я делаю vlfeat в Matlab, и я следую за этим вопросомВот.

Ниже приведены мои простые тестовые изображения:

Левое изображение:

Правое изображение:

Я провел простой тест с двумя простыми изображениями (правое изображение - только повернутая версия левого), и я получил соответствующий результат:

Это работает, но у меня есть еще одно требование: сопоставить точки SIFT на двух изображениях и показать их следующим образом:

Я понимаю, что vl_ubcmatch возвращает 2 массива совпадающих индексов, и нет проблем отобразить их, для какой точки переходить в какую точку на двух изображениях. Тем не менее, я в настоящее время застрял в Matlab 'Процедура я нашелэтот, Но это работает только в том случае, если подзаговор остается таким. Когда вы добавляете изображение в участок, размер изменяется, и нормализация не удалась.

Вот мой код: (im и im2 - изображения. F, d и f2, d2 - кадры и дескрипторы из функции vl_sift из 2 изображений соответственно)

    [matches score] = vl_ubcmatch(d,d2,threshold);%threshold originally is 1.5

if (mode >= 2)%verbose 2

    subplot(211);
    imshow(uint8(im));
    hold on;
    plot(f(1,matches(1,:)),f(2,matches(1,:)),'b*');

    subplot(212);
    imshow(uint8(im2));
    hold on;
    plot(f2(1,matches(2,:)),f2(2,matches(2,:)),'g*');

end

if (mode >= 3)%verbose 3

     [xa1 ya1] = ds2nfu(  f(1,matches(1,:)),  f(2,matches(1,:)));
     [xa2 ya2] = ds2nfu( f2(1,matches(2,:)), f2(2,matches(2,:)));

    for k=1:numel(matches(1,:))

        xxa1 = xa1(1, k);
        yya1 = ya1(1, k);
        xxa2 = xa2(1, k);
        yya2 = ya2(1, k);

        annotation('line',[xxa1 xxa2],[yya1 yya2],'color','r');
    end
end

Код выше дает это:

Я думаю, что сюжет неэто хороший способ пойти на что-то вроде этого. Есть ли лучший метод для этого в Matlab? Если возможно, я хочу что-то вроде пустой панели, чтобы я мог рисовать свое изображение, свободно рисовать линии и масштабировать, как рисовать 2D-игры в стиле OpenGL.

Ответы на вопрос(2)

Ваш ответ на вопрос