10

我有一个要在其边缘搜索曲线的目标图像和一个包含该曲线的模板图像。我需要实现的是在目标图像中找到模板图像中曲线的最佳匹配,并根据分数找出是否匹配。这还包括曲线的旋转和调整大小。目标图像可以是 Canny Edge 检测器的输出,如果这使事情变得更容易的话。

我正在考虑使用 OpenCV(通过使用 Python 或 Processing/Java,或者如果它们对所需函数的访问受限,则使用 C)使事情变得实用和高效,但是无法确定我是否可以使用任何函数(或它们的组合)在 OpenCV 中可用于完成这项工作。我一直在阅读 OpenCV 文档,起初我认为 Contours 可以完成这项工作,但是所有示例都显示封闭的形状,而不是我需要将开放曲线与边缘的一部分匹配的情况。

那么有没有办法通过使用 OpenCV 或使用您建议的任何已知代码或算法来做到这一点?

这里有一些图片来说明这个问题:

包含要搜索的曲线的模板图像

输入要搜索模板曲线并匹配其边缘的图像; 这也可以是边缘图像,即 Canny 边缘检测器的输出,而不是未处理的输入图像

结果匹配 - 包括旋转和调整大小

4

1 回答 1

2

我的第一个想法是广义霍夫变换。但是我不知道有什么好的实现。

我会先在精明的边缘图像上尝试 SIFT 或 SURF。它通常用于查找 2d 区域,而不是 1d 轮廓,但是如果您将轮廓周围的最小边界框用作搜索模式,它应该可以工作。

OpenCV 有一个实现: Features2D + Homography to find a known object

问题可能是获得良好的边缘图像,背面的那些黑色形状可能会分散注意力。

另请参阅此 Stackoverflow 答案: 图像处理:“可口可乐罐”识别的算法改进

于 2012-07-31T19:17:27.733 回答