This function OPENSURF, is an implementation of SURF (Speeded Up Robust Features). SURF will detect landmark points in an image, and describe the points by a vector which is robust against (a little bit) rotation ,scaling and noise. It can be used in the same way as SIFT (Scale-invariant feature transform) which is patented. Thus to align (register) two or more images based on corresponding points (see example3.m), or make 3D reconstructions.
This Matlab implementation of Surf is a Matlab optimized translation of the OpenSurf C# code of Chris Evans, and gives exactly the same answer. Chris Evans wrote one of the best, well structured all inclusive SURF implementations. On his site you can find Evaluations of OpenSURF and the C# and C++ code. http://www.chrisevansdev.com/opensurf/
Chris Evans gave me permisson to publish this code under the (Mathworks) BSD license.
Ipts = OpenSurf(I, Options)
I : The 2D input image color or greyscale
Options : A struct with options (see below)
Type "help OpenSurf" or "doc OpenSurf" for a basic surf example, and try the example2.m and example3.m for more advanced point matching and affine registration examples.
If you want to use opensurf for nonrigid registration, see "B-spline Grid, Image and Point based Registration" on Mathworks.
Please leave a comment if you find a bug, like the code, or have a question. Visit the page of Chris Evans if you want more detailed information about the algorithm.