Source Code



Background Modeling


Bayesian Object Detection in Dynamic Scenes

This code performs background modeling and foreground estimation in dynamic scenes captured by static cameras. The algorithm implemented has three innovations over existing approaches. First, the correlation in intensities of spatially proximal pixels is exploited by using a nonparametric density estimation method over a joint domain-range representation of image pixels, multimodal spatial uncertainties and complex dependencies between the domain (location) and range (color). The model of the background is implemented as a single probability density, as opposed to individual, independent, pixel-wise distributions.

Second, temporal persistence is used as a detection criterion. Unlike previous approaches to object detection which detect objects by building adaptive models of the background, the foreground is modeled to augment the detection of objects (without explicit tracking) since objects detected in the preceding frame contain substantial evidence for detection in the current frame.

Finally, the background and foreground models are used competitively in a MAP-MRF decision framework, stressing spatial context as a condition of detecting interesting objects and the posterior function is maximized efficiently by finding the minimum cut of a capacitated graph.

This method is useful for moving object detection in scenes containing dynamic backgrounds, e.g., fountains, fans, and moving trees, etc. The entry point for background modeling is Main.m.

Project Page: /projects/backgroundsub.htm

Yaser Sheikh and Mubarak Shah, Bayesian Modelling of Dyanmic Scenes for Object Detection, IEEE Transactions on PAMI, Vol. 27, Issue 11 (Nov 2005), pp. 1778-1792.

Shape from Shading


Zhang-Tsai-Cryer-Shah (C code)

Code from the following publication:

Ruo Zhang,Ping-Sing Tsai, James Cryer and Mubarak Shah, Shape from Shading: A Survey', IEEE Transactions on PAMI, Volume 21, Number 08, August, 1999, pp 690-706.

Cryer-Tsai-Shah Method (C code)

Source code for the Cryer-Tsai-Shah method for combining shape from shading and stereo depth maps.

Related Publication: James Cryer, Ping-Sing Tsai and Mubarak Shah. Shape from Shading and Stereo, Pattern Recognition, Volume 28, No. 7, pp 1033-1043, Jul 1995.

Tsai-Shah Method (C code)

Source code for the Tsai-Shah method for shape from shading. Related Publication: Ping-sing Tsai and Mubarak Shah, Shape From Shading Using Linear Approximation, Technical Report, 1992.

Fundamental Matrix


Fundamental Matrix Code (Matlab)

normalise2dpts (Matlab)

Computes the fundamental matrix from 8 or more matching points in a stereo pair of images using the normalized 8 point algorithm. The normalized 8 point algorithm given by Hartley and Zisserman is used. To achieve accurate results it is recommended that 12 or more points are used. The code uses the normalise2dpts.m file also provided.

On directions to using the code please refer to the code documentation.

Acknowledgements: The code was provided by Peter Kovesi. http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/

Fundamental Matrix Code (C++ code)

Please note that the code requires OpenCV version 1.0 (April Edition) to be installed on the target system. The package includes sample stereo images together with the correspondence points.

Acknowledgements: The code was provided by Paul Smith. http://www.cs.ucf.edu/~rps43158/index.php

Mean-Shift Algorithms


Edge Detection and Image SegmentatiON (EDISON) System (C++ source) (binary) The EDISON system contains the image segmentation/edge preserving filtering algorithm described in the paper Mean shift: A robust approach toward feature space analysis and the edge detection algorithm described in the paper Edge detection with embedded confidence. There is also Matlab interface for the EDISON system at the below link.

Acknowledgements: The source code is also available from Rutgers: http://www.caip.rutgers.edu/riul/research/robust.html

Approximate Mean-Shift Method (C++ code)

For instructions on using the code please refer to the readme.txt file included in the zip package. Note the code requires OpenCV to be installed on the target system.

Acknowledgements: The code was provided by Alper Yilmaz. http://www.cs.ucf.edu/~yilmaz/

Kernel Density Estimation


The KDE class is a general matlab class for k-dimensional kernel density estimation. It is written in a mix of matlab ".m" files and MEX/C++ code. Thus, to use it you will need to be able to compile C++ code for Matlab. The kernels supported are Gaussian, Epanetchnikov and Laplacian. There is a detailed instruction about how to use it at http://www.ics.uci.edu/~ihler/code/kde.html

K-Means Algorithms for Data Clustering


K-Means in Statistics Toolbox (Matlab code)

The goodness of this code is that it provides the options, such as 'distance measure', 'emptyaction', and 'onlinephase'. It is quit slow when dealing with large datasets and sometimes memory will be overflow.

Efficient K-Means using JIT (Matlab code)

This code uses the JIT acceleration in Matlab, so it is much faster than k-means in the Statistics Toolbox. It is very simple and easy to read.

Acknowledgements: The code was provided by Yi Cao.

You can also find it at http://www.mathworks.com/matlabcentral/fileexchange/19344-efficient-k-means-clustering-using-jit

K-means from VGG ( C code with Matlab interface)

