将 3D 世界点反投影到新的视图图像平面
Back projecting 3D world point to new view image plane
编辑:
我有:相机内在、校准外在、2D 图像和深度图
我需要的是:二维虚拟视图图像
我正在尝试为基于深度图像的渲染生成一个新颖的视图(右视图)。这样做的原因是接收器只有左图像和深度图可用,必须重建右视图 (see image)。
我想知道这些步骤是否会给我想要的结果或者我应该做什么,
首先,使用CalTech的Camera Calibration toolbox for MATLAB,可以得到内、外矩阵。
然后,它们可以通过这种方法使用校准参数映射到 3D 世界点“http://nicolas.burrus.name/index.php/Research/KinectCalibration#tocLink2”
现在,我想将它投影到一个新的图像平面(右视图)。由于设置的原因,右视图只是左视图的平移,没有旋转。
我该如何重建?
此外,我能否通过 MATLAB 立体校准工具估计 R 和 T,并使用 P2 = R*P1+T 将原始左视图中的每个点转换为右视图,
P1和P2是3D世界点P在各自平面的像点。
非常感谢任何想法和帮助,如果问题不清楚,请 rephrase/add 提供详细信息。
(理论答案*)
您必须定义 R 和 T 的含义。如果我明白,是你的(主)左相机的 Roto-translation。如果您可以在 3D space 中映射一个点 P(如您的 P1 或 P2),则左相机中与点 m(我不称其为 p 以避免混淆)的对应关系是(除非您使用不同的约定(伪代码)
m = K[R|t]*P
哪个
P1 = (X,Y,Z,1)
m = (u',v',w)
但是你想要二维坐标,所以你左相机的坐标是:
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
假设这是图像m中的3D点P和他的2D点的理论关系,你可能会想把你的相机放在不同的位置。如果只有相对于左摄像机的平移,则右摄像机相对于左摄像机平移 T2,并相对于世界中心旋转平移 R/T+T2。
所以你右相机的 m' proiected 点应该是(假设相机相同意味着它们具有相同的内在 K)
m' = K[R|T+T2]*P = K[I|T2]*P2
I 是单位矩阵。
如果您想在不使用 3D 点的情况下将 m 直接转换为 m',则必须实现对极几何。
- 如果相机不同,K不同,如果R和T的标定没有相同的K标定标准,这个公式可能不成立。
如果校准不好,它可以工作但有错误。
编辑:
我有:相机内在、校准外在、2D 图像和深度图
我需要的是:二维虚拟视图图像
我正在尝试为基于深度图像的渲染生成一个新颖的视图(右视图)。这样做的原因是接收器只有左图像和深度图可用,必须重建右视图 (see image)。
我想知道这些步骤是否会给我想要的结果或者我应该做什么,
首先,使用CalTech的Camera Calibration toolbox for MATLAB,可以得到内、外矩阵。
然后,它们可以通过这种方法使用校准参数映射到 3D 世界点“http://nicolas.burrus.name/index.php/Research/KinectCalibration#tocLink2”
现在,我想将它投影到一个新的图像平面(右视图)。由于设置的原因,右视图只是左视图的平移,没有旋转。 我该如何重建?
此外,我能否通过 MATLAB 立体校准工具估计 R 和 T,并使用 P2 = R*P1+T 将原始左视图中的每个点转换为右视图, P1和P2是3D世界点P在各自平面的像点。
非常感谢任何想法和帮助,如果问题不清楚,请 rephrase/add 提供详细信息。
(理论答案*)
您必须定义 R 和 T 的含义。如果我明白,是你的(主)左相机的 Roto-translation。如果您可以在 3D space 中映射一个点 P(如您的 P1 或 P2),则左相机中与点 m(我不称其为 p 以避免混淆)的对应关系是(除非您使用不同的约定(伪代码)
m = K[R|t]*P
哪个
P1 = (X,Y,Z,1)
m = (u',v',w)
但是你想要二维坐标,所以你左相机的坐标是:
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
假设这是图像m中的3D点P和他的2D点的理论关系,你可能会想把你的相机放在不同的位置。如果只有相对于左摄像机的平移,则右摄像机相对于左摄像机平移 T2,并相对于世界中心旋转平移 R/T+T2。 所以你右相机的 m' proiected 点应该是(假设相机相同意味着它们具有相同的内在 K)
m' = K[R|T+T2]*P = K[I|T2]*P2 I 是单位矩阵。
如果您想在不使用 3D 点的情况下将 m 直接转换为 m',则必须实现对极几何。
- 如果相机不同,K不同,如果R和T的标定没有相同的K标定标准,这个公式可能不成立。 如果校准不好,它可以工作但有错误。