SFOP keypoint detector

Wolfgang Förstner, Timo Dickscheid and Falko Schindler:
Detecting Interpretable and Accurate Scale-Invariant Keypoints
International Conference on Computer Vision (ICCV’09), Kyoto, 2009



SFOP features on an example image. Red: junctions, cyan: circular features. Note that both feature types are extracted simultaneously.

We propose a novel scale-invariant keypoint detector, called SFOP, which contains a scale-selection mechanism for corners, junctions and circular features. The detector integrates and extends two existing concepts into a common scale-space formulation:

  1. The feature operator proposed by Förstner (1994) for detecting junction-type points
  2. The spiral feature model proposed by Bigün (1990) for unifying different feature types into one framework, including junctions and circles as special cases.

By locally optimising the consistency of image regions with respect to the spiral model, we are able to detect and classify image structures with complementary properties over scale, including junctions and circles. The detector has the following properties:

  • Invariance and repeatability for object recognition, comparable to that of the detector by Lowe (2004)
  • High localization accuracy to support camera calibration
  • Good interpretability of the results (see figure)
  • Very few control parameters with clear semantics
  • High complementarity to most popular detectors

On this page you’ll find the related publications and software.


Complementarity to other detectors


Features detected by other detectors. EBR, IBR, MSER,Harris affine, Hessian affine, Lowe.




C++, OpenCL and Matlab implementation

A fast C++ implementation with optional GPU support and a Matlab version is available:

sfop-1.0.tar.gz (CPU and GPU)

(Or: Previous version sfop-0.9.tar.gz, CPU only)

(Or: Version for Visual C++ kindly provided by Woon Cho, CPU only)

  • Download and unpack the archive into a directory of your choice.
  • Run ./configure, make and make install to install SFOP on your system.
    Run ./configure –help for possible configuration settings.
    See doc/html/index.html for a documentation generated using Doxygen.
  • Run sfop –help for a list of possible arguments.
    Run, e. g., sfop -i examples/lena.png to compute SFOP keypoints for the Lena test image.
    Or add –device 1 for the fast OpenCL implementation (since version 1.0).
  • Run matlab/example.m for a demonstration of the Matlab implementation.

Do not hesitate to contact us in case you have any questions.


How can I match the keypoints?

The software provides you with an output file containing the keypoint locations and scales. This file can be used as an input to the program extract_features provided on the affine covariant features website of the VGG in Oxford. An explanation on how to do that in 3 steps is included in the example.m script shipped with our software.