【问题标题】:Detecting garbage homographies from findHomography in OpenCV?从 OpenCV 中的 findHomography 中检测垃圾单应性?
【发布时间】:2012-06-13 21:44:02
【问题描述】:

我在点列表中使用findHomography,并将结果发送到warpPerspective

问题是有时结果是完全垃圾,结果图像由奇怪的灰色矩形表示。

我如何检测findHomography 何时向我发送错误结果?

【问题讨论】:

    标签: opencv computer-vision homography


    【解决方案1】:

    您可以对输出执行多项健全性测试。在我的头顶上:

    1. 计算单应性的行列式,看看它是否太接近于零而不舒适。
    2. 更好的是,计算它的 SVD,并验证第一个奇异值与最后一个奇异值的比率 价值是理智的(不太高)。任一结果都会告诉您矩阵是否接近 单数。
    3. 计算图像角及其中心的图像(即您在 您将单应性应用于那些角落和中心),并验证它们是否有意义, 即它们是否在图像画布内(如果您希望它们在)?他们分开了吗 从彼此?
    4. 在 matlab/octave 中绘制您拟合单应性的输出(数据)点,沿 使用单应性从输入值中计算出它们的值,并验证它们 接近(即错误很低)。

    导致垃圾结果的常见错误是输入和输出点列表的错误排序,这导致拟合例程使用错误的对应关系工作。检查您的索引是否正确。

    【讨论】:

    • 谁能进一步解释2.条件?我如何计算 SVD 并验证 OpenCV 中第一个奇异值与最后一个奇异值的比率是否合理?
    • opencv.willowgarage.com/documentation/cpp/… 通过 NO_UV,因为您只对奇异值感兴趣。然后计算第一个奇异值与最后一个奇异值的比率(条件数)。有关条件编号的说明,另请参阅:books.google.com/…
    • @Franco 感谢您的出色回答。我在书中有一个最后一个问题,它说“如果条件数是无限的,则矩阵是奇异的,如果它太大,则矩阵是病态的。”因此,当您说“检查条件数是否正常”时,您的意思是它不是无限的或不是太大。我的困惑从这里开始,什么太大了,有一个固定的数字还是有一个计算?我试图用谷歌搜索它,有人问了同样的问题,但还没有得到任何有用的答案。
    • 取决于您使用的数字类型的机器精度(它在您引用的句子中)。对于 IEEE-741 双精度浮点数,10^15 大约是您想要的最高值。
    • 一个精确的奇异矩阵意味着一个二维图像中的点被映射到另一个图像中的小于二维的子空间(一条线,一个点),即估计的单应性将扭曲图像一无所有。几乎奇异的矩阵表示相当极端的扭曲。鉴于您(通常)以有限的精度进行算术运算,估计映射的准确性可能会很差。
    【解决方案2】:

    但这取决于您用来计算单应性的点对应... 试想一下,您正在尝试找到一种将线映射到线(从一个平面到另一个平面)的转换,因此点对应的任何可能配置都不会为您提供创建漂亮图像的单应性。 单应性甚至可能将某些点映射到无穷大。

    【讨论】:

    • 将点映射到无穷大意味着在无穷远处有一些点,因为 findHomography() 函数最小化了正确的度量(平方坐标差的总和)。简而言之,Homography 首先通过线性算法 (DLT) 进行近似,该算法将参数误差最小化,这是次优的;它的输出被用作非线性解决方案(Levenberg-Marquardt 算法)的猜测,该解决方案最小化正确的度量 - 平方坐标之和。差异;如果猜测不准确,算法就会发散并陷入局部最小值,从而产生错误的解。
    【解决方案3】:

    了解退化单应性情况是关键。例如,如果您的点共线或接近共线,则无法获得良好的单应性。此外,巨大的灰色方块可能表示极端缩放。这两种情况都可能源于您最终的单应性计算中的内点很少或映射错误。

    为确保这种情况永远不会发生:
    1. 确保两幅图像中的点分布良好。
    2.确保至少有10-30个对应关系(如果噪音很小,4个就足够了)。
    3. 确保点匹配正确且变换为单应性。

    要查找错误的单应性,请将找到的 H 应用于原始点,并查看与预期点的分离,即 |x2-H*x1| < Tdist,其中 Tdist 是距离误差的阈值。如果只有少数点满足此阈值,则您的单应性可能不好,并且您可能违反了上述要求之一。

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 2011-09-18
      • 1970-01-01
      • 2014-12-04
      • 2011-11-04
      相关资源
      最近更新 更多