【问题标题】:Calculating homography of multiple markers on a single plane计算单个平面上多个标记的单应性
【发布时间】:2015-10-04 03:58:32
【问题描述】:

我有一个算法,可以使用 OpenCV 的 findHomography 计算单个图像中多个标记的单应性。这工作正常,但由于标记的大小/图像的分辨率,计算的旋转通常非常不准确(主要是围绕标记的 x 和 z 轴,假设 y 向上)。我很想找到一种方法来改善这一点。

我有一个假设,即我知道所有标记都在同一平面上(它们在桌子上)这一事实应该有助于改善单应性 - 然后我只需要计算标记围绕单个的旋转轴 - 但我知道的不够多,无法将其付诸实践。任何人都可以在这方面给我任何指导吗?

这是我试图处理的情况的一个例子(标记上的图像在现实中是不同的)。

【问题讨论】:

  • 你必须知道标记之间的相对位置(如果你以后需要平面坐标,甚至是平面上的绝对位置)。但是在您的示例中,您可以从单个箭头计算 homogr(如果它 ptovides >= 4 个点/标记),然后计算任何其他标记与该 homogr 的相对位置
  • 您可以尝试从 3 个单个标记(在您的示例中)计算 3 个单个单应性并尝试某种平均或选择“最佳”一个。
  • 这是我目前的方法,但我经常发现其中一个标记的方向非常不同,而另外两个很好。如果我有大量的制造商,我可以以某种方式丢弃异常值,但如果有 2 或 3 个标记,那将是一件比较棘手的事情。
  • 我的想法是: 1. 每个标记有 4 个或更多已知点。 2.当你有单应性时,你可以通过单应性和其他标记点的像素位置来找到其他标记的平面位置。 3.如果单应性好,“重构”的复数标记在重构平面位置必须具有正确的形状。如果单应性不好,则重建的标记将具有错误的形状。如果无法理解我的意思(在评论中不容易),我会尝试用一些图形来创建答案:)
  • @Micka:我明白你的意思——这是一种有趣的方法。我想如果你找到一个产生有效形状的单应性(我想你可以使用各种指标相当快地分辨出来,例如宽度/高度的比率),那么你可以使用该单应性转换你的点,然后计算仿射变换并将两者结合起来一起生成标记的单应性。

标签: opencv computer-vision homography


【解决方案1】:

我喜欢通过使用遍布场景的多个标记图像来获得更高精度的估计单应性。

这种方法可以使用非线性优化来实现。但这有点棘手。

假设、模型、数据

让我们以放置在桌子上的 3 个打印标记图像为例,并假设您的所有假设都成立。

现在让我们假设对于您找到的 3 个打印标记图像中的每一个 N点对应

此处的点对应意味着对于打印的标记图像,您可以将N 图像像素位置 与对应的N 真实世界位置 (x,y) 相关联,以厘米为单位(或其他单位)相对于已知的现实世界“打印标记坐标系”(例如,坐标(0,0)位于标记图像的中心)。

问题在于“打印的标记坐标系”对于每个打印的标记图像仅在本地是已知的。我们需要将这些坐标系放在一起,并找到一种方法在单个全局坐标系中表达“打印标记坐标系”位置。所以我们需要弄清楚它们之间的关系。

每个标记的同应性之间的关系

我们想要计算一个使用来自不同打印标记图像的所有对应数据的单应性。因此,了解它们之间的关系非常重要。具体来说,我们希望为所有标记图像找到一个共同的坐标系,以便制定优化问题。

现在,基于点对应关系,并使用常规方法,计算 3 个单应性:

  • H1 将标记图像#1 的“打印标记坐标系”位置映射到图像像素坐标
  • H2 将标记图像#2 的“打印标记坐标系”位置映射到图像像素坐标
  • H3 将标记图像#3 的“打印标记坐标系”位置映射到图像像素坐标

让我们很快假设不存在测量和计算错误(只是假设)。然后,单应性仅在各自“打印标记坐标系”的旋转 和平移 上有所不同。

