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

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

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

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

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

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

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


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

我会先在Canny边缘图像上尝试SIFT或SURF。 它通常用于查找二维区域,而不是一维轮廓,但是如果在轮廓周围采用最小边界框并将其用作搜索图案,则应该起作用。

OpenCV有一个实现:Features2D + Homography来查找已知对象

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

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

链接地址: http://www.djcxy.com/p/79587.html

上一篇: Matching a curve pattern to the edges of an image

下一篇: Using SURF algorithm to match objects on MATLAB