OpenCV Orb não encontra correspondências quando são introduzidas invariâncias de rotação / escala

Estou trabalhando em um projeto usando o detector de recursos Orb no OpenCV 2.3.1. Estou encontrando correspondências entre 8 imagens diferentes, 6 das quais são muito semelhantes (diferença de 20 cm na posição da câmera, ao longo de um controle deslizante linear para que não haja escala ou variação de rotação) e, em seguida, duas imagens tiradas de um ângulo de 45 graus lado. Meu código está encontrando muitas correspondências precisas entre imagens muito semelhantes, mas pouco ou nenhum para as imagens tiradas de uma perspectiva mais diferente. Incluí o que considero serem as partes pertinentes do meu código. Entre em contato se precisar de mais informações.

// 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;
        }
    }
}

questionAnswers(6)

yourAnswerToTheQuestion