OpenCV Orb не находит совпадений после введения инвариантов вращения / масштаба

Я работаю над проектом, использующим детектор функций Orb в OpenCV 2.3.1. Я нахожу совпадения между 8 различными изображениями, 6 из которых очень похожи (разница в положении камеры на 20 см, вдоль линейного ползунка, так что нет отклонения от масштаба или поворота), а затем 2 изображения, сделанные под углом около 45 градусов с любого из сторона. Мой код находит множество точных совпадений между очень похожими изображениями, но мало для всех изображений, снятых с другой точки зрения. Я включил то, что я считаю соответствующими частями моего кода, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

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

Ответы на вопрос(3)

Ваш ответ на вопрос