如何从外在参数中获取立体图像中的点

时间:2013-03-18 10:59:27

标签: c++ opencv stereo-3d

我已经校准了一对相机,知道它们的内在和外在参数。 知道他们都在寻找飞机,如果我在其中一个图像中定义了一些点,我怎样才能在另一个图像中获得该点?

相机非常接近另一个,所以假设没有任何遮挡,两者都可以看到相同的物体。

是否有openCV功能或一组功能来执行此操作? 我的观点是世界上Z = 0。

基本上:

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

1 个答案:

答案 0 :(得分:0)

答案:

  1. Undistort图片。 cv::undistort
  2. 计算P1ccdf = A^(-1)*P1 - > P1点在f = 1世界参考号。
  3. 计算世界参考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
  5. ,其中