如何将投影的3D矩形转换为2D轴对齐的矩形

时间:2010-11-30 17:52:48

标签: algorithm graphics matrix transform

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

我需要的是确定此矩形内图像中某点的世界坐标。为此,我需要计算转换以将该矩形取消投影到2D矩形。

如何计算转换?

提前致谢

2 个答案:

答案 0 :(得分:1)

这是在四边形之间找到保留直线的映射的特殊情况。这些通常被称为单应变换。这里,其中一个四边形是一个矩形,所以这是一个流行的特殊情况。你可以谷歌这些术语(“四到四”等)来查找解释和代码,但这里有一些网站。

Perspective Transform Estimation

a gaming forum discussion

extracting a quadrilateral image to a rectangle

Projective Warping & Mapping

Paul Heckbert

ProjectiveMappings for ImageWarping

数学并不是特别令人愉快,但也不是那么难。您还可以从上述链接中找到一些代码。

答案 1 :(得分:1)

如果我理解正确,你在矩形的投影中有一个2D点,​​你知道矩形的所有四个角的3D(世界)和2D(图像)坐标。目标是找到投射到给定点的(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,用于 world 坐标。这是矩形的世界点。