首页 文章

将3D世界点投影到新视图图像平面

提问于
浏览
0

编辑:

我拥有:相机内在,外部校准,2D图像和深度图

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

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

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

首先,通过使用CalTech的MATLAB Camera Calibration工具箱,可以获得内在的外在矩阵 .

然后,可以使用此方法“http://nicolas.burrus.name/index.php/Research/KinectCalibration#tocLink2”使用校准参数将它们映射到3D世界点

现在,我想将其投影到新的图像平面(右视图) . 由于设置,右视图只是左旋和无旋转的平移 . 我该如何重建?

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

如果问题不明确,任何想法和帮助都会受到高度赞赏,会重新说明/添加详细信息 .

1 回答

  • 0

    (Theoretic answer)*

    你必须定义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的理论关系,他的2D点在图像m中,您可能会认为右手相机处于不同的位置 . 如果仅存在关于左相机的平移,则右相机相对于左相机平移T2并且相对于世界中心旋转R / T T2 . 因此,右侧摄像机中的m'点应该是(假设摄像机相同意味着具有相同的内在函数K)

    m'= K [R | T T2] * P = K [I | T2] * P2 I是单位矩阵 .

    如果你想使用3D点直接将m转换为m',你必须实现极线几何 .


    • 如果摄像机的K值不同,如果R和T的校准与K的校准标准不同,则该等式可能不起作用 . 如果校准不好,它可以工作但有错误 .

相关问题