我在3D空间中有一个已知对象(正方形),我知道它的角落的确切位置*。 我拍摄了一个物体的照片,我已经能够精确地识别照片上的哪个像素对应于正方形的哪个角落。 (我也知道相机的传感器分辨率和镜头的焦距**)。
如何计算相机的位置和方向?我想在C#中实现该解决方案。这听起来像是在3D游戏引擎中一直使用的基本矩阵操作,只是执行相反的方向。我希望它真的是。 :)
*所有位置和长度信息均以本地坐标系中的[米]表示。没有使用纬度/经度。
**焦距不以35毫米当量表示,而是以距离焦点1米的视口宽度和高度表示。
答案 0 :(得分:1)
你要做的事情的术语是'Homography'。
OpenCV库提供了各种功能来实现这一目标 - 你可以在这里阅读一些数学:
特别是,findHomography功能将利用样本图像和摄像机图像之间的点对应列表来计算摄像机位置的矩阵。