Введение:
омография может быть получена из 4 паров точек с точностью 100% (реальный 0 перепроецирование-ошибок). Однако, когда число пар точек больше 4, вы, возможно, не сможете получить 0-погрешную гомографию. Это связано с тем, что точки могут быть не в одном 3D-планере.
Итак, сначала вам нужно иметь дело с тем фактом, что в реальных словах может быть не 100% точная гомография (из-за совпадений ошибок), но есть одна оптимальная (минимальная матрица ошибок повторения).
Состав:
Что касается вашего вопроса, то кажется, что у вас есть два набора пары точек. Тот, который вы использовали для получения Гомографии, и еще один, который вы проверяете на своей модели на основе этого, а затем вы хотите использовать его для улучшения своей модели.
Как улучшить гомографию?
Во-первых, используйте оба набора для получения гомографии с использованием некоторого надежного метода оценки (например, RANSAC). Вы можете найти дополнительную информацию here.
Во-вторых, выполните итерацию по вашему набору и вычислите ошибку перепрограммирования для каждой точки, как описано. Затем устраните все точки, у которых ошибка перепрограммирования больше некоторого порога.
В-третьих, применяйте методы оптимизации тонкой настройки только на вкладках, пока вы не получите хорошую гомографию в виде суммы ошибок среди линеек.
Как сделать третий шаг?
У вас есть 8 параметров для оптимизации:
h11 h12 h13
h21 h22 h23
h31 h32 1
Функция оптимизации:
И вы уже вычислили гомография с помощью RANSAC. Итак, у вас есть очень хорошая оценка, которая составляет около глобального оптимального. Это означает, что для этого случая достаточно использовать нелинейную локальную оптимизацию. существует много алгоритмов. Выберите один и начать (некоторые предложения: Hill Climbing, Simulated Annealing)
Редактировать после комментариев OP, что только расстояния betwen второго набора известны:
Функция оптимизации должна быть:
Где AD_ij
- фактическое расстояние между Pi и Pj.
Вы можете попытаться уменьшить сложность, используя, например, секвенция евклидова дистанции для справки и запроса.
Для некоторых (второго набора) точек я не знаю точное положение после преобразования. Но эти моменты после трансформации я знаю точное эвклидовое расстояние между ними. Я хочу использовать эту информацию для улучшения матрицы гомографии. – Deepak
@ user_12 отредактировано относительно вашей заметки –
Спасибо. Как реализовать это в Matlab или Octave или C++ – Deepak