将曲线图案与图像边缘匹配

10
我有一个目标图像,需要在其边缘上搜索曲线以及包含该曲线的模板图像。我需要实现的是在目标图像中找到模板图像中曲线的最佳匹配,并基于分数确定是否存在匹配。这还包括曲线的旋转和调整大小。如果这样做会更容易,目标图像可以是Canny边缘检测器的输出。
我考虑使用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个回答

2
我的第一想法是广义霍夫变换。但是我不知道是否有好的实现方法。
首先,在canny边缘图像上尝试SIFT或SURF。通常用于查找2D区域,而不是1D轮廓,但是如果您将最小外接矩形围绕轮廓并将其用作搜索模式,它应该可以工作。
OpenCV有一个实现方式:使用特征点检测和单应性来寻找已知对象 问题可能在于获取良好的边缘图像,背景中的黑色形状可能会分散注意力。
另请参见此Stackoverflow答案:图像处理:“可口可乐罐”识别算法改进

谢谢,我会尝试这些并回来在这里分享我的结果或发现。 - ali
1
阿里,有什么运气吗?另请参阅此问题,其中引用了您的问题: https://dev59.com/-23Xa4cB1Zd3GeqPha6S - Rethunk
谢谢Rehunk,直到现在我才看到你的评论;好久了...我没有真正的解决方案,但有一个部分解决方案,那时候能够完成工作;慢而且没有旋转:我使用简单的相关匹配通过调整模板到不同大小,但是不是直接与图像上的曲线进行匹配,而是在一个彩色编码边缘图像上进行匹配,在这个图像上每个边缘点都有相应颜色的斜率,同样的模板曲线也根据每个点的曲线斜率进行彩色编码。然后我通过相关性比较这些颜色,结果对于有限/实际的解决方案来说还可以接受... - ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接