找到四角形的第四个点。 (透视变换后)
有一个正方形的图像,并且该图像应用了透视变换。
因此,正方形的透视图像不是正方形,而是四边形。 问题是:
如果我知道透视图像(四边形)的三个角点,那么四边形的第四个角点是什么?
这个问题也出现了,因为角点是在图像空间中给出的,而不是在世界坐标系中给出的。 所以它们只有两个坐标,例如:N1 =(x1,y1),N2 =(x2,y2),N3 =(x3,y3)
而且我需要用透视变换之前世界坐标中的真实图像是平方的信息来找到N4 =(x4,y4)。
是否有可能找到第四点? 我认为这个问题不会只有一个解决方案,但我想知道我们有多少解决方案,并且我想要解决方案。
我在这里读到了几乎相同的问题,但作者并没有说在改造之前它是一个正方形。
一般来说,这是不可能的。 你想通过使用点之间的三个对应知识来确定原始正方形所在的平面与图像平面之间的单应性(透视变换),但是为了明确地确定平面单应性,需要点之间的四个对应关系。
模糊度的例子:我们假设原始正方形的顶点在齐次坐标[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]
两个变换都使前三个顶点保持不变(记住投影空间中的两个点相同,当且仅当它们的向量相差非零比例因子),但它们将第四个顶点变换为不同的点。
假设我们使用维基百科的示例投影变换矩阵,并假设您有四个点p = {px,py,pz}
, p+u
, p+v
和p+u+v
。 假设最后一个是你想找到的那个, u
和v
是这个正方形的边缘向量。 变换后,点被映射到p -> {px/pz, py/pz, 1}
, p+u -> {(px+ux)/(pz+uz), (py+uy)/(pz+uz), 1}
,并且类似地对于p+v
和p+u+v
。 当然,这都假设u
或v
都不在变换的零空间中(它们不是“对准相机”)。 因此,您有4个新的坐标对,它们是原始实空间三维坐标的合理函数。 你的问题本质上是,你如何计算
(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)
我不认为有办法做到这一点。 此外,此页面似乎表明任何四边形都可以通过透视变换映射到任何其他四边形,所以很可能您的问题不适合。
如果你知道投影后的图像坐标,那么我认为你不能找到第四点的坐标。 如果您知道正方形的边(例如3D空间中的5米),并且图像坐标与投影中心(不仅是x,y像素值,还有图像平面距投影中心的距离),那么您可以使用任何Haralick等人描述的方法。 人。 找到第四点的坐标。
链接地址: http://www.djcxy.com/p/64007.html上一篇: Finding the 4th point of quadrangle. (After perspective transform)
下一篇: mysql