在这种情况下是否有任何算法来确定3d位置? (下图)

时间:2010-04-02 22:03:56

标签: algorithm 3d 2d rotation detection

所以首先我有这样的图像(当然我在2d中有所有点坐标,所以我可以重新生成线并检查它们相互交叉的位置)

alt text http://superior0.narod.ru/2d.jpg

但是,嘿,我有另一张相同的图像(我知道它们是相同的)和我的点的新坐标就像在这张图片上 alt text http://superior0.narod.ru/3d.jpg

所以...现在在第一张图像上有点(坐标),如何在第二张图像上确定平面旋转和Z深度(假设第一个中心位于点(0,0,0)而没有旋转)?< / p>

4 个答案:

答案 0 :(得分:5)

您要查找的内容称为投影矩阵。确定精确的反投影通常要求您在源向量和目标向量中牢固地建立坐标,上面的图像不会给您提供。但是,您可以使用像素位置进行近似。

This thread将为您提供您需要使用的技术的基本演练。

答案 1 :(得分:2)

让我先说一下:这个问题很难。 Dan Story的链接问题没有得到解答是有原因的。让我们为那些想要刺伤它的人提供一个解释。不过,我希望自己错了。

我将假设您已知2D屏幕坐标和投影/透视矩阵。你需要知道至少这么多(如果你不知道投影矩阵,基本上你使用不同的相机来看世界)。让我们调用每对2D屏幕坐标(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)是该点的原始3D坐标。

现在,让我们假设你在一组规范坐标(你想要的任何东西)中知道你的形状,这样顶点就是(x0_i, y0_i, z0_i)。我们可以将它们排列为矩阵C的列。形状的实际坐标是这些坐标的刚性变换。让我们类似地将实际坐标组织为矩阵V的列。然后这些是相关的

V = R C + v 1^T             (*)

其中1^T是具有正确长度的{1}的行向量,R是刚性变换的正交旋转矩阵,v是变换的偏移向量。 / p>

现在,您从上面有V的每一列的表达式:第一列是{ s a_1 z_1 / px, s b_1 z_1 / py, z_1 },依此类推。

您必须为标量集(*)求解方程组z_i,并定义刚性转换Rv

<强>难点

  • 该等式在未知数中是非线性的,涉及Rz_i
  • 的商数
  • 到目前为止,我们已经假定您知道哪些2D坐标对应于原始形状的哪些顶点(如果您的形状是正方形,则问题稍微少一点)。
  • 我们假设甚至有一个解决方案;如果2D数据中存在错误,那么很难说方程式(*)的满足程度如何;转换将是非刚性的或非线性的。

答案 2 :(得分:1)

它被称为(数字)摄影测量。开始谷歌搜索。

答案 3 :(得分:1)

如果您真的对这类问题感兴趣(这在计算机视觉中常见,使用相机跟踪对象等),下面的书中包含详细的处理:

Ma,Soatto,Kosecka,Sastry,An Invitation to 3-D Vision,Springer 2004。

注意:这是一个高级工程文本,并使用许多本质上是数学的技术。浏览本书网页上的示例章节,以获得一个想法。