VLFeat - Documentation > vl_demo_sift_match

# VLFeat.org

Documentation> vl_demo_sift_match

# Source code for ``vl_demo_sift_match.m

This file is located in the ``toolbox/demo folder in VLFeat package.

    % VL_DEMO_SIFT_MATCH  Demo: SIFT: basic matching

    pfx = fullfile(vl_root,'figures','demo') ;
    randn('state',0) ;
    rand('state',0) ;
    figure(1) ; clf ;

    % --------------------------------------------------------------------
    %                                                    Create image pair
    % --------------------------------------------------------------------

    Ia = imread(fullfile(vl_root,'data','roofs1.jpg')) ;
    Ib = imread(fullfile(vl_root,'data','roofs2.jpg')) ;

    % --------------------------------------------------------------------
    %                                           Extract features and match
    % --------------------------------------------------------------------

    [fa,da] = vl_sift(im2single(rgb2gray(Ia))) ;
    [fb,db] = vl_sift(im2single(rgb2gray(Ib))) ;

    [matches, scores] = vl_ubcmatch(da,db) ;

    [drop, perm] = sort(scores, 'descend') ;
    matches = matches(:, perm) ;
    scores  = scores(perm) ;

    figure(1) ; clf ;
    imagesc(cat(2, Ia, Ib)) ;
    axis image off ;
    vl_demo_print('sift_match_1', 1) ;

    figure(2) ; clf ;
    imagesc(cat(2, Ia, Ib)) ;

    xa = fa(1,matches(1,:)) ;
    xb = fb(1,matches(2,:)) + size(Ia,2) ;
    ya = fa(2,matches(1,:)) ;
    yb = fb(2,matches(2,:)) ;

    hold on ;
    h = line([xa ; xb], [ya ; yb]) ;
    set(h,'linewidth', 1, 'color', 'b') ;

    vl_plotframe(fa(:,matches(1,:))) ;
    fb(1,:) = fb(1,:) + size(Ia,2) ;
    vl_plotframe(fb(:,matches(2,:))) ;
    axis image off ;

    vl_demo_print('sift_match_2', 1) ;