【问题标题】:Rotation on pattern matched picture using SIFT via OpenCV python通过OpenCV python使用SIFT旋转模式匹配图片
【发布时间】:2017-11-18 05:31:24
【问题描述】:

所以我一直在努力解决这个问题,如果有人帮助我解决这个问题,我将不胜感激。

我正在尝试创建一个解决难题的实体机器人。将提供已完成拼图的图像以及散落的碎片图片

Scattered piece picture

我已经让 opencv 找到轮廓并挑选出每个部分并旋转它们,使它们都平行于水平轴(所有“菱形”或“对角线”部分都被旋转,因此它们看起来像正方形)

我一直在使用 SIFT 将一堆小方块与完整图片匹配。

Comparing an un-rotated square piece to the full picture

问题是方向不正确。我将如何确定是否需要旋转 90、180、270 度?

我遇到的另一个问题是确定这件作品在哪个象限(非adrant?)。例如,这件作品属于右下角。是否有一个函数可以识别大多数相似的关键点,然后分类到九个区域之一?

【问题讨论】:

    标签: python windows opencv


    【解决方案1】:

    由于 SIFT 被设计为旋转不变,即使您有旋转,特征匹配也是一件好事。

    要确定需要多少旋转,您通常需要设置相机校准参数,以便将图片取消投影到自上而下的视图中。对于您的机器人,看起来图片已经是自上而下的了。

    如果这个假设成立,您可以执行回归来确定旋转您的作品所需的角度。如果您还知道您的棋子总是方形的,那么您只有 4 个选项可供选择。在这种情况下,您可以尝试所有 4 个,看看哪一个与您提取的补丁“最接近”(通过 SIFT 与大图匹配)。

    可以通过查看匹配点的坐标来确定匹配的棋子所在的象限。它们到角落的距离应该是您所需要的。

    【讨论】:

    • 您好,您能详细介绍一下执行回归吗?我一直在考虑,如果无论如何我需要机器人将工件旋转整个缺失的角度,我不妨一次计算所需的角度,而不是过早旋转它,然后计算四个选项中的哪一个执行
    • 您需要确定成本函数。在这种情况下,对图像应用诸如旋转之类的变换将产生另一个图像。您可以将此图像与目标补丁进行比较,以找到成本最低的角度。
    猜你喜欢
    • 1970-01-01
    • 2022-12-21
    • 2013-11-22
    • 2016-02-03
    • 2012-04-18
    • 1970-01-01
    • 2015-10-13
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多