Параметр доверия OpenCV: RANSAC для поиска гомографии

Функция OpenCV findhomography() находит гомографическое преобразование между совпадающими точками двух изображений. (См. Определение)

Для нахождения подходящих подмножеств точек RANSAC можно использовать.

Здесь улов: в отличие от другой функции в OpenCV, которая использует RANSAC (например, findfundamentalMat (см. Определение)) параметр RANSAC для доверия не может быть изменено. В качестве аргумента можно передать только порог перепрограммирования.

Я посмотрел в источнике OpenCV, а для findhomography() доверие жестко закодировано до 0.995.

В моих целях мне нужно увеличить это. Есть ли способ сделать это без изменения значения в самом источнике OpenCV?

Есть ли причина, почему это должно быть жестко запрограммировано?

PS: я добавил изменение запрос по Ticket 1557 для следующей подрывной операции.

Ответ 1

Причина жесткого кодирования заключается в том, что для большинства пользователей это очень хороший выбор.

Возможно, вы первыми почувствовали необходимость чего-то большего. Но вот почему OpenCV открыт - возьмите код, измените его, сделайте патч и предложите его команде разработчиков OpenCV - что угодно.

И, ты уверен, что это то, что тебе нужно? Как правило, более тонкий реж-риг будет делать трюк. Если у вас есть проблемы, они могут быть где-то в другом месте - некоторые плохо выбранные точки, слишком большая ошибка при подборе точек и т.д.

Ответ 2

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

class  CvModelEstimator2
{

}

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