作为后续 我之前的问题 关于确定相机参数我提出了一个新问题。

我有两张相同矩形的图片:

第一个是没有任何变换的图像,并按原样显示矩形。

第二张图显示了应用一些 3D 变换(XYZ 旋转、缩放、XY 平移)后的矩形。这导致矩形看起来是梯形。

我希望下面的图片描述了我的问题:

替代文本http://wilco.menge.nl/application.data/cms/upload/transformation%20matrix.png

如何确定进行哪些转换(更具体地说:什么变换矩阵)引起了这种变换?

我知道两个图像中角点的像素位置,因此我也知道角点之间的距离。

有帮助吗?

解决方案

我感到困惑。这是一个2D或3D问题?

我的理解是,你必须嵌入在三维空间的扁平矩形,你看它的两个2D“图像” - 原始版本的一个又一个基于转换版本。这是正确的吗?

如果这是正确的,那么就没有足够的信息来解决问题。例如,假设两个图片看起来一模一样。这可能是因为所述翻译是身份,或者它可能是因为翻译从相机移动矩形两次远和加倍其大小(因而使它看起来完全相同的)。

其他提示

这是一个数学问题,而不是编程..

您需要定义一组方程(你的变换矩阵,我的猜测是3个方程),然后解决它的角点4个变换。

我永远只能说明这一点使用德语单词......所以上面会听起来很奇怪..

根据您掌握的信息,这并不容易。不过,我会给你一些想法。如果您有角点的 3D 坐标,您会更轻松。这是基本想法。

  1. 将一个角移动到原点。此后,将围绕原点进行旋转。
  2. 确定轴的向量。通过从原点减去相邻角来实现此目的。这些将是您的世界的本地 x 轴和 y 轴。
  3. 使用矢量确定角度。您可以使用点积和叉积来确定局部 x 轴和全局 x 轴 (1, 0, 0) 之间的角度。
  4. 旋转步骤 3 中的角度。这将为您提供一个新的 x 轴,该轴应与全局 x 轴和新的局部 y 轴匹配。然后,您可以确定绕 x 轴的另一个旋转,这将使 y 轴与全局 y 轴对齐。

如果没有 z 坐标,您可以看到这会很困难,但这是一般过程。我希望这有帮助。

该解决方案将不是唯一的,因为Alex319指出。

如果第二图像确实是一个梯形如你所说,那么这将不会太难。这是因为角度的梯形(不是平行四边形),所以它必须是一个等腰梯形。

画出两条对角线。它们相交于所述矩形的中心,从而使需要的翻译服务。

,直到它的平行边平行于原始矩形的两侧旋转梯形。 (哪两个?没关系。)

绘制通过中心第三并联。扩展这对你选择的矩形的边。

现在用于旋转离开平面。测量从中心的距离的平行的边中的一个,并使用正弦定理。

如果它不是一个梯形,只是一个quadralateral,那么就更难,你必须使用对角线之间的角度找到旋转轴。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top