VLFeat - Documentation > vl_demo_sift_vs_ubc

# VLFeat.org

Documentation> vl_demo_sift_vs_ubc

# Source code for ``vl_demo_sift_vs_ubc.m

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

    % VL_DEMO_SIFT_VS_UBC Compare VLFeat SIFT with Lowe's original

    % --------------------------------------------------------------------
    %                            Load a figure and original SIFT keypoints
    % --------------------------------------------------------------------

    im = imread(fullfile(vl_root, 'data', 'box.pgm')) ;
    [f1,d1] = vl_ubcread(fullfile(vl_root, 'data', 'box.sift')) ;

    % --------------------------------------------------------------------
    %                                    Compare with VLFeat SIFT detector
    % --------------------------------------------------------------------

    f2 = vl_sift(im2single(im), ...
                 'firstoctave', -1, ...
                 'peakthresh', .01, ...
                 'edgethresh', 10, ...
                 'windowsize', 2, ...
                 'verbose') ;

    D = sqrt(vl_alldist2(f1(1:2,:), f2(1:2,:))) ;
    [d12,m12] = min(D,[],2) ;
    [d21,m21] = min(D,[],1) ;

    matches = [1:size(f1,2), m21 ; m12',  1:size(f2,2)] ;
    proxim  = [d12', d21] ;

    h = histc(proxim, [0 .01 .05 +inf]) ;
    h = h / sum(h) * 100 ;
    h = h(1:end-1) ;

    figure(1) ; clf ;
    imagesc(im) ; colormap(gray(256)) ; hold on ;
    vl_plotframe(f1, 'linewidth', 3, 'color', 'r') ;
    vl_plotframe(f2, 'linewidth',  1, 'color', 'b') ;
    axis image off ;
    vl_demo_print('sift_vs_ubc_1', 0.7) ;

    figure(2) ; clf ;
    pie(h) ;
    colormap(hot(3)) ;
    legend({'0.01 pixels', '0.05 pixels', 'others'}, ...
           'location', 'northeastoutside') ;
    set(findobj(2, '-property', 'fontsize'), 'fontsize', 11) ;
    vl_demo_print('sift_vs_ubc_2') ;

    % --------------------------------------------------------------------
    %                                  Compare with VLFeat SIFT descriptor
    % --------------------------------------------------------------------

    [drop,d2]=vl_sift(im2single(im), 'frames', f1, 'verbose', 'firstoctave', -1) ;

    D = sqrt(double(vl_alldist2(d1, d2, 'l2'))) ;
    [d12,m12] = min(D,[],2) ;
    [d21,m21] = min(D,[],1) ;

    matches = [1:size(d1,2), m21 ; m12',  1:size(d2,2)] ;
    proxim  = [d12', d21] ;

    meanDist = mean(D(:)) ;

    h = histc(proxim, meanDist * [0 .05 .10 .20 +inf]) ;
    h = h / sum(h) * 100 ;
    h = h(1:end-1) ;

    figure(3) ; clf ;
    pie(h) ;
    colormap(hot(4)) ;
    legend({'5% differnce', '10% difference', '20% difference', 'others'}, ...
           'location', 'northeastoutside') ;
    set(findobj(3, '-property', 'fontsize'), 'fontsize', 11) ;
    vl_demo_print('sift_vs_ubc_3') ;