Software available on-line

Optical Flow software (C and Matlab):

1. The most recent and most accurate optical flow code in Matlab


This code is descrbed in

Secrets of optical flow estimation and their principles
Sun, D., Roth, S., and Black, M. J.,
IEEE Conf. on Computer Vision and Pattern Recog., CVPR, June 2010.

This method implements many of the currently best known techniques for accurate optical flow and is ranked #1 on the Middlebury evaluation as of June 2010.

The software is made available for research pupropses. Please read the copyright statement and contact me for commerical licensing.

2 Matlab implmentation of the Black and Anandan dense optical flow method

The Matlab flow code is easier to use and more accurate than the original C code. The objective function being optimized is the same but the Matlab version uses more modern optimization methods:

oMatlab implementation of Black and Anandan robust dense optical flow algorithm

The method in 1 above is more accurate and also implements Black and Anandan plus much more.

3. Original Black and Anandan method implemented in C

The optical flow software here has been used by a number of graphics companies to make special effects for movies.  This software is provided for research purposes only; any sale or use for commercial purposes is strictly prohibited.

Please contact me if you wish to use this code for commercial purpose.

If you are a commercial enterprise and would like assistance in using optical flow in your application, please contact me at my consulting address

This is EXPERIMENTAL software. It is provided to illustrate some ideas in the robust estimation of optical flow. Use at your own risk. No warranty is implied by this distribution.

Copyright notice.

There are two versions available. First, the original C code implementing the robust flow methods described in Black and Anandan '96:

oArea-based optical flow: robust affine regression.
oDense optical flow: robust regularization.


The robust estimation of multiple motions: Parametric and piecewise-smooth flow fields,
Black, M. J. and Anandan, P.,
Computer Vision and Image Understanding, CVIU, 63(1), pp. 75-104, Jan. 1996.
(pdf), (pdf from publisher)


Robust Principal Component Analysis (PCA)

Software is from the ICCV'2001 paper with Fernando De la Torre.

De la Torre, F. and Black, M. J., Robust principal component analysis for computer vision, to appear: Int. Conf. on Computer Vision, ICCV-2001, Vancouver, BC. (postscript, 1.0MB)(pdf, 0.36MB), (abstract)
Software, demos, and data.

Human motion tracking

The code below provides a simple Matlab implementation of the Bayesian 3D person tracking system described in ECCV'00 and ICCV'01. It is too slow to be used to track the entire body but can be used to track various limbs and provides a basis for people who want to understand the methods better and extend them.

Learning image statistics for Bayesian tracking,
Sidenbladh, H. and Black, M. J.,
Int. Conf. on Computer Vision, ICCV-2001, Vancouver, BC, Vol. II, pp. 709-716.
(postscript, 2.8MB)(pdf, 0.38MB), (abstract)

Stochastic tracking of 3D human figures using 2D image motion,
Sidenbladh, H., Black, M. J., and Fleet, D.J.,
European Conference on Computer Vision, D. Vernon (Ed.), Springer Verlag, LNCS 1843, Dublin, Ireland, pp. 702-718 June 2000.
(postscript)(pdf), (abstract)

Software. (Note: if you uncompress and untar this on a PC using Winzip, the path names may be lost which will cause Matlab to fail when you load the .mat files.  Instead uncompress/untar using gunzip and tar.)