编辑:
我所拥有的:相机内部,来自校准的外部,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校准标准,则该方程可能不起作用。如果校准做得不好,它可能会工作,但会有错误