3d 为什么这个预测是错误的?

3d 为什么这个预测是错误的?,3d,geometry,computer-vision,projective-geometry,3d,Geometry,Computer Vision,Projective Geometry,我想弄明白为什么三维立方体不能在图像中的正确位置投影 我从原点处的摄影机和以0,0,1为中心的立方体开始: 然后我创建一个绕Y轴旋转45度的3D旋转R: (0.707106781, 0, 0.707106781, 0, 1, 0, -0.707106781, 0, 0.707106781) 我将摄影机设置为使用旋转R^-1,平移为R*0,0,1,这些是摄影机到世界的变换。相机应该绕立方体逆时针旋转45度,我可以确认我在x和z上有0.707106781的平移 在这一点上,我希望看到同样大小的立方

我想弄明白为什么三维立方体不能在图像中的正确位置投影

我从原点处的摄影机和以0,0,1为中心的立方体开始:

然后我创建一个绕Y轴旋转45度的3D旋转R:

(0.707106781, 0, 0.707106781,
0, 1, 0,
-0.707106781, 0, 0.707106781)
我将摄影机设置为使用旋转R^-1,平移为R*0,0,1,这些是摄影机到世界的变换。相机应该绕立方体逆时针旋转45度,我可以确认我在x和z上有0.707106781的平移

在这一点上,我希望看到同样大小的立方体,仍然是中心的,并且在图像的中间有一个边缘。但我得到的是:

我用于投影三维点X的过程是伪代码:

引入摄像机坐标:Xc=R^-1*X-R^1*平移 转换为图像坐标:x=Xc*焦距/Xc.z+主点 我从各种渠道读过这个理论,似乎我在遵守规则


这只是人工数据,所以不确定焦距和主点是否会对其产生影响?我做错了什么?为什么立方体没有居中?

不清楚。你说你对相机进行了旋转,但没有提到立方体。对我来说,你似乎只旋转了一个摄像头-这就是为什么立方体没有居中。嘿@nikitablack,是我旋转立方体的时候出错了。所以你想旋转一个立方体和一个摄像头,对吗?为此,您需要几个步骤:1围绕Y轴旋转一个立方体,即[0,0,1]位置-立方体*invT*R*T。2围绕点[0,0,1]旋转一个相机,即围绕Y轴旋转[0,0,0]-相机*T*R*invT