这个问题在OpenCV函数findHomographygetPerspectiveTransformgetAffineTransform

  • findHomographygetPerspectiveTransform有什么区别?我从文档中得出的理解是getPerspectiveTransform使用4种对应关系(这是计算单应性/透视变换的最低要求)来计算变换,即使提供了4种以上的对应关系(大概使用最小二乘),findHomography也会计算出变换方法?)。
    这样对吗?
    (在这种情况下,OpenCV仍继续支持getPerspectiveTransform的唯一原因应该是遗留的?)
  • 我的下一个担心是,我想知道是否存在等效于findHomography的用于计算仿射变换的代码?即使用最小二乘法或等效鲁棒方法进行计算和仿射变换的函数。
    根据文档,getAffineTransform仅接受3个对应关系(这是计算仿射变换所需的最小值)。

  • 最好,

    最佳答案

    Q#1 :是的,findHomography试图找到两组点之间的最佳变换。它使用比最小二乘法更智能的方法称为RANSAC,它可以拒绝离群值-如果您的数据点中至少有50%+1可以,则RANSAC会尽力找到它们,并建立可靠的转换。

    getPerspectiveTransform有很多有用的理由可以保留-它是findHomography的基础,并且在许多只有4个点并且知道它们是正确点的情况下很有用。 findHomography通常与自动检测到的点集一起使用-您可以找到许多点,但置信度较低。当您确定要确定4个角时,例如手动标记或自动检测矩形,getPerspectiveTransform很好。

    Q#2 仿射变换没有等效项。您可以使用findHomography,因为仿射变换是单应性的子集。

    关于c++ - findHomography,getPerspectiveTransform和getAffineTransform,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11237948/

    10-11 15:48