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

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

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

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

В основном:

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

person Ander Biguri    schedule 18.03.2013    source источник
comment
code.google.com/p/sentience/wiki/StereoRanging Я думаю, что это может быть полезно.   -  person Froyo    schedule 18.03.2013


Ответы (1)


Ответ:

  1. Неискажать изображения. cv::undistort
  2. вычислить точку P1ccdf = A^(-1)*P1 -> P1 в координатах f=1 world ref.
  3. Calculate the point in the world ref Z=0 for that:
    • Calculate the optical centre coords in the world: 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. Protect world point into cam2
    • P1ccd2f = R2T2 *[Pxw Pyw 0 1]T
    • P1ccd2f=P1ccd2f/P1ccd2f(3)
    • P2=A2*P1ccd2f

где

person Ander Biguri    schedule 19.03.2013