首先声明一下:这个问题很难。丹·斯托里(Dan Story)的相关问题之所以没有被解决,就是因为这个原因。接下来我会给想要尝试解决这个问题的人提供一些解释。虽然我希望我的困难估计是错的。
假设你已经知道了二维屏幕坐标和投影/透视矩阵。你至少需要知道这么多(如果你不知道投影矩阵,那么实际上你使用的是不同的相机观察世界)。让我们把每对二维屏幕坐标称为(a_i, b_i)
,我将假设投影矩阵的形式为
P = [ px 0 0 0 ]
[ 0 py 0 0 ]
[ 0 0 pz pw]
[ 0 0 s 0 ], s = +/-1
a_i = px x_i / (s z_i)
b_i = py y_i / (s z_i)
其中(x_i, y_i, z_i)
是该点的原始三维坐标。
现在,假设您知道您的形状在一组规范坐标(任何您想要的)中的情况,因此顶点为(x0_i, y0_i, z0_i)
。我们可以将它们排列为矩阵C
的列。该形状的实际坐标是这些坐标的刚性变换。同样地,我们可以将实际坐标作为矩阵V
的列进行组织。那么它们之间存在以下关系:
V = R C + v 1^T (*)
其中1^T
是长度正确的由1组成的行向量,R
是刚体变换的正交旋转矩阵,v
是变换的偏移向量。
现在,你已经有了上面每列V
的表达式:第一列是{ s a_1 z_1 / px, s b_1 z_1 / py, z_1 }
等等。
你必须解决方程组(*)
,找出标量集合z_i
以及定义R
和v
的刚体变换。
困难
R
和z_i
的商(*)
的满足程度;变换将是非刚性或非线性的。这被称为(数字)摄影测量。开始谷歌搜索吧。
如果您真正对这类问题感兴趣(这类问题在计算机视觉、使用摄像头跟踪物体等方面很常见),以下书籍包含了详细的处理方法:
Ma、Soatto、Kosecka、Sastry,三维视觉邀请, Springer 2004。
注意:这是一本高级工程技术文本,使用了许多数学技术。请浏览该书网页上提供的示例章节,以获取大致概念。