如何将一个投影的三维矩形转换为二维轴对齐的矩形。

3

我有一个3D矩形的图像(由于投影畸变,图像中的矩形不是真正的矩形)。我知道这个矩形的所有角落的世界和图像坐标。

我需要确定这个矩形内图像中一点的世界坐标。为了做到这一点,我需要计算一个转换来将该矩形投影为2D矩形。

如何计算这个转换?

提前感谢。

2个回答

1

这是在四边形之间寻找保持直线的映射的特殊情况。通常称为同构变换。其中一个四边形是矩形,因此这是一个流行的特殊情况。您可以谷歌这些术语(“quad to quad”等)以查找解释和代码,但以下是一些网站供您参考。

透视变换估计

游戏论坛讨论

将四边形图像提取到矩形中

投影变形和映射

Paul Heckbert的图像扭曲投影映射

数学并不是特别愉快,但也不是很难。您还可以从上面的链接中找到一些代码。


1

如果我理解正确,您在矩形投影中有一个二维点,并且您知道矩形的四个角的三维(世界)和二维(图像)坐标。目标是找到投影到给定点的(3D,世界)矩形内唯一点的3D坐标。

(对于矩形的3D(世界)坐标和2D(图像)坐标,请执行以下步骤1-3。)

  1. 将矩形的“原点”标记为“A”,并将其视为向量。
  2. 按顺序标记其他顶点B、C、D,使C对角线相对于A。
  3. 计算向量v=AB和w=AD。这些向量为矩形中的点提供了良好的本地坐标系。矩形中的点将采用A+rv+sw的形式,其中r、s是范围在[0,1]的实数。这个事实在世界坐标系和图像坐标系中都是正确的。在世界坐标系中,v和w是正交的,但在图像坐标系中,它们不是。没关系。
  4. 在图像坐标系中工作,从矩形图像中的点(x,y)计算出r和s的值。这可以通过对向量方程(x,y)=A+rv+sw进行线性代数运算来完成,其中只有r和s是未知的。这将归结为一个2x2矩阵方程,您可以使用Cramer法则在代码中通常解决它。(如果所需矩阵的行列式为零,则此步骤将中断。这对应于矩形被侧面看到的情况。在那种情况下,解决方案不是唯一的。如果可能,请做特殊处理。)
  5. 使用第4步中的r和s值,使用向量A、v、w计算A+rv+sw的世界坐标系。那就是矩形上的世界点。

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