An open library of computer vision algorithms
C Matlab HTML Python Makefile CSS Other
Latest commit f363f3a Dec 9, 2015 1 @vedaldi vedaldi Merge pull request #112 from dstoup/vs2015-defines-snprintf
Visual Studio 2015 defines snprintf, so don't define in host.h

VLFeat -- Vision Lab Features Library

Version 0.9.20

The VLFeat open source library implements popular computer vision algorithms specialising in image understanding and local featurexs extraction and matching. Algorithms incldue Fisher Vector, VLAD, SIFT, MSER, k-means, hierarchical k-means, agglomerative information bottleneck, SLIC superpixes, quick shift superpixels, large scale SVM training, and many others. It is written in C for efficiency and compatibility, with interfaces in MATLAB for ease of use, and detailed documentation throughout. It supports Windows, Mac OS X, and Linux.

VLFeat is distributed under the BSD license (see the COPYING file).

The documentation is available online and shipped with the library as doc/index.html. See also:

Quick start with MATLAB

To start using VLFeat as a MATLAB toolbox, download the latest VLFeat binary package. Note that the pre-compiled binaries require MATLAB 2009B and later. Unpack it, for example by using WinZIP (Windows), by double clicking on the archive (Mac), or by using the command line (Linux and Mac):

> tar xzf vlfeat-X.Y.Z-bin.tar.gz

Here X.Y.Z denotes the latest version. Start MATLAB and run the VLFeat setup command:

> run <VLFEATROOT>/toolbox/vl_setup

Here <VLFEATROOT> should be replaced with the path to the VLFeat directory created by unpacking the archive. All VLFeat demos can now be run in a row by the command:

> vl_demo

Check out the individual demos by editing this file: edit vl_demo.

Octave support

The toolbox should be laregly compatible with GNU Octave, an open source MATLAB equivalent. However, the binary distribution does not ship with pre-built GNU Octave MEX files. To compile them use

> cd <vlfeat directory>
> make MKOCTFILE=<path to the mkoctfile program>


  • 0.9.20 Maintenance release. Bugfixes.
  • 0.9.19 Maintenance release. Minor bugfixes and fixes compilation with MATLAB 2014a.
  • 0.9.18 Several bugfixes. Improved documentation, particularly of the covariant detectors. Minor enhancements of the Fisher vectors.
  • 0.9.17 Rewritten SVM implementation, adding support for SGD and SDCA optimisers and various loss functions (hinge, squared hinge, logistic, etc.) and improving the interface. Added infrastructure to support multi-core computations using OpenMP (MATLAB 2009B or later required). Added OpenMP support to KD-trees and KMeans. Added new Gaussian Mixture Models, VLAD encoding, and Fisher Vector encodings (also with OpenMP support). Added LIOP feature descriptors. Added new object category recognition example code, supporting several standard benchmarks off-the-shelf.
  • 0.9.16 Added VL_COVDET. This function implements the following detectors: DoG, Hessian, Harris Laplace, Hessian Laplace, Multiscale Hessian, Multiscale Harris. It also implements affine adaptation, estiamtion of feature orientation, computation of descriptors on the affine patches (including raw patches), and sourcing of custom feature frame.
  • 0.9.15 Added VL_HOG (HOG features). Added VL_SVMPEGASOS and a vastly improved SVM implementation. Added VL_IHASHSUM (hashed counting). Improved INTHIST (integral histogram). Added VL_CUMMAX. Improved the implementation of VL_ROC and VL_PR(). Added VL_DET() (Detection Error Trade-off (DET) curves). Improved the verbosity control to AIB. Added support for Xcode 4.3, improved support for past and future Xcode versions. Completed the migration of the old test code in toolbox/test, moving the functionality to the new unit tests toolbox/xtest.
  • 0.9.14 Added SLIC superpixels. Added VL_ALPHANUM(). Improved Windows binary package and added support for Visual Studio 2010. Improved the documentation layout and added a proper bibliography. Bugfixes and other minor improvements. Moved from the GPL to the less restrictive BSD license.
  • 0.9.13 Fixed Windows binary package.
  • 0.9.12 Fixes vl_compile and the architecture string on Linux 32 bit.
  • 0.9.11 Fixes a compatibility problem on older Mac OS X versions. A few bugfixes are included too.
  • 0.9.10 Improves the homogeneous kernel map. Plenty of small tweaks and improvements. Make maci64 the default architecture on the Mac.
  • 0.9.9 Added: sift matching example. Extended Caltech-101 classification example to use kd-trees.
  • 0.9.8 Added: image distance transform, PEGASOS, floating point K-means, homogeneous kernel maps, a Caltech-101 classification example. Improved documentation.
  • 0.9.7 Changed the Mac OS X binary distribution to require a less recent version of Mac OS X (10.5).
  • 0.9.6 Changed the GNU/Linux binary distribution to require a less recent version of the C library.
  • 0.9.5 Added kd-tree and new SSE-accelerated vector/histogram comparison code. Improved dense SIFT (dsift) implementation. Added Snow Leopard and MATLAB R2009b support.
  • 0.9.4 Added quick shift. Renamed dhog to dsift and improved implementation and documentation. Improved tutorials. Added 64 bit Windows binaries. Many other small changes.
  • 0.9.3 Namespace change (everything begins with a vl_ prefix now). Many other changes to provide compilation support on Windows with MATLAB 7.
  • beta-3 Completes to the ikmeans code.
  • beta-2 Many additions.
  • beta-1 Initial public release.