Обнаружение выбросов в алгоритме SURF или SIFT с OpenCV - PullRequest
4 голосов
/ 09 августа 2011

Какой метод является лучшим для сравнения двух изображений и отбрасывания точек выбросов?В примере find_obj.cpp opencv они используют FLANN, но не отбрасывают выбросы.

Я видел некоторые методы, такие как использование Kmeans или графов.

1 Ответ

2 голосов
/ 09 августа 2011

Существует довольно надежный и эффективный способ как отклонить шумные точки и определить трансформацию между вашими точками интереса. Алгоритм, который обычно используется для отклонения выбросов, известен как RANSAC (http://en.wikipedia.org/wiki/RANSAC),, а алгоритм, используемый для определения преобразования, может принимать несколько форм, но самое современное состояние техники известно как алгоритм из пяти пунктов, и его можно найти. здесь - можно найти реализацию MATLAB здесь . Обратите внимание, что вам нужно определить преобразование, даже если вас не волнует точное вращение между двумя изображениями - это как определяются выбросы.

К сожалению, я не знаю зрелой реализации обоих из них; вам, вероятно, придется выполнить некоторую работу самостоятельно, чтобы внедрить RANSAC и интегрировать его с алгоритмом из пяти пунктов.

В OpenCV есть реализация, которая излишня для вашей задачи (то есть она будет работать, но займет больше времени, чем необходимо), но готова к работе сразу после установки. Интересующая функция называется cv :: findFundamentalMat (http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-findfundamentalmat)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...