将三维世界点反向投影到新视图图像平面



编辑:

我所拥有的:相机内部,来自校准的外部,2D图像和深度图

我需要的:2D虚拟视图图像

我正在尝试为基于深度图像的渲染生成一个新颖的视图(右视图(。原因是在接收器处只有左图像和深度图可用,接收器必须重建右视图(参见图像(。

我想知道这些步骤是否会给我想要的结果,或者我应该做什么,

首先,利用加州理工学院的MATLAB相机校准工具箱,可以得到本征矩阵和外征矩阵。

然后,可以通过这种方法使用校准参数将它们映射到3D世界点。"http://nicolas.burrus.name/index.php/Research/KinectCalibration#tocLink2">

现在,我想将其反向投影到一个新的图像平面(右视图(。右视图只是左视图的平移,由于设置原因没有旋转。我该如何进行重建?

此外,我可以从MATLAB立体校准工具估计R和T,并使用P2=R*P1+T将原始左视图中的每个点转换为右视图吗,P1和P2是3D世界点P在各个平面中的图像点。

我们非常感谢您的任何想法和帮助,如果问题不清楚,请重新表述/添加细节。

(理论答案*(

你必须定义R和T的含义。如果我理解的话,是你(主(左摄像头的Roto翻译。如果你可以在3D空间中映射一个点P(比如你的P1或P2(,那么在你的左相机中与点m(为了避免混淆,我不称它为P(的对应关系是(除非你使用不同的约定(伪代码(

m = K[R|t]*P 

哪个

P1 = (X,Y,Z,1)
m  = (u',v',w)

但你想要2D坐标,所以你左边相机的坐标是:

u = u'/w 
v = v'/w

如果你已经将P1转译成P2(不是很有用(等于(伪代码(

                  1 0 0 0
m = K[I|0]*P = K*[0 1 0 0] * P2
                  0 0 1 0

假设这是一个3D点p和他在图像m中的2D点的理论关系,你可能会认为你的相机在不同的位置。如果仅存在相对于左相机的平移,则右相机相对于左相机平移T2,并且相对于世界中心旋转平移R/T+T2。因此,在你的右相机中,m’所期望的点应该是(假设相机相等,意味着它们具有相同的本质K(

m'=K[R|T+T2]*p=K[I|T2]*P2I是单位矩阵。

如果你想在不使用3D点的情况下将m直接转换为m',你必须实现核极几何。


  • 如果相机在不同的K下不同,如果R和T的校准没有相同的K校准标准,则该方程可能不起作用。如果校准做得不好,它可能会工作,但会有错误

最新更新