Computer vision 如何找到单应

Computer vision 如何找到单应,computer-vision,transform,transformation,homography,Computer Vision,Transform,Transformation,Homography,我需要找到单应矩阵,它将2d图像坐标转换为真实世界坐标(2d)。我看到的是一面墙和墙上三个不重叠的三角形的图像三角形每边的长度为1米(在墙上),而且我知道图像中三角形的所有角位置。如何使用这些三角形信息计算单应矩阵 如果我假设三角形的左下角是墙上的(0,0),那么我可以根据这(3个已知坐标)找到三角形的其他2个坐标,如何使用其他三角形的信息来找到单应矩阵 仅使用单应矩阵无法将图像坐标转换为真实世界坐标。当您将图像点转换为真实世界坐标时 这是图像坐标,是现实世界中的3D点。仅从图像坐标,我们不

我需要找到单应矩阵,它将2d图像坐标转换为真实世界坐标(2d)。我看到的是一面墙和墙上三个不重叠的三角形的图像<代码>三角形每边的长度为1米(在墙上),而且我知道图像中三角形的所有角位置。如何使用这些三角形信息计算单应矩阵


如果我假设三角形的左下角是墙上的(0,0),那么我可以根据这(3个已知坐标)找到三角形的其他2个坐标,如何使用其他三角形的信息来找到单应矩阵

仅使用单应矩阵无法将图像坐标转换为真实世界坐标。当您将图像点转换为真实世界坐标时

这是图像坐标,是现实世界中的3D点。仅从图像坐标,我们不知道比例因子。所以当我们乘单应矩阵的逆时:

X',Y',Z'不等于X,Y,Z


求解X',Y',Z'的一种方法是使用opencv函数,而不是查找单应性。您拥有三维空间中已知三角形角点的三维坐标,以及相应的像素坐标。使用相机的固有参数(K),您可以从真实世界的原点找到相机的旋转和平移。已知摄像机内部特性后,您可以计算X',Y',Z'



另一种方法是,至少创建3个3D点和相应的图像坐标。您可以使用线性方程解算器求解H,因此,我假设您希望将2D像素坐标映射到墙上的2D坐标。您只需要点对应(至少四个)。假设你知道墙上的一些点坐标,你知道这些点出现在你的图像上的像素坐标

您所要做的就是将这些点传递给一个现成的解决方案,例如,由Matlab提供,否则您将为Matlab找到一些东西

两者都返回单应性(3x3矩阵)。您可以使用它进一步变换坐标。OpenCV使用(实际上是一个简单的矩阵乘法,所以在Matlab中也不是什么大问题)为您实现这一点

通过定义辅助变量,可以使用多个三角形的点对应来解决单应问题,这些辅助变量解释了三角形(在真实世界的“墙坐标”中)是如何相对彼此旋转和平移的。然后利用非线性优化公式同时求解单应性系数和辅助变量

在本例中,每个三角形有
N=3
点对应。我已经为这个问题提供了一个解决方案,如果您至少有
3个
三角形,这个解决方案就会起作用

此外,您需要使用,但您声明已经使用了


详见。

我猜你指的是墙上的(2D)坐标,对吗?你想把图像的像素坐标映射到这些2D“墙”坐标。我说得对吗?如果我理解正确,3D是不可能的。是的,在墙的2d坐标上…我在墙上有三角形,如果假设左下角三角形在墙上为(0,0),那么我可以根据当前原点找到三角形的其他两个坐标。使用这个,我只能在墙上找到3个坐标位置。如何使用其他两个三角形的信息@gfkri但OpenCv中的findHomography不需要世界坐标,不是吗?它需要一个具有二维坐标的向量,为什么传递像素坐标和传递(例如厘米)会有差异@用户61455哦,你不知道三角形相对的位置?!嗯,让我考虑一下。我不确定这是否可能。