我拍了一些照片,试图将它们映射到Google map 上的卫星图像上。通常,我只需要4对点就可以有效地应用透视变换。但是,由于两个原因,这在我的情况下没有用:

  • 主要是因为Google卫星图像的分辨率差(至少对我的应用程序而言差),这使得更难于确定与照片上的点相对应的确切点。
  • 我认为Google的卫星图像不太完美地缝合在一起,这意味着即使有完美选择的点对,我也可能会有些偏离,因为Google图像上的点本身略有偏离。

  • 结果,我想使用4个以上的点对透视变换进行最小二乘估计,以便获得更好的拟合度。但是,我不知道该怎么做。

    我为此使用带有PIL和/或OpenCV的 Python和,因此使用这些库的解决方案会有所帮助。

    最佳答案

    同形异义比仿射有力(它不保留平行线)。它需要4个或更多的点(findHomography使用RANSAC并使用线性解决方案选择其最佳内联集;然后在最小二乘意义上对距离残差进行非线性优化)。您必须提供尽可能多的匹配项(> = 4),但要避免出现太多不正确的匹配项。

    最小二乘的原始统计模型是ML(最大似然),该模型在存在噪声的情况下找到最佳解决方案。 RANSAC补偿异常值的存在。尽管算法中没有任何东西可以补偿系统偏差。如果不能将它们建模为噪声或离群值,则解决方案定义不明确。 (如果排除了离群值之后,离群值小于4)将无法找到解决方案。

    关于python - 如何应用具有超过4对点的透视变换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22443568/

    10-08 22:10