Какие значения использует алгоритм RANSA C в cv2.FindHomography для поиска матрицы гомографии? - PullRequest
1 голос
/ 17 февраля 2020

1) Как алгоритм RANSA C в OpenCV выбирает значение вместо значения ? Я предполагаю, что он вычисляет общее совпадение наименьших квадратов между совпавшими ключевыми точками.

2) Я полностью осознаю, что помимо матрицы H cv2.FindHomography также выводит маску. И из этой маски совпадающая ключевая точка, которая является 1, считается внутренней , тогда как 0 считается внешней . Но какие значения алгоритм RANSA C выбрал для поиска окончательной гомографии H , выведенной cv2.FindHomography? Рассматривает ли все из них поиск матрицы H?

Документация не объясняет эти два вопроса должным образом.

1 Ответ

0 голосов
/ 17 февраля 2020

Аргумент ransacReprojThreshold в документах findHomography описывает зависимости от выбросов:

enter image description here

для 1), RANSA C вычисляет погрешность (векторную норму) между наблюдаемой проекцией dstPoint_i и проекцией srcPoint_i, вычисленной с помощью гомографии кандидата H. Затем он просто выполняет простую проверку порога. Пользователь может установить для ransacReprojThreshold любое значение, которое вам больше всего подходит для ваших данных. Если вы находитесь в пиксельных координатах, вы просто устанавливаете максимальную ошибку в пиксельном расстоянии для точки, которая будет считаться внутренней. Все с большей ошибкой считается выбросом.

Для 2) алгоритм RANSA C просто выберет H-матрицу, которая максимизирует количество значений на основе установленного вами порога. Таким образом, маска, которую он возвращает вам, - это набор с наибольшим числом вкладышей.

Имеет ли это смысл? Не похоже, что он дает вам массу вариантов с точки зрения случайных размеров выборки, количества итераций и т. Д. c. Вот источник , если вам интересно.

...