Используйте фундаментальную матрицу для вычисления перевода координат с помощью OpenCV

Я пытаюсь вычислить соответствие координат нескольких точек между двумя изображениями. У меня есть группа точек, соответствия которых известны, я использую их с OpenCV findFundamentalMatrix(), чтобы найти фундаментальную матрицу. Я проверил, что x^T * F * x' = (0)для каждой точки, и результат всегда правильный или очень близкий.

Дело в том, что теперь я хочу использовать координаты точки на первом изображении(y)и фундаментальную матрицу (F), чтобы найти координаты точки на втором изображении(y'). Сначала я подумал о простом использовании приведенного выше уравнения, но, учитывая только zточки y', может быть бесконечное множество решений .

Как еще я могу использовать фундаментальную матрицу для вычисления переводов?

Чтобы быть более ясным, :зная фундаментальную матрицу, «связывающую» две проекции, как я могу использовать ее для перевода координат любой известной точки (a, b, 1)из первой проекции во вторую проекцию?

Учитывая, что мы знаем a, bи Fв этом уравнении:(a', b", 1)T*F*(a, b, 1 )= (0)

В качестве примера я сделал простой рисунок:http://i.imgur.com/drNr2.jpg.Идея состоит в том, чтобы найти координаты красной точки (xq, yq)в проекции 2, учитывая, что мы знаем ее координаты в проекции 1 и координаты всех остальных точек в обеих проекциях (и некоторых других, как алгоритм нахождения фундаментальная матрица на самом деле требует не менее 8 точек)

Другая точность :в моем примере известные точки компланарны, но исследуемая точка не обязательно будет таковой.

Надеюсь, моя проблема стала понятнее:)

5
задан Community 13 April 2017 в 12:19
поделиться