找到第四个四边形点。 (透视变换后)

时间:2009-12-29 02:12:50

标签: image-processing geometry

有一个方形图像,并且该图像应用了透视变换。

因此,正方形的透视图像不是正方形而是四边形。 问题是:

如果我知道透视图像的三个角点(四边形) 那么四边形的第四个角点是什么?

问题也出现了,因为角点是在图像空间中给出的, 不在世界坐标系中。所以他们只有两个坐标, 例如:N1 =(x1,y1),N2 =(x2,y2),N3 =(x3,y3)

我需要使用在进行透视转换之前世界坐标中的真实图像是正方形的信息来找到N4 =(x4,y4)。

有可能找到第4点吗?我认为这个问题不会只有一个解决方案,但我想知道我们有多少解决方案,并希望得到这些解决方案。

我在这里已经阅读了几乎相同的问题,但作者并没有说它在变换之前是一个正方形。

4 个答案:

答案 0 :(得分:4)

一般情况下,这是不可能的。您想通过使用点之间三个对应关系的知识来确定原始正方形所在的平面与图像平面之间的单应性(透视变换),但是为了明确地需要点之间的四个对应关系确定平面单应性。

歧义的例子:假设原始正方形的顶点位于具有齐次坐标[0,0,1],[1,0,1],[1,1,1]和[0的点]处。 1,1]。现在考虑以下矩阵给出的两个单应性:

H1 = [1, -2, 0;
      0, -1, 0;
      0, -2, 1]

H2 = [-1, 2, 0;
       0, 1, 0;
      -2, 2, 1]

两个变换都使前三个顶点保持不变(请记住,当且仅当它们的向量相差非零比例因子时,投影空间中的两个点是相等的)但是它们将第四个顶点变换为不同的点。

答案 1 :(得分:1)

假设我们使用Wikipedia's example projective transform matrix,并假设您有四个点p = {px,py,pz}p+up+vp+u+v。假设最后一个是您要查找的那个,uv是方形的边矢量。转换后,点会映射到p -> {px/pz, py/pz, 1}p+u -> {(px+ux)/(pz+uz), (py+uy)/(pz+uz), 1},同样适用于p+vp+u+v。当然,这都假设uv都不在变换的零空间中(它们不是“朝向相机对齐”)。所以你有4个新的坐标对,它们是原始真实空间3D坐标的有理函数。你的问题基本上就是如何计算

(px+ux+vx)/(pz+uz+vz) and (py+uy+vy)/(pz+uz+vz)

px/pz, py/pz, (px+ux)/(pz+uz), (py+uy)/(pz+uz),
(px+vx)/(pz+vz), and (py+vy)/(pz+vz)

我认为没有办法做到这一点。此外,this page似乎表明任何四边形都可以通过透视变换映射到任何其他四边形,因此很可能你的问题是不适当的。

答案 2 :(得分:0)

如果您只知道投影后的图像坐标,那么我认为您无法找到第四点的坐标。如果您知道正方形的边(例如3D空间中的5米)和图像坐标w.r.t.投影中心(不仅是x,y像素值,还包括图像平面距投影中心的距离),您可以使用Haralick et. al.中描述的任何方法来查找第四点的坐标。

答案 3 :(得分:0)

但是这个问题有一些解决方案,我听说有一些方法可以找到四个四边形的四个角。那么这项任务的解决方案可能不多? 什么附加信息足以找到这个问题的解决方案? 此外,我现在正在阅读相机校准,但我认为我需要校准相机的时间来解决问题。因此,即使我记得校准参数并制作自动校准相机的程序,如果相机的状况发生变化,它的校准参数也会发生变化怎么办? 在这种情况下,旧的相机参数将不正确。