我知道在一般情况下,进行这种转换是不可能的,因为从 3d 到 2d 的深度信息丢失了。
但是,我有一个固定的相机,我知道它的相机矩阵。我还有一个已知尺寸的平面校准图案——假设在世界坐标中它有角 (0,0,0) (2,0,0) (2,1,0) (0,1,0)。使用 opencv 我可以估计模式的姿势,给出将对象上的点投影到图像中的像素所需的平移和旋转矩阵。
现在:这种 3d 到图像的投影很容易,但是另一种方式呢?如果我在图像中选择一个我知道是校准图案一部分的像素,我怎样才能获得相应的 3d 点?
我可以迭代地选择校准图案上的一些随机 3d 点,投影到 2d,并根据误差细化 3d 点。但这似乎很可怕。
鉴于这个未知点的世界坐标类似于 (x,y,0) - 因为它必须位于 z=0 平面上 - 似乎应该有一些我可以应用的转换,而不是做迭代废话. 虽然我的数学不是很好 - 有人可以计算出这个转换并解释你是如何推导出它的吗?