Я использую OpenCV 2.4.10 с Cuda 7.0 на VS10:: BFMatcher_GPU GPU и BFMatcher дает другой результат
В моем проекте CPU, находя ключевые точки и соответствия, как это;
detector = new cv::SURF(150,3);
descriptorExtractor = cv::DescriptorExtractor::create("SURF");
detector->detect(gry0,keypoints0);
descriptorExtractor->compute(gry0, keypoints0, descriptor0);
detector->detect(gry1,keypoints1);
descriptorExtractor->compute(gry1, keypoints1, descriptor1);
cv::BFMatcher matcher(cv::NORM_L2);
matcher.match(descriptor1, descriptor0, matches);
В GPU;
cv::gpu::SURF_GPU surf(150,3);
surf(gpumatFrameGray0, cv::gpu::GpuMat(), keypoints0GPU, descriptors0GPU);
surf(gpumatFrameGray0, cv::gpu::GpuMat(), keypoints1GPU, descriptors1GPU);
surf.downloadKeypoints(keypoints0GPU,keypoints0);
surf.downloadKeypoints(keypoints0GPU,keypoints1);
cv::gpu::BFMatcher_GPU matcher(cv::NORM_L2);
matcher.matchSingle(descriptors1GPU, descriptors0GPU, trainIdx, distance);
matcher.matchDownload(trainIdx, distance, matches);
У меня есть 2 вопроса.
1) Большинство местоположений Keypoints для CPU и GPU одинаковы. Между некоторыми значениями существует разница, например 0,000002. Это нормально и почему это происходит?
2) Мой второй и важный вопрос заключается в том, что сопоставление CPU и GPU отличается. Я показать таблицу соответствия
Эта таблица показывает положение ключевых точек в изображениях, которые соответствовали для CPU и GPU.
Например, ключевая точка с положением «22.333189» в кадре 0 соответствует двум ключевым точкам в кадре 1 для кода ЦП.
Но для кода графического процессора он соответствует трем различным ключевым точкам.
Существует много различий. Из-за этих различий результат гомографии также отличается и алгоритм дает разные результаты. Каково решение этой проблемы?
Спасибо
Несколько лет назад у меня были разные результаты для 'StereoBM' и некоторых алгоритмов обнаружения каскадов (пока я помню). – victor1234
Также хочу что-то добавить. Не только есть разница между результатом BruteForceMatcher для CPU и GPU, но также существует разница между настройками двух разных графиков времени исполнения для одного входа. С другой стороны, подобная ситуация не наблюдалась для кода ЦП. – user3508563