This file lists changes make to the SIFT code supplied by David Lowe.


--------------------------------------------------------------------------------

In key.c, the const keyword was removed from the variable PeakThreshInit, to
enable changing the keypoint detection threshold.

Old code:

const float PeakThreshInit = 0.04;

New code:

float PeakThreshInit = 0.04;

--------------------------------------------------------------------------------

In util.c, the function FitQuadratic was modifed such that the matrix variable
'H' is no longer static. This change was made to enable the SIFT code to become
threadsafe.

Old code:

   static float **H = NULL;
   /* First time through, allocate space for Hessian matrix, H. */
   if (H == NULL)
     H = AllocMatrix(3, 3, PERM_POOL); 

New code:

    float H_data[9];
    float *H[] = {&H_data[0], &H_data[3], &H_data[6]};

--------------------------------------------------------------------------------

Major changes to the memory pools have been made. Instead of a fixed number of
static pools being declared. A MemoryPoolSt structure has been created. This
change was made to enable the SIFT code to become threadsafe.

The memory pool indices PERM_POOL, IMAGE_POOL and KEY_POOL have been removed.

The following functions have been modified to act on a memory pool structure:
 * MallocPool
 * FreeStoragePool
 * AllocMatrix
 * CreateImage
 * CopyImage
 * DoubleSize
 * HalfImageSize
