Source Code

[Shape from Shading]

 [Fundamental Matrix]

[Mean-Shift Algorithms]

[Kernel Density Estimation]

[K-Means Algorithm]

[Normalized Graph Cut]

[Dimension Reduction]

[Facial Analysis]

[Optical Flow]

[Image Registration]

[Color Space Transformations]

[Image Acquisition]

[Miscellaneous]

[SPREF]

[FRAISE]

[Useful Links]

 

Shape from Shading
 
Zhang-Tsai-Cryer-Shah (C code)

Code form 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/

 

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

 

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

DirectShow tutorial.

3D SIFT

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 form 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.