是否可以使用OpenCV
以2d-3d点关系获得图像或相机位置的前平行视图?
为此,我有内在和外在的参数。我在图像(关系2d-3d)上也有一组控制点(位于一个平面内)的三维坐标。
实际上我需要相机的位置和方向,但如果我可以将图像转换为平行视图,就不难找到它。
如果无法使用OpenCV,其他库是否可以解决此问题?
答案 0 :(得分:0)
解决方案基于OpenCV文档Camera Calibration and 3D Reconstruction
中的公式让我们考虑没有失真系数的数字形式(与矩阵形式相反)。
我们有u
和v
计算x'
和y'
很容易
但x
和y
无法计算,因为我们可以选择任何非零z
。
3d中的线对应于2d图像中的一个点。
要解决这个问题,我们会为z=1
和z=2
分两个点。
然后我们在3d空间中找到2个点,指定行(x1,y1,z1)
和(x2,y2,z2)
。
然后我们可以将R
-1 应用于(x1,y1,z1)
和(x2,y2,z2)
,这会导致由两个点(X1, Y1, Z1)
和{{1}确定的行}}
由于我们的控制点位于一个平面上(为简单起见,让平面为Z = 0),我们可以找到相应的(X1, Y1, Z1)
和X
点,这是3d中的一个点。
在将Y
的标准化应用于像素后,我们获得了前平行图像。
(如果输入图像失真,我们应该首先取消输入)