This code calls the c code of k-means. It is the fastest one among these three and can deal with large dimensional matrix.

Acknowledgements: The code was provided by Mark Everingham. http://www.comp.leeds.ac.uk/me

Normalized Cuts


You can find the code for data clustering and image segmentation at  http://www.cis.upenn.edu/~jshi/software/, wich was provided by Jianbo Shi.

Dimension Reduction


PCA (Matlab code)
Multidimensional Scaling (Matlab code)

Facial Analysis


Haar Face Detection (C++ code) For instructions on using the code please refer to the readme.txt file included in the zip package. Note the code requires OpenCV and fltk (an open source window toolkit) to be installed on the target system.

Acknowledgements: The code was provided by Paul Smith. http://www.cs.ucf.edu/~rps43158/index.php

Optical Flow


Lucas Kanade Method (matlab)

This code includes the basic Lucas Kanade algorithm and Hierarchical LK using pyramids. Please refer to the 'readme' file included in the package for help on using the code. Following is a test sample to demonstrate the use of this code to calculate the optical flow.

Acknowledgements: The code was written by Sohaib Khan. http://www.cs.ucf.edu/~khan/

Code from Piotr Dollar (matlab)

It provides three methods to calculate optical flow: Lucas Kanade, Horn & Schunck and cross-correlation.

Acknowledgements: The code was written by Piotr Dollar. http://vision.ucsd.edu/~pdollar/toolbox/doc/index.html

Brox and Sand Methods (matlab)

This code implements a variation of the paper "High accuracy optical flow using a theory for warping", presented at ECCV 2004. Details of implementation, especially the numerics, have been adapted from the PhD thesis of Dr. Thomas Brox. Extension to different color channels, and the concept of a local smoothing function, has been adopted from the PhD thesis of Dr. Peter Sand.

Acknowledgements: The code was written by Visesh Uday Kumar Chari. http://perception.inrialpes.fr/~chari/myweb/Software/

Image Registration


Registration (matlab)

Please refer to the 'readme' file included in the package for help on using the code. Following is a test sample to demonstrate the use of this code for image registration.

Acknowledgements: The code for image registration along with test samples is provided by Yaser Sheikh. http://www.cs.ucf.edu/~yaser/

Color Space Transformations


RGB to LUV (matlab)

LUV to RGB (matlab)

RGB to LAB (matlab)

Image Acquisition


VFM (matlab)

VFM performs frame grabbing from any Video for Windows source. On directions to using the code please refer to the code documentation. Acknowledgements: The code was written by Farzad Pezeshkpour, School of Information Systems, University of East Anglia.

Miscellaneous


Snakes Demo Page - (Williams-Shah Snakes Algorithm)
Interactive java demo of Williams-Shah snakes algorithm. Code written by Sebastian van Delden

Deformable Contours (C++ code)
Code for the greedy snake algorithm.

Writing Video Applications
D irectShow tutorial.

3D SIFT


3D SIFT code (Matlab)

This MATLAB code is meant for research purposes only.

There have been various changes made to the code since the initial publication.  Some subtle, some not so subtle.  The most significant change is the use of a tessellation method to calculate the orientation bins.  Our testing has shown improved results; however, currently rotational invariance has not been re-implemented.  Rotational invariance is useful in certain applications, however it is useless in others, for this reason we have focused our time elsewhere.  Another noteable change is the elimination of some points due to lack of descriptive information (multiple gradient orientations).  This is a change which has a flag, and can therefore be turned on or off, however I suggest leaving it on and writing your frontend in such a way that allows 3DSIFT to refuse points, as this too has proven very effective in our testing.

Please see the README file for more detailed and up-to-date information.

Code from the following publication:

Paul Scovanner, Saad Ali, and Mubarak Shah, A 3-Dimensional SIFT Descriptor and its Application to Action Recognition, ACM MM 2007.


SPREF


SPREF Code (Matlab)

SPatiotemporal REgularity Flow (SPREF) is a new spatiotemporal feature that represents the directions in which a video or an image is regular, i.e., the pixel appearances change the least. It has several application, such as video inpainting and video compression. For more detail, please refer to our project page SPREF section.

FRAISE


FRAISE Code (C/C++)

Fast Registration of Aerial Image SEquences (FRAISE) is a lightweight OpenCV based software system written in C/C++ to register a sequence of aerial images in near-realtime. A demo test video video sequence and an image sequence with corresponding FRAISE alignment are included.

Acknowledgements: The code was written by Subhabrata Bhattacharya. http://www.cs.ucf.edu/~subh/


Useful Links


CMU Vision Group: http://www.cs.cmu.edu/~cil/v-source.html

Camera Calibration Toolbox for Matlab: http://www.vision.caltech.edu/bouguetj/calib_doc/index.html

MATLAB Functions for Computer Vision and Image Processing: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/

Visual Geometry Group: http://www.robots.ox.ac.uk/~vgg/software/

Please Note: We do not guarantee against the existence of bugs in the code provided on this website.