Как рассчитать трехмерные координаты точки в OpenCV - PullRequest
2 голосов
/ 06 апреля 2011

Я получил откалиброванную систему стереокамер и положение пикселей одного и того же объекта на изображениях обеих камер. Есть ли простой способ рассчитать трехмерные мировые координаты объекта, используя OpenCv (и внутренние / внешние параметры), или мне приходится иметь дело с трехмерными линиями, сгенерированными как для камер, так и с преобразованиями между ними? Может ли CvReprojectImageTo3D помочь? Большое спасибо

1 Ответ

1 голос
/ 15 июля 2011

Вы можете триангулировать эти точки.Для каждой камеры вы знаете, что x = IP * EP * X с x = двумерными однородными координатами экрана, IP = встроенная матрица камеры, EP = внешняя матрица камеры и X трехмерные однородные мировые координаты.Эта формула даст 2 линейных уравнения для каждой камеры, что приведет к линейной задаче A * X = B. Для каждой камеры добавьте A:

Ps = IP * EP
A(row 1) = x.x * Ps(row 3) - Ps(row 1)
A(row 2) = x.y * Ps(row 3) - Ps(row 2)
B(row 1 & 2) = 0

Есть 4 неизвестных.Чтобы избежать 0 в качестве решения, добавьте [0 0 0 1] к A и [1] к B.

Решение может быть выполнено с помощью метода Якоби или чего-то подобного.

Я не нашел / не знаю метода в OpenCV, но реализация вышеуказанного метода должна быть выполнима, если вы знаете, что такое калибровочные матрицы.

...