Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 无内禀摄像机矩阵的去投影_Opencv_Computer Vision_Linear Algebra - Fatal编程技术网

Opencv 无内禀摄像机矩阵的去投影

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

我正在尝试验证一种解决方案,即除了(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.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点。