# hog

## PURPOSE

Efficiently compute histogram of oriented gradient (HOG) features.

## SYNOPSIS

function H = hog( I, varargin )

## DESCRIPTION

     Efficiently compute histogram of oriented gradient (HOG) features.

     Code to compute HOG features as described in "Histograms of Oriented
     Gradients for Human Detection" by Dalal & Triggs, CVPR05. Various speedup
     tricks adopted from the HOG code feature.cpp by Deva Ramanan.

     If I has dimensions [mxn], the size of the computed feature vector H is
     [m/sBin-2 n/sBin-2 oBin*4]. For each non-overlapping sBin x sBin region,
     computes a histogram of gradients, with each gradient quantized by it's
     angle and weighed by its magnitude. For color images, the gradient is
     computed separately for each color channel and the one with maximum
     magnitude is used. The centered gradient is used except at boundaries
     (where uncentered gradient is used). Trilinear interpolation is used to
     place each gradient in the appropriate spatial and orientation bin. For
     each resulting histogram (with oBin bins), four different normalizations
     are computed using adjacent histograms, resulting in an oBins*4 length
     feature vector for each region. Boundary regions are discarded.

     The computed features are NOT identical to those described in the CVPR05
     paper. Specifically, there is no Gaussian spatial window, and other minor
     details differ. The choices were made for speed of the resulting code:
     ~.1s for a 640x480x3 color image on a standard machine from 2005. Further
     speedups can be obtained by not using trilinear interpolation (e.g.,
     setting oGran=1 results in a ~33% speedup at some loss in accuracy).

     USAGE
      H = hog( I, [sBin], [oBin], [oGran] )

     INPUTS
      I        - [mxn] color or grayscale input image (must have type double)
      sBin     - [8] spatial bin size
      oBin     - [9] number of orientation bins
      oGran    - [10] controls quality of linear interpolation for orientation

     OUTPUTS
      H        - [m/sBin-2 n/sBin-2 oBin*4] computed hog features

     EXAMPLE
      I=double(imread('cameraman.tif')); figure(1); im(I)
      tic, H=hog(I,8,9); toc, V=hogDraw(H,25); figure(2); im(V)

     See also hogDraw

     Piotr's Image&Video Toolbox      Version 2.42
     Copyright 2010 Piotr Dollar.  [pdollar-at-caltech.edu]
     Please email me if you find bugs, or have suggestions or questions!
     Licensed under the Lesser GPL [see external/lgpl.txt]

## CROSS-REFERENCE INFORMATION

This function calls:

This function is called by: