Как получить очки в стереоизображении от внешних параметров

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

Камеры расположены довольно близко друг от друга, поэтому предположим, что нет никаких преград, обе могут видеть один и тот же объект.

Есть ли openCV unction или набор функций для этого? Моя точка зрения на Z=0 в мире.

В принципе:

P_CAM1=(200,300) -> P_CAM2= ?

1 ответ

Решение

Ответ:

  1. Нерассортировать изображения. cv::undistort
  2. подсчитывать P1ccdf = A^(-1)*P1 -> Точка P1 в f=1 мировой системе координат.
  3. Рассчитать точку в мире ref Z=0 для этого:
    • Рассчитать координаты оптического центра в мире: Copt1=[0,0,0,1]T Copt1w=-R1t*T1
    • вычислить вектор между Coptw1 и P1ccdf: с некоторой математикой -> V1w=R1T*P1ccdf
    • Coptw1+lambda*V1w=[Pxw,Pyw,0]T -> lambda=-cpotw(z)/V1(z)
    • Coptw1+lambda*V1w=[Pxw,Pyw,0]T=P1w
  4. Защитите точку мира в cam2
    • P1ccd2f = R2T2 *[Pxw Pyw 0 1]T
    • P1ccd2f=P1ccd2f/P1ccd2f(3)
    • P2=A2*P1ccd2f

где

Другие вопросы по тегам