У меня есть видео дороги/здания, и я хочу создать из него 3D-модель. Сцена, на которую я смотрю, неподвижна, а дрон движется. Я предполагаю, что у меня нет никакой дополнительной информации, такой как поза камеры, ускорение или положение GPS. Я хотел бы найти реализацию Python, которую я могу адаптировать по своему вкусу.
До сих пор я решил использовать OpenCV calcOpticalFlowFarneback()
для оптического потока, который кажется достаточно быстрым и точным. С его помощью я могу получить Фундаментальную Матрицу F с findFundamentalMat()
. Все идет нормально.
Теперь, согласно руководству, я следую здесь, я должен волшебным образом получить калибровочную матрицу камеры, которой у меня, очевидно, нет и не планируется иметь в будущее приложение, которое я разрабатываю.
После долгих поисков я нашел статью (Самокалибровка движущейся камеры по точкам соответствия и фундаментальным матрицам) от 1997 года, которая определяет то, что я ищу (с хорошим резюме здесь). Я ищу самую простую/простую реализацию, и я застрял с этими проблемами:
- Если камера, которую я собираюсь использовать, автоматически изменяет экспозицию и фокус (без масштабирования), изменятся ли внутренние параметры камеры?
- Я не знаком с методом продолжения гомотопии для численного решения уравнений, к тому же он кажется медленным.
- Я намерен использовать расширенный фильтр Калмана, но не знаю, с чего начать, зная, что неправильная инициализация приводит к несхождению.
Покопавшись еще немного, я нашел набор инструментов Multi Camera Self Calibration с открытым исходным кодом, написанный для Octave с оболочкой Python. Моим последним средством будет разбить код и написать его непосредственно на Python. Любые другие варианты?
Примечание. Я не хочу использовать шахматную доску или ограничение плоскостности.
Есть ли другой способ очень точно откалибровать мою камеру? После 20 лет исследований с 1997 года кто-нибудь придумал более простой метод??