Параметр доверия 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, значение по умолчанию очень велико и делает приложение очень медленным.