Получение 5 баллов, используемых RANSAC в findHomography (OpenCV для Android)

В OpenCV для Android функция org.opencv.Calib3d.findHomography (..) возвращает однородную матрицу преобразования. Например, это возвращает только гомографию:

Mat homography = Calib3d.findHomography(points1, points2, Calib3d.RANSAC, 0.5); 

Есть ли способ вернуть точки, которые RANSAC фактически использует из Android OpenCV API?

Обновить

Я не уверен, что это новое дополнение к OpenCV, или я только что пропустил его, но функция findHomography () фактически может дать вам листы (OpenCV 2.4.2). Последний параметр, mask , которая по умолчанию пуста, будет заполнена единицами (или 255) по индексам индексов, выделенных RANSAC.

 Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0, double ransacReprojThreshold=3, OutputArray mask=noArray() ) // ^ // | 

Старый ответ

Точки, используемые RANSAC для оценки гомографии (называемые ярусами в технических документах), не могут быть извлечены напрямую. Они вычисляются изнутри, но затем список удаляется.

Способ их извлечения – изменить функцию findHomography (и соответствующие функции RANSAC). Но это уродливо.

Другим, более чистым способом является проверка того, какие пары точек на входе соответствуют гомографии:

Используйте projectPoints(points1, homography, points1_dest) (я надеюсь, что это имя функции), чтобы применить гомографию к точкам1. Используйте cv::distance(points1_dest, points2) чтобы увидеть, какие из них достаточно близки к их паре в точках2. Расстояние должно быть меньше или равно min_distance^2 . В вашем случае 0.5*0.5 = 0.25 .