Opencv 无内禀摄像机矩阵的去投影
我正在尝试验证一种解决方案,即除了(u,v)之外,仅使用相机的外部旋转和平移,将像素点(u,v)投影到3D世界位置(x,y,z) 我在虚幻中模拟了这个问题,我有一个虚拟摄像机,它的世界位置(10771133450)和旋转偏航=90,俯仰=345,滚动=0度。我在像素位置(771426)或帧中心位置(131,-66)有一个已知3D位置(9232500,0)的对象,由1280x720相机看到 我的旋转矩阵的转置为:Opencv 无内禀摄像机矩阵的去投影,opencv,computer-vision,linear-algebra,Opencv,Computer Vision,Linear Algebra,我正在尝试验证一种解决方案,即除了(u,v)之外,仅使用相机的外部旋转和平移,将像素点(u,v)投影到3D世界位置(x,y,z) 我在虚幻中模拟了这个问题,我有一个虚拟摄像机,它的世界位置(10771133450)和旋转偏航=90,俯仰=345,滚动=0度。我在像素位置(771426)或帧中心位置(131,-66)有一个已知3D位置(9232500,0)的对象,由1280x720相机看到 我的旋转矩阵的转置为: [[ 5.91458986e-17 9.65925826e-01 -0.0000
[[ 5.91458986e-17 9.65925826e-01 -0.00000000e+00]
[-1.00000000e+00 6.12323400e-17 0.00000000e+00]
[-1.58480958e-17 -2.58819045e-01 9.65925826e-01]]
[[-1094.39396119]
[ 1077. ]
[ -141.42464373]]
我的发送矩阵是:
[[ 5.91458986e-17 9.65925826e-01 -0.00000000e+00]
[-1.00000000e+00 6.12323400e-17 0.00000000e+00]
[-1.58480958e-17 -2.58819045e-01 9.65925826e-01]]
[[-1094.39396119]
[ 1077. ]
[ -141.42464373]]
我的dx_dy_dz矩阵是
[[ -63.75110454]
[-131. ]
[ 18.0479828 ]]
最后,我以位置(-1593,50,0)作为退射世界坐标,这显然是错误的。我的一个矩阵计算错误吗?如果没有,提供的方法是否有缺陷/不完整 链接中建议的解决方案似乎不准确,因为取消投影需要使用内置相机矩阵。我认为您链接的解决方案不是一个好的解决方案(但可能我遗漏了什么?)。问题在于,世界坐标的单位与相机帧中的单位比例不同(取决于像素大小)。链接到的帖子中的d向量似乎仍然在相机帧中,并且仍然需要与视野等相乘,以获得世界坐标中的3d点。