Hessian Affine detector with SIFT descriptor, CMP implementation
C++ C
Latest commit 0d939a4 Mar 20, 2012 @perdoch Merge pull request #2 from lenck/master_lenck
Fixed problem with ubuntu gcc linker



This is an implementation of Hessian-Affine detector. 

The implementation uses a Lowe's (Lowe 1999, Lowe 2004) like pyramid
to sample Gaussian scale-space and localizes local extrema of the
Detetminant of Hessian Matrix operator computed on normalized
derivatives. Then a Baumberg-Lindeberg discovery of a local affine
shape is employed (Lindeberg 1998, Baumberg 2000, Mikolajzyk 2002) to
compute affine shape of each det of Hessian extrema. Finally a local
neighbourhood is normalized to a fixed size patch and SIFT
descriptor(Lowe 1999, Lowe 2004) computed.


Implementation depends on OpenCV (2.3.1+). Although, the code is
original, the affine iteration and normalization was derived from the
code of Krystian Mikolajczyk.

The SIFT descriptor code is protected under a US Patent 6,711,293. A
license MUST be obtained from the University of British Columbia for
use of SIFT code, files siftdesc.cpp/siftdesc.h, in commercial
applications (see LICENSE.SIFT for details)


The built binary rewrites output file: <input_image_name>.hesaff.sift

The output format is compatible with the binaries available from the
page "Affine Covariant Features". The geometry of an affine region is
specified by: u,v,a,b,c in a(x-u)(x-u)+2b(x-u)(y-v)+c(y-v)(y-v)=1. The
top left corner of the image is at (u,v)=(0,0). The geometry of an
affine region is followed by N descriptor values (N = 128).  

File format:

u1 v1 a1 b1 c1 d1(1) d1(2) d1(3) ... d1(N)
um vm am bm cm dm(1) dm(2) dm(3) ... dm(N)


If you use this code, please refer to

Perdoch, M. and Chum, O. and Matas, J.: Efficient Representation of
Local Geometry for Large Scale Object Retrieval. In proceedings of
CVPR09. June 2009.

TBD: A reference to technical report describing the details and some
retrieval results will be placed here.