Я разрабатываю приложение, в котором я использую SIFT + RANSAC и Homography для поиска объекта (OpenCV C++, Java). Проблема, с которой я столкнулся, заключается в том, что там, где есть много выбросов, RANSAC работает плохо.Совпадения и распознавание SIFT?
По этой причине я хотел бы попробовать то, что автор SIFT сказал, что это очень хорошо: голосование.
Я прочитал, что мы должны голосовать в художественном пространстве 4 размерности, где 4 измерения являются:
- Местоположение [х, у] (кто-то говорит Traslation)
- Масштаб
- Ориентация
Хотя с OpenCV легко получить матч scale
и orientation
с:
cv::Keypoints.octave
cv::Keypoints.angle
Мне трудно понять, как я могу рассчитать местоположение.
Я нашел interesting slide где только one match
мы способны нарисовать прямоугольник:
Но я не понимаю, как я мог бы сделать эту рамку только с одной спички. Любая помощь?
Я отредактировал ответ. – Dima
В одном матче вам не нужно преобразование Хафа. Вы принимаете разницу в x и y (перевод), разницу в ориентации (вращении) и соотношении масштабов (шкалы). Затем вы помещаете их в матрицу. – Dima