Source code for
vl_demo_sift_basic.m
This file is located in the toolbox/demo folder in VLFeat package.
% VL_DEMO_SIFT_BASIC Demo: SIFT: basic functionality
pfx = fullfile(vl_root,'figures','demo') ;
randn('state',0) ;
rand('state',0) ;
figure(1) ; clf ;
% --------------------------------------------------------------------
% Load a figure
% --------------------------------------------------------------------
I = imread(fullfile(vl_root,'data','roofs1.jpg')) ;
image(I) ; colormap gray ;
axis equal ; axis off ; axis tight ;
vl_demo_print('sift_basic_0') ;
% --------------------------------------------------------------------
% Convert the to required format
% --------------------------------------------------------------------
I = single(rgb2gray(I)) ;
clf ; imagesc(I)
axis equal ; axis off ; axis tight ;
vl_demo_print('sift_basic_1') ;
% --------------------------------------------------------------------
% Run SIFT
% --------------------------------------------------------------------
[f,d] = vl_sift(I) ;
hold on ;
perm = randperm(size(f,2)) ;
sel = perm(1:50) ;
h1 = vl_plotframe(f(:,sel)) ; set(h1,'color','k','linewidth',3) ;
h2 = vl_plotframe(f(:,sel)) ; set(h2,'color','y','linewidth',2) ;
vl_demo_print('sift_basic_2') ;
delete([h1 h2]);
h3 = vl_plotsiftdescriptor(d(:,sel),f(:,sel)) ;
set(h3,'color','k','linewidth',2) ;
h4 = vl_plotsiftdescriptor(d(:,sel),f(:,sel)) ;
set(h4,'color','g','linewidth',1) ;
h1 = vl_plotframe(f(:,sel)) ; set(h1,'color','k','linewidth',3) ;
h2 = vl_plotframe(f(:,sel)) ; set(h2,'color','y','linewidth',2) ;
vl_demo_print('sift_basic_3') ;
% --------------------------------------------------------------------
% Custom keypoint
% --------------------------------------------------------------------
clf ; imagesc(I(1:200,1:200,:))
axis equal ; axis off ; axis tight ;
hold on;
fc = [100;100;10;-pi/8] ;
[f,d] = vl_sift(I,'frames',fc) ;
h3 = vl_plotsiftdescriptor(d,f) ; set(h3,'color','k','linewidth',3) ;
h4 = vl_plotsiftdescriptor(d,f) ; set(h4,'color','g','linewidth',2) ;
h1 = vl_plotframe(f) ; set(h1,'color','k','linewidth',4) ;
h2 = vl_plotframe(f) ; set(h2,'color','y','linewidth',2) ;
vl_demo_print('sift_basic_4') ;
% --------------------------------------------------------------------
% Custom keypoints with orientations
% --------------------------------------------------------------------
fc = [100;100;10;0] ;
[f,d] = vl_sift(I,'frames',fc,'orientations') ;
delete([h1 h2 h3 h4]) ;
h3 = vl_plotsiftdescriptor(d,f) ; set(h3,'color','k', 'linewidth',3) ;
h4 = vl_plotsiftdescriptor(d,f) ; set(h4,'color','g', 'linewidth',2) ;
h1 = vl_plotframe(f) ; set(h1,'color','k','linewidth',4) ;
h2 = vl_plotframe(f) ; set(h2,'color','y','linewidth',2) ;
vl_demo_print('sift_basic_5') ;