Получить 3D-координаты из пикселя 2D-изображения, если известны внешние и внутренние параметры - PullRequest
32 голосов
/ 20 октября 2011

Я делаю калибровку камеры от tsai algo.Я получил внутреннюю и внешнюю матрицу, но как я могу восстановить трехмерные координаты из этой информации?

enter image description here

1) Я могу использовать метод исключения Гаусса для поиска X, Y, Z, W, а затем точки будут X / W, Y / W, Z / W как однородная система.

2) Я могу использовать документацию OpenCV подход:enter image description here

как я знаю u, v, R, t, я могу вычислить X,Y,Z.

Однако оба метода приводят к разным результатам, которыене правильно.

Что я делаю не так?

1 Ответ

28 голосов
/ 25 мая 2012

Если у вас есть внешние параметры, значит, у вас есть все.Это означает, что вы можете получить гомографию от сторонних разработчиков (также называемую CameraPose).Поза - это матрица 3x4, гомография - это матрица 3x3, H , определенная как

                   H = K*[r1, r2, t],       //eqn 8.1, Hartley and Zisserman

, где K - собственная матрица камеры, r1 и r2 - первые два столбца матрицы вращения, R ; t - вектор перевода.

Затем нормализуйте деление всего на t3 .

Что происходит с колонкой r3 , разве мы не используем ее?Нет, потому что это избыточно, поскольку является перекрестным произведением двух первых столбцов позы.

Теперь, когда у вас есть гомография, спроецируйте точки.Ваши 2d баллы x, y.Добавьте их az = 1, чтобы они стали 3d.Спроецируйте их следующим образом:

        p          = [x y 1];
        projection = H * p;                   //project
        projnorm   = projection / p(z);      //normalize

Надеюсь, это поможет.

...