OpenCV Orbe de ne pas trouver de matches une fois de rotation/échelle invariances sont introduits

Je suis en train de travailler sur un projet à l'aide de l'Orbe de la fonctionnalité du détecteur d'OpenCV 2.3.1 . Je suis de trouver des correspondances entre 8 images différentes, dont 6 sont très similaires (20 cm de différence dans la position de la caméra, le long d'un linéaire curseur jusqu'à il n'y a pas d'échelle ou de rotation de la variance), puis 2 images prises à partir d'environ un angle de 45 degrés de chaque côté. Mon code est de trouver beaucoup de comparaisons entre le très semblable images, mais peu à aucun pour les images prises d'un point de vue différent. J'ai inclus ce que je pense sont les parties de mon code, s'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.

//set parameters

int numKeyPoints = 1500;
float distThreshold = 15.0;

//instantiate detector, extractor, matcher

detector = new cv::OrbFeatureDetector(numKeyPoints);
extractor = new cv::OrbDescriptorExtractor;
matcher = new cv::BruteForceMatcher<cv::HammingLUT>;

//Load input image detect keypoints

cv::Mat img1;
std::vector<cv::KeyPoint> img1_keypoints;
cv::Mat img1_descriptors;
cv::Mat img2;
std::vector<cv::KeyPoint> img2_keypoints
cv::Mat img2_descriptors;
img1 = cv::imread(fList[0].string(), CV_LOAD_IMAGE_GRAYSCALE);
img2 = cv::imread(fList[1].string(), CV_LOAD_IMAGE_GRAYSCALE);
detector->detect(img1, img1_keypoints);
detector->detect(img2, img2_keypoints);
extractor->compute(img1, img1_keypoints, img1_descriptors);
extractor->compute(img2, img2_keypoints, img2_descriptors);

//Match keypoints using knnMatch to find the single best match for each keypoint
//Then cull results that fall below given distance threshold

std::vector<std::vector<cv::DMatch> > matches;
matcher->knnMatch(img1_descriptors, img2_descriptors, matches, 1);
int matchCount=0;
for (int n=0; n<matches.size(); ++n) {
    if (matches[n].size() > 0){
        if (matches[n][0].distance > distThreshold){
            matches[n].erase(matches[n].begin());
        }else{
            ++matchCount;
        }
    }
}

OriginalL'auteur KLowe | 2012-03-02