In this algorithm, using SIFT to obtain keypoints and match them.
set num_of_tilts 7, from 1, 1.414, 2......to......
if number of tilt equals 1, I think ASIFT is SIFT.
//// Compute ASIFT keypoints
// number N of tilts to simulate t = 1, \sqrt{2}, (\sqrt{2})^2, ..., {\sqrt{2}}^(N-1)
int num_of_tilts1 = 7;
int num_of_tilts2 = 7;
// int num_of_tilts1 = 1;
// int num_of_tilts2 = 1;
int verb = 0;
// Define the SIFT parameters
siftPar siftparameters;
default_sift_parameters(siftparameters);
vector< vector< keypointslist > > keys1;
vector< vector< keypointslist > > keys2;
int num_keys1=0, num_keys2=0;
cout << "Computing keypoints on the two images..." << endl;
time_t tstart, tend;
tstart = time(0);
num_keys1 = compute_asift_keypoints(ipixels1_zoom, wS1, hS1, num_of_tilts1, verb, keys1, siftparameters);
num_keys2 = compute_asift_keypoints(ipixels2_zoom, wS2, hS2, num_of_tilts2, verb, keys2, siftparameters);
tend = time(0);
cout << "Keypoints computation accomplished in " << difftime(tend, tstart) << " seconds." << endl;
computing the keyspoint by siftparameter, storing in the vector 'key1' and 'key2'.
//// Match ASIFT keypoints
int num_matchings;
matchingslist matchings;
cout << "Matching the keypoints..." << endl;
tstart = time(0);
num_matchings = compute_asift_matches(num_of_tilts1, num_of_tilts2, wS1, hS1, wS2,
hS2, verb, keys1, keys2, matchings, siftparameters);
tend = time(0);
cout << "Keypoints matching accomplished in " << difftime(tend, tstart) << " seconds." << endl;
matching keypoints by using keys1 and keys2, storing in the matchingList 'matching'.
ok, now we finish the main steps of ASIFT. Thanks for theJean-Michel Morel and Guoshen Yu.