# MatchPoint

MatchPoint is a next generation CP generator. The result of a GSoC2007 projectSoC2007_project_Feature_Descriptor, it is still very experimental. Experience reports needed. Read more here

## Integral images

Before detection process images are integrated. Each element-pixel (x,y) of integral image represents sum of pixels from (0,0) to (x,y) on initial image. This makes calculating sum of a region much faster. In addition, convolution at any scale has equal time complexity. This part is neccessary only when using box filters for detection.

## Feature detection

Points are detected with Hessian Detector using box filters.

Convolution of a pixel at certain scale is carried out with approximation of Gauss kernels - this is called box filter detection. In order to achieve invariance to scaling, detection needs to find maxima of Hessian determinant across many scales. To handle this, octaves were introduced. Octaves are interpolation of determinants at various scales(usually two scales). MatchPoint offers detection at max 3 octaves(by setting a parameter). E.q. at first octave a point can be detected at scale 1.6(=((9+15/2)*1.2)/9 where 1.2 is initial scale and 9 is initial kernel size) or 3.2(=((21+27/2)*1.2)/9. Keypoint's main scale is then selected according to the highest value of Hessian determinant.

Kernel sizes for convolution are:
9,15,21,27, (1st octave)
15,27,39,51, (2nd octave)
olution of a pixel at certain scale is carried out with approximation of Gauss kernels - this is called box filter detection. In order to achieve invariance to scaling, detection needs to find maxima of Hessian determinant across many scales. To handle this, octaves were introduced. Octaves are interpolation of determinants at various scales(usually two scales). MatchPoint offers detection at max 3 octaves(by setting a parameter). E.q. at first octave a point can be detected at scale 1.6(=((9+15/2)*1.2)/9 where 1.2 is initial scale and 9 is initial kernel size) or 3.2(=((21+27/2)*1.2)/9. 21,45,69,93 (3rd octave)

MatchPoint features also offers two ways of convolution:

1. box filter: faster and preferable way
2. sliding window(implemented for convinience and needs debug): slower, more accurate but also more sensitive to noise