将曲线图案匹配到图像的边缘

时间:2012-07-30 21:15:34

标签: algorithm image-processing opencv pattern-matching computer-vision

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

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

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

以下是一些图片来说明问题:

Template image containing the curve to be searched for

Input image to be searched for the template curve and to be matched to its edges; this can also be an edge-image, the output of a Canny Edge detector rather than the unprocessed input image

Resulting match - includes rotation and resizing

1 个答案:

答案 0 :(得分:2)

我的第一个想法是Generalized Hough Transform。但是我不知道有什么好的实现。

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

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

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

另见Stackoverflow答案: Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition