Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Find homography with SURF_OCL

Hi all, I'm trying to use Surf with ocl for speed up the feature finding,and then to use them for calculate homography. I'm using this code for finding the feature:

SURF_OCL surf;
BFMATCHER_OCL matcher;
vector<KeyPoint> keypoints1, keypoints2;
vector<DMatch> matches;
oclMat descriptors1GPU, descriptors2GPU;

surf(img1, oclMat(), keypoints1, descriptors1GPU);
surf(img2, oclMat(), keypoints2, descriptors2GPU);
matcher.match(descriptors1GPU, descriptors2GPU, matches);

The matches array il filled with a lot of elements (like 3000 or 4000) but when I do this code

double max_dist = 0; double min_dist = 100;

//-- Quick calculation of max and min distances between keypoints
for( int i = 0; i < descriptors_object.rows; i++ )
{ double dist = matches[i].distance;
  if( dist < min_dist ) min_dist = dist;
  if( dist > max_dist ) max_dist = dist;
}

max and min dist remains the same so when I'm taking good matches with this

vector< DMatch > good_matches;

for( int i = 0; i < descriptors_object.rows; i++ )
{ if( matches[i].distance < 3*min_dist )
   { good_matches.push_back( matches[i]); }
}

I've an empty array.

What can I do?