Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

Covariance Estimator

Covariances estimated for SIFT features Covariances estimated for SURF features


This page concerns the software package Covariance Estimator. It is written in C/C++ and permits to extract SIFT and SURF local features and estimates the related localization error represented by a covariance matrix. It is composed of two command line executables: detector and covEstimate. detector extracts SIFT or SURF features from an image and stores the result in a formatted text file. covEstimate estimates the covariance matrix of each local features and stores it to a formatted text file as well. There are methods provided to read the local feature and covariance information into C/C++ or Matlab. Thus, this covariance matrices can be easily used for example to improve reconstruction with the well-known sparse bundle adjustment library sba.

The code is based on OpenCV. It ships the SIFT detector implementation from Rob Hess and uses part of OpenSURF, an open source implementation of the SURF detector. Our software package runs only on Windows but there should be no problem to compile it under other OS supported by OpenCV.

You are free to modify the code and compile the software yourself. In the package the required Visual Studio 2008 projects are included.

What's New?

  • September 09: Release of the Covariance Estimator v1.0 at the British Machine Vision Conference (BMVC).


The software package has been developed by

Related Publication

If you use our software, please cite following publication:
B. Zeisl, P. Georgel, F. Schweiger, E. Steinbach, N. Navab
Estimation of Location Uncertainty for Scale Invariant Feature Points
British Machine Vision Conference (BMVC), London (UK), September 7-10, 2009 (bib)


Current version 1.0 it includes the source code and binaries for windows.

Simple Instruction

At the moment the code is not optimized. First you need to extract local features with the command $detector.exe and then estimate the covariances with $covEstimate.exe

Requirement: The software package requires the DLL from OpenCV (cv.dll, cxcore.dll, highgui.dll) to be in your PATH or in the project local bin directory.


  ./detector -t SURF|SIFT -i <img> [OPTIONS]

  -t <type>    Detector type, SURF or SIFT
  -i <img>     Image file name of image to process. PGM file form
at needed.

  -d <dir>     The directory containing the image file (default is ./)
  -o <name>    Keypoint output file (default: IMG.key_sift|.key_surf).
  -q           Quiet mode. Don't print status information.
  -show        Display the found feature points in the image.
  -save        Draw the points in the image and save to file.


  ./covEstimate -t SIFT|SURF -i <img> [OPTIONS]

  -t <type>    Detector type, SURF or SIFT
  -i <img>     Image file to process.

  -k <file>    File ending of the keypoint file to load. The name itself
               is according to the name of the image.
               (default is .key_sift|.key_surf)
  -d <dir>     The directory containing the image file (default is ./)
  -q           Quite prossing. Don't print status information.
  -show        Display the estimated uncertainty for feature points in the
               image, each as ellipse according to the covariance matrix.
  -save        Draw the covariance in the image and save to file.

Test call using the image we provide with the code

$detector.exe -t SURF -i test.pgm -d ../data/ -show
$covEstimate.exe -t SURF  -i test.pgm -d ../data/ -show

Edit | Attach | Refresh | Diffs | More | Revision r1.16 - 18 Mar 2010 - 22:23 - PierreGeorgel

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif