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).
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.exeRequirement: 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.exe
USAGE:
./detector -t SURF|SIFT -i <img> [OPTIONS]
REQUIRED PARAMETERS:
-t <type> Detector type, SURF or SIFT
-i <img> Image file name of image to process. PGM file form
at needed.
OPTIONS:
-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.exe
USAGE:
./covEstimate -t SIFT|SURF -i <img> [OPTIONS]
REQUIRED PARAMETERS:
-t <type> Detector type, SURF or SIFT
-i <img> Image file to process.
OPTIONS:
-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