gpt4 book ai didi

opencv - 计算机视觉中的形状/模式匹配方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:48:57 25 4
gpt4 key购买 nike

在我看来,我目前面临一个相当普遍的问题,应该很容易解决,但到目前为止,我所有的方法都失败了,所以我向您寻求帮助。

我认为用一些插图可以最好地解释这个问题。我有一些类似这两个的模式:

Pattern 1 Pattern 3

我也有这样的图像(可能更好,因为这张照片的来源光线很差):

Picture

(请注意模板是如何缩放以适应图像的大小的)

最终目标是一种工具,它可以确定用户是否显示竖起大拇指/竖起大拇指的手势以及两者之间的一些角度。所以我想将图案与图像进行匹配,看看哪一个最像图片(或者更准确地说,是手所显示的角度)。我知道拇指在图案中显示的方向,所以如果我找到看起来相同的图案,我也有角度。

我正在使用 OpenCV(使用 Python 绑定(bind))并且已经尝试过 cvMatchTemplate 和 MatchShapes,但到目前为止它并没有真正可靠地工作。

我只能猜测 MatchTemplate 失败的原因,但我认为较小的图案和较小的白色完全适合图片的白色区域,因此创造了最佳匹配因子,尽管很明显它们看起来并不相同。

是否有一些方法隐藏在 OpenCV 中我还没有找到,或者是否有一个已知的算法来解决我应该重新实现的这类问题?

新年快乐。

最佳答案

一些简单的技术可以起作用:

  1. 二值化和分割后,找出 Blob 的 Feret 直径(也就是点之间的最远距离,或长轴)。
  2. 找到点集的凸包,对其进行洪水填充,并将其视为连通区域。用拇指减去原始图像。差异将是拇指和拳头之间的面积,该区域相对于质心的位置应为您提供旋转指示。
  3. 对每个点到 blob 边缘的距离使用分水岭算法。这有助于识别相连的薄区域(拇指)。
  4. 在 blob 中拟合最大的圆(或最大的内接多边形)。扩大这个圆或多边形,直到其边缘的一部分与背景重叠。从原始图像中减去这个膨胀的图形;只有拇指会保留下来。
  5. 如果手的大小一致(或相对一致),那么您还可以执行 N 次形态学腐 eclipse 操作直到拇指消失,然后执行 N 次扩张操作以将拳头长回其原始近似大小。从原始 Blob 中减去这个只有拳头的 Blob ,得到拇指 Blob 。然后使用拇指团 block 方向(Feret 直径)和/或相对于拳头团 block 质心的质心来确定方向。

寻找关键点(强烈方向变化的区域)的技术比较棘手。最简单的情况是,您还可以使用角检测器,然后检查一个角到另一个角的距离,以确定拇指内缘与拳头相遇的位置。

对于更复杂的方法,请查看 Kimia、Siddiqi 和 Xiaofing Mi 等作者关于形状分解的论文。

关于opencv - 计算机视觉中的形状/模式匹配方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8644830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com