那么,以下等式成立:

旋转和平移定义如下:

把所有东西放在一起

这意味着 H1 等于 H2 “最多”旋转 和平移 ,H1 等于 H3 “最多”旋转 和平移 。

这为我们提供了一种将标记图像#2 的位置转换为标记图像#1 的坐标系的方法(标记图像#3 的位置可以类似处理):

现在,在现实世界的场景中,这些方程仅能近似成立。但尽管如此,它们还是为估计任何一对印刷标记图像之间的旋转和平移提供了动力:

现在,使用atan2,我们可以找到六个辅助变量 的估计值,它们描述了打印的标记图像#2 和#3 如何相对于#1 定位。

这就是我们准备有起始值和模型来制定非线性优化问题所需的全部内容。

非线性优化问题

最终目标是找到一个单应矩阵 H 的 8 个系数,该矩阵同时使用所有打印标记图像的所有点对应关系:

使用上述模型,我们可以定义非线性方程组。它将有8 + 6未知数:

  • 8个单应性系数
  • 6 个辅助变量,描述标记图像#2 和#3 的对应关系如何映射到标记图像#1 坐标系

使用 3 个标记图像的N 点对应关系,我们得到N*3*2 = N*6 方程。这意味着,我们需要N>=3 点对应关系才能获得比未知数更多的方程。有趣的是,在多标记图像场景下,每个标记图像的最小N=3 对应关系小于在单个标记图像场景情况下的最小N=4

此时我不会更详细地添加非线性优化问题的公式,因为已经解释了如何解决该问题的一般思路。

对于解决非线性优化问题,例如可以使用Newton’s method

备注

上述方程中的所有矩阵都需要按如下方式进行归一化:

【讨论】:

  • 马丁,感谢您的详细回答。我现在不能说我完全理解它,但我会详细阅读(并重新阅读)!
【解决方案2】:

单应性模型假设你的标记在一个平面上。这不是您可以添加的附加信息。如果您的标记是 not 并且是平面,则该功能根本不起作用。

如果您的标记都在 图像 平面中,即所有图像都是顶视图图像,那么您可以使用仿射模型(或更低)而不是单应性。从您的问题中不清楚是否是这种情况。

如果您的所有标记始终位于同一平面上,您可以同时从所有标记计算平面单应性。结果应该在数值上更稳定,您拥有的点越多,它们跨越图像的越多。它应该比单独计算每个标记的单应性更准确。

问题是您的对应点是什么 - 您还需要知道图像中标记的相对位置。
如果您使用相同的参考标记图像,则计算很可能会失败。

【讨论】:

  • 我知道要计算单应性,您提供的所有点都需要在同一平面上。我说的是计算位于同一平面上的 多个 标记的单应性(每个标记由多个平面识别点组成)。我在原始问题中添加了一个(模拟的)图像,这可能有助于澄清问题。
  • 感谢您更新您的答案。计算制造商所在飞机的单应性的问题是我不知道标记的相对位置/方向(因为这就是我首先要解决的问题!)
【解决方案3】:

我同意,为了采用基于点对应的标准单应性估计方法,用户必须知道世界上标记的相对位置。但是,有一种方法可以改进单应性估计过程。在this 论文Homography Ranking Based on Multiple Groups of Point Correspondences中,有一种方法可以系统地推荐在与上述相同的设置下可能产生最佳结果的单应性。 p>

此外,作者还记录了将任务表述为非线性优化问题的尝试。在补充部分,有一个与此问题相关的讨论。长话短说,它表明很难获得可用的结果。我之所以提到这一点,是因为先前的答案之一暗示了这一点。

免责声明:我是上述论文的主要作者。在我攻读博士学位期间,我在现实世界的应用程序中遇到了同样的问题时,我想出了解决方案。研究。

【讨论】:

    猜你喜欢
    • 2017-08-30
    • 2013-09-06
    • 2015-12-27
    • 2011-10-05
    • 1970-01-01
    • 2015-07-04
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多