在这种情况下是否有确定3D位置的算法?(如下图所示)

5
首先,我有这样的图像(当然,我拥有所有点的二维坐标,因此可以重建线并检查它们相交的位置)。 alt text
(来源:narod.ru 但是,嘿,我有另一张相同线条的图像(我知道它们是相同的),以及我的点在新图像上的坐标,如下所示: alt text
(来源:narod.ru 那么...现在,在第一幅图像上有点(坐标),如何确定第二幅图像的平面旋转和Z深度(假设第一幅图像的中心点为(0,0,0),没有旋转)?

2
询问特定问题的解决方案,而不是一般技术,很像一项家庭作业任务。 - Dan Story
3
噢,拜托了,这个案例是一般情况,具体解决方案将成为许多类似情况(例如三角形)的通用答案。 - Rella
可能是三点的法向量的重复问题。 - dmckee --- ex-moderator kitten
4个回答

5
你想要找的是称为“投影矩阵”的东西。确定精确的反向投影通常需要在源和目标向量中都有已确立的坐标,而上面的图像并不会给你这些。但是,你可以使用像素位置来进行近似。 这个线程将为您提供所需技术的基本步骤。

2

首先声明一下:这个问题很难。丹·斯托里(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以及定义Rv的刚体变换。

困难

  • 方程中未知数是非线性的,涉及到Rz_i的商
  • 我们假设你知道哪些2D坐标对应于原始形状的哪些顶点(如果你的形状是一个正方形,这就不是那么大的问题)。
  • 我们假设有解存在;如果2D数据中存在错误,则很难确定方程(*)的满足程度;变换将是非刚性或非线性的。

1

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


1

如果您真正对这类问题感兴趣(这类问题在计算机视觉、使用摄像头跟踪物体等方面很常见),以下书籍包含了详细的处理方法:

Ma、Soatto、Kosecka、Sastry,三维视觉邀请, Springer 2004。

注意:这是一本高级工程技术文本,使用了许多数学技术。请浏览该书网页上提供的示例章节,以获取大致概念。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接