VLFeat - Documentation > vl_demo_hog

# VLFeat.org

Documentation> vl_demo_hog

# Source code for ``vl_demo_hog.m

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

    % VL_DEMO_HOG  Demo: HOG features

    % Author: Andrea Vedaldi

    % AUTORIGHTS

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

    % --------------------------------------------------------------------
    %                                                        Load a figure
    % --------------------------------------------------------------------

    im = imread(fullfile(vl_root,'data','roofs1.jpg')) ;
    im = im2single(im) ;
    im = im(1:128,end-128+1:end,:) ;

    figure(1) ; clf ;
    image(im) ;
    axis equal off tight ;
    vl_demo_print('hog_image') ;

    % --------------------------------------------------------------------
    %                                                 Compute HOG features
    % --------------------------------------------------------------------

    % Standard features
    cellSize = 8 ;
    hog = vl_hog(im, cellSize, 'verbose') ;
    imhog = vl_hog('render', hog, 'verbose') ;

    figure(2) ; clf ;
    imagesc(imhog) ;
    axis image off ; colormap gray ;
    vl_demo_print('hog_features') ;

    % Dalal-Triggs variant
    cellSize = 8 ;
    hog = vl_hog(im, cellSize, 'verbose', 'variant', 'dalaltriggs') ;
    imhog = vl_hog('render', hog, 'verbose', 'variant', 'dalaltriggs') ;

    figure(3) ; clf ;
    imagesc(imhog) ;
    axis image off ; colormap gray ;
    vl_demo_print('hog_features_dalal_triggs') ;

    % --------------------------------------------------------------------
    %                                                    Flip HOG features
    % --------------------------------------------------------------------

    hog = vl_hog(im, cellSize) ;
    hogFromFlippedImage = vl_hog(im(:,end:-1:1,:), cellSize) ;
    perm = vl_hog('permutation') ;
    flippedHog = hog(:,end:-1:1,perm) ;

    imHog = vl_hog('render', hog) ;
    imHogFromFlippedImage = vl_hog('render', hogFromFlippedImage) ;
    imFlippedHog = vl_hog('render', flippedHog) ;

    figure(4) ; clf ;
    subplot(1,3,1) ; imagesc(imHog) ;
    axis image off ; title('HOG features') ;
    subplot(1,3,2) ; imagesc(imHogFromFlippedImage) ;
    axis image off ; title('Flipping the image') ;
    subplot(1,3,3) ; imagesc(imFlippedHog) ;
    axis image off ; title('Flipping the features') ;
    colormap gray ;
    vl_demo_print('hog_flipping',1) ;

    % --------------------------------------------------------------------
    %                                                 Other HOG parameters
    % --------------------------------------------------------------------

    figure(5) ; clf ;
    numOrientationsRange = [3, 4, 5, 9, 21] ;
    for i = 1:numel(numOrientationsRange)
      vl_tightsubplot(1, numel(numOrientationsRange), i) ;
      o = numOrientationsRange(i) ;
      hog = vl_hog(im, cellSize, 'verbose', 'numOrientations', o) ;
      imhog = vl_hog('render', hog, 'verbose', 'numOrientations', o) ;
      imagesc(imhog) ;
      axis image off ;
      colormap gray ;
    end
    vl_demo_print('hog_num_orientations',.9) ;

    figure(6) ; clf ;
    [x,y] = meshgrid(linspace(-1,1,128)) ;
    im = single(sqrt(x.^2+y.^2)) ;
    hog1 = vl_hog(im,cellSize,'numOrientations', 4) ;
    hog2 = vl_hog(im,cellSize,'numOrientations', 4,'bilinearOrientations') ;
    imhog1 = vl_hog('render',hog1,'numOrientations', 4) ;
    imhog2 = vl_hog('render',hog2,'numOrientations', 4) ;

    subplot(1,3,1) ; imagesc(im) ;
    axis image off ; title('Input image') ;
    subplot(1,3,2) ; imagesc(imhog1) ;
    axis image off ; title('Hard orientation assignments') ;
    subplot(1,3,3) ; imagesc(imhog2) ;
    axis image off ; title('Soft orientation assignments') ;
    colormap gray ;
    vl_demo_print('hog_bilinear_orientations',1) ;